@@ -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