Skip to content

feat(neo4j): Add dry_run parameter to validate Cypher queries#1769

Merged
Yuan325 merged 8 commits into
googleapis:mainfrom
nester-neo4j:add-neo4j-dry-run
Oct 23, 2025
Merged

feat(neo4j): Add dry_run parameter to validate Cypher queries#1769
Yuan325 merged 8 commits into
googleapis:mainfrom
nester-neo4j:add-neo4j-dry-run

Merge branch 'main' into add-neo4j-dry-run

5a96a5b
Select commit
Loading
Failed to load commit list.
Google Cloud Build / integration-test-pr (toolbox-testing-438616) succeeded Oct 23, 2025 in 13m 9s

Summary

Build Information

Trigger integration-test-pr
Build f20a763d-844d-448d-a568-febaa2b6b0d2
Start 2025-10-23T15:00:11-07:00
Duration 5m42.142s
Status SUCCESS

Steps

Step Status Duration
install-dependencies SUCCESS 22.8s
compile-test-binary SUCCESS 56.855s
cloud-sql-pg SUCCESS 18.583s
alloydb SUCCESS 7.72s
alloydb-pg SUCCESS 18.048s
alloydb-ai-nl SUCCESS 9.171s
bigtable SUCCESS 17.217s
bigquery SUCCESS 4m14.128s
dataplex SUCCESS 2m16.437s
dataform SUCCESS 57.316s
postgres SUCCESS 23.41s
spanner SUCCESS 45.102s
neo4j SUCCESS 5.007s
cloud-sql-mssql SUCCESS 7.204s
cloud-sql-mysql SUCCESS 23.409s
mysql SUCCESS 25.16s
mssql SUCCESS 6.344s
http SUCCESS 4.532s
sqlite SUCCESS 4.787s
couchbase SUCCESS 31.085s
redis SUCCESS 6.069s
valkey SUCCESS 4.38s
oceanbase SUCCESS 10.388s
firestore SUCCESS 6.091s
looker SUCCESS 1m50.092s
cloud-sql SUCCESS 4.423s
tidb SUCCESS 9.92s
firebird SUCCESS 1m8.577s
clickhouse SUCCESS 9.274s
trino SUCCESS 7.878s
yugabytedb SUCCESS 11.954s
cassandra SUCCESS 12.453s
oracle SUCCESS 11.368s

Details

starting build "f20a763d-844d-448d-a568-febaa2b6b0d2"

FETCHSOURCE
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
Initialized empty Git repository in /workspace/.git/
From https://github.com/googleapis/genai-toolbox
 * branch            5a96a5b414127911e0f7ba1ebb5e334c05439d8f -> FETCH_HEAD
