Compare commits

...

5 Commits

Author SHA1 Message Date
Anubhav Dhawan
41afeafaae refactor: remove explicit Protocol import and argument from ToolboxClient initialization example in deployment documentation (#2480)
We now use `Protocol.MCP` as default and would be deprecating
`Protocol.TOOLBOX` going forward. This PR makes the guide simpler and
more future-proof by removing passing `Protocol.TOOLBOX`.
2026-02-16 16:49:11 +05:30
Twisha Bansal
598b56f478 refactor: remove golden file from quickstart tests (#2456)
## Description

> Should include a concise description of the changes (bug or feature),
it's
> impact, along with a summary of the solution

## PR Checklist

> Thank you for opening a Pull Request! Before submitting your PR, there
are a
> few things you can do to make sure it goes smoothly:

- [x] Make sure you reviewed

[CONTRIBUTING.md](https://github.com/googleapis/genai-toolbox/blob/main/CONTRIBUTING.md)
- [ ] Make sure to open an issue as a

[bug/issue](https://github.com/googleapis/genai-toolbox/issues/new/choose)
  before writing your code! That way we can discuss the change, evaluate
  designs, and agree on the general idea
- [ ] Ensure the tests and linter pass
- [ ] Code coverage does not decrease (if any source code was changed)
- [ ] Appropriate docs were updated (if necessary)
- [ ] Make sure to add `!` if this involve a breaking change

🛠️ Fixes #<issue_number_goes_here>

---------

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2026-02-16 13:15:19 +05:30
Averi Kitsch
a678886ee3 docs: update prebuilt tools ref (#2459)
## Description

> Should include a concise description of the changes (bug or feature),
it's
> impact, along with a summary of the solution

## PR Checklist

> Thank you for opening a Pull Request! Before submitting your PR, there
are a
> few things you can do to make sure it goes smoothly:

- [ ] Make sure you reviewed

[CONTRIBUTING.md](https://github.com/googleapis/genai-toolbox/blob/main/CONTRIBUTING.md)
- [ ] Make sure to open an issue as a

[bug/issue](https://github.com/googleapis/genai-toolbox/issues/new/choose)
  before writing your code! That way we can discuss the change, evaluate
  designs, and agree on the general idea
- [ ] Ensure the tests and linter pass
- [ ] Code coverage does not decrease (if any source code was changed)
- [ ] Appropriate docs were updated (if necessary)
- [ ] Make sure to add `!` if this involve a breaking change

🛠️ Fixes #<issue_number_goes_here>
2026-02-13 18:57:55 +00:00
Averi Kitsch
6602abd059 docs: update diagram (#2461)
## Description

> Should include a concise description of the changes (bug or feature),
it's
> impact, along with a summary of the solution

## PR Checklist

> Thank you for opening a Pull Request! Before submitting your PR, there
are a
> few things you can do to make sure it goes smoothly:

- [ ] Make sure you reviewed

[CONTRIBUTING.md](https://github.com/googleapis/genai-toolbox/blob/main/CONTRIBUTING.md)
- [ ] Make sure to open an issue as a

[bug/issue](https://github.com/googleapis/genai-toolbox/issues/new/choose)
  before writing your code! That way we can discuss the change, evaluate
  designs, and agree on the general idea
- [ ] Ensure the tests and linter pass
- [ ] Code coverage does not decrease (if any source code was changed)
- [ ] Appropriate docs were updated (if necessary)
- [ ] Make sure to add `!` if this involve a breaking change

🛠️ Fixes #<issue_number_goes_here>
2026-02-13 10:25:34 -08:00
Binh Tran
62b830987d fix: Deflake alloydb omni (#2431)
## Description

Improve logic to check that database is up.

**IMPORTANT** DO NOT MERGE until I have reverted
f7d7d9e708

## PR Checklist

- [x] Make sure you reviewed

[CONTRIBUTING.md](https://github.com/googleapis/genai-toolbox/blob/main/CONTRIBUTING.md)
- [x] https://github.com/googleapis/genai-toolbox/issues/2422
- [ ] Ensure the tests and linter pass
- [ ] Code coverage does not decrease (if any source code was changed)
- [ ] Appropriate docs were updated (if necessary)
- [ ] Make sure to add `!` if this involve a breaking change

🛠️ Fixes #2422

Co-authored-by: Averi Kitsch <akitsch@google.com>
2026-02-13 09:55:53 -08:00
8 changed files with 126 additions and 36 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 241 KiB

After

Width:  |  Height:  |  Size: 271 KiB

View File

@@ -20,6 +20,8 @@ import (
"testing" "testing"
) )
var goldenKeywords = []string{"Hilton Basel", "Hyatt Regency", "book"}
func TestQuickstartSample(t *testing.T) { func TestQuickstartSample(t *testing.T) {
framework := os.Getenv("ORCH_NAME") framework := os.Getenv("ORCH_NAME")
if framework == "" { if framework == "" {
@@ -59,16 +61,10 @@ func TestQuickstartSample(t *testing.T) {
t.Fatal("Script ran successfully but produced no output.") t.Fatal("Script ran successfully but produced no output.")
} }
goldenFile, err := os.ReadFile("../golden.txt")
if err != nil {
t.Fatalf("Could not read golden.txt to check for keywords: %v", err)
}
keywords := strings.Split(string(goldenFile), "\n")
var missingKeywords []string var missingKeywords []string
outputLower := strings.ToLower(actualOutput) outputLower := strings.ToLower(actualOutput)
for _, keyword := range keywords { for _, keyword := range goldenKeywords {
kw := strings.TrimSpace(keyword) kw := strings.TrimSpace(keyword)
if kw != "" && !strings.Contains(outputLower, strings.ToLower(kw)) { if kw != "" && !strings.Contains(outputLower, strings.ToLower(kw)) {
missingKeywords = append(missingKeywords, kw) missingKeywords = append(missingKeywords, kw)

View File

@@ -1,3 +0,0 @@
Hilton Basel
Hyatt Regency
book

View File

@@ -25,7 +25,7 @@ const quickstartPath = path.join(orchDir, "quickstart.js");
const { main: runAgent } = await import(quickstartPath); const { main: runAgent } = await import(quickstartPath);
const GOLDEN_FILE_PATH = path.resolve(__dirname, "../golden.txt"); const GOLDEN_KEYWORDS = ["Hilton Basel", "Hyatt Regency", "book"];
describe(`${ORCH_NAME} Quickstart Agent`, () => { describe(`${ORCH_NAME} Quickstart Agent`, () => {
let capturedOutput = []; let capturedOutput = [];
@@ -52,11 +52,8 @@ describe(`${ORCH_NAME} Quickstart Agent`, () => {
"Assertion Failed: Script ran successfully but produced no output." "Assertion Failed: Script ran successfully but produced no output."
); );
const goldenFile = fs.readFileSync(GOLDEN_FILE_PATH, "utf8");
const keywords = goldenFile.split("\n").filter((kw) => kw.trim() !== "");
const missingKeywords = []; const missingKeywords = [];
for (const keyword of GOLDEN_KEYWORDS) {
for (const keyword of keywords) {
if (!actualOutput.toLowerCase().includes(keyword.toLowerCase())) { if (!actualOutput.toLowerCase().includes(keyword.toLowerCase())) {
missingKeywords.push(keyword); missingKeywords.push(keyword);
} }

View File

@@ -24,18 +24,7 @@ module_path = f"python.{ORCH_NAME}.quickstart"
quickstart = importlib.import_module(module_path) quickstart = importlib.import_module(module_path)
@pytest.fixture(scope="module") GOLDEN_KEYWORDS = ["Hilton Basel", "Hyatt Regency", "book"]
def golden_keywords():
"""Loads expected keywords from the golden.txt file."""
golden_file_path = Path("../golden.txt")
if not golden_file_path.exists():
pytest.fail(f"Golden file not found: {golden_file_path}")
try:
with open(golden_file_path, 'r') as f:
return [line.strip() for line in f.readlines() if line.strip()]
except Exception as e:
pytest.fail(f"Could not read golden.txt: {e}")
# --- Execution Tests --- # --- Execution Tests ---
class TestExecution: class TestExecution:
@@ -62,8 +51,8 @@ class TestExecution:
"""Test that the script runs and produces no stderr.""" """Test that the script runs and produces no stderr."""
assert script_output.err == "", f"Script produced stderr: {script_output.err}" assert script_output.err == "", f"Script produced stderr: {script_output.err}"
def test_keywords_in_output(self, script_output, golden_keywords): def test_keywords_in_output(self, script_output):
"""Test that expected keywords are present in the script's output.""" """Test that expected keywords are present in the script's output."""
output = script_output.out output = script_output.out
missing_keywords = [kw for kw in golden_keywords if kw not in output] missing_keywords = [kw for kw in GOLDEN_KEYWORDS if kw.lower() not in output.lower()]
assert not missing_keywords, f"Missing keywords in output: {missing_keywords}" assert not missing_keywords, f"Missing keywords in output: {missing_keywords}"

View File

@@ -207,7 +207,6 @@ You can connect to Toolbox Cloud Run instances directly through the SDK.
{{< tab header="Python" lang="python" >}} {{< tab header="Python" lang="python" >}}
import asyncio import asyncio
from toolbox_core import ToolboxClient, auth_methods from toolbox_core import ToolboxClient, auth_methods
from toolbox_core.protocol import Protocol
# Replace with the Cloud Run service URL generated in the previous step # Replace with the Cloud Run service URL generated in the previous step
URL = "https://cloud-run-url.app" URL = "https://cloud-run-url.app"
@@ -218,7 +217,6 @@ async def main():
async with ToolboxClient( async with ToolboxClient(
URL, URL,
client_headers={"Authorization": auth_token_provider}, client_headers={"Authorization": auth_token_provider},
protocol=Protocol.TOOLBOX,
) as toolbox: ) as toolbox:
toolset = await toolbox.load_toolset() toolset = await toolbox.load_toolset()
# ... # ...

View File

@@ -44,6 +44,12 @@ See [Usage Examples](../reference/cli.md#examples).
* **Tools:** * **Tools:**
* `execute_sql`: Executes a SQL query. * `execute_sql`: Executes a SQL query.
* `list_tables`: Lists tables in the database. * `list_tables`: Lists tables in the database.
* `list_active_queries`: Lists ongoing queries.
* `list_available_extensions`: Discover all PostgreSQL extensions available for installation.
* `list_installed_extensions`: List all installed PostgreSQL extensions.
* `long_running_transactions`: Identifies and lists database transactions that exceed a specified time limit.
* `list_locks`: Identifies all locks held by active processes.
* `replication_stats`: Lists each replica's process ID and sync state.
* `list_autovacuum_configurations`: Lists autovacuum configurations in the * `list_autovacuum_configurations`: Lists autovacuum configurations in the
database. database.
* `list_memory_configurations`: Lists memory-related configurations in the * `list_memory_configurations`: Lists memory-related configurations in the
@@ -59,12 +65,16 @@ See [Usage Examples](../reference/cli.md#examples).
* `list_triggers`: Lists triggers in the database. * `list_triggers`: Lists triggers in the database.
* `list_indexes`: List available user indexes in a PostgreSQL database. * `list_indexes`: List available user indexes in a PostgreSQL database.
* `list_sequences`: List sequences in a PostgreSQL database. * `list_sequences`: List sequences in a PostgreSQL database.
* `list_query_stats`: Lists query statistics.
* `get_column_cardinality`: Gets column cardinality.
* `list_table_stats`: Lists table statistics.
* `list_publication_tables`: List publication tables in a PostgreSQL database. * `list_publication_tables`: List publication tables in a PostgreSQL database.
* `list_tablespaces`: Lists tablespaces in the database. * `list_tablespaces`: Lists tablespaces in the database.
* `list_pg_settings`: List configuration parameters for the PostgreSQL server. * `list_pg_settings`: List configuration parameters for the PostgreSQL server.
* `list_database_stats`: Lists the key performance and activity statistics for * `list_database_stats`: Lists the key performance and activity statistics for
each database in the AlloyDB instance. each database in the AlloyDB instance.
* `list_roles`: Lists all the user-created roles in PostgreSQL database. * `list_roles`: Lists all the user-created roles in PostgreSQL database.
* `list_stored_procedure`: Lists stored procedures.
## AlloyDB Postgres Admin ## AlloyDB Postgres Admin
@@ -113,6 +123,12 @@ See [Usage Examples](../reference/cli.md#examples).
* **Tools:** * **Tools:**
* `execute_sql`: Executes a SQL query. * `execute_sql`: Executes a SQL query.
* `list_tables`: Lists tables in the database. * `list_tables`: Lists tables in the database.
* `list_active_queries`: Lists ongoing queries.
* `list_available_extensions`: Discover all PostgreSQL extensions available for installation.
* `list_installed_extensions`: List all installed PostgreSQL extensions.
* `long_running_transactions`: Identifies and lists database transactions that exceed a specified time limit.
* `list_locks`: Identifies all locks held by active processes.
* `replication_stats`: Lists each replica's process ID and sync state.
* `list_autovacuum_configurations`: Lists autovacuum configurations in the * `list_autovacuum_configurations`: Lists autovacuum configurations in the
database. database.
* `list_columnar_configurations`: List AlloyDB Omni columnar-related configurations. * `list_columnar_configurations`: List AlloyDB Omni columnar-related configurations.
@@ -130,12 +146,16 @@ See [Usage Examples](../reference/cli.md#examples).
* `list_triggers`: Lists triggers in the database. * `list_triggers`: Lists triggers in the database.
* `list_indexes`: List available user indexes in a PostgreSQL database. * `list_indexes`: List available user indexes in a PostgreSQL database.
* `list_sequences`: List sequences in a PostgreSQL database. * `list_sequences`: List sequences in a PostgreSQL database.
* `list_query_stats`: Lists query statistics.
* `get_column_cardinality`: Gets column cardinality.
* `list_table_stats`: Lists table statistics.
* `list_publication_tables`: List publication tables in a PostgreSQL database. * `list_publication_tables`: List publication tables in a PostgreSQL database.
* `list_tablespaces`: Lists tablespaces in the database. * `list_tablespaces`: Lists tablespaces in the database.
* `list_pg_settings`: List configuration parameters for the PostgreSQL server. * `list_pg_settings`: List configuration parameters for the PostgreSQL server.
* `list_database_stats`: Lists the key performance and activity statistics for * `list_database_stats`: Lists the key performance and activity statistics for
each database in the AlloyDB instance. each database in the AlloyDB instance.
* `list_roles`: Lists all the user-created roles in PostgreSQL database. * `list_roles`: Lists all the user-created roles in PostgreSQL database.
* `list_stored_procedure`: Lists stored procedures.
## BigQuery ## BigQuery
@@ -173,6 +193,21 @@ See [Usage Examples](../reference/cli.md#examples).
* `list_table_ids`: Lists tables. * `list_table_ids`: Lists tables.
* `search_catalog`: Search for entries based on the provided query. * `search_catalog`: Search for entries based on the provided query.
## ClickHouse
* `--prebuilt` value: `clickhouse`
* **Environment Variables:**
* `CLICKHOUSE_HOST`: The hostname or IP address of the ClickHouse server.
* `CLICKHOUSE_PORT`: The port number of the ClickHouse server.
* `CLICKHOUSE_USER`: The database username.
* `CLICKHOUSE_PASSWORD`: The password for the database user.
* `CLICKHOUSE_DATABASE`: The name of the database to connect to.
* `CLICKHOUSE_PROTOCOL`: The protocol to use (e.g., http).
* **Tools:**
* `execute_sql`: Use this tool to execute SQL.
* `list_databases`: Use this tool to list all databases in ClickHouse.
* `list_tables`: Use this tool to list all tables in a specific ClickHouse database.
## Cloud SQL for MySQL ## Cloud SQL for MySQL
* `--prebuilt` value: `cloud-sql-mysql` * `--prebuilt` value: `cloud-sql-mysql`
@@ -270,6 +305,12 @@ See [Usage Examples](../reference/cli.md#examples).
* **Tools:** * **Tools:**
* `execute_sql`: Executes a SQL query. * `execute_sql`: Executes a SQL query.
* `list_tables`: Lists tables in the database. * `list_tables`: Lists tables in the database.
* `list_active_queries`: Lists ongoing queries.
* `list_available_extensions`: Discover all PostgreSQL extensions available for installation.
* `list_installed_extensions`: List all installed PostgreSQL extensions.
* `long_running_transactions`: Identifies and lists database transactions that exceed a specified time limit.
* `list_locks`: Identifies all locks held by active processes.
* `replication_stats`: Lists each replica's process ID and sync state.
* `list_autovacuum_configurations`: Lists autovacuum configurations in the * `list_autovacuum_configurations`: Lists autovacuum configurations in the
database. database.
* `list_memory_configurations`: Lists memory-related configurations in the * `list_memory_configurations`: Lists memory-related configurations in the
@@ -285,12 +326,16 @@ See [Usage Examples](../reference/cli.md#examples).
* `list_triggers`: Lists triggers in the database. * `list_triggers`: Lists triggers in the database.
* `list_indexes`: List available user indexes in a PostgreSQL database. * `list_indexes`: List available user indexes in a PostgreSQL database.
* `list_sequences`: List sequences in a PostgreSQL database. * `list_sequences`: List sequences in a PostgreSQL database.
* `list_query_stats`: Lists query statistics.
* `get_column_cardinality`: Gets column cardinality.
* `list_table_stats`: Lists table statistics.
* `list_publication_tables`: List publication tables in a PostgreSQL database. * `list_publication_tables`: List publication tables in a PostgreSQL database.
* `list_tablespaces`: Lists tablespaces in the database. * `list_tablespaces`: Lists tablespaces in the database.
* `list_pg_settings`: List configuration parameters for the PostgreSQL server. * `list_pg_settings`: List configuration parameters for the PostgreSQL server.
* `list_database_stats`: Lists the key performance and activity statistics for * `list_database_stats`: Lists the key performance and activity statistics for
each database in the postgreSQL instance. each database in the postgreSQL instance.
* `list_roles`: Lists all the user-created roles in PostgreSQL database. * `list_roles`: Lists all the user-created roles in PostgreSQL database.
* `list_stored_procedure`: Lists stored procedures.
## Cloud SQL for PostgreSQL Observability ## Cloud SQL for PostgreSQL Observability
@@ -336,6 +381,7 @@ See [Usage Examples](../reference/cli.md#examples).
* `create_user`: Creates a new user in a Cloud SQL instance. * `create_user`: Creates a new user in a Cloud SQL instance.
* `wait_for_operation`: Waits for a Cloud SQL operation to complete. * `wait_for_operation`: Waits for a Cloud SQL operation to complete.
* `clone_instance`: Creates a clone for an existing Cloud SQL for PostgreSQL instance. * `clone_instance`: Creates a clone for an existing Cloud SQL for PostgreSQL instance.
* `postgres_upgrade_precheck`: Performs a precheck for a major version upgrade of a Cloud SQL for PostgreSQL instance.
* `create_backup`: Creates a backup on a Cloud SQL instance. * `create_backup`: Creates a backup on a Cloud SQL instance.
* `restore_backup`: Restores a backup of a Cloud SQL instance. * `restore_backup`: Restores a backup of a Cloud SQL instance.
@@ -420,6 +466,15 @@ See [Usage Examples](../reference/cli.md#examples).
* `search_aspect_types`: Finds aspect types relevant to the * `search_aspect_types`: Finds aspect types relevant to the
query. query.
## Elasticsearch
* `--prebuilt` value: `elasticsearch`
* **Environment Variables:**
* `ELASTICSEARCH_HOST`: The hostname or IP address of the Elasticsearch server.
* `ELASTICSEARCH_APIKEY`: The API key for authentication.
* **Tools:**
* `execute_esql_query`: Use this tool to execute ES|QL queries.
## Firestore ## Firestore
* `--prebuilt` value: `firestore` * `--prebuilt` value: `firestore`
@@ -537,6 +592,19 @@ See [Usage Examples](../reference/cli.md#examples).
* `execute_sql`: Executes a SQL query. * `execute_sql`: Executes a SQL query.
* `list_tables`: Lists tables in the database. * `list_tables`: Lists tables in the database.
## MindsDB
* `--prebuilt` value: `mindsdb`
* **Environment Variables:**
* `MINDSDB_HOST`: The hostname or IP address of the MindsDB server.
* `MINDSDB_PORT`: The port number of the MindsDB server.
* `MINDSDB_DATABASE`: The name of the database to connect to.
* `MINDSDB_USER`: The database username.
* `MINDSDB_PASS`: The password for the database user.
* **Tools:**
* `mindsdb-execute-sql`: Execute SQL queries directly on MindsDB database.
* `mindsdb-sql`: Execute parameterized SQL queries on MindsDB database.
## MySQL ## MySQL
* `--prebuilt` value: `mysql` * `--prebuilt` value: `mysql`
@@ -592,6 +660,12 @@ See [Usage Examples](../reference/cli.md#examples).
* **Tools:** * **Tools:**
* `execute_sql`: Executes a SQL query. * `execute_sql`: Executes a SQL query.
* `list_tables`: Lists tables in the database. * `list_tables`: Lists tables in the database.
* `list_active_queries`: Lists ongoing queries.
* `list_available_extensions`: Discover all PostgreSQL extensions available for installation.
* `list_installed_extensions`: List all installed PostgreSQL extensions.
* `long_running_transactions`: Identifies and lists database transactions that exceed a specified time limit.
* `list_locks`: Identifies all locks held by active processes.
* `replication_stats`: Lists each replica's process ID and sync state.
* `list_autovacuum_configurations`: Lists autovacuum configurations in the * `list_autovacuum_configurations`: Lists autovacuum configurations in the
database. database.
* `list_memory_configurations`: Lists memory-related configurations in the * `list_memory_configurations`: Lists memory-related configurations in the
@@ -607,12 +681,16 @@ See [Usage Examples](../reference/cli.md#examples).
* `list_triggers`: Lists triggers in the database. * `list_triggers`: Lists triggers in the database.
* `list_indexes`: List available user indexes in a PostgreSQL database. * `list_indexes`: List available user indexes in a PostgreSQL database.
* `list_sequences`: List sequences in a PostgreSQL database. * `list_sequences`: List sequences in a PostgreSQL database.
* `list_query_stats`: Lists query statistics.
* `get_column_cardinality`: Gets column cardinality.
* `list_table_stats`: Lists table statistics.
* `list_publication_tables`: List publication tables in a PostgreSQL database. * `list_publication_tables`: List publication tables in a PostgreSQL database.
* `list_tablespaces`: Lists tablespaces in the database. * `list_tablespaces`: Lists tablespaces in the database.
* `list_pg_settings`: List configuration parameters for the PostgreSQL server. * `list_pg_settings`: List configuration parameters for the PostgreSQL server.
* `list_database_stats`: Lists the key performance and activity statistics for * `list_database_stats`: Lists the key performance and activity statistics for
each database in the PostgreSQL server. each database in the PostgreSQL server.
* `list_roles`: Lists all the user-created roles in PostgreSQL database. * `list_roles`: Lists all the user-created roles in PostgreSQL database.
* `list_stored_procedure`: Lists stored procedures.
## Google Cloud Serverless for Apache Spark ## Google Cloud Serverless for Apache Spark
@@ -627,6 +705,38 @@ See [Usage Examples](../reference/cli.md#examples).
view serverless batches. view serverless batches.
* **Tools:** * **Tools:**
* `list_batches`: Lists Spark batches. * `list_batches`: Lists Spark batches.
* `get_batch`: Gets information about a Spark batch.
* `cancel_batch`: Cancels a Spark batch.
* `create_pyspark_batch`: Creates a PySpark batch.
* `create_spark_batch`: Creates a Spark batch.
## SingleStore
* `--prebuilt` value: `singlestore`
* **Environment Variables:**
* `SINGLESTORE_HOST`: The hostname or IP address of the SingleStore server.
* `SINGLESTORE_PORT`: The port number of the SingleStore server.
* `SINGLESTORE_DATABASE`: The name of the database to connect to.
* `SINGLESTORE_USER`: The database username.
* `SINGLESTORE_PASSWORD`: The password for the database user.
* **Tools:**
* `execute_sql`: Use this tool to execute SQL.
* `list_tables`: Lists detailed schema information for user-created tables.
## Snowflake
* `--prebuilt` value: `snowflake`
* **Environment Variables:**
* `SNOWFLAKE_ACCOUNT`: The Snowflake account.
* `SNOWFLAKE_USER`: The database username.
* `SNOWFLAKE_PASSWORD`: The password for the database user.
* `SNOWFLAKE_DATABASE`: The name of the database to connect to.
* `SNOWFLAKE_SCHEMA`: The schema name.
* `SNOWFLAKE_WAREHOUSE`: The warehouse name.
* `SNOWFLAKE_ROLE`: The role name.
* **Tools:**
* `execute_sql`: Use this tool to execute SQL.
* `list_tables`: Lists detailed schema information for user-created tables.
## Spanner (GoogleSQL dialect) ## Spanner (GoogleSQL dialect)

View File

@@ -36,15 +36,17 @@ var (
AlloyDBDatabase = "postgres" AlloyDBDatabase = "postgres"
) )
// Copied over from postgres.go func buildPostgresURL(host, port, user, pass, dbname string) *url.URL {
func initPostgresConnectionPool(host, port, user, pass, dbname string) (*pgxpool.Pool, error) { return &url.URL{
// urlExample := "postgres:dd//username:password@localhost:5432/database_name"
url := &url.URL{
Scheme: "postgres", Scheme: "postgres",
User: url.UserPassword(user, pass), User: url.UserPassword(user, pass),
Host: fmt.Sprintf("%s:%s", host, port), Host: fmt.Sprintf("%s:%s", host, port),
Path: dbname, Path: dbname,
} }
}
func initPostgresConnectionPool(host, port, user, pass, dbname string) (*pgxpool.Pool, error) {
url := buildPostgresURL(host, port, user, pass, dbname)
pool, err := pgxpool.New(context.Background(), url.String()) pool, err := pgxpool.New(context.Background(), url.String())
if err != nil { if err != nil {
return nil, fmt.Errorf("Unable to create connection pool: %w", err) return nil, fmt.Errorf("Unable to create connection pool: %w", err)
@@ -63,7 +65,8 @@ func setupAlloyDBContainer(ctx context.Context, t *testing.T) (string, string, f
"POSTGRES_PASSWORD": AlloyDBPass, "POSTGRES_PASSWORD": AlloyDBPass,
}, },
WaitingFor: wait.ForAll( WaitingFor: wait.ForAll(
wait.ForLog("Post Startup: Successfully reinstalled extensions"), wait.ForLog("database system was shut down at"),
wait.ForLog("database system is ready to accept connections"),
wait.ForExposedPort(), wait.ForExposedPort(),
), ),
} }