85 lines
2.1 KiB
Go
85 lines
2.1 KiB
Go
|
package k2v_test
|
||
|
|
||
|
import (
|
||
|
k2v "code.notaphish.fyi/milas/garage-k2v-go"
|
||
|
"context"
|
||
|
"fmt"
|
||
|
"github.com/stretchr/testify/require"
|
||
|
"strconv"
|
||
|
"strings"
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
func TestScrollIndex(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
f, ctx := newFixture(t)
|
||
|
|
||
|
pkPrefix := randomPk()
|
||
|
for i := range 5 {
|
||
|
require.NoError(t, f.cli.InsertItem(ctx, f.bucket, pkPrefix+"-"+strconv.Itoa(i), randomSk(), "", []byte("hello"+strconv.Itoa(i))))
|
||
|
}
|
||
|
|
||
|
var responses []*k2v.ReadIndexResponse
|
||
|
err := k2v.ScrollIndex(ctx, f.cli, f.bucket, k2v.ReadIndexQuery{Prefix: pkPrefix, Limit: 1}, func(resp *k2v.ReadIndexResponse) error {
|
||
|
responses = append(responses, resp)
|
||
|
return nil
|
||
|
})
|
||
|
require.NoError(t, err)
|
||
|
require.Len(t, responses, 5)
|
||
|
}
|
||
|
|
||
|
func ExampleScrollIndex() {
|
||
|
ctx := context.Background()
|
||
|
client := k2v.NewClient(k2v.EndpointFromEnv(), k2v.KeyFromEnv())
|
||
|
defer client.Close()
|
||
|
const bucket = "k2v-test"
|
||
|
|
||
|
pkPrefix := randomPk()
|
||
|
for i := range 5 {
|
||
|
_ = client.InsertItem(ctx, bucket, pkPrefix+"-"+strconv.Itoa(i), randomSk(), "", []byte("hello"))
|
||
|
}
|
||
|
|
||
|
var responses []*k2v.ReadIndexResponse
|
||
|
_ = k2v.ScrollIndex(ctx, client, bucket, k2v.ReadIndexQuery{Prefix: pkPrefix, Limit: 25}, func(resp *k2v.ReadIndexResponse) error {
|
||
|
responses = append(responses, resp)
|
||
|
return nil
|
||
|
})
|
||
|
fmt.Println(len(responses[0].PartitionKeys))
|
||
|
// Output:
|
||
|
// 5
|
||
|
}
|
||
|
|
||
|
func TestScrollItems(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
f, ctx := newFixture(t)
|
||
|
|
||
|
pk1 := randomKey("pk1")
|
||
|
sk1 := randomKey("sk1")
|
||
|
require.NoError(t, f.cli.InsertItem(ctx, f.bucket, pk1, sk1, "", []byte(strings.Join([]string{"hello", pk1, sk1}, "-"))))
|
||
|
|
||
|
pk2 := randomKey("pk2")
|
||
|
for i := range 5 {
|
||
|
skN := randomKey(fmt.Sprintf("sk%d", i+2))
|
||
|
require.NoError(t, f.cli.InsertItem(ctx, f.bucket, pk2, skN, "", []byte(strings.Join([]string{"hello", pk2, skN, strconv.Itoa(i)}, "-"))))
|
||
|
}
|
||
|
|
||
|
q := []k2v.BatchSearch{
|
||
|
{
|
||
|
PartitionKey: pk1,
|
||
|
},
|
||
|
{
|
||
|
PartitionKey: pk2,
|
||
|
Limit: 1,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
var results []*k2v.BatchSearchResult
|
||
|
err := k2v.ScrollBatchSearch(ctx, f.cli, f.bucket, q, func(result *k2v.BatchSearchResult) error {
|
||
|
results = append(results, result)
|
||
|
return nil
|
||
|
})
|
||
|
require.NoError(t, err)
|
||
|
require.NotEmpty(t, results)
|
||
|
require.Len(t, results, 6)
|
||
|
}
|