Skip to content

Commit

Permalink
fix uint-tests to support parallel testings
Browse files Browse the repository at this point in the history
  • Loading branch information
waynepeking348 committed Apr 14, 2024
1 parent a3b5577 commit c271037
Show file tree
Hide file tree
Showing 117 changed files with 1,201 additions and 350 deletions.
5 changes: 5 additions & 0 deletions cmd/katalyst-controller/app/options/controllerbase_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ import (
)

func TestWorkloadProfilingOptions(t *testing.T) {
t.Parallel()

workload := &v1.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "pod",
Expand Down Expand Up @@ -200,7 +202,10 @@ func TestWorkloadProfilingOptions(t *testing.T) {
},
}
for _, tt := range tests {
tt := tt
t.Run(tt.name, func(t *testing.T) {
t.Parallel()

f, ok, err := tt.options.getWorkloadEnableFunc()
assert.NoError(t, err)
if ok {
Expand Down
5 changes: 4 additions & 1 deletion pkg/agent/evictionmanager/manager_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -237,7 +237,6 @@ func makeEvictionManager(t *testing.T) *EvictionManger {
func TestEvictionManger_collectEvictionResult(t *testing.T) {
t.Parallel()

mgr := makeEvictionManager(t)
tests := []struct {
name string
dryrun []string
Expand Down Expand Up @@ -299,7 +298,11 @@ func TestEvictionManger_collectEvictionResult(t *testing.T) {
},
}
for _, tt := range tests {
tt := tt
t.Run(tt.name, func(t *testing.T) {
t.Parallel()

mgr := makeEvictionManager(t)
mgr.conf.GetDynamicConfiguration().DryRun = tt.dryrun

collector, _ := mgr.collectEvictionResult(pods)
Expand Down
68 changes: 32 additions & 36 deletions pkg/agent/evictionmanager/plugin/memory/numa_pressure_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -205,26 +205,24 @@ func TestNumaMemoryPressurePlugin_ThresholdMet(t *testing.T) {
}

for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
now := time.Now()
for numaID, numaFree := range tt.numaFree {
fakeMetricsFetcher.SetNumaMetric(numaID, consts.MetricMemFreeNuma, utilMetric.MetricData{Value: numaFree, Time: &now})
}

metResp, err := plugin.ThresholdMet(context.TODO())
assert.NoError(t, err)
assert.NotNil(t, metResp)
assert.Equal(t, tt.wantMetType, metResp.MetType)
assert.Equal(t, tt.wantEvictionScope, metResp.EvictionScope)
if tt.wantCondition != nil && metResp.Condition != nil {
assert.Equal(t, *(tt.wantCondition), *(metResp.Condition))
} else {
assert.Equal(t, tt.wantCondition, metResp.Condition)
}

assert.Equal(t, tt.wantIsUnderNumaPressure, plugin.isUnderNumaPressure)
assert.Equal(t, tt.wantNumaAction, plugin.numaActionMap)
})
now := time.Now()
for numaID, numaFree := range tt.numaFree {
fakeMetricsFetcher.SetNumaMetric(numaID, consts.MetricMemFreeNuma, utilMetric.MetricData{Value: numaFree, Time: &now})
}

metResp, err := plugin.ThresholdMet(context.TODO())
assert.NoError(t, err)
assert.NotNil(t, metResp)
assert.Equal(t, tt.wantMetType, metResp.MetType)
assert.Equal(t, tt.wantEvictionScope, metResp.EvictionScope)
if tt.wantCondition != nil && metResp.Condition != nil {
assert.Equal(t, *(tt.wantCondition), *(metResp.Condition))
} else {
assert.Equal(t, tt.wantCondition, metResp.Condition)
}

assert.Equal(t, tt.wantIsUnderNumaPressure, plugin.isUnderNumaPressure)
assert.Equal(t, tt.wantNumaAction, plugin.numaActionMap)
}
}

Expand Down Expand Up @@ -369,22 +367,20 @@ func TestNumaMemoryPressurePlugin_GetTopEvictionPods(t *testing.T) {
}

for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
plugin.isUnderNumaPressure = tt.isUnderNumaPressure
plugin.numaActionMap = tt.numaAction
resp, err := plugin.GetTopEvictionPods(context.TODO(), &pluginapi.GetTopEvictionPodsRequest{
ActivePods: bePods,
TopN: 1,
EvictionScope: EvictionScopeNumaMemory,
})
assert.NoError(t, err)
assert.NotNil(t, resp)

targetPodSet := sets.String{}
for _, pod := range resp.TargetPods {
targetPodSet.Insert(pod.Name)
}
assert.Equal(t, targetPodSet, tt.wantEvictPodSet)
plugin.isUnderNumaPressure = tt.isUnderNumaPressure
plugin.numaActionMap = tt.numaAction
resp, err := plugin.GetTopEvictionPods(context.TODO(), &pluginapi.GetTopEvictionPodsRequest{
ActivePods: bePods,
TopN: 1,
EvictionScope: EvictionScopeNumaMemory,
})
assert.NoError(t, err)
assert.NotNil(t, resp)

targetPodSet := sets.String{}
for _, pod := range resp.TargetPods {
targetPodSet.Insert(pod.Name)
}
assert.Equal(t, targetPodSet, tt.wantEvictPodSet)
}
}
28 changes: 13 additions & 15 deletions pkg/agent/evictionmanager/plugin/memory/rss_overuse_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -355,23 +355,21 @@ func TestRssOveruseEvictionPlugin_GetEvictPods(t *testing.T) {
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
plugin.dynamicConfig.GetDynamicConfiguration().EnableRSSOveruseEviction = tt.enableRssOveruse
plugin.dynamicConfig.GetDynamicConfiguration().RSSOveruseRateThreshold = tt.defaultRssOveruseThreshold
plugin.evictionConfig.RSSOveruseEvictionFilter = tt.podFilter
plugin.dynamicConfig.GetDynamicConfiguration().EnableRSSOveruseEviction = tt.enableRssOveruse
plugin.dynamicConfig.GetDynamicConfiguration().RSSOveruseRateThreshold = tt.defaultRssOveruseThreshold
plugin.evictionConfig.RSSOveruseEvictionFilter = tt.podFilter

evictPods, err2 := plugin.GetEvictPods(context.TODO(), &pluginapi.GetEvictPodsRequest{
ActivePods: pods,
})
assert.NoError(t, err2)
assert.Nil(t, evictPods.Condition)
evictPods, err2 := plugin.GetEvictPods(context.TODO(), &pluginapi.GetEvictPodsRequest{
ActivePods: pods,
})
assert.NoError(t, err2)
assert.Nil(t, evictPods.Condition)

gotPods := sets.String{}
for i := range evictPods.EvictPods {
gotPods.Insert(evictPods.EvictPods[i].Pod.Name)
}
gotPods := sets.String{}
for i := range evictPods.EvictPods {
gotPods.Insert(evictPods.EvictPods[i].Pod.Name)
}

assert.Equal(t, tt.wantedResult, gotPods)
})
assert.Equal(t, tt.wantedResult, gotPods)
}
}
70 changes: 33 additions & 37 deletions pkg/agent/evictionmanager/plugin/memory/system_pressure_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -273,26 +273,24 @@ func TestSystemPressureEvictionPlugin_ThresholdMet(t *testing.T) {
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
now := start.Add(time.Duration(tt.round) * plugin.syncPeriod)
fakeMetricsFetcher.SetNodeMetric(consts.MetricMemFreeSystem, utilMetric.MetricData{Value: tt.systemFree, Time: &now})
fakeMetricsFetcher.SetNodeMetric(consts.MetricMemKswapdstealSystem, utilMetric.MetricData{Value: tt.systemKswapSteal, Time: &now})

plugin.detectSystemPressures(context.TODO())
metResp, err := plugin.ThresholdMet(context.TODO())
assert.NoError(t, err)
assert.NotNil(t, metResp)
assert.Equal(t, tt.wantMetType, metResp.MetType)
assert.Equal(t, tt.wantEvictionScope, metResp.EvictionScope)
if tt.wantCondition != nil && metResp.Condition != nil {
assert.Equal(t, *(tt.wantCondition), *(metResp.Condition))
} else {
assert.Equal(t, tt.wantCondition, metResp.Condition)
}

assert.Equal(t, tt.wantIsUnderSystemPressure, plugin.isUnderSystemPressure)
assert.Equal(t, tt.wantSystemAction, plugin.systemAction)
})
now := start.Add(time.Duration(tt.round) * plugin.syncPeriod)
fakeMetricsFetcher.SetNodeMetric(consts.MetricMemFreeSystem, utilMetric.MetricData{Value: tt.systemFree, Time: &now})
fakeMetricsFetcher.SetNodeMetric(consts.MetricMemKswapdstealSystem, utilMetric.MetricData{Value: tt.systemKswapSteal, Time: &now})

