MCPcopy Create free account
hub / github.com/couchbase/sync_gateway / TestImportStampClusterUUID

Function TestImportStampClusterUUID

db/import_test.go:823–870  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

821}
822
823func TestImportStampClusterUUID(t *testing.T) {
824 if !base.TestUseXattrs() {
825 t.Skip("This test only works with XATTRS enabled")
826 }
827 if base.UnitTestUrlIsWalrus() {
828 t.Skip("This test requires Couchbase Server") // no cluster UUIDs in Walrus
829 }
830
831 db, ctx := setupTestDB(t)
832 defer db.Close(ctx)
833
834 collection, ctx := GetSingleDatabaseCollectionWithUser(ctx, t, db)
835
836 key := "doc1"
837 bodyBytes := rawDocNoMeta()
838
839 _, err := collection.dataStore.Add(key, 0, bodyBytes)
840 require.NoError(t, err)
841
842 _, cas, err := collection.dataStore.GetRaw(key)
843 require.NoError(t, err)
844
845 xattrs, _, err := collection.dataStore.GetXattrs(ctx, key, []string{base.VirtualXattrRevSeqNo})
846 require.NoError(t, err)
847 docXattr, ok := xattrs[base.VirtualXattrRevSeqNo]
848 require.True(t, ok)
849 revSeqNo := RetrieveDocRevSeqNo(t, docXattr)
850
851 base.SetUpTestLogging(t, base.LevelDebug, base.KeyCRUD, base.KeyMigrate, base.KeyImport)
852
853 body := Body{}
854 err = body.Unmarshal(rawDocNoMeta())
855 require.NoError(t, err)
856 existingDoc := &sgbucket.BucketDocument{Body: bodyBytes, Cas: cas}
857
858 importedDoc, err := collection.importDoc(ctx, key, body, nil, false, revSeqNo, existingDoc, ImportOnDemand)
859 require.NoError(t, err)
860 if assert.NotNil(t, importedDoc) {
861 require.Len(t, importedDoc.ClusterUUID, 32)
862 }
863
864 xattrs, _, err = collection.dataStore.GetXattrs(ctx, key, []string{base.SyncXattrName})
865 require.NoError(t, err)
866 require.Contains(t, xattrs, base.SyncXattrName)
867 var xattr map[string]any
868 require.NoError(t, base.JSONUnmarshal(xattrs[base.SyncXattrName], &xattr))
869 require.Len(t, xattr["cluster_uuid"].(string), 32)
870}
871
872// TestImporNonZeroStart makes sure docs written before sync gateway start get imported
873func TestImportNonZeroStart(t *testing.T) {

Callers

nothing calls this directly

Calls 15

UnmarshalMethod · 0.95
TestUseXattrsFunction · 0.92
UnitTestUrlIsWalrusFunction · 0.92
SetUpTestLoggingFunction · 0.92
JSONUnmarshalFunction · 0.92
setupTestDBFunction · 0.85
rawDocNoMetaFunction · 0.85
RetrieveDocRevSeqNoFunction · 0.85
importDocMethod · 0.80
CloseMethod · 0.65
LenMethod · 0.65

Tested by

no test coverage detected