Skip to content

Commit 0e66e56

Browse files
Use b.Fatal instead of klog.Fatal in scheduler perf tests
The test tool doesn't work properly with klog.Fatal Signed-off-by: Aldo Culquicondor <[email protected]>
1 parent e74ad38 commit 0e66e56

File tree

1 file changed

+83
-43
lines changed

1 file changed

+83
-43
lines changed

test/integration/scheduler_perf/scheduler_perf_test.go

Lines changed: 83 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,10 @@ type testDataCollector interface {
111111

112112
func BenchmarkPerfScheduling(b *testing.B) {
113113
dataItems := DataItems{Version: "v1"}
114-
tests := getSimpleTestCases(configFile)
114+
tests, err := parseTestCases(configFile)
115+
if err != nil {
116+
b.Fatal(err)
117+
}
115118

116119
for _, test := range tests {
117120
name := fmt.Sprintf("%v/%vNodes/%vInitPods/%vPodsToSchedule", test.Desc, test.Nodes.Num, test.InitPods.Num, test.PodsToSchedule.Num)
@@ -131,14 +134,21 @@ func perfScheduling(test testCase, b *testing.B) []DataItem {
131134
finalFunc, podInformer, clientset := mustSetupScheduler()
132135
defer finalFunc()
133136

134-
nodePreparer := getNodePreparer(test.Nodes, clientset)
137+
nodePreparer, err := getNodePreparer(test.Nodes, clientset)
138+
if err != nil {
139+
b.Fatal(err)
140+
}
135141
if err := nodePreparer.PrepareNodes(); err != nil {
136-
klog.Fatalf("%v", err)
142+
b.Fatal(err)
137143
}
138144
defer nodePreparer.CleanupNodes()
139145

140-
createPods(setupNamespace, test.InitPods, clientset)
141-
waitNumPodsScheduled(test.InitPods.Num, podInformer)
146+
if err := createPods(setupNamespace, test.InitPods, clientset); err != nil {
147+
b.Fatal(err)
148+
}
149+
if err := waitNumPodsScheduled(b, test.InitPods.Num, podInformer); err != nil {
150+
b.Fatal(err)
151+
}
142152

143153
// start benchmark
144154
b.ResetTimer()
@@ -151,8 +161,12 @@ func perfScheduling(test testCase, b *testing.B) []DataItem {
151161
}
152162

153163
// Schedule the main workload
154-
createPods(testNamespace, test.PodsToSchedule, clientset)
155-
waitNumPodsScheduled(test.InitPods.Num+test.PodsToSchedule.Num, podInformer)
164+
if err := createPods(testNamespace, test.PodsToSchedule, clientset); err != nil {
165+
b.Fatal(err)
166+
}
167+
if err := waitNumPodsScheduled(b, test.InitPods.Num+test.PodsToSchedule.Num, podInformer); err != nil {
168+
b.Fatal(err)
169+
}
156170

157171
close(stopCh)
158172
// Note: without this line we're taking the overhead of defer() into account.
@@ -165,18 +179,19 @@ func perfScheduling(test testCase, b *testing.B) []DataItem {
165179
return dataItems
166180
}
167181

168-
func waitNumPodsScheduled(num int, podInformer coreinformers.PodInformer) {
182+
func waitNumPodsScheduled(b *testing.B, num int, podInformer coreinformers.PodInformer) error {
169183
for {
170184
scheduled, err := getScheduledPods(podInformer)
171185
if err != nil {
172-
klog.Fatalf("%v", err)
186+
return err
173187
}
174188
if len(scheduled) >= num {
175189
break
176190
}
177-
klog.Infof("got %d existing pods, required: %d", len(scheduled), num)
191+
klog.Infof("%s: got %d existing pods, required: %d", b.Name(), len(scheduled), num)
178192
time.Sleep(1 * time.Second)
179193
}
194+
return nil
180195
}
181196

182197
func getTestDataCollectors(tc testCase, podInformer coreinformers.PodInformer, b *testing.B) []testDataCollector {
@@ -189,7 +204,7 @@ func getTestDataCollectors(tc testCase, podInformer coreinformers.PodInformer, b
189204
return collectors
190205
}
191206

192-
func getNodePreparer(nc nodeCase, clientset clientset.Interface) testutils.TestNodePreparer {
207+
func getNodePreparer(nc nodeCase, clientset clientset.Interface) (testutils.TestNodePreparer, error) {
193208
var nodeStrategy testutils.PrepareNodeStrategy = &testutils.TrivialNodePrepareStrategy{}
194209
if nc.NodeAllocatableStrategy != nil {
195210
nodeStrategy = nc.NodeAllocatableStrategy
@@ -200,44 +215,63 @@ func getNodePreparer(nc nodeCase, clientset clientset.Interface) testutils.TestN
200215
}
201216

202217
if nc.NodeTemplatePath != nil {
218+
node, err := getNodeSpecFromFile(nc.NodeTemplatePath)
219+
if err != nil {
220+
return nil, err
221+
}
203222
return framework.NewIntegrationTestNodePreparerWithNodeSpec(
204223
clientset,
205224
[]testutils.CountToStrategy{{Count: nc.Num, Strategy: nodeStrategy}},
206-
getNodeSpecFromFile(nc.NodeTemplatePath),
207-
)
225+
node,
226+
), nil
208227
}
209228
return framework.NewIntegrationTestNodePreparer(
210229
clientset,
211230
[]testutils.CountToStrategy{{Count: nc.Num, Strategy: nodeStrategy}},
212231
"scheduler-perf-",
213-
)
232+
), nil
214233
}
215234

216-
func createPods(ns string, pc podCase, clientset clientset.Interface) {
217-
strategy := getPodStrategy(pc)
235+
func createPods(ns string, pc podCase, clientset clientset.Interface) error {
236+
strategy, err := getPodStrategy(pc)
237+
if err != nil {
238+
return err
239+
}
218240
config := testutils.NewTestPodCreatorConfig()
219241
config.AddStrategy(ns, pc.Num, strategy)
220242
podCreator := testutils.NewTestPodCreator(clientset, config)
221-
podCreator.CreatePods()
243+
return podCreator.CreatePods()
222244
}
223245

224-
func getPodStrategy(pc podCase) testutils.TestPodCreateStrategy {
246+
func getPodStrategy(pc podCase) (testutils.TestPodCreateStrategy, error) {
225247
basePod := makeBasePod()
226248
if pc.PodTemplatePath != nil {
227-
basePod = getPodSpecFromFile(pc.PodTemplatePath)
249+
var err error
250+
basePod, err = getPodSpecFromFile(pc.PodTemplatePath)
251+
if err != nil {
252+
return nil, err
253+
}
228254
}
229255
if pc.PersistentVolumeClaimTemplatePath == nil {
230-
return testutils.NewCustomCreatePodStrategy(basePod)
256+
return testutils.NewCustomCreatePodStrategy(basePod), nil
231257
}
232258

233-
pvTemplate := getPersistentVolumeSpecFromFile(pc.PersistentVolumeTemplatePath)
234-
pvcTemplate := getPersistentVolumeClaimSpecFromFile(pc.PersistentVolumeClaimTemplatePath)
235-
return testutils.NewCreatePodWithPersistentVolumeStrategy(pvcTemplate, getCustomVolumeFactory(pvTemplate), basePod)
259+
pvTemplate, err := getPersistentVolumeSpecFromFile(pc.PersistentVolumeTemplatePath)
260+
if err != nil {
261+
return nil, err
262+
}
263+
pvcTemplate, err := getPersistentVolumeClaimSpecFromFile(pc.PersistentVolumeClaimTemplatePath)
264+
if err != nil {
265+
return nil, err
266+
}
267+
return testutils.NewCreatePodWithPersistentVolumeStrategy(pvcTemplate, getCustomVolumeFactory(pvTemplate), basePod), nil
236268
}
237269

238-
func getSimpleTestCases(path string) []testCase {
270+
func parseTestCases(path string) ([]testCase, error) {
239271
var simpleTests []simpleTestCases
240-
getSpecFromFile(&path, &simpleTests)
272+
if err := getSpecFromFile(&path, &simpleTests); err != nil {
273+
return nil, fmt.Errorf("parsing test cases: %v", err)
274+
}
241275

242276
testCases := make([]testCase, 0)
243277
for _, s := range simpleTests {
@@ -250,41 +284,47 @@ func getSimpleTestCases(path string) []testCase {
250284
}
251285
}
252286

253-
return testCases
287+
return testCases, nil
254288
}
255289

256-
func getNodeSpecFromFile(path *string) *v1.Node {
290+
func getNodeSpecFromFile(path *string) (*v1.Node, error) {
257291
nodeSpec := &v1.Node{}
258-
getSpecFromFile(path, nodeSpec)
259-
return nodeSpec
292+
if err := getSpecFromFile(path, nodeSpec); err != nil {
293+
return nil, fmt.Errorf("parsing Node: %v", err)
294+
}
295+
return nodeSpec, nil
260296
}
261297

262-
func getPodSpecFromFile(path *string) *v1.Pod {
298+
func getPodSpecFromFile(path *string) (*v1.Pod, error) {
263299
podSpec := &v1.Pod{}
264-
getSpecFromFile(path, podSpec)
265-
return podSpec
300+
if err := getSpecFromFile(path, podSpec); err != nil {
301+
return nil, fmt.Errorf("parsing Pod: %v", err)
302+
}
303+
return podSpec, nil
266304
}
267305

268-
func getPersistentVolumeSpecFromFile(path *string) *v1.PersistentVolume {
306+
func getPersistentVolumeSpecFromFile(path *string) (*v1.PersistentVolume, error) {
269307
persistentVolumeSpec := &v1.PersistentVolume{}
270-
getSpecFromFile(path, persistentVolumeSpec)
271-
return persistentVolumeSpec
308+
if err := getSpecFromFile(path, persistentVolumeSpec); err != nil {
309+
return nil, fmt.Errorf("parsing PersistentVolume: %v", err)
310+
}
311+
return persistentVolumeSpec, nil
272312
}
273313

274-
func getPersistentVolumeClaimSpecFromFile(path *string) *v1.PersistentVolumeClaim {
314+
func getPersistentVolumeClaimSpecFromFile(path *string) (*v1.PersistentVolumeClaim, error) {
275315
persistentVolumeClaimSpec := &v1.PersistentVolumeClaim{}
276-
getSpecFromFile(path, persistentVolumeClaimSpec)
277-
return persistentVolumeClaimSpec
316+
if err := getSpecFromFile(path, persistentVolumeClaimSpec); err != nil {
317+
return nil, fmt.Errorf("parsing PersistentVolumeClaim: %v", err)
318+
}
319+
return persistentVolumeClaimSpec, nil
278320
}
279321

280-
func getSpecFromFile(path *string, spec interface{}) {
322+
func getSpecFromFile(path *string, spec interface{}) error {
281323
bytes, err := ioutil.ReadFile(*path)
282324
if err != nil {
283-
klog.Fatalf("%v", err)
284-
}
285-
if err := yaml.Unmarshal(bytes, spec); err != nil {
286-
klog.Fatalf("%v", err)
325+
return err
287326
}
327+
return yaml.Unmarshal(bytes, spec)
288328
}
289329

290330
func getCustomVolumeFactory(pvTemplate *v1.PersistentVolume) func(id int) *v1.PersistentVolume {

0 commit comments

Comments
 (0)