plugin.detectSystemPressures(context.TODO())
metResp, err := plugin.ThresholdMet(context.TODO())
assert.NoError(t, err)
assert.NotNil(t, metResp)
assert.Equal(t, tt.wantMetType, metResp.MetType)
assert.Equal(t, tt.wantEvictionScope, metResp.EvictionScope)
if tt.wantCondition != nil && metResp.Condition != nil {
assert.Equal(t, *(tt.wantCondition), *(metResp.Condition))
} else {
assert.Equal(t, tt.wantCondition, metResp.Condition)
}

assert.Equal(t, tt.wantIsUnderSystemPressure, plugin.isUnderSystemPressure)
assert.Equal(t, tt.wantSystemAction, plugin.systemAction)
}
}

Expand Down Expand Up @@ -391,23 +389,21 @@ func TestSystemPressureEvictionPlugin_GetTopEvictionPods(t *testing.T) {
}

for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
plugin.isUnderSystemPressure = tt.isUnderSystemPressure
plugin.systemAction = tt.systemAction
plugin.lastEvictionTime = tt.lastEvictionTime
resp, err := plugin.GetTopEvictionPods(context.TODO(), &pluginapi.GetTopEvictionPodsRequest{
ActivePods: bePods,
TopN: 1,
EvictionScope: EvictionScopeSystemMemory,
})
assert.NoError(t, err)
assert.NotNil(t, resp)

