Spaces:
Running
Running
// _ _ | |
// __ _____ __ ___ ___ __ _| |_ ___ | |
// \ \ /\ / / _ \/ _` \ \ / / |/ _` | __/ _ \ | |
// \ V V / __/ (_| |\ V /| | (_| | || __/ | |
// \_/\_/ \___|\__,_| \_/ |_|\__,_|\__\___| | |
// | |
// Copyright © 2016 - 2024 Weaviate B.V. All rights reserved. | |
// | |
// CONTACT: [email protected] | |
// | |
package test | |
import ( | |
"context" | |
"testing" | |
"time" | |
"github.com/stretchr/testify/require" | |
"github.com/weaviate/weaviate/test/docker" | |
"github.com/weaviate/weaviate/test/helper" | |
"github.com/weaviate/weaviate/test/helper/journey" | |
moduleshelper "github.com/weaviate/weaviate/test/helper/modules" | |
) | |
const ( | |
envGCSEndpoint = "GCS_ENDPOINT" | |
envGCSStorageEmulatorHost = "STORAGE_EMULATOR_HOST" | |
envGCSCredentials = "GOOGLE_APPLICATION_CREDENTIALS" | |
envGCSProjectID = "GOOGLE_CLOUD_PROJECT" | |
envGCSBucket = "BACKUP_GCS_BUCKET" | |
envGCSUseAuth = "BACKUP_GCS_USE_AUTH" | |
gcsBackupJourneyClassName = "GcsBackup" | |
gcsBackupJourneyBackupIDSingleNode = "gcs-backup-single-node" | |
gcsBackupJourneyBackupIDCluster = "gcs-backup-cluster" | |
gcsBackupJourneyProjectID = "gcs-backup-journey" | |
gcsBackupJourneyBucketName = "backups" | |
) | |
func Test_BackupJourney(t *testing.T) { | |
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Minute) | |
defer cancel() | |
t.Run("single node", func(t *testing.T) { | |
t.Log("pre-instance env setup") | |
t.Setenv(envGCSCredentials, "") | |
t.Setenv(envGCSProjectID, gcsBackupJourneyProjectID) | |
t.Setenv(envGCSBucket, gcsBackupJourneyBucketName) | |
compose, err := docker.New(). | |
WithBackendGCS(gcsBackupJourneyBucketName). | |
WithText2VecContextionary(). | |
WithWeaviate(). | |
Start(ctx) | |
require.Nil(t, err) | |
defer func() { | |
if err := compose.Terminate(ctx); err != nil { | |
t.Fatalf("failed to terminate test containers: %s", err.Error()) | |
} | |
}() | |
t.Log("post-instance env setup") | |
t.Setenv(envGCSEndpoint, compose.GetGCS().URI()) | |
t.Setenv(envGCSStorageEmulatorHost, compose.GetGCS().URI()) | |
moduleshelper.CreateGCSBucket(ctx, t, gcsBackupJourneyProjectID, gcsBackupJourneyBucketName) | |
helper.SetupClient(compose.GetWeaviate().URI()) | |
t.Run("backup-gcs", func(t *testing.T) { | |
journey.BackupJourneyTests_SingleNode(t, compose.GetWeaviate().URI(), | |
"gcs", gcsBackupJourneyClassName, gcsBackupJourneyBackupIDSingleNode, nil) | |
}) | |
}) | |
t.Run("multiple node", func(t *testing.T) { | |
t.Log("pre-instance env setup") | |
t.Setenv(envGCSCredentials, "") | |
t.Setenv(envGCSProjectID, gcsBackupJourneyProjectID) | |
t.Setenv(envGCSBucket, gcsBackupJourneyBucketName) | |
compose, err := docker.New(). | |
WithBackendGCS(gcsBackupJourneyBucketName). | |
WithText2VecContextionary(). | |
WithWeaviateCluster(). | |
Start(ctx) | |
require.Nil(t, err) | |
defer func() { | |
if err := compose.Terminate(ctx); err != nil { | |
t.Fatalf("failed to terminate test containers: %s", err.Error()) | |
} | |
}() | |
t.Log("post-instance env setup") | |
t.Setenv(envGCSEndpoint, compose.GetGCS().URI()) | |
t.Setenv(envGCSStorageEmulatorHost, compose.GetGCS().URI()) | |
moduleshelper.CreateGCSBucket(ctx, t, gcsBackupJourneyProjectID, gcsBackupJourneyBucketName) | |
helper.SetupClient(compose.GetWeaviate().URI()) | |
t.Run("backup-gcs", func(t *testing.T) { | |
journey.BackupJourneyTests_Cluster(t, "gcs", gcsBackupJourneyClassName, | |
gcsBackupJourneyBackupIDCluster, nil, compose.GetWeaviate().URI(), compose.GetWeaviateNode2().URI()) | |
}) | |
}) | |
} | |