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

Function TestChannelCacheCurrentVersion

db/channel_cache_test.go:60–106  ·  view source on GitHub ↗

TestChannelCacheCurrentVersion: - Makes channel channels active for channels used in test by requesting changes on each channel - Add 4 docs to the channel cache with CV defined in the log entry - Get changes for each channel in question and assert that the CV is populated in each entry expected

(t *testing.T)

Source from the content-addressed store, hash-verified

58// - Add 4 docs to the channel cache with CV defined in the log entry
59// - Get changes for each channel in question and assert that the CV is populated in each entry expected
60func TestChannelCacheCurrentVersion(t *testing.T) {
61 db, ctx := setupTestDB(t)
62 defer db.Close(ctx)
63
64 cache := db.changeCache.getChannelCache()
65
66 collectionID := GetSingleDatabaseCollection(t, db.DatabaseContext).GetCollectionID()
67
68 // Make channels active
69 _, err := cache.GetChanges(ctx, channels.NewID("chanA", collectionID), getChangesOptionsWithCtxOnly(t))
70 require.NoError(t, err)
71 _, err = cache.GetChanges(ctx, channels.NewID("chanB", collectionID), getChangesOptionsWithCtxOnly(t))
72 require.NoError(t, err)
73 _, err = cache.GetChanges(ctx, channels.NewID("chanC", collectionID), getChangesOptionsWithCtxOnly(t))
74 require.NoError(t, err)
75 _, err = cache.GetChanges(ctx, channels.NewID("chanD", collectionID), getChangesOptionsWithCtxOnly(t))
76 require.NoError(t, err)
77
78 cache.AddToCache(ctx, testLogEntryWithCV(1, "doc1", "1-a", []string{"chanB", "chanC", "chanD"}, collectionID, "test1", 123))
79 cache.AddToCache(ctx, testLogEntryWithCV(2, "doc2", "1-a", []string{"chanB", "chanC", "chanD"}, collectionID, "test2", 1234))
80 cache.AddToCache(ctx, testLogEntryWithCV(3, "doc3", "1-a", []string{"chanC", "chanD"}, collectionID, "test3", 12345))
81 cache.AddToCache(ctx, testLogEntryWithCV(4, "doc4", "1-a", []string{"chanC"}, collectionID, "test4", 123456))
82
83 // assert on channel cache entries for 'chanC'
84 entriesChanC, err := cache.GetChanges(ctx, channels.NewID("chanC", collectionID), getChangesOptionsWithZeroSeq(t))
85 assert.NoError(t, err)
86 require.Len(t, entriesChanC, 4)
87 assert.True(t, verifyChannelSequences(entriesChanC, []uint64{1, 2, 3, 4}))
88 assert.True(t, verifyChannelDocIDs(entriesChanC, []string{"doc1", "doc2", "doc3", "doc4"}))
89 assert.True(t, verifyCVEntries(entriesChanC, []cvValues{{source: "test1", version: 123}, {source: "test2", version: 1234}, {source: "test3", version: 12345}, {source: "test4", version: 123456}}))
90
91 // assert on channel cache entries for 'chanD'
92 entriesChanD, err := cache.GetChanges(ctx, channels.NewID("chanD", collectionID), getChangesOptionsWithZeroSeq(t))
93 assert.NoError(t, err)
94 require.Len(t, entriesChanD, 3)
95 assert.True(t, verifyChannelSequences(entriesChanD, []uint64{1, 2, 3}))
96 assert.True(t, verifyChannelDocIDs(entriesChanD, []string{"doc1", "doc2", "doc3"}))
97 assert.True(t, verifyCVEntries(entriesChanD, []cvValues{{source: "test1", version: 123}, {source: "test2", version: 1234}, {source: "test3", version: 12345}}))
98
99 // assert on channel cache entries for 'chanB'
100 entriesChanB, err := cache.GetChanges(ctx, channels.NewID("chanB", collectionID), getChangesOptionsWithZeroSeq(t))
101 assert.NoError(t, err)
102 require.Len(t, entriesChanB, 2)
103 assert.True(t, verifyChannelSequences(entriesChanB, []uint64{1, 2}))
104 assert.True(t, verifyChannelDocIDs(entriesChanB, []string{"doc1", "doc2"}))
105 assert.True(t, verifyCVEntries(entriesChanB, []cvValues{{source: "test1", version: 123}, {source: "test2", version: 1234}}))
106}
107
108func getCacheUtilization(stats *base.CacheStats) (active, tombstones, removals int) {
109 active = int(stats.ChannelCacheRevsActive.Value())

Callers

nothing calls this directly

Calls 15

NewIDFunction · 0.92
setupTestDBFunction · 0.85
testLogEntryWithCVFunction · 0.85
verifyChannelSequencesFunction · 0.85
verifyChannelDocIDsFunction · 0.85
verifyCVEntriesFunction · 0.85
CloseMethod · 0.65
GetChangesMethod · 0.65
AddToCacheMethod · 0.65

Tested by

no test coverage detected