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)
| 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 |
| 60 | func 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 | |
| 108 | func getCacheUtilization(stats *base.CacheStats) (active, tombstones, removals int) { |
| 109 | active = int(stats.ChannelCacheRevsActive.Value()) |
nothing calls this directly
no test coverage detected