MCPcopy Create free account
hub / github.com/cortexproject/cortex / TestFifoCacheExpiry

Function TestFifoCacheExpiry

pkg/chunk/cache/fifo_cache_test.go:166–232  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

164}
165
166func TestFifoCacheExpiry(t *testing.T) {
167 key1, key2, key3, key4 := "01", "02", "03", "04"
168 data1, data2, data3 := genBytes(24), []byte("testdata"), genBytes(8)
169
170 memorySz := sizeOf(&cacheEntry{key: key1, value: data1}) +
171 sizeOf(&cacheEntry{key: key2, value: data2}) +
172 sizeOf(&cacheEntry{key: key3, value: data3})
173
174 tests := []struct {
175 name string
176 cfg FifoCacheConfig
177 }{
178 {
179 name: "test-memory-expiry",
180 cfg: FifoCacheConfig{MaxSizeBytes: strconv.FormatInt(int64(memorySz), 10), Validity: 5 * time.Millisecond},
181 },
182 {
183 name: "test-items-expiry",
184 cfg: FifoCacheConfig{MaxSizeItems: 3, Validity: 5 * time.Millisecond},
185 },
186 }
187
188 for _, test := range tests {
189 c := NewFifoCache(test.name, test.cfg, nil, log.NewNopLogger())
190 ctx := context.Background()
191
192 c.Store(ctx,
193 []string{key1, key2, key4, key3, key2, key1},
194 [][]byte{genBytes(16), []byte("dummy"), genBytes(20), data3, data2, data1})
195
196 value, ok := c.Get(ctx, key1)
197 require.True(t, ok)
198 require.Equal(t, data1, value)
199
200 _, ok = c.Get(ctx, key4)
201 require.False(t, ok)
202
203 assert.Equal(t, testutil.ToFloat64(c.entriesAdded), float64(1))
204 assert.Equal(t, testutil.ToFloat64(c.entriesAddedNew), float64(5))
205 assert.Equal(t, testutil.ToFloat64(c.entriesEvicted), float64(2))
206 assert.Equal(t, testutil.ToFloat64(c.entriesCurrent), float64(3))
207 assert.Equal(t, testutil.ToFloat64(c.entriesCurrent), float64(len(c.entries)))
208 assert.Equal(t, testutil.ToFloat64(c.entriesCurrent), float64(c.lru.Len()))
209 assert.Equal(t, testutil.ToFloat64(c.totalGets), float64(2))
210 assert.Equal(t, testutil.ToFloat64(c.totalMisses), float64(1))
211 assert.Equal(t, testutil.ToFloat64(c.staleGets), float64(0))
212 assert.Equal(t, testutil.ToFloat64(c.memoryBytes), float64(memorySz))
213
214 // Expire the item.
215 time.Sleep(5 * time.Millisecond)
216 _, ok = c.Get(ctx, key1)
217 require.False(t, ok)
218
219 assert.Equal(t, testutil.ToFloat64(c.entriesAdded), float64(1))
220 assert.Equal(t, testutil.ToFloat64(c.entriesAddedNew), float64(5))
221 assert.Equal(t, testutil.ToFloat64(c.entriesEvicted), float64(2))
222 assert.Equal(t, testutil.ToFloat64(c.entriesCurrent), float64(3))
223 assert.Equal(t, testutil.ToFloat64(c.entriesCurrent), float64(len(c.entries)))

Callers

nothing calls this directly

Calls 8

StoreMethod · 0.95
GetMethod · 0.95
StopMethod · 0.95
genBytesFunction · 0.85
sizeOfFunction · 0.85
NewFifoCacheFunction · 0.85
EqualMethod · 0.65
LenMethod · 0.45

Tested by

no test coverage detected