-
-
Notifications
You must be signed in to change notification settings - Fork 511
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
a3d855c
commit ec6d25b
Showing
10 changed files
with
1,427 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
name: Bigtable example pipeline | ||
|
||
on: [push, pull_request] | ||
|
||
jobs: | ||
test-bigtable: | ||
strategy: | ||
matrix: | ||
go-version: [1.18.x, 1.x] | ||
runs-on: "ubuntu-latest" | ||
steps: | ||
|
||
- name: Set up Go | ||
uses: actions/setup-go@v3 | ||
with: | ||
go-version: ${{ matrix.go-version }} | ||
id: go | ||
|
||
- name: Check out code into the Go module directory | ||
uses: actions/checkout@v3 | ||
|
||
- name: modVerify | ||
working-directory: ./examples/bigtable | ||
run: go mod verify | ||
|
||
- name: modTidy | ||
working-directory: ./examples/bigtable | ||
run: make tools-tidy | ||
|
||
- name: gotestsum | ||
working-directory: ./examples/bigtable | ||
run: make test-unit | ||
|
||
- name: Run checker | ||
run: | | ||
./scripts/check_environment.sh | ||
- name: Test Summary | ||
uses: test-summary/action@4ee9ece4bca777a38f05c8fc578ac2007fe266f7 | ||
with: | ||
paths: "**/TEST-bigtable*.xml" | ||
if: always() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
# Bigtable | ||
|
||
<!--codeinclude--> | ||
[Creating a Bigtable container](../../examples/bigtable/bigtable.go) | ||
<!--/codeinclude--> | ||
|
||
<!--codeinclude--> | ||
[Test for a Bigtable container](../../examples/bigtable/bigtable_test.go) | ||
<!--/codeinclude--> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
include ../../commons-test.mk | ||
|
||
.PHONY: test | ||
test: | ||
$(MAKE) test-bigtable |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
package bigtable | ||
|
||
import ( | ||
"context" | ||
"fmt" | ||
"github.com/testcontainers/testcontainers-go/wait" | ||
|
||
"github.com/testcontainers/testcontainers-go" | ||
) | ||
|
||
// bigtableContainer represents the bigtable container type used in the module | ||
type bigtableContainer struct { | ||
testcontainers.Container | ||
URI string | ||
} | ||
|
||
// setupBigtable creates an instance of the bigtable container type | ||
func setupBigtable(ctx context.Context) (*bigtableContainer, error) { | ||
req := testcontainers.ContainerRequest{ | ||
Image: "gcr.io/google.com/cloudsdktool/cloud-sdk:367.0.0-emulators", | ||
ExposedPorts: []string{"9000/tcp"}, | ||
WaitingFor: wait.ForLog("running"), | ||
Cmd: []string{ | ||
"/bin/sh", | ||
"-c", | ||
"gcloud beta emulators bigtable start --host-port 0.0.0.0:9000", | ||
}, | ||
} | ||
container, err := testcontainers.GenericContainer(ctx, testcontainers.GenericContainerRequest{ | ||
ContainerRequest: req, | ||
Started: true, | ||
}) | ||
if err != nil { | ||
return nil, err | ||
} | ||
|
||
mappedPort, err := container.MappedPort(ctx, "9000") | ||
if err != nil { | ||
return nil, err | ||
} | ||
|
||
hostIP, err := container.Host(ctx) | ||
if err != nil { | ||
return nil, err | ||
} | ||
|
||
uri := fmt.Sprintf("%s:%s", hostIP, mappedPort.Port()) | ||
|
||
return &bigtableContainer{Container: container, URI: uri}, nil | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
package bigtable | ||
|
||
import ( | ||
"cloud.google.com/go/bigtable" | ||
"context" | ||
"google.golang.org/api/option" | ||
"google.golang.org/grpc" | ||
"google.golang.org/grpc/credentials/insecure" | ||
"testing" | ||
) | ||
|
||
const ( | ||
projectId = "test-project" | ||
instanceId = "test-instance" | ||
tableName = "test-table" | ||
) | ||
|
||
func TestBigtable(t *testing.T) { | ||
ctx := context.Background() | ||
|
||
container, err := setupBigtable(ctx) | ||
if err != nil { | ||
t.Fatal(err) | ||
} | ||
|
||
// Clean up the container after the test is complete | ||
t.Cleanup(func() { | ||
if err := container.Terminate(ctx); err != nil { | ||
t.Fatalf("failed to terminate container: %s", err) | ||
} | ||
}) | ||
|
||
options := []option.ClientOption{ | ||
option.WithEndpoint(container.URI), | ||
option.WithoutAuthentication(), | ||
option.WithGRPCDialOption(grpc.WithTransportCredentials(insecure.NewCredentials())), | ||
} | ||
adminClient, err := bigtable.NewAdminClient(ctx, projectId, instanceId, options...) | ||
if err != nil { | ||
t.Fatal(err) | ||
} | ||
err = adminClient.CreateTable(ctx, tableName) | ||
if err != nil { | ||
t.Fatal(err) | ||
} | ||
err = adminClient.CreateColumnFamily(ctx, tableName, "name") | ||
if err != nil { | ||
t.Fatal(err) | ||
} | ||
|
||
client, err := bigtable.NewClient(ctx, projectId, instanceId, options...) | ||
if err != nil { | ||
t.Fatal(err) | ||
} | ||
tbl := client.Open(tableName) | ||
|
||
mut := bigtable.NewMutation() | ||
mut.Set("name", "firstName", bigtable.Now(), []byte("Gopher")) | ||
err = tbl.Apply(ctx, "1", mut) | ||
if err != nil { | ||
t.Fatal(err) | ||
} | ||
|
||
row, err := tbl.ReadRow(ctx, "1", bigtable.RowFilter(bigtable.FamilyFilter("name"))) | ||
if err != nil { | ||
t.Fatal(err) | ||
} | ||
// perform assertions | ||
name := string(row["name"][0].Value) | ||
if name != "Gopher" { | ||
t.Fatalf("expected row key to be 'Gopher', got '%s'", name) | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,179 @@ | ||
module github.com/testcontainers/testcontainers-go/examples/bigtable | ||
|
||
go 1.18 | ||
|
||
require ( | ||
cloud.google.com/go/bigtable v1.18.1 | ||
github.com/testcontainers/testcontainers-go v0.16.0 | ||
google.golang.org/api v0.102.0 | ||
gotest.tools/gotestsum v1.8.2 | ||
) | ||
|
||
require ( | ||
cloud.google.com/go v0.105.0 // indirect | ||
cloud.google.com/go/compute v1.12.1 // indirect | ||
cloud.google.com/go/compute/metadata v0.2.1 // indirect | ||
cloud.google.com/go/iam v0.7.0 // indirect | ||
cloud.google.com/go/longrunning v0.1.1 // indirect | ||
github.com/AlecAivazis/survey/v2 v2.3.6 // indirect | ||
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect | ||
github.com/Microsoft/go-winio v0.5.2 // indirect | ||
github.com/beorn7/perks v1.0.1 // indirect | ||
github.com/buger/goterm v1.0.4 // indirect | ||
github.com/cenkalti/backoff/v4 v4.2.0 // indirect | ||
github.com/census-instrumentation/opencensus-proto v0.2.1 // indirect | ||
github.com/cespare/xxhash/v2 v2.1.2 // indirect | ||
github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4 // indirect | ||
github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1 // indirect | ||
github.com/compose-spec/compose-go v1.8.0 // indirect | ||
github.com/containerd/console v1.0.3 // indirect | ||
github.com/containerd/containerd v1.6.10 // indirect | ||
github.com/containerd/continuity v0.3.0 // indirect | ||
github.com/containerd/ttrpc v1.1.0 // indirect | ||
github.com/containerd/typeurl v1.0.2 // indirect | ||
github.com/davecgh/go-spew v1.1.1 // indirect | ||
github.com/distribution/distribution/v3 v3.0.0-20221201083218-92d136e113cf // indirect | ||
github.com/dnephin/pflag v1.0.7 // indirect | ||
github.com/docker/buildx v0.9.1 // indirect | ||
github.com/docker/cli v20.10.20+incompatible // indirect | ||
github.com/docker/compose/v2 v2.14.0 // indirect | ||
github.com/docker/distribution v2.8.1+incompatible // indirect | ||
github.com/docker/docker v20.10.20+incompatible // indirect | ||
github.com/docker/docker-credential-helpers v0.7.0 // indirect | ||
github.com/docker/go v1.5.1-1.0.20160303222718-d30aec9fd63c // indirect | ||
github.com/docker/go-connections v0.4.0 // indirect | ||
github.com/docker/go-metrics v0.0.1 // indirect | ||
github.com/docker/go-units v0.5.0 // indirect | ||
github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1 // indirect | ||
github.com/envoyproxy/protoc-gen-validate v0.1.0 // indirect | ||
github.com/fatih/color v1.13.0 // indirect | ||
github.com/felixge/httpsnoop v1.0.2 // indirect | ||
github.com/fsnotify/fsnotify v1.5.4 // indirect | ||
github.com/fvbommel/sortorder v1.0.2 // indirect | ||
github.com/go-logr/logr v1.2.3 // indirect | ||
github.com/go-logr/stdr v1.2.2 // indirect | ||
github.com/gofrs/flock v0.8.0 // indirect | ||
github.com/gogo/googleapis v1.4.1 // indirect | ||
github.com/gogo/protobuf v1.3.2 // indirect | ||
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect | ||
github.com/golang/mock v1.6.0 // indirect | ||
github.com/golang/protobuf v1.5.2 // indirect | ||
github.com/google/go-cmp v0.5.9 // indirect | ||
github.com/google/gofuzz v1.2.0 // indirect | ||
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect | ||
github.com/google/uuid v1.3.0 // indirect | ||
github.com/googleapis/enterprise-certificate-proxy v0.2.0 // indirect | ||
github.com/googleapis/gax-go/v2 v2.7.0 // indirect | ||
github.com/googleapis/gnostic v0.5.5 // indirect | ||
github.com/gorilla/mux v1.8.0 // indirect | ||
github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect | ||
github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect | ||
github.com/hashicorp/errwrap v1.1.0 // indirect | ||
github.com/hashicorp/go-multierror v1.1.1 // indirect | ||
github.com/hashicorp/go-version v1.6.0 // indirect | ||
github.com/imdario/mergo v0.3.13 // indirect | ||
github.com/inconshreveable/mousetrap v1.0.1 // indirect | ||
github.com/json-iterator/go v1.1.12 // indirect | ||
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect | ||
github.com/klauspost/compress v1.15.9 // indirect | ||
github.com/magiconair/properties v1.8.6 // indirect | ||
github.com/mattn/go-colorable v0.1.12 // indirect | ||
github.com/mattn/go-isatty v0.0.16 // indirect | ||
github.com/mattn/go-runewidth v0.0.14 // indirect | ||
github.com/mattn/go-shellwords v1.0.12 // indirect | ||
github.com/matttproud/golang_protobuf_extensions v1.0.2 // indirect | ||
github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b // indirect | ||
github.com/miekg/pkcs11 v1.1.1 // indirect | ||
github.com/mitchellh/mapstructure v1.5.0 // indirect | ||
github.com/moby/buildkit v0.10.4 // indirect | ||
github.com/moby/locker v1.0.1 // indirect | ||
github.com/moby/patternmatcher v0.5.0 // indirect | ||
github.com/moby/spdystream v0.2.0 // indirect | ||
github.com/moby/sys/sequential v0.5.0 // indirect | ||
github.com/moby/sys/signal v0.7.0 // indirect | ||
github.com/moby/sys/symlink v0.2.0 // indirect | ||
github.com/moby/term v0.0.0-20221128092401-c43b287e0e0f // indirect | ||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect | ||
github.com/modern-go/reflect2 v1.0.2 // indirect | ||
github.com/morikuni/aec v1.0.0 // indirect | ||
github.com/opencontainers/go-digest v1.0.0 // indirect | ||
github.com/opencontainers/image-spec v1.1.0-rc2 // indirect | ||
github.com/opencontainers/runc v1.1.3 // indirect | ||
github.com/pelletier/go-toml v1.9.4 // indirect | ||
github.com/pkg/errors v0.9.1 // indirect | ||
github.com/pmezard/go-difflib v1.0.0 // indirect | ||
github.com/prometheus/client_golang v1.12.2 // indirect | ||
github.com/prometheus/client_model v0.2.0 // indirect | ||
github.com/prometheus/common v0.32.1 // indirect | ||
github.com/prometheus/procfs v0.7.3 // indirect | ||
github.com/rivo/uniseg v0.2.0 // indirect | ||
github.com/serialx/hashring v0.0.0-20190422032157-8b2912629002 // indirect | ||
github.com/sirupsen/logrus v1.9.0 // indirect | ||
github.com/spf13/cobra v1.6.1 // indirect | ||
github.com/spf13/pflag v1.0.5 // indirect | ||
github.com/stretchr/testify v1.8.1 // indirect | ||
github.com/theupdateframework/notary v0.7.0 // indirect | ||
github.com/tonistiigi/fsutil v0.0.0-20220930225714-4638ad635be5 // indirect | ||
github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea // indirect | ||
github.com/tonistiigi/vt100 v0.0.0-20210615222946-8066bb97264f // indirect | ||
github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect | ||
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect | ||
github.com/xeipuuv/gojsonschema v1.2.0 // indirect | ||
go.opencensus.io v0.23.0 // indirect | ||
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.29.0 // indirect | ||
go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.29.0 // indirect | ||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.29.0 // indirect | ||
go.opentelemetry.io/otel v1.11.1 // indirect | ||
go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.4.1 // indirect | ||
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.4.1 // indirect | ||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.4.1 // indirect | ||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.4.1 // indirect | ||
go.opentelemetry.io/otel/internal/metric v0.27.0 // indirect | ||
go.opentelemetry.io/otel/metric v0.27.0 // indirect | ||
go.opentelemetry.io/otel/sdk v1.4.1 // indirect | ||
go.opentelemetry.io/otel/trace v1.11.1 // indirect | ||
go.opentelemetry.io/proto/otlp v0.12.0 // indirect | ||
golang.org/x/crypto v0.0.0-20220511200225-c6db032c6c88 // indirect | ||
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 // indirect | ||
golang.org/x/net v0.0.0-20221014081412-f15817d10f9b // indirect | ||
golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783 // indirect | ||
golang.org/x/sync v0.1.0 // indirect | ||
golang.org/x/sys v0.3.0 // indirect | ||
golang.org/x/term v0.0.0-20220526004731-065cf7ba2467 // indirect | ||
golang.org/x/text v0.4.0 // indirect | ||
golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 // indirect | ||
golang.org/x/tools v0.1.12 // indirect | ||
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect | ||
google.golang.org/appengine v1.6.7 // indirect | ||
google.golang.org/genproto v0.0.0-20221027153422-115e99e71e1c // indirect | ||
google.golang.org/grpc v1.50.1 // indirect | ||
google.golang.org/protobuf v1.28.1 // indirect | ||
gopkg.in/inf.v0 v0.9.1 // indirect | ||
gopkg.in/yaml.v2 v2.4.0 // indirect | ||
gopkg.in/yaml.v3 v3.0.1 // indirect | ||
k8s.io/api v0.24.1 // indirect | ||
k8s.io/apimachinery v0.24.1 // indirect | ||
k8s.io/client-go v0.24.1 // indirect | ||
k8s.io/klog/v2 v2.60.1 // indirect | ||
k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9 // indirect | ||
sigs.k8s.io/structured-merge-diff/v4 v4.2.1 // indirect | ||
sigs.k8s.io/yaml v1.2.0 // indirect | ||
) | ||
|
||
replace ( | ||
github.com/docker/cli => github.com/docker/cli v20.10.3-0.20221013132413-1d6c6e2367e2+incompatible // 22.06 master branch | ||
github.com/docker/docker => github.com/docker/docker v20.10.3-0.20221013203545-33ab36d6b304+incompatible // 22.06 branch | ||
github.com/moby/buildkit => github.com/moby/buildkit v0.10.1-0.20220816171719-55ba9d14360a // same as buildx | ||
|
||
github.com/opencontainers/runc => github.com/opencontainers/runc v1.1.2 // Can be removed on next bump of containerd to > 1.6.4 | ||
github.com/testcontainers/testcontainers-go => ../.. | ||
|
||
// For k8s dependencies, we use a replace directive, to prevent them being | ||
// upgraded to the version specified in containerd, which is not relevant to the | ||
// version needed. | ||
// See https://github.com/docker/buildx/pull/948 for details. | ||
// https://github.com/docker/buildx/blob/v0.8.1/go.mod#L62-L64 | ||
k8s.io/api => k8s.io/api v0.22.4 | ||
k8s.io/apimachinery => k8s.io/apimachinery v0.22.4 | ||
k8s.io/client-go => k8s.io/client-go v0.22.4 | ||
) |
Oops, something went wrong.