github.com/weaviate/weaviate@v1.24.6/test/docker/gcs.go (about) 1 // _ _ 2 // __ _____ __ ___ ___ __ _| |_ ___ 3 // \ \ /\ / / _ \/ _` \ \ / / |/ _` | __/ _ \ 4 // \ V V / __/ (_| |\ V /| | (_| | || __/ 5 // \_/\_/ \___|\__,_| \_/ |_|\__,_|\__\___| 6 // 7 // Copyright © 2016 - 2024 Weaviate B.V. All rights reserved. 8 // 9 // CONTACT: hello@weaviate.io 10 // 11 12 package docker 13 14 import ( 15 "context" 16 "fmt" 17 "os" 18 "time" 19 20 "github.com/docker/go-connections/nat" 21 "github.com/testcontainers/testcontainers-go" 22 "github.com/testcontainers/testcontainers-go/wait" 23 ) 24 25 const GCS = "gcp-storage-emulator" 26 27 func startGCS(ctx context.Context, networkName string) (*DockerContainer, error) { 28 port := nat.Port("9090/tcp") 29 container, err := testcontainers.GenericContainer(ctx, testcontainers.GenericContainerRequest{ 30 ContainerRequest: testcontainers.ContainerRequest{ 31 Image: "oittaa/gcp-storage-emulator", 32 ExposedPorts: []string{"9090/tcp"}, 33 Name: GCS, 34 Hostname: GCS, 35 AutoRemove: true, 36 Networks: []string{networkName}, 37 NetworkAliases: map[string][]string{ 38 networkName: {GCS}, 39 }, 40 Env: map[string]string{ 41 "PORT": port.Port(), 42 }, 43 WaitingFor: wait.ForAll( 44 wait.ForListeningPort(port), 45 wait.ForHTTP("/").WithPort(port), 46 ).WithStartupTimeoutDefault(60 * time.Second), 47 }, 48 Started: true, 49 Reuse: true, 50 }) 51 if err != nil { 52 return nil, err 53 } 54 uri, err := container.PortEndpoint(ctx, port, "") 55 if err != nil { 56 return nil, err 57 } 58 envSettings := make(map[string]string) 59 projectID := os.Getenv("GOOGLE_CLOUD_PROJECT") 60 envSettings["GOOGLE_CLOUD_PROJECT"] = projectID 61 envSettings["STORAGE_EMULATOR_HOST"] = fmt.Sprintf("%s:%s", GCS, port.Port()) 62 envSettings["BACKUP_GCS_USE_AUTH"] = "false" 63 endpoints := make(map[EndpointName]endpoint) 64 endpoints[HTTP] = endpoint{port, uri} 65 return &DockerContainer{GCS, endpoints, container, envSettings}, nil 66 }