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

Function TestChannelCacheRemove

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

Source from the content-addressed store, hash-verified

453}
454
455func TestChannelCacheRemove(t *testing.T) {
456
457 base.SetUpTestLogging(t, base.LevelInfo, base.KeyCache)
458
459 db, ctx := setupTestDB(t)
460 defer db.Close(ctx)
461
462 stats, err := base.NewSyncGatewayStats()
463 require.NoError(t, err)
464
465 dbstats, err := stats.NewDBStats("", false, false, false, nil, nil)
466 require.NoError(t, err)
467
468 collection := GetSingleDatabaseCollection(t, db.DatabaseContext)
469 collectionID := collection.GetCollectionID()
470
471 cache := newSingleChannelCache(collection, channels.NewID("Test1", collectionID), 0, dbstats.Cache())
472
473 // Add some entries to cache
474 cache.addToCache(ctx, testLogEntry(1, "doc1", "1-a"), false)
475 cache.addToCache(ctx, testLogEntry(2, "doc3", "3-a"), false)
476 cache.addToCache(ctx, testLogEntry(3, "doc5", "5-a"), false)
477
478 entries, err := cache.GetChanges(ctx, getChangesOptionsWithZeroSeq(t))
479 require.Len(t, entries, 3)
480 assert.True(t, verifyChannelSequences(entries, []uint64{1, 2, 3}))
481 assert.True(t, verifyChannelDocIDs(entries, []string{"doc1", "doc3", "doc5"}))
482 assert.True(t, err == nil)
483
484 // Now remove doc1
485 cache.Remove(ctx, collectionID, []string{"doc1"}, time.Now())
486 entries, err = cache.GetChanges(ctx, getChangesOptionsWithZeroSeq(t))
487 require.Len(t, entries, 2)
488 assert.True(t, verifyChannelSequences(entries, []uint64{2, 3}))
489 assert.True(t, verifyChannelDocIDs(entries, []string{"doc3", "doc5"}))
490 assert.True(t, err == nil)
491
492 // Try to remove doc5 with a startTime before it was added to ensure it's not removed
493 // This will print a debug level log:
494 // [DBG] Cache+: Skipping removal of doc "doc5" from cache "Test1" - received after purge
495 cache.Remove(ctx, collectionID, []string{"doc5"}, time.Now().Add(-time.Second*5))
496 entries, err = cache.GetChanges(ctx, getChangesOptionsWithZeroSeq(t))
497 require.Len(t, entries, 2)
498 assert.True(t, verifyChannelSequences(entries, []uint64{2, 3}))
499 assert.True(t, verifyChannelDocIDs(entries, []string{"doc3", "doc5"}))
500 assert.True(t, err == nil)
501}
502
503func TestChannelCacheStats(t *testing.T) {
504

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