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
68
api/cache/objectslist_test.go
vendored
68
api/cache/objectslist_test.go
vendored
|
@ -6,6 +6,7 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
cid "github.com/nspcc-dev/neofs-api-go/pkg/container/id"
|
||||||
"github.com/nspcc-dev/neofs-api-go/pkg/object"
|
"github.com/nspcc-dev/neofs-api-go/pkg/object"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
@ -29,12 +30,12 @@ func randSHA256Checksum(t *testing.T) (cs [sha256.Size]byte) {
|
||||||
|
|
||||||
func TestObjectsListCache(t *testing.T) {
|
func TestObjectsListCache(t *testing.T) {
|
||||||
var (
|
var (
|
||||||
cacheSize = 10
|
listSize = 10
|
||||||
ids []*object.ID
|
ids []*object.ID
|
||||||
userKey = "key"
|
userKey = "key"
|
||||||
)
|
)
|
||||||
|
|
||||||
for i := 0; i < cacheSize; i++ {
|
for i := 0; i < listSize; i++ {
|
||||||
id := randID(t)
|
id := randID(t)
|
||||||
ids = append(ids, id)
|
ids = append(ids, id)
|
||||||
}
|
}
|
||||||
|
@ -129,3 +130,62 @@ func TestObjectsListCache(t *testing.T) {
|
||||||
require.Nil(t, actual)
|
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