ollama/integration
ParthSareen aff30cdbc1 remove comments 2025-11-14 10:04:33 -08:00
..
testdata tests: fix embeddinggemma integration test (#12830) 2025-10-29 11:07:28 -07:00
README.md integration: improve tool calling tests for local and cloud models 2025-11-14 10:04:32 -08:00
api_test.go logprob: add bytes to logprobs (#13068) 2025-11-13 13:49:25 -08:00
basic_test.go Integration test tuning (#12492) 2025-10-08 09:51:25 -07:00
concurrency_test.go test: harden scheduler tests (#12662) 2025-10-17 08:56:44 -07:00
context_test.go test: harden scheduler tests (#12662) 2025-10-17 08:56:44 -07:00
embed_test.go embed: add distance correlation test for library embed models (#12796) 2025-10-28 16:57:27 -07:00
library_models_test.go Integration test tuning (#12492) 2025-10-08 09:51:25 -07:00
llm_image_test.go feat(model): add qwen3vl (#12665) 2025-10-28 17:39:47 -07:00
max_queue_test.go perf: build graph for next batch async to keep GPU busy (#11863) 2025-08-29 14:20:28 -07:00
model_arch_test.go test: harden scheduler tests (#12662) 2025-10-17 08:56:44 -07:00
model_perf_test.go Integration test tuning (#12492) 2025-10-08 09:51:25 -07:00
quantization_test.go Integration test tuning (#12492) 2025-10-08 09:51:25 -07:00
tools_openai_test.go integration: improve tool calling tests for local and cloud models 2025-11-14 10:04:32 -08:00
tools_test.go remove comments 2025-11-14 10:04:33 -08:00
utils_test.go integration: improve tool calling tests for local and cloud models 2025-11-14 10:04:32 -08:00

README.md

Integration Tests

This directory contains integration tests to exercise Ollama end-to-end to verify behavior

By default, these tests are disabled so go test ./... will exercise only unit tests. To run integration tests you must pass the integration tag. go test -tags=integration ./... Some tests require additional tags to enable to allow scoped testing to keep the duration reasonable. For example, testing a broad set of models requires -tags=integration,models and a longer timeout (~60m or more depending on the speed of your GPU.). To view the current set of tag combinations use find integration -type f | xargs grep "go:build"

The integration tests have 2 modes of operating.

  1. By default, on Unix systems, they will start the server on a random port, run the tests, and then shutdown the server. On Windows you must ALWAYS run the server on OLLAMA_HOST for the tests to work.
  2. If OLLAMA_TEST_EXISTING is set to a non-empty string, the tests will run against an existing running server, which can be remote based on your OLLAMA_HOST environment variable

[!IMPORTANT] Before running the tests locally without the "test existing" setting, compile ollama from the top of the source tree go build . in addition to GPU support with cmake if applicable on your platform. The integration tests expect to find an ollama binary at the top of the tree.

Many tests use a default small model suitable to run on many systems. You can override this default model by setting OLLAMA_TEST_DEFAULT_MODEL

Tool Calling Tests

The tool calling tests are split into two files:

  • tools_test.go - Tests using the native Ollama API (api.Tool)
  • tools_openai_test.go - Tests using the OpenAI-compatible API format

Running Tool Calling Tests

Run all tool calling tests:

go test -tags=integration -v -run Test.*Tool.* ./integration

Run only OpenAI-compatible tests:

go test -tags=integration -v -run TestOpenAI ./integration

Run only native API tests:

go test -tags=integration -v -run TestAPIToolCalling ./integration

Parallel Execution

The OpenAI-compatible tests (tools_openai_test.go) support parallel execution for cloud models. Run with parallel execution:

go test -tags=integration -v -run TestOpenAI -parallel 3 ./integration

Cloud models (models ending with -cloud) will run in parallel, while local models run sequentially. This significantly speeds up test execution when testing against external endpoints.

Testing Specific Models

To test a specific model, set the OPENAI_TEST_MODELS environment variable:

OPENAI_TEST_MODELS="gpt-oss:120b-cloud" go test -tags=integration -v -run TestOpenAI ./integration

External Endpoints

To test against an external OpenAI-compatible endpoint (e.g., Ollama Cloud):

OPENAI_BASE_URL="https://ollama.com/v1" OLLAMA_API_KEY="your-key" go test -tags=integration -v -run TestOpenAI ./integration

Environment Variables

The tool calling tests support the following environment variables:

  • OPENAI_BASE_URL - When set, tests will run against an external OpenAI-compatible endpoint instead of a local server. If set, OLLAMA_API_KEY must also be provided.
  • OLLAMA_API_KEY - API key for authenticating with external endpoints (required when OPENAI_BASE_URL is set).
  • OPENAI_TEST_MODELS - Override the default model list and test only the specified model(s). Can be a single model or comma-separated list.