targetPodSet := sets.String{}
for _, pod := range resp.TargetPods {
targetPodSet.Insert(pod.Name)
}
assert.Equal(t, tt.wantEvictPodSet, targetPodSet)
plugin.isUnderSystemPressure = tt.isUnderSystemPressure
plugin.systemAction = tt.systemAction
plugin.lastEvictionTime = tt.lastEvictionTime
resp, err := plugin.GetTopEvictionPods(context.TODO(), &pluginapi.GetTopEvictionPodsRequest{
ActivePods: bePods,
TopN: 1,
EvictionScope: EvictionScopeSystemMemory,
})
assert.NoError(t, err)
assert.NotNil(t, resp)

targetPodSet := sets.String{}
for _, pod := range resp.TargetPods {
targetPodSet.Insert(pod.Name)
}
assert.Equal(t, tt.wantEvictPodSet, targetPodSet)
}
}
16 changes: 16 additions & 0 deletions pkg/agent/evictionmanager/plugin/rootfs/rootfs_pressure_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ func createRootfsPressureEvictionPlugin(tc *testConf, emitter metrics.MetricEmit
}

func TestPodRootfsPressureEvictionPlugin_ThresholdMetNoMetricDataNoConf(t *testing.T) {
t.Parallel()
emitter := metrics.DummyMetrics{}
fakeFetcher := metric.NewFakeMetricsFetcher(emitter).(*metric.FakeMetricsFetcher)
tc := &testConf{}
Expand All @@ -84,6 +85,7 @@ func TestPodRootfsPressureEvictionPlugin_ThresholdMetNoMetricDataNoConf(t *testi
}

func TestPodRootfsPressureEvictionPlugin_ThresholdMetNoMetricData(t *testing.T) {
t.Parallel()
emitter := metrics.DummyMetrics{}
fakeFetcher := metric.NewFakeMetricsFetcher(emitter).(*metric.FakeMetricsFetcher)
tc := &testConf{
Expand All @@ -97,6 +99,7 @@ func TestPodRootfsPressureEvictionPlugin_ThresholdMetNoMetricData(t *testing.T)
}

func TestPodRootfsPressureEvictionPlugin_ThresholdMetNotMet(t *testing.T) {
t.Parallel()
emitter := metrics.DummyMetrics{}
fakeFetcher := metric.NewFakeMetricsFetcher(emitter).(*metric.FakeMetricsFetcher)
// create metric data without time.
Expand Down Expand Up @@ -129,6 +132,7 @@ func TestPodRootfsPressureEvictionPlugin_ThresholdMetNotMet(t *testing.T) {
}

func TestPodRootfsPressureEvictionPlugin_ThresholdMetUsedMet(t *testing.T) {
t.Parallel()
emitter := metrics.DummyMetrics{}
fakeFetcher := metric.NewFakeMetricsFetcher(emitter).(*metric.FakeMetricsFetcher)
// create metric data without time.
Expand Down Expand Up @@ -161,6 +165,7 @@ func TestPodRootfsPressureEvictionPlugin_ThresholdMetUsedMet(t *testing.T) {
}

func TestPodRootfsPressureEvictionPlugin_ThresholdMetInodesMet(t *testing.T) {
t.Parallel()
emitter := metrics.DummyMetrics{}
fakeFetcher := metric.NewFakeMetricsFetcher(emitter).(*metric.FakeMetricsFetcher)
// create metric data without time.
Expand Down Expand Up @@ -193,6 +198,7 @@ func TestPodRootfsPressureEvictionPlugin_ThresholdMetInodesMet(t *testing.T) {
}

func TestPodRootfsPressureEvictionPlugin_ThresholdMet(t *testing.T) {
t.Parallel()
emitter := metrics.DummyMetrics{}
fakeFetcher := metric.NewFakeMetricsFetcher(emitter).(*metric.FakeMetricsFetcher)
// create metric data without time.
Expand Down Expand Up @@ -225,6 +231,7 @@ func TestPodRootfsPressureEvictionPlugin_ThresholdMet(t *testing.T) {
}

func TestPodRootfsPressureEvictionPlugin_ThresholdMetMetricDataExpire(t *testing.T) {
t.Parallel()
metricTime := time.Now().Add(-65 * time.Second)

emitter := metrics.DummyMetrics{}
Expand Down Expand Up @@ -287,6 +294,7 @@ func makeGetTopNRequest() *pluginapi.GetTopEvictionPodsRequest {
}

func TestPodRootfsPressureEvictionPlugin_GetTopEvictionPodsNotMet(t *testing.T) {
t.Parallel()
emitter := metrics.DummyMetrics{}
fakeFetcher := metric.NewFakeMetricsFetcher(emitter).(*metric.FakeMetricsFetcher)
// create metric data without time.
Expand Down Expand Up @@ -320,6 +328,7 @@ func TestPodRootfsPressureEvictionPlugin_GetTopEvictionPodsNotMet(t *testing.T)
}

func TestPodRootfsPressureEvictionPlugin_GetTopEvictionPodsMet(t *testing.T) {
t.Parallel()
emitter := metrics.DummyMetrics{}
fakeFetcher := metric.NewFakeMetricsFetcher(emitter).(*metric.FakeMetricsFetcher)
// create metric data without time.
Expand Down Expand Up @@ -361,6 +370,7 @@ func TestPodRootfsPressureEvictionPlugin_GetTopEvictionPodsMet(t *testing.T) {
}

func TestPodRootfsPressureEvictionPlugin_GetTopEvictionPodsUsedMet(t *testing.T) {
t.Parallel()
emitter := metrics.DummyMetrics{}
fakeFetcher := metric.NewFakeMetricsFetcher(emitter).(*metric.FakeMetricsFetcher)
// create metric data without time.
Expand Down Expand Up @@ -402,6 +412,7 @@ func TestPodRootfsPressureEvictionPlugin_GetTopEvictionPodsUsedMet(t *testing.T)
}

func TestPodRootfsPressureEvictionPlugin_GetTopEvictionPodsInodesMet(t *testing.T) {
t.Parallel()
emitter := metrics.DummyMetrics{}
fakeFetcher := metric.NewFakeMetricsFetcher(emitter).(*metric.FakeMetricsFetcher)
// create metric data without time.
Expand Down Expand Up @@ -443,6 +454,7 @@ func TestPodRootfsPressureEvictionPlugin_GetTopEvictionPodsInodesMet(t *testing.
}

func TestPodRootfsPressureEvictionPlugin_GetTopEvictionPodsUsedMetProtection(t *testing.T) {
t.Parallel()
emitter := metrics.DummyMetrics{}
fakeFetcher := metric.NewFakeMetricsFetcher(emitter).(*metric.FakeMetricsFetcher)
// create metric data without time.
Expand Down Expand Up @@ -549,6 +561,7 @@ func TestPodRootfsPressureEvictionPlugin_GetTopEvictionPodsUsedMetProtection(t *
}

func TestPodRootfsPressureEvictionPlugin_GetTopEvictionPodsInodesMetProtection(t *testing.T) {
t.Parallel()
emitter := metrics.DummyMetrics{}
fakeFetcher := metric.NewFakeMetricsFetcher(emitter).(*metric.FakeMetricsFetcher)
// create metric data without time.
Expand Down Expand Up @@ -653,6 +666,7 @@ func TestPodRootfsPressureEvictionPlugin_GetTopEvictionPodsInodesMetProtection(t
}

func TestPodRootfsPressureEvictionPlugin_GetTopEvictionPodsMetReclaimedPriority(t *testing.T) {
t.Parallel()
emitter := metrics.DummyMetrics{}
fakeFetcher := metric.NewFakeMetricsFetcher(emitter).(*metric.FakeMetricsFetcher)
// create metric data without time.
Expand Down Expand Up @@ -809,6 +823,7 @@ func TestPodRootfsPressureEvictionPlugin_GetTopEvictionPodsMetReclaimedPriority(
}

func TestPodRootfsPressureEvictionPlugin_GetTopEvictionPodsInodesMetReclaimedPriority(t *testing.T) {
t.Parallel()
emitter := metrics.DummyMetrics{}
fakeFetcher := metric.NewFakeMetricsFetcher(emitter).(*metric.FakeMetricsFetcher)
// create metric data without time.
Expand Down Expand Up @@ -965,6 +980,7 @@ func TestPodRootfsPressureEvictionPlugin_GetTopEvictionPodsInodesMetReclaimedPri
}

func TestPodRootfsPressureEvictionPlugin_GetTopEvictionPodsMetExpire(t *testing.T) {
t.Parallel()
metricTime := time.Now().Add(-65 * time.Second)

emitter := metrics.DummyMetrics{}
Expand Down
18 changes: 8 additions & 10 deletions pkg/agent/evictionmanager/podkiller/killer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -166,15 +166,13 @@ func TestContainerKiller_Evict(t *testing.T) {
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
fakeRuntimeService.Called = make([]string, 0)
evictErr := containerKiller.Evict(context.TODO(), tt.pod, 0, "test", "test")
if tt.wantStopFailed {
require.Error(t, evictErr)
} else {
require.NoError(t, evictErr)
require.Equal(t, tt.wantKillContainerCount, len(fakeRuntimeService.GetCalls()))
}
})
fakeRuntimeService.Called = make([]string, 0)
evictErr := containerKiller.Evict(context.TODO(), tt.pod, 0, "test", "test")
if tt.wantStopFailed {
require.Error(t, evictErr)
} else {
require.NoError(t, evictErr)
require.Equal(t, tt.wantKillContainerCount, len(fakeRuntimeService.GetCalls()))
}
}
}
Loading

0 comments on commit c271037

Please sign in to comment.