github.com/weaviate/weaviate@v1.24.6/test/helper/journey/backup_journey_tests.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 journey
    13  
    14  import (
    15  	"testing"
    16  )
    17  
    18  // BackupJourneyTests_SingleNode this method gathers all backup related e2e tests
    19  func BackupJourneyTests_SingleNode(t *testing.T, weaviateEndpoint, backend, className, backupID string, tenantNames []string) {
    20  	if len(tenantNames) > 0 {
    21  		t.Run("multi-tenant single node backup", func(t *testing.T) {
    22  			singleNodeBackupJourneyTest(t, weaviateEndpoint, backend, className, backupID, tenantNames, false)
    23  		})
    24  		t.Run("multi-tenant single node backup with empty class", func(t *testing.T) {
    25  			singleNodeBackupEmptyClassJourneyTest(t, weaviateEndpoint, backend, className, backupID+"_empty", tenantNames)
    26  		})
    27  	} else {
    28  		// This is a simple test which covers almost the same scenario as singleNodeBackupJourneyTest
    29  		// but is left here to be expanded in the future with a more complex example
    30  		// like adding there a new reference property and trying to run the test with 2 classes which
    31  		// one of those classes is a class with a reference property
    32  		t.Run("backup and restore Books", func(t *testing.T) {
    33  			backupAndRestoreJourneyTest(t, weaviateEndpoint, backend, false)
    34  		})
    35  
    36  		t.Run("backup and restore Books with named vectors", func(t *testing.T) {
    37  			backupAndRestoreJourneyTest(t, weaviateEndpoint, backend, true)
    38  		})
    39  
    40  		t.Run("single-tenant single node backup", func(t *testing.T) {
    41  			singleNodeBackupJourneyTest(t, weaviateEndpoint, backend, className, backupID, nil, false)
    42  		})
    43  
    44  		t.Run("single-tenant single node backup with PQ", func(t *testing.T) {
    45  			singleNodeBackupJourneyTest(t, weaviateEndpoint, backend, className, backupID+"_pq", nil, true)
    46  		})
    47  	}
    48  }
    49  
    50  // BackupJourneyTests_Cluster this method gathers all backup related e2e tests to be run on a cluster
    51  func BackupJourneyTests_Cluster(t *testing.T, backend, className, backupID string,
    52  	tenantNames []string, weaviateEndpoints ...string,
    53  ) {
    54  	if len(weaviateEndpoints) <= 1 {
    55  		t.Fatal("must provide more than one node for cluster backup test")
    56  	}
    57  
    58  	if len(tenantNames) > 0 {
    59  		t.Run("multi-tenant cluster backup", func(t *testing.T) {
    60  			coordinator := weaviateEndpoints[0]
    61  			clusterBackupJourneyTest(t, backend, className, backupID,
    62  				coordinator, tenantNames, false, weaviateEndpoints[1:]...)
    63  		})
    64  		t.Run("multi-tenant cluster backup with empty class", func(t *testing.T) {
    65  			coordinator := weaviateEndpoints[0]
    66  			clusterBackupEmptyClassJourneyTest(t, backend, className, backupID+"_empty",
    67  				coordinator, tenantNames, weaviateEndpoints[1:]...)
    68  		})
    69  	} else {
    70  		t.Run("single-tenant cluster backup", func(t *testing.T) {
    71  			if len(weaviateEndpoints) <= 1 {
    72  				t.Fatal("must provide more than one node for cluster backup test")
    73  			}
    74  
    75  			coordinator := weaviateEndpoints[0]
    76  			clusterBackupJourneyTest(t, backend, className, backupID+"_pq",
    77  				coordinator, nil, true, weaviateEndpoints[1:]...)
    78  		})
    79  	}
    80  }
    81  
    82  func NodeMappingBackupJourneyTests_SingleNode_Backup(t *testing.T, weaviateEndpoint, backend, className, backupID string, tenantNames []string) {
    83  	if len(tenantNames) > 0 {
    84  		t.Run("multi-tenant single node backup", func(t *testing.T) {
    85  			singleNodeNodeMappingBackupJourney_Backup(t, weaviateEndpoint, backend, className, backupID, tenantNames)
    86  		})
    87  	} else {
    88  		t.Run("single-tenant single node backup", func(t *testing.T) {
    89  			singleNodeNodeMappingBackupJourney_Backup(t, weaviateEndpoint, backend, className, backupID, nil)
    90  		})
    91  	}
    92  }
    93  
    94  func NodeMappingBackupJourneyTests_SingleNode_Restore(t *testing.T, weaviateEndpoint, backend, className, backupID string, tenantNames []string, nodeMapping map[string]string) {
    95  	if len(tenantNames) > 0 {
    96  		t.Run("multi-tenant single node restore", func(t *testing.T) {
    97  			singleNodeNodeMappingBackupJourney_Restore(t, weaviateEndpoint, backend, className, backupID, tenantNames, nodeMapping)
    98  		})
    99  	} else {
   100  		t.Run("single-tenant single node restore", func(t *testing.T) {
   101  			singleNodeNodeMappingBackupJourney_Restore(t, weaviateEndpoint, backend, className, backupID, nil, nodeMapping)
   102  		})
   103  	}
   104  }