diff --git a/tools/cache/delta_fifo_test.go b/tools/cache/delta_fifo_test.go index 34182474..ee69192a 100644 --- a/tools/cache/delta_fifo_test.go +++ b/tools/cache/delta_fifo_test.go @@ -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) objV2 := mkFifoObj("foo", 3) table := []struct { @@ -211,120 +211,35 @@ func TestDeltaFIFOWithoutKnownObjects_ReplaceMakesDeletionsForObjectsInQueue(t * } for _, tt := range table { 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) { - f := NewDeltaFIFOWithOptions(DeltaFIFOOptions{ + // Test with a DeltaFIFO with a backing KnownObjects + fWithKnownObjects := NewDeltaFIFOWithOptions(DeltaFIFOOptions{ KeyFunction: testFifoObjectKeyFunc, KnownObjects: literalListerGetter(func() []testFifoObject { return []testFifoObject{} }), }) - tt.operations(f) - actualDeltas := Pop(f) - if !reflect.DeepEqual(tt.expectedDeltas, actualDeltas) { - t.Errorf("expected %#v, got %#v", tt.expectedDeltas, actualDeltas) + tt.operations(fWithKnownObjects) + actualDeltasWithKnownObjects := Pop(fWithKnownObjects) + if !reflect.DeepEqual(tt.expectedDeltas, actualDeltasWithKnownObjects) { + 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) } }) }