mirror of
https://github.com/kubernetes/client-go.git
synced 2025-06-24 22:23:02 +00:00
client-go/cache: merge ReplaceMakesDeletionsForObjectsInQueue tests
Signed-off-by: Odin Ugedal <ougedal@palantir.com> Signed-off-by: Odin Ugedal <odin@uged.al> Kubernetes-commit: cd3e98b65c1339a8adc157175630de099a057d3f
This commit is contained in:
parent
8279635aa4
commit
b250bf51ae
131
tools/cache/delta_fifo_test.go
vendored
131
tools/cache/delta_fifo_test.go
vendored
@ -121,7 +121,7 @@ func TestDeltaFIFO_replaceWithDeleteDeltaIn(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestDeltaFIFOWithoutKnownObjects_ReplaceMakesDeletionsForObjectsInQueue(t *testing.T) {
|
func TestDeltaFIFOW_ReplaceMakesDeletionsForObjectsInQueue(t *testing.T) {
|
||||||
obj := mkFifoObj("foo", 2)
|
obj := mkFifoObj("foo", 2)
|
||||||
objV2 := mkFifoObj("foo", 3)
|
objV2 := mkFifoObj("foo", 3)
|
||||||
table := []struct {
|
table := []struct {
|
||||||
@ -211,120 +211,35 @@ func TestDeltaFIFOWithoutKnownObjects_ReplaceMakesDeletionsForObjectsInQueue(t *
|
|||||||
}
|
}
|
||||||
for _, tt := range table {
|
for _, tt := range table {
|
||||||
tt := tt
|
tt := tt
|
||||||
t.Run(tt.name, func(t *testing.T) {
|
|
||||||
f := NewDeltaFIFOWithOptions(DeltaFIFOOptions{
|
|
||||||
KeyFunction: testFifoObjectKeyFunc,
|
|
||||||
})
|
|
||||||
tt.operations(f)
|
|
||||||
actualDeltas := Pop(f)
|
|
||||||
if !reflect.DeepEqual(tt.expectedDeltas, actualDeltas) {
|
|
||||||
t.Errorf("expected %#v, got %#v", tt.expectedDeltas, actualDeltas)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestDeltaFIFOWithKnownObjects_ReplaceMakesDeletionsForObjectsInQueue(t *testing.T) {
|
|
||||||
obj := mkFifoObj("foo", 2)
|
|
||||||
objV2 := mkFifoObj("foo", 3)
|
|
||||||
table := []struct {
|
|
||||||
name string
|
|
||||||
operations func(f *DeltaFIFO)
|
|
||||||
expectedDeltas Deltas
|
|
||||||
}{
|
|
||||||
{
|
|
||||||
name: "Added object should be deleted on Replace",
|
|
||||||
operations: func(f *DeltaFIFO) {
|
|
||||||
f.Add(obj)
|
|
||||||
f.Replace([]interface{}{}, "0")
|
|
||||||
},
|
|
||||||
expectedDeltas: Deltas{
|
|
||||||
{Added, obj},
|
|
||||||
{Deleted, DeletedFinalStateUnknown{Key: "foo", Obj: obj}},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "Replaced object should have only a single Delete",
|
|
||||||
operations: func(f *DeltaFIFO) {
|
|
||||||
f.emitDeltaTypeReplaced = true
|
|
||||||
f.Add(obj)
|
|
||||||
f.Replace([]interface{}{obj}, "0")
|
|
||||||
f.Replace([]interface{}{}, "0")
|
|
||||||
},
|
|
||||||
expectedDeltas: Deltas{
|
|
||||||
{Added, obj},
|
|
||||||
{Replaced, obj},
|
|
||||||
{Deleted, DeletedFinalStateUnknown{Key: "foo", Obj: obj}},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "Deleted object should have only a single Delete",
|
|
||||||
operations: func(f *DeltaFIFO) {
|
|
||||||
f.Add(obj)
|
|
||||||
f.Delete(obj)
|
|
||||||
f.Replace([]interface{}{}, "0")
|
|
||||||
},
|
|
||||||
expectedDeltas: Deltas{
|
|
||||||
{Added, obj},
|
|
||||||
{Deleted, obj},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "Synced objects should have a single delete",
|
|
||||||
operations: func(f *DeltaFIFO) {
|
|
||||||
f.Add(obj)
|
|
||||||
f.Replace([]interface{}{obj}, "0")
|
|
||||||
f.Replace([]interface{}{obj}, "0")
|
|
||||||
f.Replace([]interface{}{}, "0")
|
|
||||||
},
|
|
||||||
expectedDeltas: Deltas{
|
|
||||||
{Added, obj},
|
|
||||||
{Sync, obj},
|
|
||||||
{Sync, obj},
|
|
||||||
{Deleted, DeletedFinalStateUnknown{Key: "foo", Obj: obj}},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "Added objects should have a single delete on multiple Replaces",
|
|
||||||
operations: func(f *DeltaFIFO) {
|
|
||||||
f.Add(obj)
|
|
||||||
f.Replace([]interface{}{}, "0")
|
|
||||||
f.Replace([]interface{}{}, "1")
|
|
||||||
},
|
|
||||||
expectedDeltas: Deltas{
|
|
||||||
{Added, obj},
|
|
||||||
{Deleted, DeletedFinalStateUnknown{Key: "foo", Obj: obj}},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "Added and deleted and added object should be deleted",
|
|
||||||
operations: func(f *DeltaFIFO) {
|
|
||||||
f.Add(obj)
|
|
||||||
f.Delete(obj)
|
|
||||||
f.Add(objV2)
|
|
||||||
f.Replace([]interface{}{}, "0")
|
|
||||||
},
|
|
||||||
expectedDeltas: Deltas{
|
|
||||||
{Added, obj},
|
|
||||||
{Deleted, obj},
|
|
||||||
{Added, objV2},
|
|
||||||
{Deleted, DeletedFinalStateUnknown{Key: "foo", Obj: objV2}},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
for _, tt := range table {
|
|
||||||
tt := tt
|
|
||||||
t.Run(tt.name, func(t *testing.T) {
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
f := NewDeltaFIFOWithOptions(DeltaFIFOOptions{
|
// Test with a DeltaFIFO with a backing KnownObjects
|
||||||
|
fWithKnownObjects := NewDeltaFIFOWithOptions(DeltaFIFOOptions{
|
||||||
KeyFunction: testFifoObjectKeyFunc,
|
KeyFunction: testFifoObjectKeyFunc,
|
||||||
KnownObjects: literalListerGetter(func() []testFifoObject {
|
KnownObjects: literalListerGetter(func() []testFifoObject {
|
||||||
return []testFifoObject{}
|
return []testFifoObject{}
|
||||||
}),
|
}),
|
||||||
})
|
})
|
||||||
tt.operations(f)
|
tt.operations(fWithKnownObjects)
|
||||||
actualDeltas := Pop(f)
|
actualDeltasWithKnownObjects := Pop(fWithKnownObjects)
|
||||||
if !reflect.DeepEqual(tt.expectedDeltas, actualDeltas) {
|
if !reflect.DeepEqual(tt.expectedDeltas, actualDeltasWithKnownObjects) {
|
||||||
t.Errorf("expected %#v, got %#v", tt.expectedDeltas, actualDeltas)
|
t.Errorf("expected %#v, got %#v", tt.expectedDeltas, actualDeltasWithKnownObjects)
|
||||||
|
}
|
||||||
|
if len(fWithKnownObjects.items) != 0 {
|
||||||
|
t.Errorf("expected no extra deltas (empty map), got %#v", fWithKnownObjects.items)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Test with a DeltaFIFO without a backing KnownObjects
|
||||||
|
fWithoutKnownObjects := NewDeltaFIFOWithOptions(DeltaFIFOOptions{
|
||||||
|
KeyFunction: testFifoObjectKeyFunc,
|
||||||
|
})
|
||||||
|
tt.operations(fWithoutKnownObjects)
|
||||||
|
actualDeltasWithoutKnownObjects := Pop(fWithoutKnownObjects)
|
||||||
|
if !reflect.DeepEqual(tt.expectedDeltas, actualDeltasWithoutKnownObjects) {
|
||||||
|
t.Errorf("expected %#v, got %#v", tt.expectedDeltas, actualDeltasWithoutKnownObjects)
|
||||||
|
}
|
||||||
|
if len(fWithoutKnownObjects.items) != 0 {
|
||||||
|
t.Errorf("expected no extra deltas (empty map), got %#v", fWithoutKnownObjects.items)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user