diff --git a/.travis.yml b/.travis.yml index 7df3a7d7fece1e039a17a3b6bf0e4490b51f455e..37e6e5a6c39085021995e01ad617ab8275e2116a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -32,15 +32,15 @@ matrix: - cd debug script: - - cmake .. - - make + - cmake .. > /dev/null + - make > /dev/null after_success: - |- case $TRAVIS_OS_NAME in linux) cd ${TRAVIS_BUILD_DIR}/debug - make install || travis_terminate $? + make install > /dev/null || travis_terminate $? pip install --user ${TRAVIS_BUILD_DIR}/src/connector/python/linux/python2/ pip3 install --user ${TRAVIS_BUILD_DIR}/src/connector/python/linux/python3/ @@ -98,11 +98,11 @@ matrix: # Commands to prepare for build_command # ** likely specific to your build ** - build_command_prepend: cmake . + build_command_prepend: cmake . > /dev/null # The command that will be added as an argument to "cov-build" to compile your project for analysis, # ** likely specific to your build ** - build_command: make + build_command: make > /dev/null # Pattern to match selecting branches that will run analysis. We recommend leaving this set to 'coverity_scan'. # Take care in resource usage, and consider the build frequency allowances per @@ -135,15 +135,15 @@ matrix: - cd debug script: - - cmake -DCOVER=true .. - - make + - cmake -DCOVER=true .. > /dev/null + - make > /dev/null after_success: - |- case $TRAVIS_OS_NAME in linux) cd ${TRAVIS_BUILD_DIR}/debug - make install || travis_terminate $? + make install > /dev/null || travis_terminate $? pip install --user ${TRAVIS_BUILD_DIR}/src/connector/python/linux/python2/ pip3 install --user ${TRAVIS_BUILD_DIR}/src/connector/python/linux/python3/ @@ -208,8 +208,8 @@ matrix: - cd debug script: - - cmake .. - - make + - cmake .. > /dev/null + - make > /dev/null # - os: osx # language: c @@ -225,5 +225,5 @@ matrix: # - cd ${TRAVIS_BUILD_DIR} # - mkdir debug # - cd debug - # - cmake .. - # - make + # - cmake .. > /dev/null + # - make > /dev/null diff --git a/src/mnode/inc/mgmtProfile.h b/src/mnode/inc/mgmtProfile.h index 07ed3f0f13b66595ca2bf7f7d48d652e051d150d..f33ff9c3facf8e89b825ca984f66ea0c17b60c75 100644 --- a/src/mnode/inc/mgmtProfile.h +++ b/src/mnode/inc/mgmtProfile.h @@ -24,14 +24,6 @@ extern "C" { int32_t mgmtInitProfile(); void mgmtCleanUpProfile(); -bool mgmtCheckQhandle(uint64_t qhandle); -void mgmtSaveQhandle(void *qhandle); -void mgmtFreeQhandle(void *qhandle); - -void * mgmtMallocQueuedMsg(SRpcMsg *rpcMsg); -void * mgmtCloneQueuedMsg(SQueuedMsg *pSrcMsg); -void mgmtFreeQueuedMsg(SQueuedMsg *pMsg); - #ifdef __cplusplus } #endif diff --git a/src/mnode/inc/mgmtShell.h b/src/mnode/inc/mgmtShell.h index 3941a0a87db5f8bb9f54ed981e1193d6e7a72206..c3ae3e96e885fd55e6517c59d7293d341eaaba9a 100644 --- a/src/mnode/inc/mgmtShell.h +++ b/src/mnode/inc/mgmtShell.h @@ -34,6 +34,14 @@ void mgmtAddToShellQueue(SQueuedMsg *queuedMsg); void mgmtDealyedAddToShellQueue(SQueuedMsg *queuedMsg); void mgmtSendSimpleResp(void *thandle, int32_t code); +bool mgmtCheckQhandle(uint64_t qhandle); +void *mgmtSaveQhandle(void *qhandle, int32_t size); +void mgmtFreeQhandle(void *qhandle, bool forceRemove); + +void *mgmtMallocQueuedMsg(SRpcMsg *rpcMsg); +void *mgmtCloneQueuedMsg(SQueuedMsg *pSrcMsg); +void mgmtFreeQueuedMsg(SQueuedMsg *pMsg); + #ifdef __cplusplus } #endif diff --git a/src/mnode/src/mgmtMain.c b/src/mnode/src/mgmtMain.c index dd57a650c89daf1afeae0153dc625463b2a91956..0f18c95539520e637849dc873299c3eec6fc110b 100644 --- a/src/mnode/src/mgmtMain.c +++ b/src/mnode/src/mgmtMain.c @@ -36,7 +36,7 @@ #include "mgmtTable.h" #include "mgmtShell.h" -void *tsMgmtTmr = NULL; +extern void *tsMgmtTmr; static bool tsMgmtIsRunning = false; int32_t mgmtStartSystem() { @@ -51,12 +51,6 @@ int32_t mgmtStartSystem() { mkdir(tsMnodeDir, 0755); } - tsMgmtTmr = taosTmrInit((tsMaxShellConns) * 3, 200, 3600000, "MND"); - if (tsMgmtTmr == NULL) { - mError("failed to init timer"); - return -1; - } - if (mgmtInitAccts() < 0) { mError("failed to init accts"); return -1; diff --git a/src/mnode/src/mgmtProfile.c b/src/mnode/src/mgmtProfile.c index b52a43569a0c688ace233117530a7f896621fd93..754be9a1d0c9614d3a9e0c53cfbd001d0fa67326 100644 --- a/src/mnode/src/mgmtProfile.c +++ b/src/mnode/src/mgmtProfile.c @@ -561,17 +561,6 @@ int32_t mgmtKillConnection(char *qidstr, void *pConn) { return TSDB_CODE_INVALID_CONNECTION; } -bool mgmtCheckQhandle(uint64_t qhandle) { - return true; -} - -void mgmtSaveQhandle(void *qhandle) { - mTrace("qhandle:%p is allocated", qhandle); -} - -void mgmtFreeQhandle(void *qhandle) { - mTrace("qhandle:%p is freed", qhandle); -} int mgmtGetConns(SShowObj *pShow, void *pConn) { // SAcctObj * pAcct = pConn->pAcct; @@ -771,52 +760,3 @@ int32_t mgmtInitProfile() { void mgmtCleanUpProfile() { } - -void *mgmtMallocQueuedMsg(SRpcMsg *rpcMsg) { - bool usePublicIp = false; - SUserObj *pUser = mgmtGetUserFromConn(rpcMsg->handle, &usePublicIp); - if (pUser == NULL) { - return NULL; - } - - SQueuedMsg *pMsg = calloc(1, sizeof(SQueuedMsg)); - pMsg->thandle = rpcMsg->handle; - pMsg->msgType = rpcMsg->msgType; - pMsg->contLen = rpcMsg->contLen; - pMsg->pCont = rpcMsg->pCont; - pMsg->pUser = pUser; - pMsg->usePublicIp = usePublicIp; - - return pMsg; -} - -void mgmtFreeQueuedMsg(SQueuedMsg *pMsg) { - if (pMsg != NULL) { - rpcFreeCont(pMsg->pCont); - if (pMsg->pUser) mgmtDecUserRef(pMsg->pUser); - if (pMsg->pDb) mgmtDecDbRef(pMsg->pDb); - if (pMsg->pVgroup) mgmtDecVgroupRef(pMsg->pVgroup); - if (pMsg->pTable) mgmtDecTableRef(pMsg->pTable); - if (pMsg->pAcct) mgmtDecAcctRef(pMsg->pAcct); - if (pMsg->pDnode) mgmtDecDnodeRef(pMsg->pDnode); - free(pMsg); - } -} - -void* mgmtCloneQueuedMsg(SQueuedMsg *pSrcMsg) { - SQueuedMsg *pDestMsg = calloc(1, sizeof(SQueuedMsg)); - - pDestMsg->thandle = pSrcMsg->thandle; - pDestMsg->msgType = pSrcMsg->msgType; - pDestMsg->pCont = pSrcMsg->pCont; - pDestMsg->contLen = pSrcMsg->contLen; - pDestMsg->retry = pSrcMsg->retry; - pDestMsg->maxRetry= pSrcMsg->maxRetry; - pDestMsg->pUser = pSrcMsg->pUser; - pDestMsg->usePublicIp = pSrcMsg->usePublicIp; - - pSrcMsg->pCont = NULL; - pSrcMsg->pUser = NULL; - - return pDestMsg; -} \ No newline at end of file diff --git a/src/mnode/src/mgmtSdb.c b/src/mnode/src/mgmtSdb.c index 804522d19ad06cc5cbb00183c738fb4da203038b..26afc1c6f0696e8082da65fd5438833034c32e87 100644 --- a/src/mnode/src/mgmtSdb.c +++ b/src/mnode/src/mgmtSdb.c @@ -332,7 +332,7 @@ void sdbIncRef(void *handle, void *pRow) { SSdbTable *pTable = handle; int32_t * pRefCount = (int32_t *)(pRow + pTable->refCountPos); atomic_add_fetch_32(pRefCount, 1); - if (0 && strcmp(pTable->tableName, "accounts") == 0) { + if (0 && pTable->tableId == SDB_TABLE_CTABLE) { sdbTrace("table:%s, add ref to record:%s:%s:%d", pTable->tableName, pTable->tableName, sdbGetkeyStr(pTable, pRow), *pRefCount); } @@ -344,7 +344,7 @@ void sdbDecRef(void *handle, void *pRow) { SSdbTable *pTable = handle; int32_t * pRefCount = (int32_t *)(pRow + pTable->refCountPos); int32_t refCount = atomic_sub_fetch_32(pRefCount, 1); - if (0 && strcmp(pTable->tableName, "accounts") == 0) { + if (0 && pTable->tableId == SDB_TABLE_CTABLE) { sdbTrace("table:%s, def ref of record:%s:%s:%d", pTable->tableName, pTable->tableName, sdbGetkeyStr(pTable, pRow), *pRefCount); } diff --git a/src/mnode/src/mgmtShell.c b/src/mnode/src/mgmtShell.c index 48066ea8a5aaf33ba58a2741502a48d4e3a60a1b..fdf2ea695329ae425460a2f4a76dee698a90bc5e 100644 --- a/src/mnode/src/mgmtShell.c +++ b/src/mnode/src/mgmtShell.c @@ -23,6 +23,7 @@ #include "ttimer.h" #include "tgrant.h" #include "tglobal.h" +#include "tcache.h" #include "dnode.h" #include "mgmtDef.h" #include "mgmtLog.h" @@ -50,10 +51,11 @@ static void mgmtProcessHeartBeatMsg(SQueuedMsg *queuedMsg); static void mgmtProcessConnectMsg(SQueuedMsg *queuedMsg); static void mgmtProcessUseMsg(SQueuedMsg *queuedMsg); -extern void *tsMgmtTmr; +void *tsMgmtTmr; static void *tsMgmtShellRpc = NULL; static void *tsMgmtTranQhandle = NULL; static void (*tsMgmtProcessShellMsgFp[TSDB_MSG_TYPE_MAX])(SQueuedMsg *) = {0}; +static void *tsQhandleCache = NULL; static SShowMetaFp tsMgmtShowMetaFp[TSDB_MGMT_TABLE_MAX] = {0}; static SShowRetrieveFp tsMgmtShowRetrieveFp[TSDB_MGMT_TABLE_MAX] = {0}; @@ -64,7 +66,9 @@ int32_t mgmtInitShell() { mgmtAddShellMsgHandle(TSDB_MSG_TYPE_CM_CONNECT, mgmtProcessConnectMsg); mgmtAddShellMsgHandle(TSDB_MSG_TYPE_CM_USE_DB, mgmtProcessUseMsg); + tsMgmtTmr = taosTmrInit((tsMaxShellConns) * 3, 200, 3600000, "MND"); tsMgmtTranQhandle = taosInitScheduler(tsMaxShellConns, 1, "mnodeT"); + tsQhandleCache = taosCacheInit(tsMgmtTmr, 2); int32_t numOfThreads = tsNumOfCores * tsNumOfThreadsPerCore / 4.0; if (numOfThreads < 1) { @@ -102,6 +106,12 @@ void mgmtCleanUpShell() { tsMgmtShellRpc = NULL; mPrint("server connection to shell is closed"); } + + if (tsQhandleCache) { + taosCacheEmpty(tsQhandleCache); + taosCacheCleanup(tsQhandleCache); + tsQhandleCache = NULL; + } } void mgmtAddShellMsgHandle(uint8_t showType, void (*fp)(SQueuedMsg *queuedMsg)) { @@ -233,14 +243,15 @@ static void mgmtProcessShowMsg(SQueuedMsg *pMsg) { return; } - SShowObj *pShow = (SShowObj *) calloc(1, sizeof(SShowObj) + htons(pShowMsg->payloadLen)); + int32_t showObjSize = sizeof(SShowObj) + htons(pShowMsg->payloadLen); + SShowObj *pShow = (SShowObj *) calloc(1, showObjSize); pShow->signature = pShow; pShow->type = pShowMsg->type; pShow->payloadLen = htons(pShowMsg->payloadLen); strcpy(pShow->db, pShowMsg->db); memcpy(pShow->payload, pShowMsg->payload, pShow->payloadLen); - mgmtSaveQhandle(pShow); + pShow = mgmtSaveQhandle(pShow, showObjSize); pShowRsp->qhandle = htobe64((uint64_t) pShow); mTrace("show:%p, type:%s, start to get meta", pShow, mgmtGetShowTypeStr(pShowMsg->type)); @@ -255,10 +266,10 @@ static void mgmtProcessShowMsg(SQueuedMsg *pMsg) { rpcSendResponse(&rpcRsp); } else { mError("show:%p, type:%s, failed to get meta, reason:%s", pShow, mgmtGetShowTypeStr(pShowMsg->type), tstrerror(code)); - mgmtFreeQhandle(pShow); + mgmtFreeQhandle(pShow, false); SRpcMsg rpcRsp = { - .handle = pMsg->thandle, - .code = code + .handle = pMsg->thandle, + .code = code }; rpcSendResponse(&rpcRsp); } @@ -284,25 +295,19 @@ static void mgmtProcessRetrieveMsg(SQueuedMsg *pMsg) { SShowObj *pShow = (SShowObj *)pRetrieve->qhandle; mTrace("show:%p, type:%s, retrieve data", pShow, mgmtGetShowTypeStr(pShow->type)); - if (!mgmtCheckQhandle(pRetrieve->qhandle)) { - mError("pShow:%p, query memory is corrupted", pShow); - mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_MEMORY_CORRUPTED); - return; - } else { - if ((pRetrieve->free & TSDB_QUERY_TYPE_FREE_RESOURCE) != TSDB_QUERY_TYPE_FREE_RESOURCE) { - rowsToRead = pShow->numOfRows - pShow->numOfReads; - } + if ((pRetrieve->free & TSDB_QUERY_TYPE_FREE_RESOURCE) != TSDB_QUERY_TYPE_FREE_RESOURCE) { + rowsToRead = pShow->numOfRows - pShow->numOfReads; + } - /* return no more than 100 meters in one round trip */ - if (rowsToRead > 100) rowsToRead = 100; + /* return no more than 100 meters in one round trip */ + if (rowsToRead > 100) rowsToRead = 100; - /* - * the actual number of table may be larger than the value of pShow->numOfRows, if a query is - * issued during a continuous create table operation. Therefore, rowToRead may be less than 0. - */ - if (rowsToRead < 0) rowsToRead = 0; - size = pShow->rowSize * rowsToRead; - } + /* + * the actual number of table may be larger than the value of pShow->numOfRows, if a query is + * issued during a continuous create table operation. Therefore, rowToRead may be less than 0. + */ + if (rowsToRead < 0) rowsToRead = 0; + size = pShow->rowSize * rowsToRead; size += 100; SRetrieveTableRsp *pRsp = rpcMallocCont(size); @@ -313,6 +318,7 @@ static void mgmtProcessRetrieveMsg(SQueuedMsg *pMsg) { if (rowsRead < 0) { // TSDB_CODE_ACTION_IN_PROGRESS; rpcFreeCont(pRsp); + mgmtFreeQhandle(pShow, false); return; } @@ -329,7 +335,9 @@ static void mgmtProcessRetrieveMsg(SQueuedMsg *pMsg) { rpcSendResponse(&rpcRsp); if (rowsToRead == 0) { - mgmtFreeQhandle(pShow); + mgmtFreeQhandle(pShow, true); + } else { + mgmtFreeQhandle(pShow, false); } } @@ -511,3 +519,82 @@ void mgmtSendSimpleResp(void *thandle, int32_t code) { }; rpcSendResponse(&rpcRsp); } + +bool mgmtCheckQhandle(uint64_t qhandle) { + void *pSaved = taosCacheAcquireByData(tsQhandleCache, (void *)qhandle); + if (pSaved == (void *)qhandle) { + mTrace("qhandle:%p is retrived", qhandle); + return true; + } else { + mTrace("qhandle:%p is already freed", qhandle); + return false; + } +} + +void* mgmtSaveQhandle(void *qhandle, int32_t size) { + if (tsQhandleCache != NULL) { + char key[24]; + sprintf(key, "show:%p", qhandle); + void *newQhandle = taosCachePut(tsQhandleCache, key, qhandle, size, 60); + free(qhandle); + + mTrace("qhandle:%p is saved", newQhandle); + return newQhandle; + } + + return NULL; +} + +void mgmtFreeQhandle(void *qhandle, bool forceRemove) { + mTrace("qhandle:%p is freed", qhandle); + taosCacheRelease(tsQhandleCache, &qhandle, forceRemove); +} + +void *mgmtMallocQueuedMsg(SRpcMsg *rpcMsg) { + bool usePublicIp = false; + SUserObj *pUser = mgmtGetUserFromConn(rpcMsg->handle, &usePublicIp); + if (pUser == NULL) { + return NULL; + } + + SQueuedMsg *pMsg = calloc(1, sizeof(SQueuedMsg)); + pMsg->thandle = rpcMsg->handle; + pMsg->msgType = rpcMsg->msgType; + pMsg->contLen = rpcMsg->contLen; + pMsg->pCont = rpcMsg->pCont; + pMsg->pUser = pUser; + pMsg->usePublicIp = usePublicIp; + + return pMsg; +} + +void mgmtFreeQueuedMsg(SQueuedMsg *pMsg) { + if (pMsg != NULL) { + rpcFreeCont(pMsg->pCont); + if (pMsg->pUser) mgmtDecUserRef(pMsg->pUser); + if (pMsg->pDb) mgmtDecDbRef(pMsg->pDb); + if (pMsg->pVgroup) mgmtDecVgroupRef(pMsg->pVgroup); + if (pMsg->pTable) mgmtDecTableRef(pMsg->pTable); + if (pMsg->pAcct) mgmtDecAcctRef(pMsg->pAcct); + if (pMsg->pDnode) mgmtDecDnodeRef(pMsg->pDnode); + free(pMsg); + } +} + +void* mgmtCloneQueuedMsg(SQueuedMsg *pSrcMsg) { + SQueuedMsg *pDestMsg = calloc(1, sizeof(SQueuedMsg)); + + pDestMsg->thandle = pSrcMsg->thandle; + pDestMsg->msgType = pSrcMsg->msgType; + pDestMsg->pCont = pSrcMsg->pCont; + pDestMsg->contLen = pSrcMsg->contLen; + pDestMsg->retry = pSrcMsg->retry; + pDestMsg->maxRetry= pSrcMsg->maxRetry; + pDestMsg->pUser = pSrcMsg->pUser; + pDestMsg->usePublicIp = pSrcMsg->usePublicIp; + + pSrcMsg->pCont = NULL; + pSrcMsg->pUser = NULL; + + return pDestMsg; +} \ No newline at end of file diff --git a/src/mnode/src/mgmtTable.c b/src/mnode/src/mgmtTable.c index 59010da61296f747851ceed0419e46eae810b178..bfbe497b4be19b8c8de700f4086fdb734b1916a1 100644 --- a/src/mnode/src/mgmtTable.c +++ b/src/mnode/src/mgmtTable.c @@ -361,7 +361,7 @@ static void mgmtCleanUpChildTables() { static void mgmtAddTableIntoStable(SSuperTableObj *pStable, SChildTableObj *pCtable) { if (pStable->vgLen == 0) { - pStable->vgLen = 10; + pStable->vgLen = 8; pStable->vgList = calloc(pStable->vgLen, sizeof(int32_t)); } diff --git a/src/util/src/hash.c b/src/util/src/hash.c index 5abbf34c89e94d1e16a9e4e4505dace611aa7c8b..37e8123170b4a88f234d2bdc98735b46b2061b1a 100644 --- a/src/util/src/hash.c +++ b/src/util/src/hash.c @@ -520,7 +520,6 @@ SHashMutableIterator *taosHashCreateIter(SHashObj *pHashObj) { static SHashNode *getNextHashNode(SHashMutableIterator *pIter) { assert(pIter != NULL); - pIter->entryIndex++; pIter->entryIndex++; while (pIter->entryIndex < pIter->pHashObj->capacity) { diff --git a/tests/pytest/smoketest.sh b/tests/pytest/smoketest.sh index 71d19df5c0d6dbecf2dbd693f80cfc04335507c3..af597fb6c53123da7eb514967a93cf4d7d162642 100755 --- a/tests/pytest/smoketest.sh +++ b/tests/pytest/smoketest.sh @@ -23,6 +23,17 @@ sleep 1 python3 ./test.py $1 -f insert/tinyint.py python3 ./test.py -s $1 sleep 1 + +python3 ./test.py $1 -f table/column_name.py +python3 ./test.py -s $1 +sleep 1 +python3 ./test.py $1 -f table/column_num.py +python3 ./test.py -s $1 +sleep 1 +python3 ./test.py $1 -f table/db_table.py +python3 ./test.py -s $1 +sleep 1 + python3 ./test.py $1 -f import_merge/importDataLastTO.py python3 ./test.py -s $1 sleep 1 diff --git a/tests/pytest/table/column_name.py b/tests/pytest/table/column_name.py new file mode 100644 index 0000000000000000000000000000000000000000..6c945646d50e0ab99293d6d78d4308488115fd4b --- /dev/null +++ b/tests/pytest/table/column_name.py @@ -0,0 +1,181 @@ +# -*- coding: utf-8 -*- + +import sys +from util.log import * +from util.cases import * +from util.sql import * + + +class TDTestCase: + def init(self, conn): + tdLog.debug("start to execute %s" % __file__) + tdSql.init(conn.cursor()) + + def run(self): + tdSql.prepare() + + # TSIM: system sh/stop_dnodes.sh + # TSIM: + # TSIM: system sh/ip.sh -i 1 -s up + # TSIM: system sh/deploy.sh -n dnode1 -m 192.168.0.1 -i 192.168.0.1 + # TSIM: system sh/cfg.sh -n dnode1 -c commitLog -v 0 + # TSIM: system sh/exec.sh -n dnode1 -s start + # TSIM: + # TSIM: sleep 3000 + # TSIM: sql connect + # TSIM: + # TSIM: $i = 0 + # TSIM: $dbPrefix = lm_cm_db + # TSIM: $tbPrefix = lm_cm_tb + # TSIM: $db = $dbPrefix . $i + # TSIM: $tb = $tbPrefix . $i + # TSIM: + # TSIM: print =============== step1 + tdLog.info('=============== step1') + # TSIM: sql create database $db + # TSIM: sql use $db + # TSIM: + # TSIM: sql drop table dd -x step0 + tdLog.info('drop table dd -x step0') + tdSql.error('drop table dd') + # TSIM: return -1 + # TSIM: step0: + # TSIM: + # TSIM: sql create table $tb(ts timestamp, int) -x step1 + tdLog.info('create table tb(ts timestamp, int) -x step1') + tdSql.error('create table tb(ts timestamp, int)') + # TSIM: return -1 + # TSIM: step1: + # TSIM: + # TSIM: sql show tables + tdLog.info('show tables') + tdSql.query('show tables') + # TSIM: if $rows != 0 then + tdLog.info('tdSql.checkRow(0)') + tdSql.checkRows(0) + # TSIM: return -1 + # TSIM: endi + # TSIM: + # TSIM: print =============== step2 + tdLog.info('=============== step2') + # TSIM: sql create table $tb (ts timestamp, s int) + tdLog.info('create table tb (ts timestamp, s int)') + tdSql.execute('create table tb (ts timestamp, s int)') + # TSIM: sql show tables + tdLog.info('show tables') + tdSql.query('show tables') + # TSIM: if $rows != 1 then + tdLog.info('tdSql.checkRow(1)') + tdSql.checkRows(1) + # TSIM: return -1 + # TSIM: endi + # TSIM: + # TSIM: sql drop table $tb + tdLog.info('drop table tb') + tdSql.execute('drop table tb') + # TSIM: sql show tables + tdLog.info('show tables') + tdSql.query('show tables') + # TSIM: if $rows != 0 then + tdLog.info('tdSql.checkRow(0)') + tdSql.checkRows(0) + # TSIM: return -1 + # TSIM: endi + # TSIM: + # TSIM: print =============== step3 + tdLog.info('=============== step3') + # TSIM: sql create table $tb (ts timestamp, a0123456789 int) + tdLog.info('create table tb (ts timestamp, a0123456789 int)') + tdSql.execute('create table tb (ts timestamp, a0123456789 int)') + # TSIM: sql show tables + tdLog.info('show tables') + tdSql.query('show tables') + # TSIM: if $rows != 1 then + tdLog.info('tdSql.checkRow(1)') + tdSql.checkRows(1) + # TSIM: return -1 + # TSIM: endi + # TSIM: + # TSIM: sql drop table $tb + tdLog.info('drop table tb') + tdSql.execute('drop table tb') + # TSIM: sql show tables + tdLog.info('show tables') + tdSql.query('show tables') + # TSIM: if $rows != 0 then + tdLog.info('tdSql.checkRow(0)') + tdSql.checkRows(0) + # TSIM: return -1 + # TSIM: endi + # TSIM: + # TSIM: print =============== step4 + tdLog.info('=============== step4') + # TSIM: sql create table $tb (ts timestamp, + # a0123456789012345678901234567890123456789 int) + tdLog.info( + 'create table tb (ts timestamp, a0123456789012345678901234567890123456789 int)') + tdSql.execute( + 'create table tb (ts timestamp, a0123456789012345678901234567890123456789 int)') + # TSIM: sql drop table $tb + tdLog.info('drop table tb') + tdSql.execute('drop table tb') + # TSIM: + # TSIM: sql show tables + tdLog.info('show tables') + tdSql.query('show tables') + # TSIM: if $rows != 0 then + tdLog.info('tdSql.checkRow(0)') + tdSql.checkRows(0) + # TSIM: return -1 + # TSIM: endi + # TSIM: + # TSIM: print =============== step5 + tdLog.info('=============== step5') + # TSIM: sql create table $tb (ts timestamp, a0123456789 int) + tdLog.info('create table tb (ts timestamp, a0123456789 int)') + tdSql.execute('create table tb (ts timestamp, a0123456789 int)') + # TSIM: sql show tables + tdLog.info('show tables') + tdSql.query('show tables') + # TSIM: if $rows != 1 then + tdLog.info('tdSql.checkRow(1)') + tdSql.checkRows(1) + # TSIM: return -1 + # TSIM: endi + # TSIM: + # TSIM: sql insert into $tb values (now , 1) + tdLog.info("insert into tb values (now , 1)") + tdSql.execute("insert into tb values (now , 1)") + # TSIM: sql select * from $tb + tdLog.info('select * from tb') + tdSql.query('select * from tb') + # TSIM: if $rows != 1 then + tdLog.info('tdSql.checkRow(1)') + tdSql.checkRows(1) + # TSIM: return -1 + # TSIM: endi + # TSIM: + # TSIM: sql drop database $db + tdLog.info('drop database db') + tdSql.execute('drop database db') + # TSIM: sql show databases + tdLog.info('show databases') + tdSql.query('show databases') + # TSIM: if $rows != 0 then + tdLog.info('tdSql.checkRow(0)') + tdSql.checkRows(0) + # TSIM: return -1 + # TSIM: endi + # TSIM: + # TSIM: + # TSIM: + # TSIM: +# convert end + + def stop(self): + tdSql.close() + tdLog.success("%s successfully executed" % __file__) + + +tdCases.addWindows(__file__, TDTestCase()) +tdCases.addLinux(__file__, TDTestCase()) diff --git a/tests/pytest/table/column_num.py b/tests/pytest/table/column_num.py new file mode 100644 index 0000000000000000000000000000000000000000..fca5b01ac231d139d246e75055ce18c58bf14361 --- /dev/null +++ b/tests/pytest/table/column_num.py @@ -0,0 +1,178 @@ +# -*- coding: utf-8 -*- + +import sys +from util.log import * +from util.cases import * +from util.sql import * + + +class TDTestCase: + def init(self, conn): + tdLog.debug("start to execute %s" % __file__) + tdSql.init(conn.cursor()) + + def run(self): + tdSql.prepare() + + # TSIM: system sh/stop_dnodes.sh + # TSIM: + # TSIM: system sh/ip.sh -i 1 -s up + # TSIM: system sh/deploy.sh -n dnode1 -m 192.168.0.1 -i 192.168.0.1 + # TSIM: system sh/cfg.sh -n dnode1 -c commitLog -v 0 + # TSIM: system sh/exec.sh -n dnode1 -s start + # TSIM: + # TSIM: sleep 3000 + # TSIM: sql connect + # TSIM: + # TSIM: $i = 0 + # TSIM: $dbPrefix = lm_cn_db + # TSIM: $tbPrefix = lm_cn_tb + # TSIM: $db = $dbPrefix . $i + # TSIM: $tb = $tbPrefix . $i + # TSIM: + # TSIM: print =============== step1 + tdLog.info('=============== step1') + # TSIM: sql create database $db + # TSIM: sql use $db + # TSIM: + # TSIM: sql create table $tb() -x step1 + tdLog.info('create table tb() -x step1') + tdSql.error('create table tb()') + # TSIM: return -1 + # TSIM: step1: + # TSIM: + # TSIM: sql show tables + tdLog.info('show tables') + tdSql.query('show tables') + # TSIM: if $rows != 0 then + tdLog.info('tdSql.checkRow(0)') + tdSql.checkRows(0) + # TSIM: return -1 + # TSIM: endi + # TSIM: + # TSIM: print =============== step2 + tdLog.info('=============== step2') + # TSIM: sql create table $tb (ts timestamp) -x step2 + tdLog.info('create table tb (ts timestamp) -x step2') + tdSql.error('create table tb (ts timestamp) ') + # TSIM: return -1 + # TSIM: step2: + # TSIM: + # TSIM: sql show tables + tdLog.info('show tables') + tdSql.query('show tables') + # TSIM: if $rows != 0 then + tdLog.info('tdSql.checkRow(0)') + tdSql.checkRows(0) + # TSIM: return -1 + # TSIM: endi + # TSIM: + # TSIM: print =============== step3 + tdLog.info('=============== step3') + # TSIM: sql create table $tb (ts int) -x step3 + tdLog.info('create table tb (ts int) -x step3') + tdSql.error('create table tb (ts int) ') + # TSIM: return -1 + # TSIM: step3: + # TSIM: + # TSIM: sql show tables + tdLog.info('show tables') + tdSql.query('show tables') + # TSIM: if $rows != 0 then + tdLog.info('tdSql.checkRow(0)') + tdSql.checkRows(0) + # TSIM: return -1 + # TSIM: endi + # TSIM: + # TSIM: print =============== step4 + tdLog.info('=============== step4') + # TSIM: sql create table $tb (ts timestamp, a1 int, a2 int, a3 int, a4 + # int, a5 int, a6 int, a7 int, a8 int, a9 int, a10 int, a11 int, a12 + # int, a13 int, a14 int, a15 int, a16 int, a17 int, a18 int, a19 int, + # a20 int, a21 int, a22 int, a23 int, a24 int, a25 int, a26 int, a27 + # int, a28 int,a29 int,a30 int,a31 int,a32 int, b1 int, b2 int, b3 int, + # b4 int, b5 int, b6 int, b7 int, b8 int, b9 int, b10 int, b11 int, b12 + # int, b13 int, b14 int, b15 int, b16 int, b17 int, b18 int, b19 int, + # b20 int, b21 int, b22 int, b23 int, b24 int, b25 int, b26 int, b27 + # int, b28 int,b29 int,b30 int,b31 int,b32 int) + tdLog.info('create table tb (ts timestamp, a1 int, a2 int, a3 int, a4 int, a5 int, a6 int, a7 int, a8 int, a9 int, a10 int, a11 int, a12 int, a13 int, a14 int, a15 int, a16 int, a17 int, a18 int, a19 int, a20 int, a21 int, a22 int, a23 int, a24 int, a25 int, a26 int, a27 int, a28 int,a29 int,a30 int,a31 int,a32 int, b1 int, b2 int, b3 int, b4 int, b5 int, b6 int, b7 int, b8 int, b9 int, b10 int, b11 int, b12 int, b13 int, b14 int, b15 int, b16 int, b17 int, b18 int, b19 int, b20 int, b21 int, b22 int, b23 int, b24 int, b25 int, b26 int, b27 int, b28 int,b29 int,b30 int,b31 int,b32 int)') + tdSql.execute('create table tb (ts timestamp, a1 int, a2 int, a3 int, a4 int, a5 int, a6 int, a7 int, a8 int, a9 int, a10 int, a11 int, a12 int, a13 int, a14 int, a15 int, a16 int, a17 int, a18 int, a19 int, a20 int, a21 int, a22 int, a23 int, a24 int, a25 int, a26 int, a27 int, a28 int,a29 int,a30 int,a31 int,a32 int, b1 int, b2 int, b3 int, b4 int, b5 int, b6 int, b7 int, b8 int, b9 int, b10 int, b11 int, b12 int, b13 int, b14 int, b15 int, b16 int, b17 int, b18 int, b19 int, b20 int, b21 int, b22 int, b23 int, b24 int, b25 int, b26 int, b27 int, b28 int,b29 int,b30 int,b31 int,b32 int)') + # TSIM: + # TSIM: sql show tables + tdLog.info('show tables') + tdSql.query('show tables') + # TSIM: if $rows != 1 then + tdLog.info('tdSql.checkRow(1)') + tdSql.checkRows(1) + # TSIM: return -1 + # TSIM: endi + # TSIM: + # TSIM: print =============== step5 + tdLog.info('=============== step5') + # TSIM: $i = 1 + # TSIM: $tb = $tbPrefix . $i + # TSIM: + # TSIM: sql create table $tb (ts timestamp, a1 int, a2 int, a3 int, a4 + # int, a5 int, a6 int, a7 int, a8 int, a9 int, a10 int, a11 int, a12 + # int, a13 int, a14 int, a15 int, a16 int, a17 int, a18 int, a19 int, + # a20 int, a21 int, a22 int, a23 int, a24 int, a25 int, a26 int, a27 + # int, a28 int,a29 int,a30 int,a31 int,a32 int, b1 int, b2 int, b3 int, + # b4 int, b5 int) + tdLog.info('create table tb1 (ts timestamp, a1 int, a2 int, a3 int, a4 int, a5 int, a6 int, a7 int, a8 int, a9 int, a10 int, a11 int, a12 int, a13 int, a14 int, a15 int, a16 int, a17 int, a18 int, a19 int, a20 int, a21 int, a22 int, a23 int, a24 int, a25 int, a26 int, a27 int, a28 int,a29 int,a30 int,a31 int,a32 int, b1 int, b2 int, b3 int, b4 int, b5 int)') + tdSql.execute('create table tb1 (ts timestamp, a1 int, a2 int, a3 int, a4 int, a5 int, a6 int, a7 int, a8 int, a9 int, a10 int, a11 int, a12 int, a13 int, a14 int, a15 int, a16 int, a17 int, a18 int, a19 int, a20 int, a21 int, a22 int, a23 int, a24 int, a25 int, a26 int, a27 int, a28 int,a29 int,a30 int,a31 int,a32 int, b1 int, b2 int, b3 int, b4 int, b5 int)') + # TSIM: + # TSIM: sql show tables + tdLog.info('show tables') + tdSql.query('show tables') + # TSIM: if $rows != 2 then + tdLog.info('tdSql.checkRow(2)') + tdSql.checkRows(2) + # TSIM: return -1 + # TSIM: endi + # TSIM: + # TSIM: sql insert into $tb values (now, 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 + # , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20 , 21 , 22 + # , 23 , 24 , 25 ,26 , 27 ,28 ,29,30,31, 32, 33, 34, 35, 36, 37) + tdLog.info("insert into tb1 values (now, 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 ,26 , 27 ,28 ,29,30,31, 32, 33, 34, 35, 36, 37)") + tdSql.execute("insert into tb1 values (now, 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 ,26 , 27 ,28 ,29,30,31, 32, 33, 34, 35, 36, 37)") + # TSIM: sql select * from $tb + tdLog.info('select * from tb1') + tdSql.query('select * from tb1') + # TSIM: if $rows != 1 then + tdLog.info('tdSql.checkRow(1)') + tdSql.checkRows(1) + # TSIM: return -1 + # TSIM: endi + # TSIM: + # TSIM: sql drop table $tb + tdLog.info('drop table tb1') + tdSql.execute('drop table tb1') + # TSIM: sql show tables + tdLog.info('show tables') + tdSql.query('show tables') + # TSIM: if $rows != 1 then + tdLog.info('tdSql.checkRow(1)') + tdSql.checkRows(1) + # TSIM: return -1 + # TSIM: endi + # TSIM: + # TSIM: sql drop database $db + tdLog.info('drop database db') + tdSql.execute('drop database db') + # TSIM: sql show databases + tdLog.info('show databases') + tdSql.query('show databases') + # TSIM: if $rows != 0 then + tdLog.info('tdSql.checkRow(0)') + tdSql.checkRows(0) + # TSIM: return -1 + # TSIM: endi +# convert end + + def stop(self): + tdSql.close() + tdLog.success("%s successfully executed" % __file__) + + +tdCases.addWindows(__file__, TDTestCase()) +tdCases.addLinux(__file__, TDTestCase()) diff --git a/tests/pytest/table/db_table.py b/tests/pytest/table/db_table.py new file mode 100644 index 0000000000000000000000000000000000000000..d4a8568375c0d467c195af924058c70c8bbc2ab7 --- /dev/null +++ b/tests/pytest/table/db_table.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- + +import sys +from util.log import * +from util.cases import * +from util.sql import * + + +class TDTestCase: + def init(self, conn): + tdLog.debug("start to execute %s" % __file__) + tdSql.init(conn.cursor()) + + def run(self): + tdSql.prepare() + + tdLog.info('=============== step1') + tdLog.info('=============== step2') + tdLog.info('create table tb (ts timestamp, speed int)') + tdSql.execute('create table tb (ts timestamp, speed int)') + tdLog.info('=============== step3') + tdLog.info("insert into tb values (now, 1)") + tdSql.execute("insert into tb values (now, 1)") + tdLog.info('=============== step4') + tdLog.info('select * from tb') + tdSql.query('select * from tb') + tdLog.info('tdSql.checkRow(1)') + tdSql.checkRows(1) + tdLog.info('tdSql.checkData(0, 1, 1)') + tdSql.checkData(0, 1, 1) + tdLog.info('=============== step5') + tdLog.info('describe tb') + tdSql.query('describe tb') + tdLog.info('=============== step6') + tdLog.info('drop database db') + tdSql.execute('drop database db') + tdLog.info('show databases') + tdSql.query('show databases') + tdLog.info('tdSql.checkRow(0)') + tdSql.checkRows(0) +# convert end + + def stop(self): + tdSql.close() + tdLog.success("%s successfully executed" % __file__) + + +tdCases.addWindows(__file__, TDTestCase()) +tdCases.addLinux(__file__, TDTestCase()) diff --git a/tests/pytest/util/log.py b/tests/pytest/util/log.py index 97c8b2ef7f2d2b7b207aa632e07328beab06f440..bcd840999d324ad6cf605645b5cb58815efb9f1c 100644 --- a/tests/pytest/util/log.py +++ b/tests/pytest/util/log.py @@ -23,14 +23,14 @@ class TDLog: self.path = "" def info(self, info): - printf("%s %s" % (datetime.datetime.now(), info)) + print("%s %s" % (datetime.datetime.now(), info)) def sleep(self, sec): - printf("%s sleep %d seconds" % (datetime.datetime.now(), sec)) + print("%s sleep %d seconds" % (datetime.datetime.now(), sec)) time.sleep(sec) def debug(self, err): - printf("\033[1;36m%s %s\033[0m" % (datetime.datetime.now(), err)) + print("\033[1;36m%s %s\033[0m" % (datetime.datetime.now(), err)) def success(self, info): printf("\033[1;32m%s %s\033[0m" % (datetime.datetime.now(), info)) @@ -43,7 +43,7 @@ class TDLog: sys.exit(1) def printNoPrefix(self, info): - printf("\033[1;36m%s\033[0m" % (info)) + print("\033[1;36m%s\033[0m" % (info)) tdLog = TDLog() diff --git a/tests/script/sh/deploy.sh b/tests/script/sh/deploy.sh index 6439b0ff6c8c170aae82858aea4d5692459c4ab5..81e955ccfba54c4d671ae1f2ec333c15dc732fe7 100755 --- a/tests/script/sh/deploy.sh +++ b/tests/script/sh/deploy.sh @@ -70,7 +70,7 @@ if [ -f "$TAOS_FLAG" ] ; then sudo rm -rf $LOG_DIR fi -HOSTNAME=`hostname` +HOSTNAME=`hostname -f` if [ $NODE -eq 1 ]; then NODE=7100 diff --git a/tests/script/test.sh b/tests/script/test.sh index 2c9a5c4de9f592c65f5660ae867d3425242376ea..743597eabd1a301cc45990bce12f5727f18042e0 100755 --- a/tests/script/test.sh +++ b/tests/script/test.sh @@ -80,7 +80,7 @@ TAOS_CFG=$PRG_DIR/cfg/taos.cfg touch -f $TAOS_CFG TAOS_FLAG=$PRG_DIR/flag -HOSTNAME=`hostname` +HOSTNAME=`hostname -f` echo " " >> $TAOS_CFG echo "first ${HOSTNAME}:7100" >> $TAOS_CFG diff --git a/tests/test-all.sh b/tests/test-all.sh index 98ecd71dd824a042bacc26dc3962a06ff822d7cd..ee1904ba7cc9cb16e4d7921ac87efdee41ae241b 100755 --- a/tests/test-all.sh +++ b/tests/test-all.sh @@ -27,9 +27,9 @@ fi cd ../pytest if [ "$1" == "cron" ]; then - ./fulltest.sh 2>&1 | tee pytest-out.txt + ./fulltest.sh > /dev/null | tee pytest-out.txt else - ./smoketest.sh 2>&1 | tee pytest-out.txt + ./smoketest.sh > /dev/null | tee pytest-out.txt fi totalPySuccess=`grep 'successfully executed' pytest-out.txt | wc -l`