forked from TrueCloudLab/frostfs-s3-gw
[#231] cache: Add unittests for ListObjectsCache
Signed-off-by: Angira Kekteeva <kira@nspcc.ru>
This commit is contained in:
parent
d4a6a3ea2c
commit
b2bf81cec7
1 changed files with 64 additions and 4 deletions
64
api/cache/objectslist_test.go
vendored
64
api/cache/objectslist_test.go
vendored
|
@ -6,6 +6,7 @@ import (
|
|||
"testing"
|
||||
"time"
|
||||
|
||||
cid "github.com/nspcc-dev/neofs-api-go/pkg/container/id"
|
||||
"github.com/nspcc-dev/neofs-api-go/pkg/object"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
@ -29,12 +30,12 @@ func randSHA256Checksum(t *testing.T) (cs [sha256.Size]byte) {
|
|||
|
||||
func TestObjectsListCache(t *testing.T) {
|
||||
var (
|
||||
cacheSize = 10
|
||||
listSize = 10
|
||||
ids []*object.ID
|
||||
userKey = "key"
|
||||
)
|
||||
|
||||
for i := 0; i < cacheSize; i++ {
|
||||
for i := 0; i < listSize; i++ {
|
||||
id := randID(t)
|
||||
ids = append(ids, id)
|
||||
}
|
||||
|
@ -129,3 +130,62 @@ func TestObjectsListCache(t *testing.T) {
|
|||
require.Nil(t, actual)
|
||||
})
|
||||
}
|
||||
|
||||
func TestCleanCacheEntriesChangedWithPutObject(t *testing.T) {
|
||||
var (
|
||||
cid = cid.New()
|
||||
oids = []*object.ID{randID(t)}
|
||||
keys []ObjectsListKey
|
||||
)
|
||||
|
||||
for _, p := range []string{"", "dir/", "dir/lol/"} {
|
||||
keys = append(keys, ObjectsListKey{cid: cid.String(), prefix: p})
|
||||
}
|
||||
|
||||
t.Run("put object to the root of the bucket", func(t *testing.T) {
|
||||
cache := NewObjectsListCache(testingCacheSize, time.Minute)
|
||||
for _, k := range keys {
|
||||
err := cache.Put(k, oids)
|
||||
require.NoError(t, err)
|
||||
}
|
||||
cache.CleanCacheEntriesContainingObject("obj1", cid)
|
||||
for _, k := range keys {
|
||||
list := cache.Get(k)
|
||||
if k.prefix == "" {
|
||||
require.Nil(t, list)
|
||||
} else {
|
||||
require.NotNil(t, list)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("put object to dir/", func(t *testing.T) {
|
||||
cache := NewObjectsListCache(testingCacheSize, time.Minute)
|
||||
for _, k := range keys {
|
||||
err := cache.Put(k, oids)
|
||||
require.NoError(t, err)
|
||||
}
|
||||
cache.CleanCacheEntriesContainingObject("dir/obj", cid)
|
||||
for _, k := range keys {
|
||||
list := cache.Get(k)
|
||||
if k.prefix == "" || k.prefix == "dir/" {
|
||||
require.Nil(t, list)
|
||||
} else {
|
||||
require.NotNil(t, list)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("put object to dir/lol/", func(t *testing.T) {
|
||||
cache := NewObjectsListCache(testingCacheSize, time.Minute)
|
||||
for _, k := range keys {
|
||||
err := cache.Put(k, oids)
|
||||
require.NoError(t, err)
|
||||
}
|
||||
cache.CleanCacheEntriesContainingObject("dir/lol/obj", cid)
|
||||
for _, k := range keys {
|
||||
list := cache.Get(k)
|
||||
require.Nil(t, list)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue