func TestGarbageCollectImageNotOldEnough(t *testing.T) { policy := ImageGCPolicy{ HighThresholdPercent: 90, LowThresholdPercent: 80, } fakeRuntime := &container.FakeRuntime{} mockCadvisor := new(cadvisor.Mock) manager := &realImageManager{ runtime: fakeRuntime, policy: policy, minAge: defaultGCAge, imageRecords: make(map[string]*imageRecord), cadvisor: mockCadvisor, recorder: &record.FakeRecorder{}, } fakeRuntime.ImageList = []container.Image{ makeImage(0, 1024), makeImage(1, 2048), } // 1 image is in use, and another one is not old enough fakeRuntime.AllPodList = []*container.Pod{ { Containers: []*container.Container{ makeContainer(1), }, }, } fakeClock := util.FakeClock{Time: time.Now()} fmt.Println(fakeClock.Now()) require.NoError(t, manager.detectImages(fakeClock.Now())) require.Equal(t, manager.imageRecordsLen(), 2) // no space freed since one image is in used, and another one is not old enough spaceFreed, err := manager.freeSpace(1024, fakeClock.Now()) assert := assert.New(t) require.NoError(t, err) assert.EqualValues(0, spaceFreed) assert.Len(fakeRuntime.ImageList, 2) // move clock by minAge duration, then 1 image will be garbage collected fakeClock.Step(manager.minAge) spaceFreed, err = manager.freeSpace(1024, fakeClock.Now()) require.NoError(t, err) assert.EqualValues(1024, spaceFreed) assert.Len(fakeRuntime.ImageList, 1) }