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

Function TestBackingStore

db/revision_cache_test.go:470–519  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

468}
469
470func TestBackingStore(t *testing.T) {
471
472 cacheHitCounter, cacheMissCounter, getDocumentCounter, getRevisionCounter, cacheNumItems, memoryBytesCounted := base.SgwIntStat{}, base.SgwIntStat{}, base.SgwIntStat{}, base.SgwIntStat{}, base.SgwIntStat{}, base.SgwIntStat{}
473 backingStoreMap := CreateTestSingleBackingStoreMap(&testBackingStore{[]string{"Peter"}, &getDocumentCounter, &getRevisionCounter}, testCollectionID)
474 cacheOptions := &RevisionCacheOptions{
475 MaxItemCount: 10,
476 MaxBytes: 0,
477 }
478 cache := NewLRURevisionCache(cacheOptions, backingStoreMap, &cacheHitCounter, &cacheMissCounter, &cacheNumItems, &memoryBytesCounted)
479
480 // Get Rev for the first time - miss cache, but fetch the doc and revision to store
481 docRev, err := cache.GetWithRev(base.TestCtx(t), "Jens", "1-abc", testCollectionID, RevCacheOmitDelta)
482 assert.NoError(t, err)
483 assert.Equal(t, "Jens", docRev.DocID)
484 assert.NotNil(t, docRev.History)
485 assert.NotNil(t, docRev.Channels)
486 assert.Equal(t, int64(0), cacheHitCounter.Value())
487 assert.Equal(t, int64(1), cacheMissCounter.Value())
488 assert.Equal(t, int64(1), getDocumentCounter.Value())
489 assert.Equal(t, int64(1), getRevisionCounter.Value())
490
491 // Doc doesn't exist, so miss the cache, and fail when getting the doc
492 docRev, err = cache.GetWithRev(base.TestCtx(t), "Peter", "1-abc", testCollectionID, RevCacheOmitDelta)
493 assertHTTPError(t, err, 404)
494 assert.Nil(t, docRev.BodyBytes)
495 assert.Equal(t, int64(0), cacheHitCounter.Value())
496 assert.Equal(t, int64(2), cacheMissCounter.Value())
497 assert.Equal(t, int64(2), getDocumentCounter.Value())
498 assert.Equal(t, int64(1), getRevisionCounter.Value())
499
500 // Rev is already resident, but still issue GetDocument to check for later revisions
501 docRev, err = cache.GetWithRev(base.TestCtx(t), "Jens", "1-abc", testCollectionID, RevCacheOmitDelta)
502 assert.NoError(t, err)
503 assert.Equal(t, "Jens", docRev.DocID)
504 assert.NotNil(t, docRev.History)
505 assert.NotNil(t, docRev.Channels)
506 assert.Equal(t, int64(1), cacheHitCounter.Value())
507 assert.Equal(t, int64(2), cacheMissCounter.Value())
508 assert.Equal(t, int64(2), getDocumentCounter.Value())
509 assert.Equal(t, int64(1), getRevisionCounter.Value())
510
511 // Rev still doesn't exist, make sure it wasn't cached
512 docRev, err = cache.GetWithRev(base.TestCtx(t), "Peter", "1-abc", testCollectionID, RevCacheOmitDelta)
513 assertHTTPError(t, err, 404)
514 assert.Nil(t, docRev.BodyBytes)
515 assert.Equal(t, int64(1), cacheHitCounter.Value())
516 assert.Equal(t, int64(3), cacheMissCounter.Value())
517 assert.Equal(t, int64(3), getDocumentCounter.Value())
518 assert.Equal(t, int64(1), getRevisionCounter.Value())
519}
520
521// TestBackingStoreCV:
522// - Perform a Get on a doc by cv that is not currently in the rev cache, assert we get cache miss

Callers

nothing calls this directly

Calls 7

GetWithRevMethod · 0.95
TestCtxFunction · 0.92
NewLRURevisionCacheFunction · 0.85
assertHTTPErrorFunction · 0.70
EqualMethod · 0.45
ValueMethod · 0.45

Tested by

no test coverage detected