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

Function TestDuplicateDocID

db/channel_cache_single_test.go:27–80  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

25)
26
27func TestDuplicateDocID(t *testing.T) {
28
29 base.SetUpTestLogging(t, base.LevelInfo, base.KeyCache)
30
31 db, ctx := setupTestDB(t)
32 defer db.Close(ctx)
33
34 collection := GetSingleDatabaseCollection(t, db.DatabaseContext)
35
36 stats, err := base.NewSyncGatewayStats()
37 require.NoError(t, err)
38
39 dbstats, err := stats.NewDBStats("", false, false, false, nil, nil)
40 require.NoError(t, err)
41
42 cache := newSingleChannelCache(collection, channels.NewID("Test1", collection.GetCollectionID()), 0, dbstats.Cache())
43 assert.NotNil(t, cache)
44
45 // Add some entries to cache
46 cache.addToCache(ctx, testLogEntry(1, "doc1", "1-a"), false)
47 cache.addToCache(ctx, testLogEntry(2, "doc3", "3-a"), false)
48 cache.addToCache(ctx, testLogEntry(3, "doc5", "5-a"), false)
49
50 entries, err := cache.GetChanges(ctx, getChangesOptionsWithZeroSeq(t))
51 require.Len(t, entries, 3)
52 assert.True(t, verifyChannelSequences(entries, []uint64{1, 2, 3}))
53 assert.True(t, verifyChannelDocIDs(entries, []string{"doc1", "doc3", "doc5"}))
54 assert.True(t, err == nil)
55
56 // Add a new revision matching mid-list
57 cache.addToCache(ctx, testLogEntry(4, "doc3", "3-b"), false)
58 entries, err = cache.GetChanges(ctx, getChangesOptionsWithZeroSeq(t))
59 require.Len(t, entries, 3)
60 assert.True(t, verifyChannelSequences(entries, []uint64{1, 3, 4}))
61 assert.True(t, verifyChannelDocIDs(entries, []string{"doc1", "doc5", "doc3"}))
62 assert.True(t, err == nil)
63
64 // Add a new revision matching first
65 cache.addToCache(ctx, testLogEntry(5, "doc1", "1-b"), false)
66 entries, err = cache.GetChanges(ctx, getChangesOptionsWithZeroSeq(t))
67 require.Len(t, entries, 3)
68 assert.True(t, verifyChannelSequences(entries, []uint64{3, 4, 5}))
69 assert.True(t, verifyChannelDocIDs(entries, []string{"doc5", "doc3", "doc1"}))
70 assert.True(t, err == nil)
71
72 // Add a new revision matching last
73 cache.addToCache(ctx, testLogEntry(6, "doc1", "1-c"), false)
74 entries, err = cache.GetChanges(ctx, getChangesOptionsWithZeroSeq(t))
75 require.Len(t, entries, 3)
76 assert.True(t, verifyChannelSequences(entries, []uint64{3, 4, 6}))
77 assert.True(t, verifyChannelDocIDs(entries, []string{"doc5", "doc3", "doc1"}))
78 assert.True(t, err == nil)
79
80}
81
82func TestLateArrivingSequence(t *testing.T) {
83

Callers

nothing calls this directly

Calls 15

SetUpTestLoggingFunction · 0.92
NewSyncGatewayStatsFunction · 0.92
NewIDFunction · 0.92
setupTestDBFunction · 0.85
newSingleChannelCacheFunction · 0.85
testLogEntryFunction · 0.85
verifyChannelSequencesFunction · 0.85
verifyChannelDocIDsFunction · 0.85
NewDBStatsMethod · 0.80
CacheMethod · 0.80

Tested by

no test coverage detected