@@ -180,15 +180,14 @@ func (r *simpleTestCaseRunner) RunTestCase(testcase *testing.TestCase, dataConte
180180		r .testReporter .PutRecord (rr )
181181	}(record )
182182
183- 	if  err  =  r .doPrepare (testcase ); err  !=  nil  {
184- 		err  =  fmt .Errorf ("failed to prepare, error: %v" , err )
185- 		return 
186- 	}
187- 
188183	defer  func () {
189184		if  testcase .Clean .CleanPrepare  {
190185			err  =  r .doCleanPrepare (testcase )
191186		}
187+ 
188+ 		if  err  ==  nil  {
189+ 			err  =  runJob (testcase .After )
190+ 		}
192191	}()
193192
194193	client  :=  http.Client {
@@ -216,6 +215,10 @@ func (r *simpleTestCaseRunner) RunTestCase(testcase *testing.TestCase, dataConte
216215		request .Header .Add (key , val )
217216	}
218217
218+ 	if  err  =  runJob (testcase .Before ); err  !=  nil  {
219+ 		return 
220+ 	}
221+ 
219222	r .log .Info ("start to send request to %s\n " , testcase .Request .API )
220223
221224	// TODO only do this for unit testing, should remove it once we have a better way 
@@ -285,21 +288,10 @@ func (r *simpleTestCaseRunner) WithExecer(execer fakeruntime.Execer) TestCaseRun
285288	return  r 
286289}
287290
288- func  (r  * simpleTestCaseRunner ) doPrepare (testcase  * testing.TestCase ) (err  error ) {
289- 	for  i  :=  range  testcase .Prepare .Kubernetes  {
290- 		item  :=  testcase .Prepare .Kubernetes [i ]
291- 
292- 		if  err  =  r .execer .RunCommand ("kubectl" , "apply" , "-f" , item ); err  !=  nil  {
293- 			return 
294- 		}
295- 	}
296- 	return 
297- }
298- 
299291func  (r  * simpleTestCaseRunner ) doCleanPrepare (testcase  * testing.TestCase ) (err  error ) {
300- 	count  :=  len (testcase .Prepare . Kubernetes )
292+ 	count  :=  len (testcase .Before . Items )
301293	for  i  :=  count  -  1 ; i  >=  0 ; i --  {
302- 		item  :=  testcase .Prepare . Kubernetes [i ]
294+ 		item  :=  testcase .Before . Items [i ]
303295
304296		if  err  =  r .execer .RunCommand ("kubectl" , "delete" , "-f" , item ); err  !=  nil  {
305297			return 
@@ -413,3 +405,22 @@ func verifyResponseBodyData(caseName string, expect testing.Response, responseBo
413405	}
414406	return 
415407}
408+ 
409+ func  runJob (job  testing.Job ) (err  error ) {
410+ 	var  program  * vm.Program 
411+ 	env  :=  struct {}{}
412+ 
413+ 	for  _ , item  :=  range  job .Items  {
414+ 		if  program , err  =  expr .Compile (item , expr .Env (env ),
415+ 			expr .Function ("sleep" , ExprFuncSleep )); err  !=  nil  {
416+ 			fmt .Printf ("failed to compile: %s, %v\n " , item , err )
417+ 			return 
418+ 		}
419+ 
420+ 		if  _ , err  =  expr .Run (program , env ); err  !=  nil  {
421+ 			fmt .Printf ("failed to Run: %s, %v\n " , item , err )
422+ 			return 
423+ 		}
424+ 	}
425+ 	return 
426+ }
0 commit comments