github.com/weaviate/weaviate@v1.24.6/test/modules/backup-gcs/multi_tenant_backup_test.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 test 13 14 import ( 15 "context" 16 "fmt" 17 "testing" 18 "time" 19 20 "github.com/stretchr/testify/require" 21 "github.com/weaviate/weaviate/test/docker" 22 "github.com/weaviate/weaviate/test/helper" 23 "github.com/weaviate/weaviate/test/helper/journey" 24 moduleshelper "github.com/weaviate/weaviate/test/helper/modules" 25 ) 26 27 const numTenants = 50 28 29 func Test_MultiTenantBackupJourney(t *testing.T) { 30 ctx, cancel := context.WithTimeout(context.Background(), 30*time.Minute) 31 defer cancel() 32 33 tenantNames := make([]string, numTenants) 34 for i := range tenantNames { 35 tenantNames[i] = fmt.Sprintf("Tenant%d", i) 36 } 37 38 t.Run("single node", func(t *testing.T) { 39 t.Log("pre-instance env setup") 40 t.Setenv(envGCSCredentials, "") 41 t.Setenv(envGCSProjectID, gcsBackupJourneyProjectID) 42 t.Setenv(envGCSBucket, gcsBackupJourneyBucketName) 43 44 compose, err := docker.New(). 45 WithBackendGCS(gcsBackupJourneyBucketName). 46 WithText2VecContextionary(). 47 WithWeaviate(). 48 Start(ctx) 49 require.Nil(t, err) 50 defer func() { 51 if err := compose.Terminate(ctx); err != nil { 52 t.Fatalf("failed to terminate test containers: %s", err.Error()) 53 } 54 }() 55 56 t.Log("post-instance env setup") 57 t.Setenv(envGCSEndpoint, compose.GetGCS().URI()) 58 t.Setenv(envGCSStorageEmulatorHost, compose.GetGCS().URI()) 59 moduleshelper.CreateGCSBucket(ctx, t, gcsBackupJourneyProjectID, gcsBackupJourneyBucketName) 60 helper.SetupClient(compose.GetWeaviate().URI()) 61 62 t.Run("backup-gcs", func(t *testing.T) { 63 journey.BackupJourneyTests_SingleNode(t, compose.GetWeaviate().URI(), 64 "gcs", gcsBackupJourneyClassName, 65 gcsBackupJourneyBackupIDSingleNode, tenantNames) 66 }) 67 }) 68 69 t.Run("multiple node", func(t *testing.T) { 70 t.Log("pre-instance env setup") 71 t.Setenv(envGCSCredentials, "") 72 t.Setenv(envGCSProjectID, gcsBackupJourneyProjectID) 73 t.Setenv(envGCSBucket, gcsBackupJourneyBucketName) 74 75 compose, err := docker.New(). 76 WithBackendGCS(gcsBackupJourneyBucketName). 77 WithText2VecContextionary(). 78 WithWeaviateCluster(). 79 Start(ctx) 80 require.Nil(t, err) 81 defer func() { 82 if err := compose.Terminate(ctx); err != nil { 83 t.Fatalf("failed to terminate test containers: %s", err.Error()) 84 } 85 }() 86 87 t.Log("post-instance env setup") 88 t.Setenv(envGCSEndpoint, compose.GetGCS().URI()) 89 t.Setenv(envGCSStorageEmulatorHost, compose.GetGCS().URI()) 90 moduleshelper.CreateGCSBucket(ctx, t, gcsBackupJourneyProjectID, gcsBackupJourneyBucketName) 91 helper.SetupClient(compose.GetWeaviate().URI()) 92 93 t.Run("backup-gcs", func(t *testing.T) { 94 journey.BackupJourneyTests_Cluster(t, "gcs", gcsBackupJourneyClassName, 95 gcsBackupJourneyBackupIDCluster, tenantNames, 96 compose.GetWeaviate().URI(), compose.GetWeaviateNode2().URI()) 97 }) 98 }) 99 }