diff --git a/tests/tsim/inc/sim.h b/tests/tsim/inc/sim.h index 01e5016557f2987741fdec6c6fd54facd885ea8a..58314d2e5055f0716793342157f6c82d6d729b29 100644 --- a/tests/tsim/inc/sim.h +++ b/tests/tsim/inc/sim.h @@ -149,6 +149,7 @@ extern int32_t simScriptSucced; extern int32_t simDebugFlag; extern char tsScriptDir[]; extern bool simAsyncQuery; +extern bool abortExecution; SScript *simParseScript(char *fileName); SScript *simProcessCallOver(SScript *script); diff --git a/tests/tsim/src/simExe.c b/tests/tsim/src/simExe.c index dbda5f1bbdd01a451376f8afe7717b7290980796..c5b8d5c5ebf1da4dd5072282cef336c0648f1354 100644 --- a/tests/tsim/src/simExe.c +++ b/tests/tsim/src/simExe.c @@ -645,8 +645,12 @@ bool simCreateRestFulConnect(SScript *script, char *user, char *pass) { bool simCreateNativeConnect(SScript *script, char *user, char *pass) { simCloseTaosdConnect(script); void *taos = NULL; - taosMsleep(2000); for (int32_t attempt = 0; attempt < 10; ++attempt) { + if (abortExecution) { + script->killed = true; + return false; + } + taos = taos_connect(NULL, user, pass, NULL, tsDnodeShellPort); if (taos == NULL) { simDebug("script:%s, user:%s connect taosd failed:%s, attempt:%d", script->fileName, user, taos_errstr(NULL), @@ -697,6 +701,11 @@ bool simExecuteNativeSqlCommand(SScript *script, char *rest, bool isSlow) { TAOS_RES *pSql = NULL; for (int32_t attempt = 0; attempt < 10; ++attempt) { + if (abortExecution) { + script->killed = true; + return false; + } + simLogSql(rest, false); pSql = taos_query(script->taos, rest); ret = taos_errno(pSql); diff --git a/tests/tsim/src/simMain.c b/tests/tsim/src/simMain.c index 990ea7141335b3971b7a3b4dca5fc6fec6dcd24f..6a9d96bc3b2e6056c73fad73b1fa9f1b7dee6cbf 100644 --- a/tests/tsim/src/simMain.c +++ b/tests/tsim/src/simMain.c @@ -21,10 +21,13 @@ bool simAsyncQuery = false; bool simExecSuccess = false; +bool abortExecution = false; void simHandleSignal(int32_t signo, void *sigInfo, void *context) { simSystemCleanUp(); - exit(1); + abortExecution = true; +// runningScript->killed = true; +// exit(1); } int32_t main(int32_t argc, char *argv[]) { @@ -60,6 +63,11 @@ int32_t main(int32_t argc, char *argv[]) { return -1; } + if (abortExecution) { + simError("execute abort"); + return -1; + } + simScriptList[++simScriptPos] = script; simExecuteScript(script); diff --git a/tests/tsim/src/simSystem.c b/tests/tsim/src/simSystem.c index 40937e70532897fa6776965b861a8d678532d8aa..d2494eddbbbb1756e4daf63e7532fdb466a4824e 100644 --- a/tests/tsim/src/simSystem.c +++ b/tests/tsim/src/simSystem.c @@ -159,9 +159,17 @@ void *simExecuteScript(void *inputScript) { script = simScriptList[simScriptPos]; } + if (abortExecution) { + script->killed = true; + } + if (script->killed || script->linePos >= script->numOfLines) { + printf("killed ---------------------->\n"); script = simProcessCallOver(script); - if (script == NULL) break; + if (script == NULL) { + printf("abort now!\n"); + break; + } } else { SCmdLine *line = &script->lines[script->linePos]; char * option = script->optionBuffer + line->optionOffset;