github.com/weaviate/weaviate@v1.24.6/test/modules/backup-s3/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  )
    25  
    26  const numTenants = 50
    27  
    28  func Test_MultiTenantBackupJourney(t *testing.T) {
    29  	tenantNames := make([]string, numTenants)
    30  	for i := range tenantNames {
    31  		tenantNames[i] = fmt.Sprintf("Tenant%d", i)
    32  	}
    33  
    34  	t.Run("single node", func(t *testing.T) {
    35  		ctx, cancel := context.WithTimeout(context.Background(), 30*time.Minute)
    36  		defer cancel()
    37  
    38  		t.Log("pre-instance env setup")
    39  		t.Setenv(envS3AccessKey, s3BackupJourneyAccessKey)
    40  		t.Setenv(envS3SecretKey, s3BackupJourneySecretKey)
    41  		t.Setenv(envS3Bucket, s3BackupJourneyBucketName)
    42  
    43  		compose, err := docker.New().
    44  			WithBackendS3(s3BackupJourneyBucketName).
    45  			WithText2VecContextionary().
    46  			WithWeaviate().
    47  			Start(ctx)
    48  		require.Nil(t, err)
    49  		defer func() {
    50  			if err := compose.Terminate(ctx); err != nil {
    51  				t.Fatalf("failed to terminate test containers: %s", err.Error())
    52  			}
    53  		}()
    54  
    55  		t.Run("post-instance env setup", func(t *testing.T) {
    56  			createBucket(ctx, t, compose.GetMinIO().URI(), s3BackupJourneyRegion, s3BackupJourneyBucketName)
    57  			helper.SetupClient(compose.GetWeaviate().URI())
    58  		})
    59  
    60  		t.Run("backup-s3", func(t *testing.T) {
    61  			journey.BackupJourneyTests_SingleNode(t, compose.GetWeaviate().URI(),
    62  				"s3", s3BackupJourneyClassName, s3BackupJourneyBackupIDSingleNode, tenantNames)
    63  		})
    64  	})
    65  
    66  	t.Run("multiple node", func(t *testing.T) {
    67  		ctx, cancel := context.WithTimeout(context.Background(), 30*time.Minute)
    68  		defer cancel()
    69  
    70  		t.Log("pre-instance env setup")
    71  		t.Setenv(envS3AccessKey, s3BackupJourneyAccessKey)
    72  		t.Setenv(envS3SecretKey, s3BackupJourneySecretKey)
    73  		t.Setenv(envS3Bucket, s3BackupJourneyBucketName)
    74  
    75  		compose, err := docker.New().
    76  			WithBackendS3(s3BackupJourneyBucketName).
    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.Run("post-instance env setup", func(t *testing.T) {
    88  			createBucket(ctx, t, compose.GetMinIO().URI(), s3BackupJourneyRegion, s3BackupJourneyBucketName)
    89  			helper.SetupClient(compose.GetWeaviate().URI())
    90  		})
    91  
    92  		t.Run("backup-s3", func(t *testing.T) {
    93  			journey.BackupJourneyTests_Cluster(t, "s3", s3BackupJourneyClassName,
    94  				s3BackupJourneyBackupIDCluster, tenantNames,
    95  				compose.GetWeaviate().URI(), compose.GetWeaviateNode2().URI())
    96  		})
    97  	})
    98  }