(t *testing.T)
| 453 | } |
| 454 | |
| 455 | func 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 | |
| 503 | func TestChannelCacheStats(t *testing.T) { |
| 504 |
nothing calls this directly
no test coverage detected