@@ -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 
@@ -286,8 +289,8 @@ func (r *simpleTestCaseRunner) WithExecer(execer fakeruntime.Execer) TestCaseRun
286289}
287290
288291func  (r  * simpleTestCaseRunner ) doPrepare (testcase  * testing.TestCase ) (err  error ) {
289- 	for  i  :=  range  testcase .Prepare . Kubernetes  {
290- 		item  :=  testcase .Prepare . Kubernetes [i ]
292+ 	for  i  :=  range  testcase .Before . Items  {
293+ 		item  :=  testcase .Before . Items [i ]
291294
292295		if  err  =  r .execer .RunCommand ("kubectl" , "apply" , "-f" , item ); err  !=  nil  {
293296			return 
@@ -297,9 +300,9 @@ func (r *simpleTestCaseRunner) doPrepare(testcase *testing.TestCase) (err error)
297300}
298301
299302func  (r  * simpleTestCaseRunner ) doCleanPrepare (testcase  * testing.TestCase ) (err  error ) {
300- 	count  :=  len (testcase .Prepare . Kubernetes )
303+ 	count  :=  len (testcase .Before . Items )
301304	for  i  :=  count  -  1 ; i  >=  0 ; i --  {
302- 		item  :=  testcase .Prepare . Kubernetes [i ]
305+ 		item  :=  testcase .Before . Items [i ]
303306
304307		if  err  =  r .execer .RunCommand ("kubectl" , "delete" , "-f" , item ); err  !=  nil  {
305308			return 
@@ -413,3 +416,25 @@ func verifyResponseBodyData(caseName string, expect testing.Response, responseBo
413416	}
414417	return 
415418}
419+ 
420+ func  runJob (job  testing.Job ) (err  error ) {
421+ 	var  program  * vm.Program 
422+ 	env  :=  struct {}{}
423+ 
424+ 	for  _ , item  :=  range  job .Items  {
425+ 		if  program , err  =  expr .Compile (item , expr .Env (env ),
426+ 			expr .Function ("sleep" , func (a  ... interface {}) (interface {}, error ) {
427+ 				time .Sleep (time .Duration (a [0 ].(int )) *  time .Second )
428+ 				return  nil , nil 
429+ 			})); err  !=  nil  {
430+ 			fmt .Printf ("failed to compile: %s, %v\n " , item , err )
431+ 			return 
432+ 		}
433+ 
434+ 		if  _ , err  =  expr .Run (program , env ); err  !=  nil  {
435+ 			fmt .Printf ("failed to Run: %s, %v\n " , item , err )
436+ 			return 
437+ 		}
438+ 	}
439+ 	return 
440+ }
0 commit comments