提交 7d658025 编写于 作者: S Shengliang Guan

fix: refact shell arguments

上级 cf433ec9
...@@ -505,6 +505,7 @@ static void dmCleanupServer(SDnode *pDnode) { ...@@ -505,6 +505,7 @@ static void dmCleanupServer(SDnode *pDnode) {
int32_t dmInitTrans(SDnode *pDnode) { int32_t dmInitTrans(SDnode *pDnode) {
if (dmInitServer(pDnode) != 0) return -1; if (dmInitServer(pDnode) != 0) return -1;
if (dmInitClient(pDnode) != 0) return -1; if (dmInitClient(pDnode) != 0) return -1;
dmReportStartup(pDnode, "transport", "initialized");
return 0; return 0;
} }
......
...@@ -154,10 +154,12 @@ static void dmGetServerStatus(SDnode *pDnode, SServerStatusRsp *pStatus) { ...@@ -154,10 +154,12 @@ static void dmGetServerStatus(SDnode *pDnode, SServerStatusRsp *pStatus) {
if (pStatus->statusCode == TSDB_SRV_STATUS_NETWORK_OK) { if (pStatus->statusCode == TSDB_SRV_STATUS_NETWORK_OK) {
SStartupInfo *pStartup = &pDnode->startup; SStartupInfo *pStartup = &pDnode->startup;
int32_t len = strlen(pStartup->name) + strlen(pStartup->desc) + 24; int32_t len = strlen(pStartup->name) + strlen(pStartup->desc);
pStatus->details = taosMemoryCalloc(1, len); if (len > 0) {
if (pStatus->details != NULL) { pStatus->details = taosMemoryCalloc(1, len + 24);
pStatus->detailLen = snprintf(pStatus->details, len - 1, "%s: %s", pStartup->name, pStartup->desc) + 1; if (pStatus->details != NULL) {
pStatus->detailLen = snprintf(pStatus->details, len + 20, "%s: %s", pStartup->name, pStartup->desc) + 1;
}
} }
} }
......
...@@ -531,10 +531,10 @@ void showOnScreen(Command *cmd) { ...@@ -531,10 +531,10 @@ void showOnScreen(Command *cmd) {
void cleanup_handler(void *arg) { resetTerminalMode(); } void cleanup_handler(void *arg) { resetTerminalMode(); }
void exitShell() { void exitShell() {
/*int32_t ret =*/resetTerminalMode();
taos_cleanup(); taos_cleanup();
exit(EXIT_SUCCESS); exit(EXIT_SUCCESS);
} }
void shellQueryInterruptHandler(int32_t signum, void *sigInfo, void *context) { tsem_post(&cancelSem); } void shellQueryInterruptHandler(int32_t signum, void *sigInfo, void *context) { tsem_post(&cancelSem); }
void *cancelHandler(void *arg) { void *cancelHandler(void *arg) {
...@@ -546,21 +546,9 @@ void *cancelHandler(void *arg) { ...@@ -546,21 +546,9 @@ void *cancelHandler(void *arg) {
continue; continue;
} }
#ifdef LINUX
#if 0
int64_t rid = atomic_val_compare_exchange_64(&result, result, 0);
SSqlObj* pSql = taosAcquireRef(tscObjRef, rid);
taos_stop_query(pSql);
taosReleaseRef(tscObjRef, rid);
#endif
#else
resetTerminalMode();
printf("\nReceive ctrl+c or other signal, quit shell.\n");
exit(0);
#endif
resetTerminalMode(); resetTerminalMode();
printf("\nReceive ctrl+c or other signal, quit shell.\n"); printf("\nReceive ctrl+c or other signal, quit shell.\n");
exit(0); exitShell();
} }
return NULL; return NULL;
...@@ -587,52 +575,53 @@ int checkVersion() { ...@@ -587,52 +575,53 @@ int checkVersion() {
} }
// Global configurations // Global configurations
SShellArguments args = {.host = NULL, SShellArguments args = {
.host = NULL,
.user = NULL,
.database = NULL,
.timezone = NULL,
.is_raw_time = false,
.is_use_passwd = false,
.dump_config = false,
.file = "\0",
.dir = "\0",
.threadNum = 5,
.commands = NULL,
.pktLen = 1000,
.pktNum = 100,
.pktType = "TCP",
.netTestRole = NULL,
#ifndef TD_WINDOWS #ifndef TD_WINDOWS
.password = NULL, .password = NULL,
#endif #endif
.user = NULL, };
.database = NULL,
.timezone = NULL,
.is_raw_time = false,
.is_use_passwd = false,
.dump_config = false,
.file = "\0",
.dir = "\0",
.threadNum = 5,
.commands = NULL,
.pktLen = 1000,
.pktNum = 100,
.pktType = "TCP",
.netTestRole = NULL};
/* void shellDumpConfig() {
* Main function. if (!args.dump_config) return;
*/
int main(int argc, char *argv[]) {
/*setlocale(LC_ALL, "en_US.UTF-8"); */
if (!checkVersion()) { SConfig *pCfg = taosGetCfg();
if (NULL == pCfg) {
printf("TDengine read global config failed!\n");
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
cfgDumpCfg(pCfg, 0, 1);
exitShell();
}
shellParseArgument(argc, argv, &args); void shellTestNetWork() {
taos_init(); if (args.netTestRole && args.netTestRole[0] != 0) {
taosNetTest(args.netTestRole, args.host, args.port, args.pktLen, args.pktNum, args.pktType);
if (args.dump_config) { exitShell();
SConfig *pCfg = taosGetCfg();
if (NULL == pCfg) {
printf("TDengine read global config failed!\n");
exit(EXIT_FAILURE);
}
cfgDumpCfg(pCfg, 0, 1);
exit(0);
} }
}
if (args.status || args.verbose) { void shellCheckServerStatus() {
char details[1024] = {0}; if (!args.status && !args.verbose) return;
char details[1024] = {0};
TSDB_SERVER_STATUS code = taos_check_server_status(args.host, args.port, details, args.verbose ? 1024 : 0); TSDB_SERVER_STATUS code;
do {
code = taos_check_server_status(args.host, args.port, details, args.verbose ? 1024 : 0);
switch (code) { switch (code) {
case TSDB_SRV_STATUS_UNAVAILABLE: case TSDB_SRV_STATUS_UNAVAILABLE:
printf("0: unavailable\n"); printf("0: unavailable\n");
...@@ -650,44 +639,54 @@ int main(int argc, char *argv[]) { ...@@ -650,44 +639,54 @@ int main(int argc, char *argv[]) {
printf("4: exiting\n"); printf("4: exiting\n");
break; break;
} }
if (strlen(details) != 0) { if (strlen(details) != 0) {
printf("detail info:\n%s\n", details); printf("%s\n\n", details);
} }
exit(0); if (code == TSDB_SRV_STATUS_NETWORK_OK) {
} taosMsleep(1000);
}
} while (code == TSDB_SRV_STATUS_NETWORK_OK);
if (args.netTestRole && args.netTestRole[0] != 0) { exitShell();
taosNetTest(args.netTestRole, args.host, args.port, args.pktLen, args.pktNum, args.pktType); }
exit(0);
}
/* Initialize the shell */ void shellExecute() {
TAOS *con = shellInit(&args); TAOS *con = shellInit(&args);
if (con == NULL) { if (con == NULL) {
exit(EXIT_FAILURE); exitShell();
} }
if (tsem_init(&cancelSem, 0, 0) != 0) { if (tsem_init(&cancelSem, 0, 0) != 0) {
printf("failed to create cancel semphore\n"); printf("failed to create cancel semphore\n");
exit(EXIT_FAILURE); exitShell();
} }
TdThread spid; TdThread spid;
taosThreadCreate(&spid, NULL, cancelHandler, NULL); taosThreadCreate(&spid, NULL, cancelHandler, NULL);
/* Interrupt handler. */
taosSetSignal(SIGTERM, shellQueryInterruptHandler); taosSetSignal(SIGTERM, shellQueryInterruptHandler);
taosSetSignal(SIGINT, shellQueryInterruptHandler); taosSetSignal(SIGINT, shellQueryInterruptHandler);
taosSetSignal(SIGHUP, shellQueryInterruptHandler); taosSetSignal(SIGHUP, shellQueryInterruptHandler);
taosSetSignal(SIGABRT, shellQueryInterruptHandler); taosSetSignal(SIGABRT, shellQueryInterruptHandler);
/* Get grant information */
shellGetGrantInfo(con); shellGetGrantInfo(con);
/* Loop to query the input. */
while (1) { while (1) {
taosThreadCreate(&pid, NULL, shellLoopQuery, con); taosThreadCreate(&pid, NULL, shellLoopQuery, con);
taosThreadJoin(pid, NULL); taosThreadJoin(pid, NULL);
} }
} }
int main(int argc, char *argv[]) {
if (!checkVersion()) exitShell();
shellParseArgument(argc, argv, &args);
taos_init();
shellDumpConfig();
shellCheckServerStatus();
shellTestNetWork();
shellExecute();
return 0;
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册