mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-24 04:06:03 +00:00
Add test for indexer with multiple values
This commit is contained in:
parent
ba1bbb5ac6
commit
56159f258c
@ -18,7 +18,11 @@ package cache
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/google/go-cmp/cmp"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestThreadSafeStoreDeleteRemovesEmptySetsFromIndex(t *testing.T) {
|
||||
@ -92,6 +96,75 @@ func TestThreadSafeStoreAddKeepsNonEmptySetPostDeleteFromIndex(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestThreadSafeStoreIndexingFunctionsWithMultipleValues(t *testing.T) {
|
||||
testIndexer := "testIndexer"
|
||||
|
||||
indexers := Indexers{
|
||||
testIndexer: func(obj interface{}) ([]string, error) {
|
||||
return strings.Split(obj.(string), ","), nil
|
||||
},
|
||||
}
|
||||
|
||||
indices := Indices{}
|
||||
store := NewThreadSafeStore(indexers, indices).(*threadSafeMap)
|
||||
|
||||
store.Add("key1", "foo")
|
||||
store.Add("key2", "bar")
|
||||
|
||||
assert := assert.New(t)
|
||||
|
||||
compare := func(key string, expected []string) error {
|
||||
values := store.indices[testIndexer][key].List()
|
||||
if cmp.Equal(values, expected) {
|
||||
return nil
|
||||
}
|
||||
return fmt.Errorf("unexpected index for key %s, diff=%s", key, cmp.Diff(values, expected))
|
||||
}
|
||||
|
||||
assert.NoError(compare("foo", []string{"key1"}))
|
||||
assert.NoError(compare("bar", []string{"key2"}))
|
||||
|
||||
store.Update("key2", "foo,bar")
|
||||
|
||||
assert.NoError(compare("foo", []string{"key1", "key2"}))
|
||||
assert.NoError(compare("bar", []string{"key2"}))
|
||||
|
||||
store.Update("key1", "foo,bar")
|
||||
|
||||
assert.NoError(compare("foo", []string{"key1", "key2"}))
|
||||
assert.NoError(compare("bar", []string{"key1", "key2"}))
|
||||
|
||||
store.Add("key3", "foo,bar,baz")
|
||||
|
||||
assert.NoError(compare("foo", []string{"key1", "key2", "key3"}))
|
||||
assert.NoError(compare("bar", []string{"key1", "key2", "key3"}))
|
||||
assert.NoError(compare("baz", []string{"key3"}))
|
||||
|
||||
store.Update("key1", "foo")
|
||||
|
||||
assert.NoError(compare("foo", []string{"key1", "key2", "key3"}))
|
||||
assert.NoError(compare("bar", []string{"key2", "key3"}))
|
||||
assert.NoError(compare("baz", []string{"key3"}))
|
||||
|
||||
store.Update("key2", "bar")
|
||||
|
||||
assert.NoError(compare("foo", []string{"key1", "key3"}))
|
||||
assert.NoError(compare("bar", []string{"key2", "key3"}))
|
||||
assert.NoError(compare("baz", []string{"key3"}))
|
||||
|
||||
store.Delete("key1")
|
||||
|
||||
assert.NoError(compare("foo", []string{"key3"}))
|
||||
assert.NoError(compare("bar", []string{"key2", "key3"}))
|
||||
assert.NoError(compare("baz", []string{"key3"}))
|
||||
|
||||
store.Delete("key3")
|
||||
|
||||
assert.NoError(compare("foo", []string{}))
|
||||
assert.NoError(compare("bar", []string{"key2"}))
|
||||
assert.NoError(compare("baz", []string{}))
|
||||
}
|
||||
|
||||
func BenchmarkIndexer(b *testing.B) {
|
||||
testIndexer := "testIndexer"
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user