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  }