(t *testing.T)
| 468 | } |
| 469 | |
| 470 | func 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 |
nothing calls this directly
no test coverage detected