Chore: Add devenv block for Spanner

zserge/devenv-spanner
Serge Zaitsev 5 months ago
parent 665974e751
commit 0bf45e231d
  1. 53
      devenv/docker/blocks/spanner_tests/README.md
  2. 19
      devenv/docker/blocks/spanner_tests/docker-compose.yaml

@ -0,0 +1,53 @@
This devenv block spawns a Spanner emulator for Grafana integration tests and development purposes:
```
make devenv sources=spanner_tests
```
You should then be able to connect to the database using Go SQL Spanner driver. Here's a minimal example:
```go
package main
import (
"log"
_ "github.com/googleapis/go-sql-spanner"
"context"
"database/sql"
"fmt"
)
func main() {
ctx := context.Background()
db, err := sql.Open("spanner", fmt.Sprintf("projects/%s/instances/%s/databases/%s", "grafanatest", "grafanatest", "grafanatest"))
if err != nil {
log.Fatalf("failed to open database connection: %v", err)
}
defer db.Close()
rows, err := db.QueryContext(ctx, "SELECT 'Hello World!'")
if err != nil {
log.Fatalf("failed to execute query: %v", err)
}
defer rows.Close()
var msg string
for rows.Next() {
if err := rows.Scan(&msg); err != nil {
log.Fatalf("failed to scan row values: %v", err)
}
fmt.Printf("%s\n", msg)
}
if err := rows.Err(); err != nil {
log.Fatalf("failed to execute query: %v", err)
}
}
```
Run it and you should see the "Hello world" message:
```
SPANNER_EMULATOR_HOST=localhost:9010 go run example.go
```

@ -0,0 +1,19 @@
spannertests:
image: gcr.io/cloud-spanner-emulator/emulator:1.5.24
ports:
- "9010:9010"
- "9020:9020"
spannertests_gcloud:
image: google/cloud-sdk:509.0.0
environment:
SPANNER_EMULATOR_HOST: spannertests:9010
command:
- /bin/sh
- -c
- |
sleep 5
gcloud config set auth/disable_credentials true
gcloud config set project grafanatest
gcloud config set api_endpoint_overrides/spanner http://spannertests:9020/
gcloud spanner instances create grafanatest --config=emulator-config --description="For integration tests" --nodes=1
gcloud spanner databases create --instance grafanatest grafanatest
Loading…
Cancel
Save