79 lines
1.7 KiB
Go
79 lines
1.7 KiB
Go
package k2v_test
|
|
|
|
import (
|
|
k2v "code.notaphish.fyi/milas/garage-k2v-go"
|
|
"github.com/davecgh/go-spew/spew"
|
|
"github.com/stretchr/testify/require"
|
|
"math/rand/v2"
|
|
"strconv"
|
|
"testing"
|
|
)
|
|
|
|
func TestClient_ReadBatch(t *testing.T) {
|
|
f, ctx := newFixture(t)
|
|
|
|
pk1 := randomKey()
|
|
sk1 := randomKey()
|
|
|
|
require.NoError(t, f.cli.InsertItem(ctx, f.bucket, pk1, sk1, "", []byte("hello")))
|
|
|
|
pk2 := randomKey()
|
|
for i := range 5 {
|
|
sk := randomKey()
|
|
require.NoError(t, f.cli.InsertItem(ctx, f.bucket, pk2, sk, "", []byte("hello-"+strconv.Itoa(i))))
|
|
}
|
|
|
|
pk3 := randomKey()
|
|
sk3 := randomKey()
|
|
for i := range 5 {
|
|
require.NoError(t, f.cli.InsertItem(ctx, f.bucket, pk3, sk3, "", []byte("hello-"+strconv.Itoa(i))))
|
|
}
|
|
|
|
q := []k2v.ReadBatchSearch{
|
|
{
|
|
PartitionKey: pk1,
|
|
},
|
|
{
|
|
PartitionKey: pk2,
|
|
},
|
|
{
|
|
PartitionKey: pk3,
|
|
SingleItem: true,
|
|
Start: sk3,
|
|
},
|
|
}
|
|
|
|
items, err := f.cli.ReadBatch(ctx, f.bucket, q)
|
|
require.NoError(t, err)
|
|
require.NotEmpty(t, items)
|
|
|
|
spew.Dump(items)
|
|
}
|
|
|
|
func TestBulkGet(t *testing.T) {
|
|
f, ctx := newFixture(t)
|
|
|
|
keys := make([]k2v.ItemKey, 500)
|
|
for i := range keys {
|
|
keys[i] = k2v.ItemKey{
|
|
PartitionKey: randomKey(),
|
|
SortKey: randomKey(),
|
|
}
|
|
require.NoError(t, f.cli.InsertItem(ctx, f.bucket, keys[i].PartitionKey, keys[i].SortKey, "", []byte("hello"+strconv.Itoa(i))))
|
|
}
|
|
|
|
rand.Shuffle(len(keys), func(i, j int) {
|
|
keys[i], keys[j] = keys[j], keys[i]
|
|
})
|
|
|
|
items, err := k2v.BulkGet(ctx, f.cli, f.bucket, keys)
|
|
require.NoError(t, err)
|
|
require.NotEmpty(t, items)
|
|
|
|
require.Equal(t, len(keys), len(items))
|
|
for i := range keys {
|
|
require.Equal(t, keys[i].SortKey, items[i].SortKey)
|
|
require.Len(t, items[i].Values, 1)
|
|
require.Contains(t, string(items[i].Values[0]), "hello")
|
|
}
|
|
}
|