github.com/weaviate/weaviate@v1.24.6/test/modules/backup-s3/backup_journey_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  	"testing"
    17  	"time"
    18  
    19  	"github.com/stretchr/testify/require"
    20  	"github.com/weaviate/weaviate/test/docker"
    21  	"github.com/weaviate/weaviate/test/helper"
    22  	"github.com/weaviate/weaviate/test/helper/journey"
    23  )
    24  
    25  const (
    26  	envMinioEndpoint = "MINIO_ENDPOINT"
    27  	envAwsRegion     = "AWS_REGION"
    28  	envS3AccessKey   = "AWS_ACCESS_KEY_ID"
    29  	envS3SecretKey   = "AWS_SECRET_KEY"
    30  	envS3Bucket      = "BACKUP_S3_BUCKET"
    31  	envS3Endpoint    = "BACKUP_S3_ENDPOINT"
    32  	envS3UseSSL      = "BACKUP_S3_USE_SSL"
    33  
    34  	s3BackupJourneyClassName          = "S3Backup"
    35  	s3BackupJourneyBackupIDSingleNode = "s3-backup-single-node"
    36  	s3BackupJourneyBackupIDCluster    = "s3-backup-cluster"
    37  	s3BackupJourneyBucketName         = "backups"
    38  	s3BackupJourneyRegion             = "eu-west-1"
    39  	s3BackupJourneyAccessKey          = "aws_access_key"
    40  	s3BackupJourneySecretKey          = "aws_secret_key"
    41  )
    42  
    43  func Test_BackupJourney(t *testing.T) {
    44  	t.Run("single node", func(t *testing.T) {
    45  		ctx, cancel := context.WithTimeout(context.Background(), 30*time.Minute)
    46  		defer cancel()
    47  
    48  		t.Log("pre-instance env setup")
    49  		t.Setenv(envS3AccessKey, s3BackupJourneyAccessKey)
    50  		t.Setenv(envS3SecretKey, s3BackupJourneySecretKey)
    51  		t.Setenv(envS3Bucket, s3BackupJourneyBucketName)
    52  
    53  		compose, err := docker.New().
    54  			WithBackendS3(s3BackupJourneyBucketName).
    55  			WithText2VecContextionary().
    56  			WithWeaviate().
    57  			Start(ctx)
    58  		require.Nil(t, err)
    59  		defer func() {
    60  			if err := compose.Terminate(ctx); err != nil {
    61  				t.Fatalf("failed to terminate test containers: %s", err.Error())
    62  			}
    63  		}()
    64  
    65  		t.Run("post-instance env setup", func(t *testing.T) {
    66  			createBucket(ctx, t, compose.GetMinIO().URI(), s3BackupJourneyRegion, s3BackupJourneyBucketName)
    67  			helper.SetupClient(compose.GetWeaviate().URI())
    68  		})
    69  
    70  		t.Run("backup-s3", func(t *testing.T) {
    71  			journey.BackupJourneyTests_SingleNode(t, compose.GetWeaviate().URI(),
    72  				"s3", s3BackupJourneyClassName, s3BackupJourneyBackupIDSingleNode, nil)
    73  		})
    74  	})
    75  
    76  	t.Run("multiple node", func(t *testing.T) {
    77  		ctx, cancel := context.WithTimeout(context.Background(), 30*time.Minute)
    78  		defer cancel()
    79  
    80  		t.Log("pre-instance env setup")
    81  		t.Setenv(envS3AccessKey, s3BackupJourneyAccessKey)
    82  		t.Setenv(envS3SecretKey, s3BackupJourneySecretKey)
    83  		t.Setenv(envS3Bucket, s3BackupJourneyBucketName)
    84  
    85  		compose, err := docker.New().
    86  			WithBackendS3(s3BackupJourneyBucketName).
    87  			WithText2VecContextionary().
    88  			WithWeaviateCluster().
    89  			Start(ctx)
    90  		require.Nil(t, err)
    91  		defer func() {
    92  			if err := compose.Terminate(ctx); err != nil {
    93  				t.Fatalf("failed to terminate test containers: %s", err.Error())
    94  			}
    95  		}()
    96  
    97  		t.Run("post-instance env setup", func(t *testing.T) {
    98  			createBucket(ctx, t, compose.GetMinIO().URI(), s3BackupJourneyRegion, s3BackupJourneyBucketName)
    99  			helper.SetupClient(compose.GetWeaviate().URI())
   100  		})
   101  
   102  		t.Run("backup-s3", func(t *testing.T) {
   103  			journey.BackupJourneyTests_Cluster(t, "s3", s3BackupJourneyClassName,
   104  				s3BackupJourneyBackupIDCluster, nil,
   105  				compose.GetWeaviate().URI(), compose.GetWeaviateNode2().URI())
   106  		})
   107  	})
   108  }