HEAD is now at 5a96a5b Merge branch 'main' into add-neo4j-dry-run
GitCommit:
5a96a5b414127911e0f7ba1ebb5e334c05439d8f
SETUPBUILD
BUILD
Starting Step #0 - "install-dependencies"
Step #0 - "install-dependencies": Pulling image: golang:1
Step #0 - "install-dependencies": 1: Pulling from library/golang
Step #0 - "install-dependencies": 795dbedde24d: Pulling fs layer
Step #0 - "install-dependencies": 89d573bf42b3: Pulling fs layer
Step #0 - "install-dependencies": 26dfe2fac1c4: Pulling fs layer
Step #0 - "install-dependencies": 1c596538aa11: Pulling fs layer
Step #0 - "install-dependencies": 91631faa732a: Pulling fs layer
Step #0 - "install-dependencies": 923089182cb9: Pulling fs layer
Step #0 - "install-dependencies": 4f4fb700ef54: Pulling fs layer
Step #0 - "install-dependencies": 1c596538aa11: Waiting
Step #0 - "install-dependencies": 91631faa732a: Waiting
Step #0 - "install-dependencies": 923089182cb9: Waiting
Step #0 - "install-dependencies": 4f4fb700ef54: Waiting
Step #0 - "install-dependencies": 89d573bf42b3: Verifying Checksum
Step #0 - "install-dependencies": 89d573bf42b3: Download complete
Step #0 - "install-dependencies": 795dbedde24d: Verifying Checksum
Step #0 - "install-dependencies": 795dbedde24d: Download complete
Step #0 - "install-dependencies": 26dfe2fac1c4: Verifying Checksum
Step #0 - "install-dependencies": 26dfe2fac1c4: Download complete
Step #0 - "install-dependencies": 923089182cb9: Verifying Checksum
Step #0 - "install-dependencies": 923089182cb9: Download complete
Step #0 - "install-dependencies": 4f4fb700ef54: Verifying Checksum
Step #0 - "install-dependencies": 4f4fb700ef54: Download complete
Step #0 - "install-dependencies": 91631faa732a: Verifying Checksum
Step #0 - "install-dependencies": 91631faa732a: Download complete
Step #0 - "install-dependencies": 1c596538aa11: Verifying Checksum
Step #0 - "install-dependencies": 1c596538aa11: Download complete
Step #0 - "install-dependencies": 795dbedde24d: Pull complete
Step #0 - "install-dependencies": 89d573bf42b3: Pull complete
Step #0 - "install-dependencies": 26dfe2fac1c4: Pull complete
Step #0 - "install-dependencies": 1c596538aa11: Pull complete
Step #0 - "install-dependencies": 91631faa732a: Pull complete
Step #0 - "install-dependencies": 923089182cb9: Pull complete
Step #0 - "install-dependencies": 4f4fb700ef54: Pull complete
Step #0 - "install-dependencies": Digest: sha256:8c945d3e25320e771326dafc6fb72ecae5f87b0f29328cbbd87c4dff506c9135
Step #0 - "install-dependencies": Status: Downloaded newer image for golang:1
Step #0 - "install-dependencies": docker.io/library/golang:1
Step #0 - "install-dependencies": go: -d flag is deprecated. -d=true is a no-op
Step #0 - "install-dependencies": go: downloading github.com/ClickHouse/clickhouse-go/v2 v2.40.3
Step #0 - "install-dependencies": go: downloading cloud.google.com/go/geminidataanalytics v0.2.1
Step #0 - "install-dependencies": go: downloading github.com/goccy/go-yaml v1.18.0
Step #0 - "install-dependencies": go: downloading go.opentelemetry.io/otel/trace v1.38.0
Step #0 - "install-dependencies": go: downloading github.com/looker-open-source/sdk-codegen/go v0.25.16
Step #0 - "install-dependencies": go: downloading golang.org/x/oauth2 v0.32.0
Step #0 - "install-dependencies": go: downloading cloud.google.com/go/bigquery v1.71.0
Step #0 - "install-dependencies": go: downloading google.golang.org/api v0.251.0
Step #0 - "install-dependencies": go: downloading go.mongodb.org/mongo-driver v1.17.4
Step #0 - "install-dependencies": go: downloading cloud.google.com/go/cloudsqlconn v1.18.1
Step #0 - "install-dependencies": go: downloading github.com/microsoft/go-mssqldb v1.9.3
Step #0 - "install-dependencies": go: downloading github.com/go-sql-driver/mysql v1.9.3
Step #0 - "install-dependencies": go: downloading cloud.google.com/go/bigtable v1.40.1
Step #0 - "install-dependencies": go: downloading github.com/jackc/pgx/v5 v5.7.6
Step #0 - "install-dependencies": go: downloading github.com/neo4j/neo4j-go-driver/v5 v5.28.4
Step #0 - "install-dependencies": go: downloading cloud.google.com/go/alloydbconn v1.15.5
Step #0 - "install-dependencies": go: downloading cloud.google.com/go/firestore v1.20.0
Step #0 - "install-dependencies": go: downloading github.com/sijms/go-ora/v2 v2.9.0
Step #0 - "install-dependencies": go: downloading github.com/gocql/gocql v1.7.0
Step #0 - "install-dependencies": go: downloading github.com/google/uuid v1.6.0
Step #0 - "install-dependencies": go: downloading github.com/trinodb/trino-go-client v0.329.0
Step #0 - "install-dependencies": go: downloading cloud.google.com/go/dataplex v1.27.1
Step #0 - "install-dependencies": go: downloading github.com/redis/go-redis/v9 v9.16.0
Step #0 - "install-dependencies": go: downloading cloud.google.com/go/spanner v1.86.0
Step #0 - "install-dependencies": go: downloading github.com/valkey-io/valkey-go v1.0.66
Step #0 - "install-dependencies": go: downloading github.com/yugabyte/pgx/v5 v5.5.3-yb-5
Step #0 - "install-dependencies": go: downloading modernc.org/sqlite v1.39.1
Step #0 - "install-dependencies": go: downloading github.com/fsnotify/fsnotify v1.9.0
Step #0 - "install-dependencies": go: downloading go.opentelemetry.io/otel v1.38.0
Step #0 - "install-dependencies": go: downloading github.com/go-playground/validator/v10 v10.28.0
Step #0 - "install-dependencies": go: downloading github.com/couchbase/gocb/v2 v2.11.1
Step #0 - "install-dependencies": go: downloading github.com/go-chi/chi/v5 v5.2.3
Step #0 - "install-dependencies": go: downloading github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.53.0
Step #0 - "install-dependencies": go: downloading github.com/couchbase/tools-common/http v1.0.9
Step #0 - "install-dependencies": go: downloading github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.29.0
Step #0 - "install-dependencies": go: downloading go.opentelemetry.io/contrib/propagators/autoprop v0.62.0
Step #0 - "install-dependencies": go: downloading github.com/go-chi/httplog/v2 v2.1.1
Step #0 - "install-dependencies": go: downloading github.com/go-chi/render v1.0.3
Step #0 - "install-dependencies": go: downloading go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.37.0
Step #0 - "install-dependencies": go: downloading go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.37.0
Step #0 - "install-dependencies": go: downloading go.opentelemetry.io/otel/metric v1.38.0
Step #0 - "install-dependencies": go: downloading go.opentelemetry.io/otel/sdk/metric v1.37.0
Step #0 - "install-dependencies": go: downloading go.opentelemetry.io/otel/sdk v1.37.0
Step #0 - "install-dependencies": go: downloading cloud.google.com/go v0.121.6
Step #0 - "install-dependencies": go: downloading github.com/spf13/cobra v1.10.1
Step #0 - "install-dependencies": go: downloading github.com/cenkalti/backoff/v5 v5.0.3
Step #0 - "install-dependencies": go: downloading google.golang.org/genproto v0.0.0-20250929231259-57b25ae835d4
Step #0 - "install-dependencies": go: downloading github.com/thlib/go-timezone-local v0.0.7
Step #0 - "install-dependencies": go: downloading github.com/google/go-cmp v0.7.0
Step #0 - "install-dependencies": go: downloading github.com/json-iterator/go v1.1.12
Step #0 - "install-dependencies": go: downloading go.opentelemetry.io/contrib/propagators/aws v1.37.0
Step #0 - "install-dependencies": go: downloading go.opentelemetry.io/contrib/propagators/b3 v1.37.0
Step #0 - "install-dependencies": go: downloading go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0
Step #0 - "install-dependencies": go: downloading go.opentelemetry.io/contrib/propagators/jaeger v1.37.0
Step #0 - "install-dependencies": go: downloading go.opentelemetry.io/contrib/propagators/ot v1.37.0
Step #0 - "install-dependencies": go: downloading cloud.google.com/go/trace v1.11.6
Step #0 - "install-dependencies": go: downloading github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.53.0
Step #0 - "install-dependencies": go: downloading google.golang.org/genproto/googleapis/rpc v0.0.0-20250929231259-57b25ae835d4
Step #0 - "install-dependencies": go: downloading google.golang.org/grpc v1.75.1
Step #0 - "install-dependencies": go: downloading google.golang.org/protobuf v1.36.9
Step #0 - "install-dependencies": go: downloading github.com/ajg/form v1.5.1
Step #0 - "install-dependencies": go: downloading cloud.google.com/go/monitoring v1.24.2
Step #0 - "install-dependencies": go: downloading github.com/googleapis/gax-go/v2 v2.15.0
Step #0 - "install-dependencies": go: downloading google.golang.org/genproto/googleapis/api v0.0.0-20250922171735-9219d122eba9
Step #0 - "install-dependencies": go: downloading gopkg.in/ini.v1 v1.67.0
Step #0 - "install-dependencies": go: downloading github.com/jcmturner/gokrb5/v8 v8.4.4
Step #0 - "install-dependencies": go: downloading github.com/klauspost/compress v1.18.0
Step #0 - "install-dependencies": go: downloading github.com/pierrec/lz4 v2.6.1+incompatible
Step #0 - "install-dependencies": go: downloading github.com/couchbase/tools-common/errors v1.0.0
Step #0 - "install-dependencies": go: downloading github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78
Step #0 - "install-dependencies": go: downloading golang.org/x/crypto v0.42.0
Step #0 - "install-dependencies": go: downloading cloud.google.com/go/compute/metadata v0.9.0
Step #0 - "install-dependencies": go: downloading filippo.io/edwards25519 v1.1.0
Step #0 - "install-dependencies": go: downloading golang.org/x/sys v0.36.0
Step #0 - "install-dependencies": go: downloading go.uber.org/multierr v1.11.0
Step #0 - "install-dependencies": go: downloading github.com/ClickHouse/ch-go v0.68.0
Step #0 - "install-dependencies": go: downloading github.com/andybalholm/brotli v1.2.0
Step #0 - "install-dependencies": go: downloading github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd
Step #0 - "install-dependencies": go: downloading github.com/modern-go/reflect2 v1.0.2
Step #0 - "install-dependencies": go: downloading github.com/inconshreveable/mousetrap v1.1.0
Step #0 - "install-dependencies": go: downloading github.com/spf13/pflag v1.0.9
Step #0 - "install-dependencies": go: downloading cloud.google.com/go/iam v1.5.2
Step #0 - "install-dependencies": go: downloading cloud.google.com/go/longrunning v0.6.7
Step #0 - "install-dependencies": go: downloading github.com/apache/arrow/go/v15 v15.0.2
Step #0 - "install-dependencies": go: downloading golang.org/x/sync v0.17.0
Step #0 - "install-dependencies": go: downloading cloud.google.com/go/alloydb v1.18.0
Step #0 - "install-dependencies": go: downloading golang.org/x/net v0.44.0
Step #0 - "install-dependencies": go: downloading cloud.google.com/go/auth v0.16.5
Step #0 - "install-dependencies": go: downloading cloud.google.com/go/auth/oauth2adapt v0.2.8
Step #0 - "install-dependencies": go: downloading github.com/golang/snappy v1.0.0
Step #0 - "install-dependencies": go: downloading github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed
Step #0 - "install-dependencies": go: downloading gopkg.in/inf.v0 v0.9.1
Step #0 - "install-dependencies": go: downloading github.com/gabriel-vasile/mimetype v1.4.10
Step #0 - "install-dependencies": go: downloading github.com/go-playground/universal-translator v0.18.1
Step #0 - "install-dependencies": go: downloading github.com/leodido/go-urn v1.4.0
Step #0 - "install-dependencies": go: downloading golang.org/x/text v0.29.0
Step #0 - "install-dependencies": go: downloading go.opentelemetry.io/contrib/detectors/gcp v1.36.0
Step #0 - "install-dependencies": go: downloading github.com/couchbase/gocbcore/v10 v10.8.1
Step #0 - "install-dependencies": go: downloading github.com/couchbase/gocbcoreps v0.1.4
Step #0 - "install-dependencies": go: downloading github.com/couchbase/goprotostellar v1.0.2
Step #0 - "install-dependencies": go: downloading github.com/couchbaselabs/gocbconnstr/v2 v2.0.0
Step #0 - "install-dependencies": go: downloading go.uber.org/zap v1.27.0
Step #0 - "install-dependencies": go: downloading github.com/jcmturner/dnsutils/v2 v2.0.0
Step #0 - "install-dependencies": go: downloading github.com/jcmturner/gofork v1.7.6
Step #0 - "install-dependencies": go: downloading github.com/jcmturner/goidentity/v6 v6.0.1
Step #0 - "install-dependencies": go: downloading github.com/paulmach/orb v0.11.1
Step #0 - "install-dependencies": go: downloading github.com/shopspring/decimal v1.4.0
Step #0 - "install-dependencies": go: downloading go.yaml.in/yaml/v3 v3.0.4
Step #0 - "install-dependencies": go: downloading golang.org/x/time v0.13.0
Step #0 - "install-dependencies": go: downloading github.com/jackc/puddle/v2 v2.2.2
Step #0 - "install-dependencies": go: downloading github.com/cespare/xxhash/v2 v2.3.0
Step #0 - "install-dependencies": go: downloading github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f
Step #0 - "install-dependencies": go: downloading github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9
Step #0 - "install-dependencies": go: downloading github.com/golang-sql/sqlexp v0.1.0
Step #0 - "install-dependencies": go: downloading github.com/GoogleCloudPlatform/grpc-gcp-go/grpcgcp v1.5.3
Step #0 - "install-dependencies": go: downloading go.opencensus.io v0.24.0
Step #0 - "install-dependencies": go: downloading github.com/go-logr/logr v1.4.3
Step #0 - "install-dependencies": go: downloading go.opentelemetry.io/proto/otlp v1.7.0
Step #0 - "install-dependencies": go: downloading github.com/go-faster/city v1.0.1
Step #0 - "install-dependencies": go: downloading github.com/go-faster/errors v0.7.1
Step #0 - "install-dependencies": go: downloading github.com/segmentio/asm v1.2.0
Step #0 - "install-dependencies": go: downloading github.com/pierrec/lz4/v4 v4.1.22
Step #0 - "install-dependencies": go: downloading github.com/go-playground/locales v0.14.1
Step #0 - "install-dependencies": go: downloading github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0
Step #0 - "install-dependencies": go: downloading go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.62.0
Step #0 - "install-dependencies": go: downloading github.com/grpc-ecosystem/go-grpc-middleware v1.4.0
Step #0 - "install-dependencies": go: downloading go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0
Step #0 - "install-dependencies": go: downloading github.com/hashicorp/go-uuid v1.0.3
Step #0 - "install-dependencies": go: downloading github.com/jackc/pgpassfile v1.0.0
Step #0 - "install-dependencies": go: downloading github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761
Step #0 - "install-dependencies": go: downloading github.com/gorilla/websocket v1.5.3
Step #0 - "install-dependencies": go: downloading github.com/go-logr/stdr v1.2.2
Step #0 - "install-dependencies": go: downloading go.opentelemetry.io/auto/sdk v1.1.0
Step #0 - "install-dependencies": go: downloading github.com/google/s2a-go v0.1.9
Step #0 - "install-dependencies": go: downloading github.com/googleapis/enterprise-certificate-proxy v0.3.6
Step #0 - "install-dependencies": go: downloading github.com/jcmturner/aescts/v2 v2.0.0
Step #0 - "install-dependencies": go: downloading github.com/jcmturner/rpc/v2 v2.0.3
Step #0 - "install-dependencies": go: downloading github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1
Step #0 - "install-dependencies": go: downloading github.com/envoyproxy/go-control-plane/envoy v1.32.4
Step #0 - "install-dependencies": go: downloading github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8
Step #0 - "install-dependencies": go: downloading github.com/felixge/httpsnoop v1.0.4
Step #0 - "install-dependencies": go: downloading github.com/spiffe/go-spiffe/v2 v2.5.0
Step #0 - "install-dependencies": go: downloading github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443
Step #0 - "install-dependencies": go: downloading github.com/go-jose/go-jose/v4 v4.1.1
Step #0 - "install-dependencies": go: downloading github.com/zeebo/errs v1.4.0
Step #0 - "install-dependencies": go: downloading cel.dev/expr v0.24.0
Step #0 - "install-dependencies": go: downloading github.com/envoyproxy/protoc-gen-validate v1.2.1
Step #0 - "install-dependencies": go: downloading golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b
Step #0 - "install-dependencies": go: downloading golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da
Step #0 - "install-dependencies": go: downloading golang.org/x/tools v0.36.0
Step #0 - "install-dependencies": go: downloading github.com/google/flatbuffers v25.2.10+incompatible
Step #0 - "install-dependencies": go: downloading github.com/xdg-go/scram v1.1.2
Step #0 - "install-dependencies": go: downloading github.com/montanaflynn/stats v0.7.1
Step #0 - "install-dependencies": go: downloading github.com/xdg-go/stringprep v1.0.4
Step #0 - "install-dependencies": go: downloading github.com/goccy/go-json v0.10.5
Step #0 - "install-dependencies": go: downloading github.com/zeebo/xxh3 v1.0.2
Step #0 - "install-dependencies": go: downloading github.com/xdg-go/pbkdf2 v1.0.0
Step #0 - "install-dependencies": go: downloading github.com/klauspost/cpuid/v2 v2.2.11
Step #0 - "install-dependencies": go: downloading github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10
Step #0 - "install-dependencies": go: downloading golang.org/x/mod v0.27.0
Step #0 - "install-dependencies": go: downloading modernc.org/libc v1.66.10
Step #0 - "install-dependencies": go: downloading modernc.org/memory v1.11.0
Step #0 - "install-dependencies": go: downloading github.com/ncruces/go-strftime v0.1.9
Step #0 - "install-dependencies": go: downloading github.com/mattn/go-isatty v0.0.20
Step #0 - "install-dependencies": go: downloading github.com/dustin/go-humanize v1.0.1
Step #0 - "install-dependencies": go: downloading modernc.org/mathutil v1.7.1
Step #0 - "install-dependencies": go: downloading github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec
Finished Step #0 - "install-dependencies"
Starting Step #1 - "compile-test-binary"
Step #1 - "compile-test-binary": Already have image (with digest): golang:1
Step #1 - "compile-test-binary": go: downloading github.com/nakagami/firebirdsql v0.9.15
Step #1 - "compile-test-binary": go: downloading gitlab.com/nyarla/go-crypt v0.0.0-20160106005555-d9a5dc2b789b
Step #1 - "compile-test-binary": go: downloading github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0
Step #1 - "compile-test-binary": go: downloading github.com/nakagami/chacha20 v0.1.0
Step #1 - "compile-test-binary": ?   	github.com/googleapis/genai-toolbox/tests	[no test files]
Finished Step #1 - "compile-test-binary"
Starting Step #9 - "dataform"
Starting Step #10 - "postgres"
Starting Step #16 - "mssql"
Starting Step #11 - "spanner"
Starting Step #30 - "yugabytedb"
Starting Step #20 - "redis"
Starting Step #5 - "alloydb-ai-nl"
Starting Step #3 - "alloydb"
Step #9 - "dataform": Already have image (with digest): golang:1
Starting Step #4 - "alloydb-pg"
Starting Step #18 - "sqlite"
Step #16 - "mssql": Already have image (with digest): golang:1
Starting Step #29 - "trino"
Starting Step #21 - "valkey"
Step #20 - "redis": Already have image (with digest): golang:1
Starting Step #32 - "oracle"
Step #5 - "alloydb-ai-nl": Already have image (with digest): golang:1
Starting Step #6 - "bigtable"
Step #11 - "spanner": Already have image (with digest): golang:1
Starting Step #28 - "clickhouse"
Starting Step #22 - "oceanbase"
Step #10 - "postgres": Already have image (with digest): golang:1
Starting Step #2 - "cloud-sql-pg"
Step #3 - "alloydb": Already have image (with digest): golang:1
Starting Step #12 - "neo4j"
Starting Step #19 - "couchbase"
Starting Step #8 - "dataplex"
Starting Step #27 - "firebird"
Step #32 - "oracle": Already have image (with digest): golang:1
Starting Step #14 - "cloud-sql-mysql"
Starting Step #17 - "http"
Starting Step #7 - "bigquery"
Step #21 - "valkey": Already have image (with digest): golang:1
Starting Step #26 - "tidb"
Step #22 - "oceanbase": Already have image (with digest): golang:1
Starting Step #13 - "cloud-sql-mssql"
Step #19 - "couchbase": Already have image (with digest): golang:1
Step #30 - "yugabytedb": Already have image (with digest): golang:1
Step #18 - "sqlite": Already have image (with digest): golang:1
Starting Step #15 - "mysql"
Step #28 - "clickhouse": Already have image (with digest): golang:1
Step #6 - "bigtable": Already have image (with digest): golang:1
Starting Step #31 - "cassandra"
Step #2 - "cloud-sql-pg": Already have image (with digest): golang:1
Step #17 - "http": Already have image (with digest): golang:1
Step #12 - "neo4j": Already have image (with digest): golang:1
Step #13 - "cloud-sql-mssql": Already have image (with digest): golang:1
Step #14 - "cloud-sql-mysql": Already have image (with digest): golang:1
Step #27 - "firebird": Already have image (with digest): golang:1
Step #8 - "dataplex": Already have image (with digest): golang:1
Starting Step #25 - "cloud-sql"
Step #26 - "tidb": Already have image (with digest): golang:1
Step #15 - "mysql": Already have image (with digest): golang:1
Step #29 - "trino": Already have image (with digest): golang:1
Step #7 - "bigquery": Already have image (with digest): golang:1
Starting Step #24 - "looker"
Step #31 - "cassandra": Already have image (with digest): golang:1
Starting Step #23 - "firestore"
Step #4 - "alloydb-pg": Already have image (with digest): golang:1
Step #25 - "cloud-sql": Already have image (with digest): golang:1
Step #24 - "looker": Already have image (with digest): golang:1
Step #23 - "firestore": Already have image (with digest): golang:1
Step #9 - "dataform": Get:1 http://deb.debian.org/debian trixie InRelease [140 kB]
Step #9 - "dataform": Get:2 http://deb.debian.org/debian trixie-updates InRelease [47.3 kB]
Step #9 - "dataform": Get:3 http://deb.debian.org/debian-security trixie-security InRelease [43.4 kB]
Step #9 - "dataform": Get:4 http://deb.debian.org/debian trixie/main amd64 Packages [9669 kB]
Step #9 - "dataform": Get:5 http://deb.debian.org/debian trixie-updates/main amd64 Packages [5412 B]
Step #9 - "dataform": Get:6 http://deb.debian.org/debian-security trixie-security/main amd64 Packages [61.0 kB]
Step #8 - "dataplex": === RUN   TestDataplexToolEndpoints
Step #11 - "spanner": === RUN   TestSpannerToolEndpoints
Step #17 - "http": === RUN   TestHttpToolEndpoints
Step #9 - "dataform": Fetched 9966 kB in 1s (11.3 MB/s)
Step #3 - "alloydb": === RUN   TestAlloyDBToolEndpoints
Step #3 - "alloydb": === RUN   TestAlloyDBToolEndpoints/get_my-simple-tool
Step #3 - "alloydb": 2025-10-23T22:01:38.359059236Z INFO Response: 200 OK service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/my-simple-tool/" method: "GET" path: "/api/tool/my-simple-tool/" remoteIP: "127.0.0.1:59398" proto: "HTTP/1.1" requestID: "82b0c2779de4/ZdkKO1oTcK-000001"} httpResponse: {status: 200 bytes: 505 elapsed: 0.450879} 
Step #3 - "alloydb": 2025-10-23T22:01:38.361190917Z INFO Response: 200 OK service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/mcp" method: "POST" path: "/mcp" remoteIP: "127.0.0.1:59398" proto: "HTTP/1.1" requestID: "82b0c2779de4/ZdkKO1oTcK-000002"} httpResponse: {status: 200 bytes: 196 elapsed: 0.801693} 
Step #3 - "alloydb": 2025-10-23T22:01:38.36230667Z INFO Response: 202 OK service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/mcp" method: "POST" path: "/mcp" remoteIP: "127.0.0.1:59398" proto: "HTTP/1.1" requestID: "82b0c2779de4/ZdkKO1oTcK-000003"} httpResponse: {status: 202 bytes: 0 elapsed: 0.269848} 
Step #3 - "alloydb": === RUN   TestAlloyDBToolEndpoints/MCP_Invoke_my-param-tool
Step #21 - "valkey": === RUN   TestValkeyToolEndpoints
Step #17 - "http": === RUN   TestHttpToolEndpoints/get_my-simple-tool
Step #21 - "valkey": 2025/10/23 22:01:38 Successfully connected to Valkey
Step #17 - "http": 2025-10-23T22:01:38.380943739Z INFO Response: 200 OK service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/my-simple-tool/" method: "GET" path: "/api/tool/my-simple-tool/" remoteIP: "127.0.0.1:59412" proto: "HTTP/1.1" requestID: "e6703683d0d0/NjVBLt3grM-000001"} httpResponse: {status: 200 bytes: 168 elapsed: 0.568097} 
Step #17 - "http": === RUN   TestHttpToolEndpoints/invoke_my-simple-tool
Step #17 - "http": 2025-10-23T22:01:38.386289991Z INFO Response: 200 OK service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/my-simple-tool/invoke" method: "POST" path: "/api/tool/my-simple-tool/invoke" remoteIP: "127.0.0.1:59412" proto: "HTTP/1.1" requestID: "e6703683d0d0/NjVBLt3grM-000002"} httpResponse: {status: 200 bytes: 29 elapsed: 1.304356} 
Step #17 - "http": === RUN   TestHttpToolEndpoints/invoke_my-tool
Step #17 - "http": 2025-10-23T22:01:38.387837382Z INFO Response: 200 OK service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/my-tool/invoke" method: "POST" path: "/api/tool/my-tool/invoke" remoteIP: "127.0.0.1:59412" proto: "HTTP/1.1" requestID: "e6703683d0d0/NjVBLt3grM-000003"} httpResponse: {status: 200 bytes: 73 elapsed: 0.832344} 
Step #17 - "http": === RUN   TestHttpToolEndpoints/invoke_my-tool-by-id_with_nil_response
Step #17 - "http": 2025-10-23T22:01:38.389242475Z INFO Response: 200 OK service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/my-tool-by-id/invoke" method: "POST" path: "/api/tool/my-tool-by-id/invoke" remoteIP: "127.0.0.1:59412" proto: "HTTP/1.1" requestID: "e6703683d0d0/NjVBLt3grM-000004"} httpResponse: {status: 200 bytes: 40 elapsed: 0.692576} 
Step #17 - "http": === RUN   TestHttpToolEndpoints/invoke_my-tool-by-name_with_nil_response
Step #17 - "http": 2025-10-23T22:01:38.390584614Z INFO Response: 200 OK service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/my-tool-by-name/invoke" method: "POST" path: "/api/tool/my-tool-by-name/invoke" remoteIP: "127.0.0.1:59412" proto: "HTTP/1.1" requestID: "e6703683d0d0/NjVBLt3grM-000005"} httpResponse: {status: 200 bytes: 18 elapsed: 0.632711} 
Step #17 - "http": === RUN   TestHttpToolEndpoints/Invoke_my-tool_without_parameters
Step #17 - "http": 2025-10-23T22:01:38.391534486Z INFO Response: 400 Client Error service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/my-tool/invoke" method: "POST" path: "/api/tool/my-tool/invoke" remoteIP: "127.0.0.1:59412" proto: "HTTP/1.1" requestID: "e6703683d0d0/NjVBLt3grM-000006"} httpResponse: {status: 400 bytes: 100 elapsed: 0.198893} 
Step #17 - "http": === RUN   TestHttpToolEndpoints/Invoke_my-tool_with_insufficient_parameters
Step #17 - "http": 2025-10-23T22:01:38.392630878Z INFO Response: 400 Client Error service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/my-tool/invoke" method: "POST" path: "/api/tool/my-tool/invoke" remoteIP: "127.0.0.1:59418" proto: "HTTP/1.1" requestID: "e6703683d0d0/NjVBLt3grM-000007"} httpResponse: {status: 400 bytes: 100 elapsed: 0.194753} 
Step #17 - "http": === RUN   TestHttpToolEndpoints/invoke_my-array-tool
Step #17 - "http": === RUN   TestHttpToolEndpoints/Invoke_my-auth-tool_with_auth_token
Step #21 - "valkey": === RUN   TestValkeyToolEndpoints/get_my-simple-tool
Step #21 - "valkey": 2025-10-23T22:01:38.408603491Z INFO Response: 200 OK service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/my-simple-tool/" method: "GET" path: "/api/tool/my-simple-tool/" remoteIP: "127.0.0.1:59444" proto: "HTTP/1.1" requestID: "32e7d34a961a/9mJlBVXrsV-000001"} httpResponse: {status: 200 bytes: 168 elapsed: 0.436829} 
Step #21 - "valkey": === RUN   TestValkeyToolEndpoints/invoke_my-simple-tool
Step #21 - "valkey": 2025-10-23T22:01:38.414086122Z INFO Response: 200 OK service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/my-simple-tool/invoke" method: "POST" path: "/api/tool/my-simple-tool/invoke" remoteIP: "127.0.0.1:59444" proto: "HTTP/1.1" requestID: "32e7d34a961a/9mJlBVXrsV-000002"} httpResponse: {status: 200 bytes: 24 elapsed: 0.810143} 
Step #21 - "valkey": === RUN   TestValkeyToolEndpoints/invoke_my-tool
Step #21 - "valkey": 2025-10-23T22:01:38.415587571Z INFO Response: 200 OK service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/my-tool/invoke" method: "POST" path: "/api/tool/my-tool/invoke" remoteIP: "127.0.0.1:59444" proto: "HTTP/1.1" requestID: "32e7d34a961a/9mJlBVXrsV-000003"} httpResponse: {status: 200 bytes: 81 elapsed: 0.693066} 
Step #21 - "valkey": === RUN   TestValkeyToolEndpoints/invoke_my-tool-by-id_with_nil_response
Step #21 - "valkey": 2025-10-23T22:01:38.416986554Z INFO Response: 200 OK service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/my-tool-by-id/invoke" method: "POST" path: "/api/tool/my-tool-by-id/invoke" remoteIP: "127.0.0.1:59444" proto: "HTTP/1.1" requestID: "32e7d34a961a/9mJlBVXrsV-000004"} httpResponse: {status: 200 bytes: 44 elapsed: 0.579449} 
Step #21 - "valkey": === RUN   TestValkeyToolEndpoints/invoke_my-tool-by-name_with_nil_response
Step #21 - "valkey": 2025-10-23T22:01:38.418315631Z INFO Response: 200 OK service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/my-tool-by-name/invoke" method: "POST" path: "/api/tool/my-tool-by-name/invoke" remoteIP: "127.0.0.1:59444" proto: "HTTP/1.1" requestID: "32e7d34a961a/9mJlBVXrsV-000005"} httpResponse: {status: 200 bytes: 24 elapsed: 0.606740} 
Step #21 - "valkey": === RUN   TestValkeyToolEndpoints/Invoke_my-tool_without_parameters
Step #21 - "valkey": 2025-10-23T22:01:38.419298816Z INFO Response: 400 Client Error service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/my-tool/invoke" method: "POST" path: "/api/tool/my-tool/invoke" remoteIP: "127.0.0.1:59444" proto: "HTTP/1.1" requestID: "32e7d34a961a/9mJlBVXrsV-000006"} httpResponse: {status: 400 bytes: 98 elapsed: 0.236686} 
Step #21 - "valkey": === RUN   TestValkeyToolEndpoints/Invoke_my-tool_with_insufficient_parameters
Step #21 - "valkey": 2025-10-23T22:01:38.420438891Z INFO Response: 400 Client Error service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/my-tool/invoke" method: "POST" path: "/api/tool/my-tool/invoke" remoteIP: "127.0.0.1:59450" proto: "HTTP/1.1" requestID: "32e7d34a961a/9mJlBVXrsV-000007"} httpResponse: {status: 400 bytes: 100 elapsed: 0.224845} 
Step #21 - "valkey": === RUN   TestValkey
...
[Logs truncated due to log size limitations. For full logs, see https://console.cloud.google.com/logs/viewer?advancedFilter=resource.type%3D%22build%22+AND+resource.labels.build_id%3D%22f20a763d-844d-448d-a568-febaa2b6b0d2%22+AND+resource.labels.build_trigger_id%3D%22785da918-06f1-47bb-860c-fbabc80b5977%22&project=toolbox-testing-438616.]
...
imple-tool/" method: "GET" path: "/api/tool/my-simple-tool/" remoteIP: "127.0.0.1:35774" proto: "HTTP/1.1" requestID: "466523ad4b6b/TcZypMetv8-000001"} httpResponse: {status: 200 bytes: 168 elapsed: 0.423848} 
Step #10 - "postgres": === RUN   TestPostgres/invoke_my-simple-tool
Step #32 - "oracle": === RUN   TestOracleSimpleToolEndpoints
Step #26 - "tidb": --- PASS: TestTiDBToolEndpoints (1.75s)
Step #26 - "tidb":     --- PASS: TestTiDBToolEndpoints/get_my-simple-tool (0.00s)
Step #26 - "tidb":     --- PASS: TestTiDBToolEndpoints/invoke_my-simple-tool (0.00s)
Step #26 - "tidb":     --- PASS: TestTiDBToolEndpoints/invoke_my-tool (0.01s)
Step #26 - "tidb":     --- PASS: TestTiDBToolEndpoints/invoke_my-tool-by-id_with_nil_response (0.00s)
Step #26 - "tidb":     --- PASS: TestTiDBToolEndpoints/invoke_my-tool-by-name_with_nil_response (0.00s)
Step #26 - "tidb":     --- PASS: TestTiDBToolEndpoints/Invoke_my-tool_without_parameters (0.00s)
Step #26 - "tidb":     --- PASS: TestTiDBToolEndpoints/Invoke_my-tool_with_insufficient_parameters (0.00s)
Step #26 - "tidb":     --- PASS: TestTiDBToolEndpoints/invoke_my-array-tool (0.00s)
Step #26 - "tidb":     --- PASS: TestTiDBToolEndpoints/Invoke_my-auth-tool_with_auth_token (0.14s)
Step #26 - "tidb":     --- PASS: TestTiDBToolEndpoints/Invoke_my-auth-tool_with_invalid_auth_token (0.00s)
Step #26 - "tidb":     --- PASS: TestTiDBToolEndpoints/Invoke_my-auth-tool_without_auth_token (0.00s)
Step #26 - "tidb":     --- PASS: TestTiDBToolEndpoints/Invoke_my-auth-required-tool_with_auth_token (0.00s)
Step #26 - "tidb":     --- PASS: TestTiDBToolEndpoints/Invoke_my-auth-required-tool_with_invalid_auth_token (0.00s)
Step #26 - "tidb":     --- PASS: TestTiDBToolEndpoints/Invoke_my-auth-required-tool_without_auth_token (0.00s)
Step #26 - "tidb":     --- PASS: TestTiDBToolEndpoints/Invoke_my-client-auth-tool_with_auth_token (0.00s)
Step #26 - "tidb":     --- PASS: TestTiDBToolEndpoints/Invoke_my-client-auth-tool_without_auth_token (0.00s)
Step #26 - "tidb":     --- PASS: TestTiDBToolEndpoints/Invoke_my-client-auth-tool_with_invalid_auth_token (0.00s)
Step #26 - "tidb":     --- PASS: TestTiDBToolEndpoints/MCP_Invoke_my-tool (0.01s)
Step #26 - "tidb":     --- PASS: TestTiDBToolEndpoints/MCP_Invoke_invalid_tool (0.00s)
Step #26 - "tidb":     --- PASS: TestTiDBToolEndpoints/MCP_Invoke_my-tool_without_parameters (0.00s)
Step #26 - "tidb":     --- PASS: TestTiDBToolEndpoints/MCP_Invoke_my-tool_with_insufficient_parameters (0.00s)
Step #26 - "tidb":     --- PASS: TestTiDBToolEndpoints/MCP_Invoke_my-auth-required-tool (0.00s)
Step #26 - "tidb":     --- PASS: TestTiDBToolEndpoints/MCP_Invoke_my-auth-required-tool_with_invalid_auth_token (0.00s)
Step #26 - "tidb":     --- PASS: TestTiDBToolEndpoints/MCP_Invoke_my-auth-required-tool_without_auth_token (0.00s)
Step #26 - "tidb":     --- PASS: TestTiDBToolEndpoints/MCP_Invoke_my-client-auth-tool (0.00s)
Step #26 - "tidb":     --- PASS: TestTiDBToolEndpoints/MCP_Invoke_my-client-auth-tool_without_access_token (0.00s)
Step #26 - "tidb":     --- PASS: TestTiDBToolEndpoints/MCP_Invoke_my-client-auth-tool_with_invalid_access_token (0.00s)
Step #26 - "tidb":     --- PASS: TestTiDBToolEndpoints/MCP_Invoke_my-fail-tool (0.00s)
Step #26 - "tidb":     --- PASS: TestTiDBToolEndpoints/invoke_my-exec-sql-tool (0.00s)
Step #26 - "tidb":     --- PASS: TestTiDBToolEndpoints/invoke_my-exec-sql-tool_create_table (0.13s)
Step #26 - "tidb":     --- PASS: TestTiDBToolEndpoints/invoke_my-exec-sql-tool_select_table (0.00s)
Step #26 - "tidb":     --- PASS: TestTiDBToolEndpoints/invoke_my-exec-sql-tool_drop_table (0.31s)
Step #26 - "tidb":     --- PASS: TestTiDBToolEndpoints/invoke_my-exec-sql-tool_without_body (0.00s)
Step #26 - "tidb":     --- PASS: TestTiDBToolEndpoints/Invoke_my-auth-exec-sql-tool_with_auth_token (0.00s)
Step #26 - "tidb":     --- PASS: TestTiDBToolEndpoints/Invoke_my-auth-exec-sql-tool_with_invalid_auth_token (0.00s)
Step #26 - "tidb":     --- PASS: TestTiDBToolEndpoints/Invoke_my-auth-exec-sql-tool_without_auth_token (0.00s)
Step #26 - "tidb":     --- PASS: TestTiDBToolEndpoints/invoke_create-table-templateParams-tool (0.00s)
Step #26 - "tidb":     --- PASS: TestTiDBToolEndpoints/invoke_insert-table-templateParams-tool (0.00s)
Step #26 - "tidb":     --- PASS: TestTiDBToolEndpoints/invoke_insert-table-templateParams-tool#01 (0.00s)
Step #26 - "tidb":     --- PASS: TestTiDBToolEndpoints/invoke_select-templateParams-tool (0.00s)
Step #26 - "tidb":     --- PASS: TestTiDBToolEndpoints/invoke_select-templateParams-combined-tool (0.00s)
Step #26 - "tidb":     --- PASS: TestTiDBToolEndpoints/invoke_select-templateParams-combined-tool_with_no_results (0.00s)
Step #26 - "tidb":     --- PASS: TestTiDBToolEndpoints/invoke_select-fields-templateParams-tool (0.00s)
Step #26 - "tidb":     --- PASS: TestTiDBToolEndpoints/invoke_select-filter-templateParams-combined-tool (0.00s)
Step #26 - "tidb":     --- PASS: TestTiDBToolEndpoints/invoke_drop-table-templateParams-tool (0.00s)
Step #26 - "tidb": PASS
Step #26 - "tidb": coverage: 4.6% of statements in ./internal/sources/..., ./internal/tools/...
Step #10 - "postgres": 2025-10-23T22:01:45.01509333Z INFO Response: 200 OK service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/my-simple-tool/invoke" method: "POST" path: "/api/tool/my-simple-tool/invoke" remoteIP: "127.0.0.1:35774" proto: "HTTP/1.1" requestID: "466523ad4b6b/TcZypMetv8-000002"} httpResponse: {status: 200 bytes: 32 elapsed: 47.759157} 
Step #10 - "postgres": === RUN   TestPostgres/invoke_my-tool
Step #31 - "cassandra": === RUN   TestCassandra
Step #22 - "oceanbase": 2025-10-23T22:01:45.041417505Z INFO Response: 200 OK service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/my-exec-sql-tool/invoke" method: "POST" path: "/api/tool/my-exec-sql-tool/invoke" remoteIP: "127.0.0.1:35764" proto: "HTTP/1.1" requestID: "50d51a5f79fc/ppoGM1hqp7-000023"} httpResponse: {status: 200 bytes: 18 elapsed: 129.273148} 
Step #22 - "oceanbase": === RUN   TestOceanBaseToolEndpoints/invoke_my-exec-sql-tool_select_table
Step #10 - "postgres": 2025-10-23T22:01:45.064631265Z INFO Response: 200 OK service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/my-tool/invoke" method: "POST" path: "/api/tool/my-tool/invoke" remoteIP: "127.0.0.1:35774" proto: "HTTP/1.1" requestID: "466523ad4b6b/TcZypMetv8-000003"} httpResponse: {status: 200 bytes: 73 elapsed: 48.560510} 
Step #10 - "postgres": === RUN   TestPostgres/invoke_my-tool-by-id_with_nil_response
Step #22 - "oceanbase": 2025-10-23T22:01:45.073389191Z INFO Response: 200 OK service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/my-exec-sql-tool/invoke" method: "POST" path: "/api/tool/my-exec-sql-tool/invoke" remoteIP: "127.0.0.1:35764" proto: "HTTP/1.1" requestID: "50d51a5f79fc/ppoGM1hqp7-000024"} httpResponse: {status: 200 bytes: 18 elapsed: 31.022134} 
Step #22 - "oceanbase": === RUN   TestOceanBaseToolEndpoints/invoke_my-exec-sql-tool_drop_table
Step #10 - "postgres": 2025-10-23T22:01:45.113259218Z INFO Response: 200 OK service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/my-tool-by-id/invoke" method: "POST" path: "/api/tool/my-tool-by-id/invoke" remoteIP: "127.0.0.1:35774" proto: "HTTP/1.1" requestID: "466523ad4b6b/TcZypMetv8-000004"} httpResponse: {status: 200 bytes: 40 elapsed: 47.797799} 
Step #10 - "postgres": === RUN   TestPostgres/invoke_my-tool-by-name_with_nil_response
Step #24 - "looker": === RUN   TestLooker/get_get_models
Step #24 - "looker": 2025-10-23T22:01:45.129927847Z INFO Response: 200 OK service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/get_models/" method: "GET" path: "/api/tool/get_models/" remoteIP: "127.0.0.1:35786" proto: "HTTP/1.1" requestID: "ba0bd04f8ac0/THYtsd2iUW-000001"} httpResponse: {status: 200 bytes: 164 elapsed: 0.368144} 
Step #24 - "looker": === RUN   TestLooker/get_get_explores
Step #24 - "looker": 2025-10-23T22:01:45.130924873Z INFO Response: 200 OK service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/get_explores/" method: "GET" path: "/api/tool/get_explores/" remoteIP: "127.0.0.1:35786" proto: "HTTP/1.1" requestID: "ba0bd04f8ac0/THYtsd2iUW-000002"} httpResponse: {status: 200 bytes: 282 elapsed: 0.113077} 
Step #24 - "looker": === RUN   TestLooker/get_get_dimensions
Step #24 - "looker": 2025-10-23T22:01:45.131822502Z INFO Response: 200 OK service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/get_dimensions/" method: "GET" path: "/api/tool/get_dimensions/" remoteIP: "127.0.0.1:35786" proto: "HTTP/1.1" requestID: "ba0bd04f8ac0/THYtsd2iUW-000003"} httpResponse: {status: 200 bytes: 402 elapsed: 0.118388} 
Step #24 - "looker": === RUN   TestLooker/get_get_measures
Step #24 - "looker": 2025-10-23T22:01:45.132893772Z INFO Response: 200 OK service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/get_measures/" method: "GET" path: "/api/tool/get_measures/" remoteIP: "127.0.0.1:35786" proto: "HTTP/1.1" requestID: "ba0bd04f8ac0/THYtsd2iUW-000004"} httpResponse: {status: 200 bytes: 400 elapsed: 0.117898} 
Step #24 - "looker": === RUN   TestLooker/get_get_parameters
Step #24 - "looker": 2025-10-23T22:01:45.1337696Z INFO Response: 200 OK service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/get_parameters/" method: "GET" path: "/api/tool/get_parameters/" remoteIP: "127.0.0.1:35786" proto: "HTTP/1.1" requestID: "ba0bd04f8ac0/THYtsd2iUW-000005"} httpResponse: {status: 200 bytes: 402 elapsed: 0.091236} 
Step #24 - "looker": === RUN   TestLooker/get_get_filters
Step #24 - "looker": 2025-10-23T22:01:45.13467294Z INFO Response: 200 OK service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/get_filters/" method: "GET" path: "/api/tool/get_filters/" remoteIP: "127.0.0.1:35786" proto: "HTTP/1.1" requestID: "ba0bd04f8ac0/THYtsd2iUW-000006"} httpResponse: {status: 200 bytes: 399 elapsed: 0.093636} 
Step #24 - "looker": === RUN   TestLooker/get_query
Step #24 - "looker": 2025-10-23T22:01:45.135642524Z INFO Response: 200 OK service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/query/" method: "GET" path: "/api/tool/query/" remoteIP: "127.0.0.1:35786" proto: "HTTP/1.1" requestID: "ba0bd04f8ac0/THYtsd2iUW-000007"} httpResponse: {status: 200 bytes: 1493 elapsed: 0.198163} 
Step #24 - "looker": === RUN   TestLooker/get_query_sql
Step #24 - "looker": 2025-10-23T22:01:45.136889235Z INFO Response: 200 OK service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/query_sql/" method: "GET" path: "/api/tool/query_sql/" remoteIP: "127.0.0.1:35786" proto: "HTTP/1.1" requestID: "ba0bd04f8ac0/THYtsd2iUW-000008"} httpResponse: {status: 200 bytes: 1497 elapsed: 0.206403} 
Step #24 - "looker": === RUN   TestLooker/get_query_url
Step #24 - "looker": 2025-10-23T22:01:45.13802343Z INFO Response: 200 OK service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/query_url/" method: "GET" path: "/api/tool/query_url/" remoteIP: "127.0.0.1:35786" proto: "HTTP/1.1" requestID: "ba0bd04f8ac0/THYtsd2iUW-000009"} httpResponse: {status: 200 bytes: 1652 elapsed: 0.158771} 
Step #24 - "looker": === RUN   TestLooker/get_get_looks
Step #24 - "looker": 2025-10-23T22:01:45.139194958Z INFO Response: 200 OK service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/get_looks/" method: "GET" path: "/api/tool/get_looks/" remoteIP: "127.0.0.1:35786" proto: "HTTP/1.1" requestID: "ba0bd04f8ac0/THYtsd2iUW-000010"} httpResponse: {status: 200 bytes: 645 elapsed: 0.134899} 
Step #24 - "looker": === RUN   TestLooker/get_get_dashboards
Step #24 - "looker": 2025-10-23T22:01:45.140310581Z INFO Response: 200 OK service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/get_dashboards/" method: "GET" path: "/api/tool/get_dashboards/" remoteIP: "127.0.0.1:35786" proto: "HTTP/1.1" requestID: "ba0bd04f8ac0/THYtsd2iUW-000011"} httpResponse: {status: 200 bytes: 670 elapsed: 0.098456} 
Step #24 - "looker": === RUN   TestLooker/get_conversational_analytics
Step #24 - "looker": 2025-10-23T22:01:45.141384962Z INFO Response: 200 OK service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/conversational_analytics/" method: "GET" path: "/api/tool/conversational_analytics/" remoteIP: "127.0.0.1:35786" proto: "HTTP/1.1" requestID: "ba0bd04f8ac0/THYtsd2iUW-000012"} httpResponse: {status: 200 bytes: 793 elapsed: 0.111538} 
Step #24 - "looker": === RUN   TestLooker/get_health_pulse
Step #24 - "looker": 2025-10-23T22:01:45.142387878Z INFO Response: 200 OK service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/health_pulse/" method: "GET" path: "/api/tool/health_pulse/" remoteIP: "127.0.0.1:35786" proto: "HTTP/1.1" requestID: "ba0bd04f8ac0/THYtsd2iUW-000013"} httpResponse: {status: 200 bytes: 487 elapsed: 0.088295} 
Step #24 - "looker": === RUN   TestLooker/get_health_analyze
Step #24 - "looker": 2025-10-23T22:01:45.143297848Z INFO Response: 200 OK service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/health_analyze/" method: "GET" path: "/api/tool/health_analyze/" remoteIP: "127.0.0.1:35786" proto: "HTTP/1.1" requestID: "ba0bd04f8ac0/THYtsd2iUW-000014"} httpResponse: {status: 200 bytes: 1006 elapsed: 0.120728} 
Step #24 - "looker": === RUN   TestLooker/get_health_vacuum
Step #24 - "looker": 2025-10-23T22:01:45.14423445Z INFO Response: 200 OK service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/health_vacuum/" method: "GET" path: "/api/tool/health_vacuum/" remoteIP: "127.0.0.1:35786" proto: "HTTP/1.1" requestID: "ba0bd04f8ac0/THYtsd2iUW-000015"} httpResponse: {status: 200 bytes: 970 elapsed: 0.111548} 
Step #24 - "looker": === RUN   TestLooker/get_dev_mode
Step #24 - "looker": 2025-10-23T22:01:45.145433129Z INFO Response: 200 OK service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/dev_mode/" method: "GET" path: "/api/tool/dev_mode/" remoteIP: "127.0.0.1:35786" proto: "HTTP/1.1" requestID: "ba0bd04f8ac0/THYtsd2iUW-000016"} httpResponse: {status: 200 bytes: 272 elapsed: 0.089446} 
Step #24 - "looker": === RUN   TestLooker/get_get_projects
Step #24 - "looker": 2025-10-23T22:01:45.146271674Z INFO Response: 200 OK service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/get_projects/" method: "GET" path: "/api/tool/get_projects/" remoteIP: "127.0.0.1:35786" proto: "HTTP/1.1" requestID: "ba0bd04f8ac0/THYtsd2iUW-000017"} httpResponse: {status: 200 bytes: 166 elapsed: 0.089606} 
Step #24 - "looker": === RUN   TestLooker/get_get_project_files
Step #24 - "looker": 2025-10-23T22:01:45.147094668Z INFO Response: 200 OK service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/get_project_files/" method: "GET" path: "/api/tool/get_project_files/" remoteIP: "127.0.0.1:35786" proto: "HTTP/1.1" requestID: "ba0bd04f8ac0/THYtsd2iUW-000018"} httpResponse: {status: 200 bytes: 300 elapsed: 0.089726} 
Step #24 - "looker": === RUN   TestLooker/get_get_project_file
Step #24 - "looker": 2025-10-23T22:01:45.14787749Z INFO Response: 200 OK service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/get_project_file/" method: "GET" path: "/api/tool/get_project_file/" remoteIP: "127.0.0.1:35786" proto: "HTTP/1.1" requestID: "ba0bd04f8ac0/THYtsd2iUW-000019"} httpResponse: {status: 200 bytes: 425 elapsed: 0.097176} 
Step #24 - "looker": === RUN   TestLooker/get_create_project_file
Step #24 - "looker": 2025-10-23T22:01:45.148701074Z INFO Response: 200 OK service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/create_project_file/" method: "GET" path: "/api/tool/create_project_file/" remoteIP: "127.0.0.1:35786" proto: "HTTP/1.1" requestID: "ba0bd04f8ac0/THYtsd2iUW-000020"} httpResponse: {status: 200 bytes: 541 elapsed: 0.096957} 
Step #24 - "looker": === RUN   TestLooker/get_update_project_file
Step #24 - "looker": 2025-10-23T22:01:45.149521828Z INFO Response: 200 OK service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/update_project_file/" method: "GET" path: "/api/tool/update_project_file/" remoteIP: "127.0.0.1:35786" proto: "HTTP/1.1" requestID: "ba0bd04f8ac0/THYtsd2iUW-000021"} httpResponse: {status: 200 bytes: 541 elapsed: 0.093246} 
Step #24 - "looker": === RUN   TestLooker/get_delete_project_file
Step #24 - "looker": 2025-10-23T22:01:45.150319791Z INFO Response: 200 OK service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/delete_project_file/" method: "GET" path: "/api/tool/delete_project_file/" remoteIP: "127.0.0.1:35786" proto: "HTTP/1.1" requestID: "ba0bd04f8ac0/THYtsd2iUW-000022"} httpResponse: {status: 200 bytes: 428 elapsed: 0.087856} 
Step #24 - "looker": === RUN   TestLooker/invoke_get_models
Step #10 - "postgres": 2025-10-23T22:01:45.161725072Z INFO Response: 200 OK service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/my-tool-by-name/invoke" method: "POST" path: "/api/tool/my-tool-by-name/invoke" remoteIP: "127.0.0.1:35774" proto: "HTTP/1.1" requestID: "466523ad4b6b/TcZypMetv8-000005"} httpResponse: {status: 200 bytes: 18 elapsed: 47.565774} 
Step #10 - "postgres": === RUN   TestPostgres/Invoke_my-tool_without_parameters
Step #10 - "postgres": 2025-10-23T22:01:45.162868527Z INFO Response: 400 Client Error service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/my-tool/invoke" method: "POST" path: "/api/tool/my-tool/invoke" remoteIP: "127.0.0.1:35774" proto: "HTTP/1.1" requestID: "466523ad4b6b/TcZypMetv8-000006"} httpResponse: {status: 400 bytes: 98 elapsed: 0.266678} 
Step #10 - "postgres": === RUN   TestPostgres/Invoke_my-tool_with_insufficient_parameters
Step #10 - "postgres": 2025-10-23T22:01:45.164179464Z INFO Response: 400 Client Error service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/my-tool/invoke" method: "POST" path: "/api/tool/my-tool/invoke" remoteIP: "127.0.0.1:35794" proto: "HTTP/1.1" requestID: "466523ad4b6b/TcZypMetv8-000007"} httpResponse: {status: 400 bytes: 100 elapsed: 0.294879} 
Step #10 - "postgres": === RUN   TestPostgres/invoke_my-array-tool
Step #5 - "alloydb-ai-nl": Calculating coverage for AlloyDB AI NL...
Step #22 - "oceanbase": 2025-10-23T22:01:45.210872951Z INFO Response: 200 OK service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/my-exec-sql-tool/invoke" method: "POST" path: "/api/tool/my-exec-sql-tool/invoke" remoteIP: "127.0.0.1:35764" proto: "HTTP/1.1" requestID: "50d51a5f79fc/ppoGM1hqp7-000025"} httpResponse: {status: 200 bytes: 18 elapsed: 136.581810} 
Step #22 - "oceanbase": === RUN   TestOceanBaseToolEndpoints/invoke_my-exec-sql-tool_without_body
Step #22 - "oceanbase": 2025-10-23T22:01:45.211889638Z INFO Response: 400 Client Error service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/my-exec-sql-tool/invoke" method: "POST" path: "/api/tool/my-exec-sql-tool/invoke" remoteIP: "127.0.0.1:35764" proto: "HTTP/1.1" requestID: "50d51a5f79fc/ppoGM1hqp7-000026"} httpResponse: {status: 400 bytes: 99 elapsed: 0.211284} 
Step #22 - "oceanbase": === RUN   TestOceanBaseToolEndpoints/Invoke_my-auth-exec-sql-tool_with_auth_token
Step #10 - "postgres": 2025-10-23T22:01:45.213268059Z INFO Response: 200 OK service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/my-array-tool/invoke" method: "POST" path: "/api/tool/my-array-tool/invoke" remoteIP: "127.0.0.1:35804" proto: "HTTP/1.1" requestID: "466523ad4b6b/TcZypMetv8-000008"} httpResponse: {status: 200 bytes: 73 elapsed: 48.133202} 
Step #10 - "postgres": === RUN   TestPostgres/Invoke_my-auth-tool_with_auth_token
Step #22 - "oceanbase": 2025-10-23T22:01:45.215395879Z INFO Response: 200 OK service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/my-auth-exec-sql-tool/invoke" method: "POST" path: "/api/tool/my-auth-exec-sql-tool/invoke" remoteIP: "127.0.0.1:35814" proto: "HTTP/1.1" requestID: "50d51a5f79fc/ppoGM1hqp7-000027"} httpResponse: {status: 200 bytes: 25 elapsed: 2.404919} 
Step #22 - "oceanbase": === RUN   TestOceanBaseToolEndpoints/Invoke_my-auth-exec-sql-tool_with_invalid_auth_token
Step #22 - "oceanbase": 2025-10-23T22:01:45.216401905Z INFO Response: 401 Client Error service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/my-auth-exec-sql-tool/invoke" method: "POST" path: "/api/tool/my-auth-exec-sql-tool/invoke" remoteIP: "127.0.0.1:35814" proto: "HTTP/1.1" requestID: "50d51a5f79fc/ppoGM1hqp7-000028"} httpResponse: {status: 401 bytes: 119 elapsed: 0.146160} 
Step #22 - "oceanbase": === RUN   TestOceanBaseToolEndpoints/Invoke_my-auth-exec-sql-tool_without_auth_token
Step #22 - "oceanbase": 2025-10-23T22:01:45.217568282Z INFO Response: 401 Client Error service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/my-auth-exec-sql-tool/invoke" method: "POST" path: "/api/tool/my-auth-exec-sql-tool/invoke" remoteIP: "127.0.0.1:35828" proto: "HTTP/1.1" requestID: "50d51a5f79fc/ppoGM1hqp7-000029"} httpResponse: {status: 401 bytes: 119 elapsed: 0.126639} 
Step #22 - "oceanbase": === RUN   TestOceanBaseToolEndpoints/invoke_create-table-templateParams-tool
Step #22 - "oceanbase": === RUN   TestOceanBaseToolEndpoints/invoke_insert-table-templateParams-tool
Step #22 - "oceanbase": === RUN   TestOceanBaseToolEndpoints/invoke_insert-table-templateParams-tool#01
Step #22 - "oceanbase": === RUN   TestOceanBaseToolEndpoints/invoke_select-templateParams-tool
Step #22 - "oceanbase": === RUN   TestOceanBaseToolEndpoints/invoke_select-templateParams-combined-tool
Step #22 - "oceanbase": === RUN   TestOceanBaseToolEndpoints/invoke_select-templateParams-combined-tool_with_no_results
Step #22 - "oceanbase": === RUN   TestOceanBaseToolEndpoints/invoke_select-fields-templateParams-tool
Step #22 - "oceanbase": === RUN   TestOceanBaseToolEndpoints/invoke_select-filter-templateParams-combined-tool
Step #22 - "oceanbase": === RUN   TestOceanBaseToolEndpoints/invoke_drop-table-templateParams-tool
Step #28 - "clickhouse": Calculating coverage for ClickHouse...
Step #5 - "alloydb-ai-nl": AlloyDB AI NL total coverage: 90.0%
Step #5 - "alloydb-ai-nl": Coverage for AlloyDB AI NL is sufficient.
Step #22 - "oceanbase": --- PASS: TestOceanBaseToolEndpoints (1.34s)
Step #22 - "oceanbase":     --- PASS: TestOceanBaseToolEndpoints/get_my-simple-tool (0.00s)
Step #22 - "oceanbase":     --- PASS: TestOceanBaseToolEndpoints/invoke_my-simple-tool (0.00s)
Step #22 - "oceanbase":     --- PASS: TestOceanBaseToolEndpoints/invoke_my-tool (0.01s)
Step #22 - "oceanbase":     --- PASS: TestOceanBaseToolEndpoints/invoke_my-tool-by-id_with_nil_response (0.01s)
Step #22 - "oceanbase":     --- PASS: TestOceanBaseToolEndpoints/invoke_my-tool-by-name_with_nil_response (0.01s)
Step #22 - "oceanbase":     --- PASS: TestOceanBaseToolEndpoints/Invoke_my-tool_without_parameters (0.00s)
Step #22 - "oceanbase":     --- PASS: TestOceanBaseToolEndpoints/Invoke_my-tool_with_insufficient_parameters (0.00s)
Step #22 - "oceanbase":     --- PASS: TestOceanBaseToolEndpoints/invoke_my-array-tool (0.00s)
Step #22 - "oceanbase":     --- PASS: TestOceanBaseToolEndpoints/Invoke_my-auth-tool_with_auth_token (0.14s)
Step #22 - "oceanbase":     --- PASS: TestOceanBaseToolEndpoints/Invoke_my-auth-tool_with_invalid_auth_token (0.00s)
Step #22 - "oceanbase":     --- PASS: TestOceanBaseToolEndpoints/Invoke_my-auth-tool_without_auth_token (0.00s)
Step #22 - "oceanbase":     --- PASS: TestOceanBaseToolEndpoints/Invoke_my-auth-required-tool_with_auth_token (0.00s)
Step #22 - "oceanbase":     --- PASS: TestOceanBaseToolEndpoints/Invoke_my-auth-required-tool_with_invalid_auth_token (0.00s)
Step #22 - "oceanbase":     --- PASS: TestOceanBaseToolEndpoints/Invoke_my-auth-required-tool_without_auth_token (0.00s)
Step #22 - "oceanbase":     --- PASS: TestOceanBaseToolEndpoints/Invoke_my-client-auth-tool_with_auth_token (0.00s)
Step #22 - "oceanbase":     --- PASS: TestOceanBaseToolEndpoints/Invoke_my-client-auth-tool_without_auth_token (0.00s)
Step #22 - "oceanbase":     --- PASS: TestOceanBaseToolEndpoints/Invoke_my-client-auth-tool_with_invalid_auth_token (0.00s)
Step #22 - "oceanbase":     --- PASS: TestOceanBaseToolEndpoints/MCP_Invoke_my-tool (0.00s)
Step #22 - "oceanbase":     --- PASS: TestOceanBaseToolEndpoints/MCP_Invoke_invalid_tool (0.00s)
Step #22 - "oceanbase":     --- PASS: TestOceanBaseToolEndpoints/MCP_Invoke_my-tool_without_parameters (0.00s)
Step #22 - "oceanbase":     --- PASS: TestOceanBaseToolEndpoints/MCP_Invoke_my-tool_with_insufficient_parameters (0.00s)
Step #22 - "oceanbase":     --- PASS: TestOceanBaseToolEndpoints/MCP_Invoke_my-auth-required-tool (0.00s)
Step #22 - "oceanbase":     --- PASS: TestOceanBaseToolEndpoints/MCP_Invoke_my-auth-required-tool_with_invalid_auth_token (0.00s)
Step #22 - "oceanbase":     --- PASS: TestOceanBaseToolEndpoints/MCP_Invoke_my-auth-required-tool_without_auth_token (0.00s)
Step #22 - "oceanbase":     --- PASS: TestOceanBaseToolEndpoints/MCP_Invoke_my-client-auth-tool (0.00s)
Step #22 - "oceanbase":     --- PASS: TestOceanBaseToolEndpoints/MCP_Invoke_my-client-auth-tool_without_access_token (0.00s)
Step #22 - "oceanbase":     --- PASS: TestOceanBaseToolEndpoints/MCP_Invoke_my-client-auth-tool_with_invalid_access_token (0.00s)
Step #22 - "oceanbase":     --- PASS: TestOceanBaseToolEndpoints/MCP_Invoke_my-fail-tool (0.00s)
Step #22 - "oceanbase":     --- PASS: TestOceanBaseToolEndpoints/invoke_my-exec-sql-tool (0.00s)
Step #22 - "oceanbase":     --- PASS: TestOceanBaseToolEndpoints/invoke_my-exec-sql-tool_create_table (0.13s)
Step #22 - "oceanbase":     --- PASS: TestOceanBaseToolEndpoints/invoke_my-exec-sql-tool_select_table (0.03s)
Step #22 - "oceanbase":     --- PASS: TestOceanBaseToolEndpoints/invoke_my-exec-sql-tool_drop_table (0.14s)
Step #22 - "oceanbase":     --- PASS: TestOceanBaseToolEndpoints/invoke_my-exec-sql-tool_without_body (0.00s)
Step #22 - "oceanbase":     --- PASS: TestOceanBaseToolEndpoints/Invoke_my-auth-exec-sql-tool_with_auth_token (0.00s)
Step #22 - "oceanbase":     --- PASS: TestOceanBaseToolEndpoints/Invoke_my-auth-exec-sql-tool_with_invalid_auth_token (0.00s)
Step #22 - "oceanbase":     --- PASS: TestOceanBaseToolEndpoints/Invoke_my-auth-exec-sql-tool_without_auth_token (0.00s)
Step #22 - "oceanbase":     --- PASS: TestOceanBaseToolEndpoints/invoke_create-table-templateParams-tool (0.00s)
Step #22 - "oceanbase":     --- PASS: TestOceanBaseToolEndpoints/invoke_insert-table-templateParams-tool (0.00s)
Step #22 - "oceanbase":     --- PASS: TestOceanBaseToolEndpoints/invoke_insert-table-templateParams-tool#01 (0.00s)
Step #22 - "oceanbase":     --- PASS: TestOceanBaseToolEndpoints/invoke_select-templateParams-tool (0.00s)
Step #22 - "oceanbase":     --- PASS: TestOceanBaseToolEndpoints/invoke_select-templateParams-combined-tool (0.00s)
Step #22 - "oceanbase":     --- PASS: TestOceanBaseToolEndpoints/invoke_select-templateParams-combined-tool_with_no_results (0.00s)
Step #22 - "oceanbase":     --- PASS: TestOceanBaseToolEndpoints/invoke_select-fields-templateParams-tool (0.00s)
Step #22 - "oceanbase":     --- PASS: TestOceanBaseToolEndpoints/invoke_select-filter-templateParams-combined-tool (0.00s)
Step #22 - "oceanbase":     --- PASS: TestOceanBaseToolEndpoints/invoke_drop-table-templateParams-tool (0.00s)
Step #22 - "oceanbase": PASS
Step #10 - "postgres": 2025-10-23T22:01:45.399033009Z INFO Response: 200 OK service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/my-auth-tool/invoke" method: "POST" path: "/api/tool/my-auth-tool/invoke" remoteIP: "127.0.0.1:35804" proto: "HTTP/1.1" requestID: "466523ad4b6b/TcZypMetv8-000009"} httpResponse: {status: 200 bytes: 36 elapsed: 184.764055} 
Step #10 - "postgres": === RUN   TestPostgres/Invoke_my-auth-tool_with_invalid_auth_token
Step #10 - "postgres": 2025-10-23T22:01:45.400437551Z INFO Response: 401 Client Error service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/my-auth-tool/invoke" method: "POST" path: "/api/tool/my-auth-tool/invoke" remoteIP: "127.0.0.1:35804" proto: "HTTP/1.1" requestID: "466523ad4b6b/TcZypMetv8-000010"} httpResponse: {status: 401 bytes: 140 elapsed: 0.284739} 
Step #10 - "postgres": === RUN   TestPostgres/Invoke_my-auth-tool_without_auth_token
Step #10 - "postgres": 2025-10-23T22:01:45.402027926Z INFO Response: 401 Client Error service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/my-auth-tool/invoke" method: "POST" path: "/api/tool/my-auth-tool/invoke" remoteIP: "127.0.0.1:35836" proto: "HTTP/1.1" requestID: "466523ad4b6b/TcZypMetv8-000011"} httpResponse: {status: 401 bytes: 140 elapsed: 0.276408} 
Step #10 - "postgres": === RUN   TestPostgres/Invoke_my-auth-required-tool_with_auth_token
Step #22 - "oceanbase": coverage: 4.6% of statements in ./internal/sources/..., ./internal/tools/...
Step #10 - "postgres": 2025-10-23T22:01:45.427449291Z INFO Response: 200 OK service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/my-auth-required-tool/invoke" method: "POST" path: "/api/tool/my-auth-required-tool/invoke" remoteIP: "127.0.0.1:35838" proto: "HTTP/1.1" requestID: "466523ad4b6b/TcZypMetv8-000012"} httpResponse: {status: 200 bytes: 32 elapsed: 24.080397} 
Step #10 - "postgres": === RUN   TestPostgres/Invoke_my-auth-required-tool_with_invalid_auth_token
Step #10 - "postgres": 2025-10-23T22:01:45.428579726Z INFO Response: 401 Client Error service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/my-auth-required-tool/invoke" method: "POST" path: "/api/tool/my-auth-required-tool/invoke" remoteIP: "127.0.0.1:35838" proto: "HTTP/1.1" requestID: "466523ad4b6b/TcZypMetv8-000013"} httpResponse: {status: 401 bytes: 119 elapsed: 0.139379} 
Step #10 - "postgres": === RUN   TestPostgres/Invoke_my-auth-required-tool_without_auth_token
Step #10 - "postgres": 2025-10-23T22:01:45.430225144Z INFO Response: 401 Client Error service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/api/tool/my-auth-tool/invoke" method: "POST" path: "/api/tool/my-auth-tool/invoke" remoteIP: "127.0.0.1:35848" proto: "HTTP/1.1" requestID: "466523ad4b6b/TcZypMetv8-000014"} httpResponse: {status: 401 bytes: 140 elapsed: 0.315100} 
Step #10 - "postgres": === RUN   TestPostgres/Invoke_my-client-auth-tool_with_auth_token
Step #10 - "postgres": === RUN   TestPostgres/Invoke_my-client-auth-tool_without_auth_token
Step #10 - "postgres": === RUN   TestPostgres/Invoke_my-client-auth-tool_with_invalid_auth_token
Step #10 - "postgres": 2025-10-23T22:01:45.432273719Z INFO Response: 200 OK service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/mcp" method: "POST" path: "/mcp" remoteIP: "127.0.0.1:35860" proto: "HTTP/1.1" requestID: "466523ad4b6b/TcZypMetv8-000015"} httpResponse: {status: 200 bytes: 196 elapsed: 0.738968} 
Step #10 - "postgres": 2025-10-23T22:01:45.433244643Z INFO Response: 202 OK service: "httplog" httpRequest: {url: "http://127.0.0.1:5000/mcp" method: "POST" path: "/mcp" remoteIP: "127.0.0.1:35860" proto: "HTTP/1.1" requestID: "466523ad4b6b/TcZypMetv8-000016"} httpResponse: {status: 202 bytes: 0 elapsed: 0.202423} 

Build Log: https://console.cloud.google.com/logs/viewer?advancedFilter=resource.type%3D%22build%22+AND+resource.labels.build_id%3D%22f20a763d-844d-448d-a568-febaa2b6b0d2%22+AND+resource.labels.build_trigger_id%3D%22785da918-06f1-47bb-860c-fbabc80b5977%22&project=toolbox-testing-438616