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

Function Test_CAS_UpdateStale

pkg/ring/kv/dynamodb/client_test.go:302–334  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

300}
301
302func Test_CAS_UpdateStale(t *testing.T) {
303 ddbMock := NewDynamodbClientMock()
304 codecMock := &CodecMock{}
305 descMock := &DescMock{}
306 descMockResult := &DescMock{}
307 startTime := time.Now().UTC().Add(-time.Millisecond)
308
309 c := NewClientMock(ddbMock, codecMock, TestLogger{}, prometheus.NewPedanticRegistry(), defaultPullTime, defaultBackoff)
310 expectedUpdatedKeys := []string{"t1", "t2"}
311 expectedUpdated := map[string][]byte{
312 expectedUpdatedKeys[0]: []byte(expectedUpdatedKeys[0]),
313 expectedUpdatedKeys[1]: []byte(expectedUpdatedKeys[1]),
314 }
315 expectedBatch := map[dynamodbKey]dynamodbItem{
316 {primaryKey: key, sortKey: expectedUpdatedKeys[0]}: {data: []byte(expectedUpdatedKeys[0])},
317 {primaryKey: key, sortKey: expectedUpdatedKeys[1]}: {data: []byte(expectedUpdatedKeys[1])},
318 }
319
320 ddbMock.On("Query").Return(map[string]dynamodbItem{}, nil).Once()
321 codecMock.On("DecodeMultiKey").Return(descMock, nil).Once()
322 descMock.On("Clone").Return(descMock).Once()
323 descMock.On("FindDifference", descMockResult).Return(descMockResult, []string{}, nil).Once()
324 codecMock.On("EncodeMultiKey").Return(expectedUpdated, nil).Once()
325 ddbMock.On("Batch", context.TODO(), expectedBatch, []dynamodbKey{}).Return(false, nil).Once()
326
327 err := c.CAS(context.TODO(), key, func(in any) (out any, retry bool, err error) {
328 return descMockResult, true, nil
329 })
330
331 require.NoError(t, err)
332 require.Equal(t, descMockResult, c.staleData[key].data)
333 require.True(t, startTime.Before(c.staleData[key].timestamp))
334}
335
336func Test_WatchPrefix(t *testing.T) {
337 ddbMock := NewDynamodbClientMock()

Callers

nothing calls this directly

Calls 6

NewDynamodbClientMockFunction · 0.85
NewClientMockFunction · 0.85
BeforeMethod · 0.80
CASMethod · 0.65
EqualMethod · 0.65
AddMethod · 0.45

Tested by

no test coverage detected