garage-k2v-go/read_batch_test.go

80 lines
1.7 KiB
Go
Raw Normal View History

2025-02-25 20:24:09 -05:00
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")
}
}