MCPcopy
hub / github.com/kubernetes/client-go / TestMultiIndexKeys

Function TestMultiIndexKeys

tools/cache/index_test.go:63–134  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

61}
62
63func TestMultiIndexKeys(t *testing.T) {
64 index := NewIndexer(MetaNamespaceKeyFunc, Indexers{"byUser": testUsersIndexFunc})
65
66 pod1 := &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "one", Annotations: map[string]string{"users": "ernie,bert"}}}
67 pod2 := &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "two", Annotations: map[string]string{"users": "bert,oscar"}}}
68 pod3 := &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "tre", Annotations: map[string]string{"users": "ernie,elmo"}}}
69
70 index.Add(pod1)
71 index.Add(pod2)
72 index.Add(pod3)
73
74 expected := map[string]sets.String{}
75 expected["ernie"] = sets.NewString("one", "tre")
76 expected["bert"] = sets.NewString("one", "two")
77 expected["elmo"] = sets.NewString("tre")
78 expected["oscar"] = sets.NewString("two")
79 expected["elmo"] = sets.NewString() // let's just make sure we don't get anything back in this case
80 {
81 for k, v := range expected {
82 found := sets.String{}
83 indexResults, err := index.ByIndex("byUser", k)
84 if err != nil {
85 t.Errorf("Unexpected error %v", err)
86 }
87 for _, item := range indexResults {
88 found.Insert(item.(*v1.Pod).Name)
89 }
90 items := v.List()
91 if !found.HasAll(items...) {
92 t.Errorf("missing items, index %s, expected %v but found %v", k, items, found.List())
93 }
94 }
95 }
96
97 index.Delete(pod3)
98 erniePods, err := index.ByIndex("byUser", "ernie")
99 if err != nil {
100 t.Errorf("unexpected error: %v", err)
101 }
102 if len(erniePods) != 1 {
103 t.Errorf("Expected 1 pods but got %v", len(erniePods))
104 }
105 for _, erniePod := range erniePods {
106 if erniePod.(*v1.Pod).Name != "one" {
107 t.Errorf("Expected only 'one' but got %s", erniePod.(*v1.Pod).Name)
108 }
109 }
110
111 elmoPods, err := index.ByIndex("byUser", "elmo")
112 if err != nil {
113 t.Errorf("unexpected error: %v", err)
114 }
115 if len(elmoPods) != 0 {
116 t.Errorf("Expected 0 pods but got %v", len(elmoPods))
117 }
118
119 copyOfPod2 := pod2.DeepCopy()
120 copyOfPod2.Annotations["users"] = "oscar"

Callers

nothing calls this directly

Calls 8

ByIndexMethod · 0.95
NewIndexerFunction · 0.85
AddMethod · 0.65
ErrorfMethod · 0.65
ListMethod · 0.65
DeleteMethod · 0.65
DeepCopyMethod · 0.65
UpdateMethod · 0.65

Tested by

no test coverage detected