Fix naming in storage test setup

This commit is contained in:
Wojciech Tyczyński 2022-11-04 15:37:47 +01:00
parent c519bc02e8
commit 1bc95675b1
2 changed files with 65 additions and 61 deletions

View File

@ -482,7 +482,7 @@ func RunTestList(ctx context.Context, t *testing.T, store storage.Interface) {
t.Errorf("Unexpected error: %v", err)
}
continueRV, _ := strconv.Atoi(list.ResourceVersion)
secondContinuation, err := storage.EncodeContinue("/two-level/2", "/two-level/", int64(continueRV))
secondContinuation, err := storage.EncodeContinue("/two-level/foo", "/two-level/", int64(continueRV))
if err != nil {
t.Fatal(err)
}
@ -533,20 +533,20 @@ func RunTestList(ctx context.Context, t *testing.T, store storage.Interface) {
},
{
name: "test List on existing key",
prefix: "/one-level/",
prefix: "/first/",
pred: storage.Everything,
expectedOut: []*example.Pod{preset[0]},
},
{
name: "test List on existing key with resource version set to 0",
prefix: "/one-level/",
prefix: "/first/",
pred: storage.Everything,
expectedOut: []*example.Pod{preset[0]},
rv: "0",
},
{
name: "test List on existing key with resource version set before first write, match=Exact",
prefix: "/one-level/",
prefix: "/first/",
pred: storage.Everything,
expectedOut: []*example.Pod{},
rv: initialRV,
@ -555,7 +555,7 @@ func RunTestList(ctx context.Context, t *testing.T, store storage.Interface) {
},
{
name: "test List on existing key with resource version set to 0, match=NotOlderThan",
prefix: "/one-level/",
prefix: "/first/",
pred: storage.Everything,
expectedOut: []*example.Pod{preset[0]},
rv: "0",
@ -563,7 +563,7 @@ func RunTestList(ctx context.Context, t *testing.T, store storage.Interface) {
},
{
name: "test List on existing key with resource version set to 0, match=Invalid",
prefix: "/one-level/",
prefix: "/first/",
pred: storage.Everything,
rv: "0",
rvMatch: "Invalid",
@ -571,7 +571,7 @@ func RunTestList(ctx context.Context, t *testing.T, store storage.Interface) {
},
{
name: "test List on existing key with resource version set before first write, match=NotOlderThan",
prefix: "/one-level/",
prefix: "/first/",
pred: storage.Everything,
expectedOut: []*example.Pod{preset[0]},
rv: initialRV,
@ -579,7 +579,7 @@ func RunTestList(ctx context.Context, t *testing.T, store storage.Interface) {
},
{
name: "test List on existing key with resource version set before first write, match=Invalid",
prefix: "/one-level/",
prefix: "/first/",
pred: storage.Everything,
rv: initialRV,
rvMatch: "Invalid",
@ -587,14 +587,14 @@ func RunTestList(ctx context.Context, t *testing.T, store storage.Interface) {
},
{
name: "test List on existing key with resource version set to current resource version",
prefix: "/one-level/",
prefix: "/first/",
pred: storage.Everything,
expectedOut: []*example.Pod{preset[0]},
rv: list.ResourceVersion,
},
{
name: "test List on existing key with resource version set to current resource version, match=Exact",
prefix: "/one-level/",
prefix: "/first/",
pred: storage.Everything,
expectedOut: []*example.Pod{preset[0]},
rv: list.ResourceVersion,
@ -603,7 +603,7 @@ func RunTestList(ctx context.Context, t *testing.T, store storage.Interface) {
},
{
name: "test List on existing key with resource version set to current resource version, match=NotOlderThan",
prefix: "/one-level/",
prefix: "/first/",
pred: storage.Everything,
expectedOut: []*example.Pod{preset[0]},
rv: list.ResourceVersion,
@ -617,16 +617,16 @@ func RunTestList(ctx context.Context, t *testing.T, store storage.Interface) {
},
{
name: "test List with pod name matching",
prefix: "/one-level/",
prefix: "/first/",
pred: storage.SelectionPredicate{
Label: labels.Everything(),
Field: fields.ParseSelectorOrDie("metadata.name!=foo"),
Field: fields.ParseSelectorOrDie("metadata.name!=bar"),
},
expectedOut: nil,
},
{
name: "test List with limit",
prefix: "/two-level/",
prefix: "/second/",
pred: storage.SelectionPredicate{
Label: labels.Everything(),
Field: fields.Everything(),
@ -638,7 +638,7 @@ func RunTestList(ctx context.Context, t *testing.T, store storage.Interface) {
},
{
name: "test List with limit at current resource version",
prefix: "/two-level/",
prefix: "/second/",
pred: storage.SelectionPredicate{
Label: labels.Everything(),
Field: fields.Everything(),
@ -652,7 +652,7 @@ func RunTestList(ctx context.Context, t *testing.T, store storage.Interface) {
},
{
name: "test List with limit at current resource version and match=Exact",
prefix: "/two-level/",
prefix: "/second/",
pred: storage.SelectionPredicate{
Label: labels.Everything(),
Field: fields.Everything(),
@ -667,7 +667,7 @@ func RunTestList(ctx context.Context, t *testing.T, store storage.Interface) {
},
{
name: "test List with limit at resource version 0",
prefix: "/two-level/",
prefix: "/second/",
pred: storage.SelectionPredicate{
Label: labels.Everything(),
Field: fields.Everything(),
@ -681,7 +681,7 @@ func RunTestList(ctx context.Context, t *testing.T, store storage.Interface) {
},
{
name: "test List with limit at resource version 0 match=NotOlderThan",
prefix: "/two-level/",
prefix: "/second/",
pred: storage.SelectionPredicate{
Label: labels.Everything(),
Field: fields.Everything(),
@ -696,7 +696,7 @@ func RunTestList(ctx context.Context, t *testing.T, store storage.Interface) {
},
{
name: "test List with limit at resource version before first write and match=Exact",
prefix: "/two-level/",
prefix: "/second/",
pred: storage.SelectionPredicate{
Label: labels.Everything(),
Field: fields.Everything(),
@ -710,7 +710,7 @@ func RunTestList(ctx context.Context, t *testing.T, store storage.Interface) {
},
{
name: "test List with pregenerated continue token",
prefix: "/two-level/",
prefix: "/second/",
pred: storage.SelectionPredicate{
Label: labels.Everything(),
Field: fields.Everything(),
@ -721,7 +721,7 @@ func RunTestList(ctx context.Context, t *testing.T, store storage.Interface) {
},
{
name: "ignores resource version 0 for List with pregenerated continue token",
prefix: "/two-level/",
prefix: "/second/",
pred: storage.SelectionPredicate{
Label: labels.Everything(),
Field: fields.Everything(),
@ -733,7 +733,7 @@ func RunTestList(ctx context.Context, t *testing.T, store storage.Interface) {
},
{
name: "test List with multiple levels of directories and expect flattened result",
prefix: "/two-level/",
prefix: "/second/",
pred: storage.Everything,
expectedOut: []*example.Pod{preset[1], preset[2]},
},
@ -741,7 +741,7 @@ func RunTestList(ctx context.Context, t *testing.T, store storage.Interface) {
name: "test List with filter returning only one item, ensure only a single page returned",
prefix: "/",
pred: storage.SelectionPredicate{
Field: fields.OneTermEqualSelector("metadata.name", "fourth"),
Field: fields.OneTermEqualSelector("metadata.name", "barfoo"),
Label: labels.Everything(),
Limit: 1,
},
@ -752,7 +752,7 @@ func RunTestList(ctx context.Context, t *testing.T, store storage.Interface) {
name: "test List with filter returning only one item, covers the entire list",
prefix: "/",
pred: storage.SelectionPredicate{
Field: fields.OneTermEqualSelector("metadata.name", "fourth"),
Field: fields.OneTermEqualSelector("metadata.name", "barfoo"),
Label: labels.Everything(),
Limit: 2,
},
@ -763,7 +763,7 @@ func RunTestList(ctx context.Context, t *testing.T, store storage.Interface) {
name: "test List with filter returning only one item, covers the entire list, with resource version 0",
prefix: "/",
pred: storage.SelectionPredicate{
Field: fields.OneTermEqualSelector("metadata.name", "fourth"),
Field: fields.OneTermEqualSelector("metadata.name", "barfoo"),
Label: labels.Everything(),
Limit: 2,
},
@ -775,7 +775,7 @@ func RunTestList(ctx context.Context, t *testing.T, store storage.Interface) {
name: "test List with filter returning two items, more pages possible",
prefix: "/",
pred: storage.SelectionPredicate{
Field: fields.OneTermEqualSelector("metadata.name", "foo"),
Field: fields.OneTermEqualSelector("metadata.name", "bar"),
Label: labels.Everything(),
Limit: 2,
},
@ -786,7 +786,7 @@ func RunTestList(ctx context.Context, t *testing.T, store storage.Interface) {
name: "filter returns two items split across multiple pages",
prefix: "/",
pred: storage.SelectionPredicate{
Field: fields.OneTermEqualSelector("metadata.name", "bar"),
Field: fields.OneTermEqualSelector("metadata.name", "foo"),
Label: labels.Everything(),
Limit: 2,
},
@ -796,10 +796,10 @@ func RunTestList(ctx context.Context, t *testing.T, store storage.Interface) {
name: "filter returns one item for last page, ends on last item, not full",
prefix: "/",
pred: storage.SelectionPredicate{
Field: fields.OneTermEqualSelector("metadata.name", "bar"),
Field: fields.OneTermEqualSelector("metadata.name", "foo"),
Label: labels.Everything(),
Limit: 2,
Continue: encodeContinueOrDie("z-level/3", int64(continueRV)),
Continue: encodeContinueOrDie("third/barfoo", int64(continueRV)),
},
expectedOut: []*example.Pod{preset[4]},
},
@ -807,10 +807,10 @@ func RunTestList(ctx context.Context, t *testing.T, store storage.Interface) {
name: "filter returns one item for last page, starts on last item, full",
prefix: "/",
pred: storage.SelectionPredicate{
Field: fields.OneTermEqualSelector("metadata.name", "bar"),
Field: fields.OneTermEqualSelector("metadata.name", "foo"),
Label: labels.Everything(),
Limit: 1,
Continue: encodeContinueOrDie("z-level/3/test-2", int64(continueRV)),
Continue: encodeContinueOrDie("third/barfoo", int64(continueRV)),
},
expectedOut: []*example.Pod{preset[4]},
},
@ -818,10 +818,10 @@ func RunTestList(ctx context.Context, t *testing.T, store storage.Interface) {
name: "filter returns one item for last page, starts on last item, partial page",
prefix: "/",
pred: storage.SelectionPredicate{
Field: fields.OneTermEqualSelector("metadata.name", "bar"),
Field: fields.OneTermEqualSelector("metadata.name", "foo"),
Label: labels.Everything(),
Limit: 2,
Continue: encodeContinueOrDie("z-level/3/test-2", int64(continueRV)),
Continue: encodeContinueOrDie("third/barfoo", int64(continueRV)),
},
expectedOut: []*example.Pod{preset[4]},
},
@ -829,7 +829,7 @@ func RunTestList(ctx context.Context, t *testing.T, store storage.Interface) {
name: "filter returns two items, page size equal to total list size",
prefix: "/",
pred: storage.SelectionPredicate{
Field: fields.OneTermEqualSelector("metadata.name", "bar"),
Field: fields.OneTermEqualSelector("metadata.name", "foo"),
Label: labels.Everything(),
Limit: 5,
},
@ -839,7 +839,7 @@ func RunTestList(ctx context.Context, t *testing.T, store storage.Interface) {
name: "filter returns one item, page size equal to total list size",
prefix: "/",
pred: storage.SelectionPredicate{
Field: fields.OneTermEqualSelector("metadata.name", "fourth"),
Field: fields.OneTermEqualSelector("metadata.name", "barfoo"),
Label: labels.Everything(),
Limit: 5,
},
@ -934,7 +934,7 @@ func RunTestListWithoutPaging(ctx context.Context, t *testing.T, store storage.I
{
name: "test List with limit when paging disabled",
disablePaging: true,
prefix: "/two-level/",
prefix: "/second/",
pred: storage.SelectionPredicate{
Label: labels.Everything(),
Field: fields.Everything(),
@ -986,46 +986,46 @@ func RunTestListWithoutPaging(ctx context.Context, t *testing.T, store storage.I
func seedMultiLevelData(ctx context.Context, store storage.Interface) (string, []*example.Pod, error) {
// Setup storage with the following structure:
// /
// - one-level/
// | - test
// - first/
// | - bar
// |
// - two-level/
// | - 1/
// | | - test
// | |
// | - 2/
// | - test
// - second/
// | - bar
// | - foo
// |
// - z-level/
// - 3/
// | - test
// |
// - 3/
// - test-2
// - third/
// | - barfoo
// | - foo
barFirst := &example.Pod{ObjectMeta: metav1.ObjectMeta{Namespace: "first", Name: "bar"}}
barSecond := &example.Pod{ObjectMeta: metav1.ObjectMeta{Namespace: "second", Name: "bar"}}
fooSecond := &example.Pod{ObjectMeta: metav1.ObjectMeta{Namespace: "second", Name: "foo"}}
barfooThird := &example.Pod{ObjectMeta: metav1.ObjectMeta{Namespace: "third", Name: "barfoo"}}
fooThird := &example.Pod{ObjectMeta: metav1.ObjectMeta{Namespace: "third", Name: "foo"}}
preset := []struct {
key string
obj *example.Pod
storedObj *example.Pod
}{
{
key: "/one-level/test",
obj: &example.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo"}},
key: computePodKey(barFirst),
obj: barFirst,
},
{
key: "/two-level/1/test",
obj: &example.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo"}},
key: computePodKey(barSecond),
obj: barSecond,
},
{
key: "/two-level/2/test",
obj: &example.Pod{ObjectMeta: metav1.ObjectMeta{Name: "bar"}},
key: computePodKey(fooSecond),
obj: fooSecond,
},
{
key: "/z-level/3/test",
obj: &example.Pod{ObjectMeta: metav1.ObjectMeta{Name: "fourth"}},
key: computePodKey(barfooThird),
obj: barfooThird,
},
{
key: "/z-level/3/test-2",
obj: &example.Pod{ObjectMeta: metav1.ObjectMeta{Name: "bar"}},
key: computePodKey(fooThird),
obj: fooThird,
},
}

View File

@ -77,11 +77,15 @@ func DeepEqualSafePodSpec() example.PodSpec {
}
}
func computePodKey(obj *example.Pod) string {
return fmt.Sprintf("/%s/%s", obj.Namespace, obj.Name)
}
// testPropagateStore helps propagates store with objects, automates key generation, and returns
// keys and stored objects.
func testPropagateStore(ctx context.Context, t *testing.T, store storage.Interface, obj *example.Pod) (string, *example.Pod) {
// Setup store with a key and grab the output for returning.
key := fmt.Sprintf("/%s/%s", obj.Namespace, obj.Name)
key := computePodKey(obj)
// Setup store with the specified key and grab the output for returning.
err := store.Delete(ctx, key, &example.Pod{}, nil, storage.ValidateAllObjectFunc, nil)