diff --git a/.travis.yml b/.travis.yml index 37e6e5a6c39085021995e01ad617ab8275e2116a..f9a27fdabde10c96821d307a75d52502cea656ee 100644 --- a/.travis.yml +++ b/.travis.yml @@ -59,17 +59,30 @@ matrix: GREEN_UNDERLINE='\033[4;32m' NC='\033[0m' - tail -10 mem-error-out.txt - defiMemError=`grep -m 1 'definitely lost' mem-error-out.txt | awk '{print $7}'` - memError=`grep -m 1 'ERROR SUMMARY' mem-error-out.txt | awk '{print $4}'` - - if [ -n "$memError" ]; then - if [ "$memError" -gt 16 ] || [ "$defiMemError" -gt 0 ]; then - echo -e "${RED} ## Memory errors number valgrind reports is $memError.\ - Definitely lost is $defiMemError. More than our threshold! ## ${NC}" - travis_terminate $memError + grep 'ERROR SUMMARY' mem-error-out.txt | uniq | tee uniq-mem-error-out.txt + + for memError in `cat uniq-mem-error-out.txt | awk '{print $4}'` + do + if [ -n "$memError" ]; then + if [ "$memError" -gt 16 ]; then + echo -e "${RED} ## Memory errors number valgrind reports is $memError.\ + More than our threshold! ## ${NC}" + travis_terminate $memError + fi fi - fi + done + + grep 'definitely lost' mem-error-out.txt | uniq | tee uniq-definitely-lost-out.txt + for defiMemError in `cat uniq-definitely-lost-out.txt | awk '{print $7}'` + do + if [ -n "$defiMemError" ]; then + if [ "$defiMemError" -gt 16 ]; then + echo -e "${RED} ## Memory errors number valgrind reports \ + Definitely lost is $defiMemError. More than our threshold! ## ${NC}" + travis_terminate $defiMemError + fi + fi + done ;; esac diff --git a/README.md b/README.md index 280cf73ba0e8140b18e4a98902a7a58f8a72c881..158ae040fa0a95e6c2209ea71f8a3e5da6f848cc 100644 --- a/README.md +++ b/README.md @@ -115,6 +115,251 @@ TDengine provides abundant developing tools for users to develop on TDengine. Fo - [RESTful API](https://www.taosdata.com/en/documentation/connector/#RESTful-Connector) - [Node.js](https://www.taosdata.com/en/documentation/connector/#Node.js-Connector) +# How to run the test cases and how to add a new test case? + +### Prepare development environment + +1. sudo apt install + build-essential cmake net-tools python-pip python-setuptools python3-pip + python3-setuptools valgrind + +2. git clone ; cd TDengine + +3. mkdir debug; cd debug; cmake ..; make ; sudo make install + +4. pip install src/connector/python/linux/python2 ; pip3 install + src/connector/python/linux/python3 + +### How to run TSIM test suite + +1. cd \/tests/script + +2. sudo ./test.sh + +### How to run Python test suite + +1. cd \/tests/pytest + +2. ./smoketest.sh \# for smoke test + +3. ./smoketest.sh -g \# for memory leak detection test with valgrind + +4. ./fulltest.sh \# for full test + +> Note1: TDengine daemon's configuration and data files are stored in +> \/sim directory. As a historical design, it's same place with +> TSIM script. So after the TSIM script ran with sudo privilege, the directory +> has been used by TSIM then the python script cannot write it by a normal +> user. You need to remove the directory completely first before running the +> Python test case. We should consider using two different locations to store +> for TSIM and Python script. + +> Note2: if you need to debug crash problem with a core dump, you need +> manually edit smoketest.sh or fulltest.sh to add "ulimit -c unlimited" +> before the script line. Then you can look for the core file in +> \/tests/pytest after the program crash. + +### How to add a new test case + +**1. add a new TSIM test cases:** + +TSIM test cases are now included in the new development branch and can be +added to the TDengine/tests/script/test.sh script based on the manual test +methods necessary to add test cases as described above. + +**2. add a new Python test cases:** + +**2.1 Please refer to \/tests/pytest/insert/basic.py to add a new +test case.** The new test case must implement 3 functions, where self.init() +and self.stop() simply copy the contents of insert/basic.py and the test +logic is implemented in self.run(). You can refer to the code in the util +directory for more information. + +**2.2 Edit smoketest.sh to add the path and filename of the new test case** + +Note: The Python test framework may continue to be improved in the future, +hopefully, to provide more functionality and ease of writing test cases. The +method of writing the test case above does not exclude that it will also be +affected. + +**2.3 What test.py does in detail:** + +test.py is the entry program for test case execution and monitoring. + +test.py has the following functions. + +\-f --file, Specifies the test case file name to be executed +-p --path, Specifies deployment path + +\-m --master, Specifies the master server IP for cluster deployment +-c--cluster, test cluster function +-s--stop, terminates all running nodes + +\-g--valgrind, load valgrind for memory leak detection test + +\-h--help, display help + +**2.4 What util/log.py does in detail:** + +log.py is quite simple, the main thing is that you can print the output in +different colors as needed. The success() should be called for successful +test case execution and the success() will print green text. The exit() will +print red text and exit the program, exit() should be called for test +failure. + +**util/log.py** + +... + +    def info(self, info): + +        printf("%s %s" % (datetime.datetime.now(), info)) + +  + +    def sleep(self, sec): + +        printf("%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)) + +  + +    def success(self, info): + +        printf("\\033[1;32m%s %s\\033[0m" % (datetime.datetime.now(), info)) + +  + +    def notice(self, err): + +        printf("\\033[1;33m%s %s\\033[0m" % (datetime.datetime.now(), err)) + +  + +    def exit(self, err): + +        printf("\\033[1;31m%s %s\\033[0m" % (datetime.datetime.now(), err)) + +        sys.exit(1) + +  + +    def printNoPrefix(self, info): + +        printf("\\033[1;36m%s\\033[0m" % (info) + +... + +**2.5 What util/sql.py does in detail:** + +SQL.py is mainly used to execute SQL statements to manipulate the database, +and the code is extracted and commented as follows: + +**util/sql.py** + +\# prepare() is mainly used to set up the environment for testing table and +data, and to set up the database db for testing. do not call prepare() if you +need to test the database operation command. + +def prepare(self): + +tdLog.info("prepare database:db") + +self.cursor.execute('reset query cache') + +self.cursor.execute('drop database if exists db') + +self.cursor.execute('create database db') + +self.cursor.execute('use db') + +... + +\# query() is mainly used to execute select statements for normal syntax input + +def query(self, sql): + +... + +\# error() is mainly used to execute the select statement with the wrong syntax +input, the error will be caught as a reasonable behavior, if not caught it will +prove that the test failed + +def error() + +... + +\# checkRows() is used to check the number of returned lines after calling +query(select ...) after calling the query(select ...) to check the number of +rows of returned results. + +def checkRows(self, expectRows): + +... + +\# checkData() is used to check the returned result data after calling +query(select ...) after the query(select ...) is called, failure to meet +expectation is + +def checkData(self, row, col, data): + +... + +\# getData() returns the result data after calling query(select ...) to return +the resulting data after calling query(select ...) + +def getData(self, row, col): + +... + +\# execute() used to execute sql and return the number of affected rows + +def execute(self, sql): + +... + +\# executeTimes() Multiple executions of the same sql statement + +def executeTimes(self, sql, times): + +... + +\# CheckAffectedRows() Check if the number of affected rows is as expected + +def checkAffectedRows(self, expectAffectedRows): + +... + +> Note: Both Python2 and Python3 are currently supported by the Python test +> case. Since Python2 is no longer officially supported by January 1, 2020, it +> is recommended that subsequent test case development be guaranteed to run +> correctly on Python3. For Python2, please consider being compatible if +> appropriate without additional +> burden.   + +### CI Covenant submission adoption principle. + +- Every commit / PR compilation must pass. Currently, the warning is treated + as an error, so the warning must also be resolved. + +- Test cases that already exist must pass. + +- Because CI is very important to support build and automatically test + procedure, it is necessary to manually test the test case before adding it + and do as many iterations as possible to ensure that the test case provides + stable and reliable test results when added. + +> Note: In the future, according to the requirements and test development +> progress will add stress testing, performance testing, code style, +> and other features based on functional testing. + ### Third Party Connectors The TDengine community has also kindly built some of their own connectors! Follow the links below to find the source code for them. diff --git a/src/client/src/tscServer.c b/src/client/src/tscServer.c index 47c7d3e4affaf6687030a6bb5ea6d56ecb9f773a..6fe76cedce583978ba9cfc584e6fcbbb5cd00a0f 100644 --- a/src/client/src/tscServer.c +++ b/src/client/src/tscServer.c @@ -2262,7 +2262,7 @@ int tscProcessConnectRsp(SSqlObj *pSql) { strcpy(pObj->sversion, pConnect->serverVersion); pObj->writeAuth = pConnect->writeAuth; pObj->superAuth = pConnect->superAuth; -// taosTmrReset(tscProcessActivityTimer, tsShellActivityTimer * 500, pObj, tscTmr, &pObj->pTimer); + taosTmrReset(tscProcessActivityTimer, tsShellActivityTimer * 500, pObj, tscTmr, &pObj->pTimer); return 0; } diff --git a/src/client/src/tscSql.c b/src/client/src/tscSql.c index 922790ad70ed399fbb4146439ccd853bf6037a72..4fdd4c432378044944a1d22f7b860c302da8d5e3 100644 --- a/src/client/src/tscSql.c +++ b/src/client/src/tscSql.c @@ -168,6 +168,13 @@ static void syncConnCallback(void *param, TAOS_RES *tres, int code) { TAOS *taos_connect(const char *ip, const char *user, const char *pass, const char *db, uint16_t port) { tscTrace("try to create a connection to %s", ip); + if (port != 0) { + tsServerPort = port; + tsMnodeShellPort = tsServerPort + TSDB_PORT_MNODESHELL; + tsDnodeShellPort = tsServerPort + TSDB_PORT_DNODESHELL; + tsMnodeDnodePort = tsServerPort + TSDB_PORT_MNODEDNODE; + tsDnodeMnodePort = tsServerPort + TSDB_PORT_DNODEMNODE; + } STscObj *pObj = taosConnectImpl(ip, user, pass, db, port, NULL, NULL, NULL); if (pObj != NULL) { diff --git a/src/common/src/tmessage.c b/src/common/src/tmessage.c index 5a134df12904dad5e97ed132622db6463a11e831..0b6dbfdb51baa45bb968f7281514ad039ae41434 100644 --- a/src/common/src/tmessage.c +++ b/src/common/src/tmessage.c @@ -13,122 +13,6 @@ * along with this program. If not, see . */ -char *taosMsg[] = { - "null", - "registration", - "registration-rsp", - "submit", - "submit-rsp", - "query", - "query-rsp", - "retrieve", - "retrieve-rsp", - "create-table", - "create-table-rsp", //10 - - "drop-table", - "drop-table-rsp", - "alter-table", - "alter-table-rsp", - "create-vnode", - "create-vnode-rsp", - "drop-vnode", - "drop-vnode-rsp", - "alter-vnode", - "alter-vnode-rsp", //20 - - "drop-stable", - "drop-stable-rsp", - "alter-stream", - "alter-stream-rsp", - "config-dnode", - "config-dnode-rsp", - "", - "", - "", - "", //30 - - "connect", - "connect-rsp", - "create-acct", - "create-acct-rsp", - "alter-acct", - "alter-acct-rsp", - "drop-acct", - "drop-acct-rsp", - "create-user", - "create-user-rsp", //40 - - "alter-user", - "alter-user-rsp", - "drop-user", - "drop-user-rsp", - "create-dnode", - "create-dnode-rsp", - "drop-dnode", - "drop-dnode-rsp", - "create-db", - "create-db-rsp", //50 - - "drop-db", - "drop-db-rsp", - "use-db", - "use-db-rsp", - "alter-db", - "alter-db-rsp", - "create-table", - "create-table-rsp", - "drop-table", - "drop-table-rsp", //60 - - "alter-table", - "alter-table-rsp", - "table-meta", - "table-meta-rsp", - "super-table-meta", - "super-stable-meta-rsp", - "multi-table-meta", - "multi-table-meta-rsp", - "alter-stream", - "alter-stream-rsp", //70 - - "show", - "show-rsp", - "kill-query", - "kill-query-rsp", - "kill-stream", - "kill-stream-rsp", - "kill-connection", - "kill-connectoin-rsp", - "heart-beat", - "heart-beat-rsp", //80 - - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", //90 - - "config-table", - "config-table-rsp", - "config-vnode", - "config-vnode-rsp", - "status", - "status-rsp", - "grant", - "grant-rsp", - "", - "", //100 - - "sdb-sync", - "sdb-sync-rsp", - "sdb-forward", - "sdb-forward-rsp", - "max" -}; +#define TAOS_MESSAGE_C +#include "taosmsg.h" diff --git a/src/connector/python/linux/python3/taos/cinterface.py b/src/connector/python/linux/python3/taos/cinterface.py index 77001609b61d35c746ef2ef37702aa6fb1460106..6ef54f1ba550ad22f906433801492082d599809c 100644 --- a/src/connector/python/linux/python3/taos/cinterface.py +++ b/src/connector/python/linux/python3/taos/cinterface.py @@ -146,6 +146,7 @@ class CTaosInterface(object): libtaos.taos_errstr.restype = ctypes.c_char_p libtaos.taos_subscribe.restype = ctypes.c_void_p libtaos.taos_consume.restype = ctypes.c_void_p + libtaos.taos_fetch_lengths.restype = ctypes.c_void_p def __init__(self, config=None): ''' @@ -314,6 +315,8 @@ class CTaosInterface(object): isMicro = (CTaosInterface.libtaos.taos_result_precision(result) == FieldType.C_TIMESTAMP_MICRO) blocks = [None] * len(fields) + fieldL = CTaosInterface.libtaos.taos_fetch_lengths(result) + fieldLen = [ele for ele in ctypes.cast(fieldL, ctypes.POINTER(ctypes.c_int))[:len(fields)]] for i in range(len(fields)): data = ctypes.cast(pblock, ctypes.POINTER(ctypes.c_void_p))[i] if data == None: @@ -323,7 +326,7 @@ class CTaosInterface(object): if fields[i]['type'] not in _CONVERT_FUNC: raise DatabaseError("Invalid data type returned from database") - blocks[i] = _CONVERT_FUNC[fields[i]['type']](data, num_of_rows, fields[i]['bytes'], isMicro) + blocks[i] = _CONVERT_FUNC[fields[i]['type']](data, num_of_rows, fieldLen[i], isMicro) return blocks, abs(num_of_rows) diff --git a/src/dnode/src/dnodeRead.c b/src/dnode/src/dnodeRead.c index e52b59d20a38ad9242eb7103885b4e6a5c7691b5..efa5dc76951258dba76d5a8ff3d8370728858f41 100644 --- a/src/dnode/src/dnodeRead.c +++ b/src/dnode/src/dnodeRead.c @@ -74,8 +74,10 @@ void dnodeCleanupRead() { for (int i=0; i < readPool.max; ++i) { SReadWorker *pWorker = readPool.readWorker + i; - if (pWorker->thread) + if (pWorker->thread) { + pthread_cancel(pWorker->thread); pthread_join(pWorker->thread, NULL); + } } taosCloseQset(readQset); @@ -114,12 +116,12 @@ void dnodeRead(SRpcMsg *pMsg) { pRead->pCont = pCont; pRead->contLen = pHead->contLen; - taosWriteQitem(queue, TAOS_QTYPE_RPC, pRead); - // next vnode leftLen -= pHead->contLen; pCont -= pHead->contLen; queuedMsgNum++; + + taosWriteQitem(queue, TAOS_QTYPE_RPC, pRead); } if (queuedMsgNum == 0) { diff --git a/src/dnode/src/dnodeWrite.c b/src/dnode/src/dnodeWrite.c index 39757c690f6d460fab2378c249f9ce9786ac3e22..4ca9b1935df4584a9a5e7fe5a35eb27911c66bca 100644 --- a/src/dnode/src/dnodeWrite.c +++ b/src/dnode/src/dnodeWrite.c @@ -71,7 +71,10 @@ void dnodeCleanupWrite() { for (int32_t i = 0; i < wWorkerPool.max; ++i) { SWriteWorker *pWorker = wWorkerPool.writeWorker + i; if (pWorker->thread) { + pthread_cancel(pWorker->thread); pthread_join(pWorker->thread, NULL); + taosFreeQall(pWorker->qall); + taosCloseQset(pWorker->qset); } } diff --git a/src/inc/taoserror.h b/src/inc/taoserror.h index c9071f4cb0c14e689583b25c1c7e2939ec4a6fb6..b5ab4412a9b4f41821b9b0fa00e303f467c4e316 100644 --- a/src/inc/taoserror.h +++ b/src/inc/taoserror.h @@ -115,6 +115,7 @@ TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_QUERY_ID, 0, 255, "invalid query i TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_STREAM_ID, 0, 256, "invalid stream id") TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_CONNECTION, 0, 257, "invalid connection") TAOS_DEFINE_ERROR(TSDB_CODE_SDB_ERROR, 0, 258, "sdb error") +TAOS_DEFINE_ERROR(TSDB_CODE_TIMESTAMP_OUT_OF_RANGE, 0, 259, "timestamp is out of range") // acct TAOS_DEFINE_ERROR(TSDB_CODE_ACCT_ALREADY_EXIST, 0, 300, "accounts already exist") @@ -172,6 +173,9 @@ TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_VALUE, 0, 462, "invalid value") // others TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_FILE_FORMAT, 0, 500, "invalid file format") +// TSDB +TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_CONFIG, 0, 550, "invalid TSDB configuration") + #ifdef TAOS_ERROR_C }; diff --git a/src/inc/taosmsg.h b/src/inc/taosmsg.h index c7e21217262f4722e0ebe9d75d90b9ece87f41f2..19bd96a0637097b626609c2b2c8428bc5ba28c60 100644 --- a/src/inc/taosmsg.h +++ b/src/inc/taosmsg.h @@ -28,103 +28,76 @@ extern "C" { #include "trpc.h" // message type -#define TSDB_MSG_TYPE_REG 1 -#define TSDB_MSG_TYPE_REG_RSP 2 -#define TSDB_MSG_TYPE_SUBMIT 3 -#define TSDB_MSG_TYPE_SUBMIT_RSP 4 -#define TSDB_MSG_TYPE_QUERY 5 -#define TSDB_MSG_TYPE_QUERY_RSP 6 -#define TSDB_MSG_TYPE_RETRIEVE 7 -#define TSDB_MSG_TYPE_RETRIEVE_RSP 8 + +#ifdef TAOS_MESSAGE_C +#define TAOS_DEFINE_MESSAGE_TYPE( name, msg ) msg, msg "-rsp", +char *taosMsg[] = { + "null", +#else +#define TAOS_DEFINE_MESSAGE_TYPE( name, msg ) name, name##_RSP, +enum { + TSDB_MESSAGE_NULL = 0, +#endif + +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_REG, "registration" ) // 1 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_SUBMIT, "submit" ) // 3 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_QUERY, "query" ) // 5 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_RETRIEVE, "retrieve" ) // 7 // message from mnode to dnode -#define TSDB_MSG_TYPE_MD_CREATE_TABLE 9 -#define TSDB_MSG_TYPE_MD_CREATE_TABLE_RSP 10 -#define TSDB_MSG_TYPE_MD_DROP_TABLE 11 -#define TSDB_MSG_TYPE_MD_DROP_TABLE_RSP 12 -#define TSDB_MSG_TYPE_MD_ALTER_TABLE 13 -#define TSDB_MSG_TYPE_MD_ALTER_TABLE_RSP 14 -#define TSDB_MSG_TYPE_MD_CREATE_VNODE 15 -#define TSDB_MSG_TYPE_MD_CREATE_VNODE_RSP 16 -#define TSDB_MSG_TYPE_MD_DROP_VNODE 17 -#define TSDB_MSG_TYPE_MD_DROP_VNODE_RSP 18 -#define TSDB_MSG_TYPE_MD_DROP_STABLE 19 -#define TSDB_MSG_TYPE_MD_DROP_STABLE_RSP 20 -#define TSDB_MSG_TYPE_MD_ALTER_STREAM 21 -#define TSDB_MSG_TYPE_MD_ALTER_STREAM_RSP 22 -#define TSDB_MSG_TYPE_MD_CONFIG_DNODE 23 -#define TSDB_MSG_TYPE_MD_CONFIG_DNODE_RSP 24 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_MD_CREATE_TABLE, "create-table" ) // 9 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_MD_DROP_TABLE, "drop-table" ) // 11 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_MD_ALTER_TABLE, "alter-table" ) // 13 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_MD_CREATE_VNODE, "create-vnode" ) // 15 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_MD_DROP_VNODE, "drop-vnode" ) // 17 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_MD_DROP_STABLE, "drop-stable" ) // 19 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_MD_ALTER_STREAM, "alter-stream" ) // 21 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_MD_CONFIG_DNODE, "config-dnode" ) // 23 // message from client to mnode -#define TSDB_MSG_TYPE_CM_CONNECT 31 -#define TSDB_MSG_TYPE_CM_CONNECT_RSP 32 -#define TSDB_MSG_TYPE_CM_CREATE_ACCT 33 -#define TSDB_MSG_TYPE_CM_CREATE_ACCT_RSP 34 -#define TSDB_MSG_TYPE_CM_ALTER_ACCT 35 -#define TSDB_MSG_TYPE_CM_ALTER_ACCT_RSP 36 -#define TSDB_MSG_TYPE_CM_DROP_ACCT 37 -#define TSDB_MSG_TYPE_CM_DROP_ACCT_RSP 38 -#define TSDB_MSG_TYPE_CM_CREATE_USER 39 -#define TSDB_MSG_TYPE_CM_CREATE_USER_RSP 40 -#define TSDB_MSG_TYPE_CM_ALTER_USER 41 -#define TSDB_MSG_TYPE_CM_ALTER_USER_RSP 42 -#define TSDB_MSG_TYPE_CM_DROP_USER 43 -#define TSDB_MSG_TYPE_CM_DROP_USER_RSP 44 -#define TSDB_MSG_TYPE_CM_CREATE_DNODE 45 -#define TSDB_MSG_TYPE_CM_CREATE_DNODE_RSP 46 -#define TSDB_MSG_TYPE_CM_DROP_DNODE 47 -#define TSDB_MSG_TYPE_CM_DROP_DNODE_RSP 48 -#define TSDB_MSG_TYPE_CM_CONFIG_DNODE TSDB_MSG_TYPE_MD_CONFIG_DNODE -#define TSDB_MSG_TYPE_CM_CONFIG_DNODE_RSP TSDB_MSG_TYPE_MD_CONFIG_DNODE_RSP -#define TSDB_MSG_TYPE_CM_CREATE_DB 49 -#define TSDB_MSG_TYPE_CM_CREATE_DB_RSP 50 -#define TSDB_MSG_TYPE_CM_DROP_DB 51 -#define TSDB_MSG_TYPE_CM_DROP_DB_RSP 52 -#define TSDB_MSG_TYPE_CM_USE_DB 53 -#define TSDB_MSG_TYPE_CM_USE_DB_RSP 54 -#define TSDB_MSG_TYPE_CM_ALTER_DB 55 -#define TSDB_MSG_TYPE_CM_ALTER_DB_RSP 56 -#define TSDB_MSG_TYPE_CM_CREATE_TABLE 57 -#define TSDB_MSG_TYPE_CM_CREATE_TABLE_RSP 58 -#define TSDB_MSG_TYPE_CM_DROP_TABLE 59 -#define TSDB_MSG_TYPE_CM_DROP_TABLE_RSP 60 -#define TSDB_MSG_TYPE_CM_ALTER_TABLE 61 -#define TSDB_MSG_TYPE_CM_ALTER_TABLE_RSP 62 -#define TSDB_MSG_TYPE_CM_TABLE_META 63 -#define TSDB_MSG_TYPE_CM_TABLE_META_RSP 64 -#define TSDB_MSG_TYPE_CM_STABLE_VGROUP 65 -#define TSDB_MSG_TYPE_CM_STABLE_VGROUP_RSP 66 -#define TSDB_MSG_TYPE_CM_TABLES_META 67 -#define TSDB_MSG_TYPE_CM_TABLES_META_RSP 68 -#define TSDB_MSG_TYPE_CM_ALTER_STREAM 69 -#define TSDB_MSG_TYPE_CM_ALTER_STREAM_RSP 70 -#define TSDB_MSG_TYPE_CM_SHOW 71 -#define TSDB_MSG_TYPE_CM_SHOW_RSP 72 -#define TSDB_MSG_TYPE_CM_KILL_QUERY 73 -#define TSDB_MSG_TYPE_CM_KILL_QUERY_RSP 74 -#define TSDB_MSG_TYPE_CM_KILL_STREAM 75 -#define TSDB_MSG_TYPE_CM_KILL_STREAM_RSP 76 -#define TSDB_MSG_TYPE_CM_KILL_CONN 77 -#define TSDB_MSG_TYPE_CM_KILL_CONN_RSP 78 -#define TSDB_MSG_TYPE_CM_HEARTBEAT 79 -#define TSDB_MSG_TYPE_CM_HEARTBEAT_RSP 80 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_CONNECT, "connect" ) // 31 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_CREATE_ACCT, "create-acct" ) // 33 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_ALTER_ACCT, "alter-acct" ) // 35 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_DROP_ACCT, "drop-acct" ) // 37 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_CREATE_USER, "create-user" ) // 39 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_ALTER_USER, "alter-user" ) // 41 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_DROP_USER, "drop-user" ) // 43 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_CREATE_DNODE, "create-dnode" ) // 45 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_DROP_DNODE, "drop-dnode" ) // 47 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_CREATE_DB, "create-db" ) // 49 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_DROP_DB, "drop-db" ) // 51 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_USE_DB, "use-db" ) // 53 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_ALTER_DB, "alter-db" ) // 55 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_CREATE_TABLE, "create-table" ) // 57 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_DROP_TABLE, "drop-table" ) // 59 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_ALTER_TABLE, "alter-table" ) // 61 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_TABLE_META, "table-meta" ) // 63 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_STABLE_VGROUP, "stable-vgroup" ) // 65 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_TABLES_META, "tables-meta" ) // 67 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_ALTER_STREAM, "alter-stream" ) // 69 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_SHOW, "show" ) // 71 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_KILL_QUERY, "kill-query" ) // 73 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_KILL_STREAM, "kill-stream" ) // 75 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_KILL_CONN, "kill-conn" ) // 77 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_HEARTBEAT, "heartbeat" ) // 79 // message from dnode to mnode -#define TSDB_MSG_TYPE_DM_CONFIG_TABLE 91 -#define TSDB_MSG_TYPE_DM_CONFIG_TABLE_RSP 92 -#define TSDB_MSG_TYPE_DM_CONFIG_VNODE 93 -#define TSDB_MSG_TYPE_DM_CONFIG_VNODE_RSP 94 -#define TSDB_MSG_TYPE_DM_STATUS 95 -#define TSDB_MSG_TYPE_DM_STATUS_RSP 96 -#define TSDB_MSG_TYPE_DM_GRANT 97 -#define TSDB_MSG_TYPE_DM_GRANT_RSP 98 - -#define TSDB_MSG_TYPE_SDB_SYNC 101 -#define TSDB_MSG_TYPE_SDB_SYNC_RSP 102 -#define TSDB_MSG_TYPE_SDB_FORWARD 103 -#define TSDB_MSG_TYPE_SDB_FORWARD_RSP 104 - -#define TSDB_MSG_TYPE_MAX 105 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_DM_CONFIG_TABLE, "config-table" ) // 91 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_DM_CONFIG_VNODE, "config-vnode" ) // 93 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_DM_STATUS, "status" ) // 95 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_DM_GRANT, "grant" ) // 97 + +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_SDB_SYNC, "sdb-sync" ) // 101 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_SDB_FORWARD, "sdb-forward" ) // 103 + +#ifndef TAOS_MESSAGE_C + TSDB_MSG_TYPE_MAX // 105 +#endif + +}; + +#define TSDB_MSG_TYPE_CM_CONFIG_DNODE TSDB_MSG_TYPE_MD_CONFIG_DNODE +#define TSDB_MSG_TYPE_CM_CONFIG_DNODE_RSP TSDB_MSG_TYPE_MD_CONFIG_DNODE_RSP // IE type #define TSDB_IE_TYPE_SEC 1 diff --git a/src/kit/shell/inc/shell.h b/src/kit/shell/inc/shell.h index 7abe8a57767da2dfe0babb483505147885f6df69..381c6f1dbfcc9f4351919b7602a26be206248f0b 100644 --- a/src/kit/shell/inc/shell.h +++ b/src/kit/shell/inc/shell.h @@ -61,6 +61,7 @@ struct arguments { int threadNum; char* commands; int abort; + int port; }; /**************** Function declarations ****************/ diff --git a/src/kit/shell/src/shellDarwin.c b/src/kit/shell/src/shellDarwin.c index 13513426cdea898a550ae6ed141246e290e9e555..cd2fe6df33eb20af82c196bbe36e9dc90425a29f 100644 --- a/src/kit/shell/src/shellDarwin.c +++ b/src/kit/shell/src/shellDarwin.c @@ -81,7 +81,7 @@ void shellParseArgument(int argc, char *argv[], struct arguments *arguments) { // for management port else if (strcmp(argv[i], "-P") == 0) { if (i < argc - 1) { - tsMnodeShellPort = atoi(argv[++i]); + arguments->port = atoi(argv[++i]); } else { fprintf(stderr, "option -P requires an argument\n"); exit(EXIT_FAILURE); diff --git a/src/kit/shell/src/shellEngine.c b/src/kit/shell/src/shellEngine.c index 553dbdb1b6fd3b619d18129d08ba7faa8fe0d956..69475371dcf1fee1ae1296eec9b344cdc92290a5 100644 --- a/src/kit/shell/src/shellEngine.c +++ b/src/kit/shell/src/shellEngine.c @@ -66,7 +66,7 @@ TAOS *shellInit(struct arguments *args) { tsTableMetaKeepTimer = 3000; // Connect to the database. - TAOS *con = taos_connect(args->host, args->user, args->password, args->database, tsMnodeShellPort); + TAOS *con = taos_connect(args->host, args->user, args->password, args->database, args->port); if (con == NULL) { return con; } diff --git a/src/kit/shell/src/shellLinux.c b/src/kit/shell/src/shellLinux.c index 22ffa78c8138dcf14ed384c88fec27e205dc6b47..0d9458e00c5f3060b80bc45cdf8f0d1ac234ecbd 100644 --- a/src/kit/shell/src/shellLinux.c +++ b/src/kit/shell/src/shellLinux.c @@ -63,7 +63,7 @@ static error_t parse_opt(int key, char *arg, struct argp_state *state) { break; case 'P': if (arg) { - tsMnodeShellPort = atoi(arg); + arguments->port = atoi(arg); } else { fprintf(stderr, "Invalid port\n"); return -1; diff --git a/src/kit/shell/src/shellWindows.c b/src/kit/shell/src/shellWindows.c index 8863f4fa46c9b3baa6d9d390c6985ced1ce00758..ac04c593fb3fdaa569bf05ada8ac1d8c8e279ad3 100644 --- a/src/kit/shell/src/shellWindows.c +++ b/src/kit/shell/src/shellWindows.c @@ -61,7 +61,7 @@ void shellParseArgument(int argc, char *argv[], struct arguments *arguments) { // for management port else if (strcmp(argv[i], "-P") == 0) { if (i < argc - 1) { - tsMnodeShellPort = atoi(argv[++i]); + arguments->port = atoi(argv[++i]); } else { fprintf(stderr, "option -P requires an argument\n"); exit(EXIT_FAILURE); diff --git a/src/mnode/src/mgmtDServer.c b/src/mnode/src/mgmtDServer.c index 726554e49028a2dd4e6a0a15afd5a21b7bedcab1..1e820be0e961620ef1f7458fc9cdca66a3c8c9aa 100644 --- a/src/mnode/src/mgmtDServer.c +++ b/src/mnode/src/mgmtDServer.c @@ -52,14 +52,14 @@ int32_t mgmtInitDServer() { rpcInit.idleTime = tsShellActivityTimer * 1000; rpcInit.afp = mgmtDServerRetrieveAuth; + tsMgmtDServerQhandle = taosInitScheduler(tsMaxShellConns, 1, "MS"); + tsMgmtDServerRpc = rpcOpen(&rpcInit); if (tsMgmtDServerRpc == NULL) { mError("failed to init server connection to dnode"); return -1; } - tsMgmtDServerQhandle = taosInitScheduler(tsMaxShellConns, 1, "MS"); - mPrint("server connection to dnode is opened"); return 0; } diff --git a/src/mnode/src/mgmtDnode.c b/src/mnode/src/mgmtDnode.c index b041d862cfe3257007eb0319be24488f41d6b0c8..bb98e1c3e6d8ef43fa0bc3ace647b70f6dd02f83 100644 --- a/src/mnode/src/mgmtDnode.c +++ b/src/mnode/src/mgmtDnode.c @@ -426,6 +426,7 @@ static int32_t mgmtDropDnodeByEp(char *ep) { return TSDB_CODE_NO_REMOVE_MASTER; } + mPrint("dnode:%d, start to drop it", pDnode->dnodeId); #ifndef _SYNC return mgmtDropDnode(pDnode); #else diff --git a/src/mnode/src/mgmtSdb.c b/src/mnode/src/mgmtSdb.c index 91d1a7ca74ba381a394f15439c92ca2207319fe3..e288760bf06ed1f9dc94786180e4a25536c5ddc6 100644 --- a/src/mnode/src/mgmtSdb.c +++ b/src/mnode/src/mgmtSdb.c @@ -143,7 +143,9 @@ static void *sdbGetTableFromId(int32_t tableId) { static int32_t sdbInitWal() { SWalCfg walCfg = {.walLevel = 2, .wals = 2, .keep = 1}; - tsSdbObj.wal = walOpen(tsMnodeDir, &walCfg); + char temp[TSDB_FILENAME_LEN]; + sprintf(temp, "%s/wal", tsMnodeDir); + tsSdbObj.wal = walOpen(temp, &walCfg); if (tsSdbObj.wal == NULL) { sdbError("failed to open sdb wal in %s", tsMnodeDir); return -1; @@ -196,8 +198,7 @@ static uint32_t sdbGetFileInfo(void *ahandle, char *name, uint32_t *index, int32 } static int sdbGetWalInfo(void *ahandle, char *name, uint32_t *index) { - strcpy(name, "wal0"); - return 0; + return walGetWalFile(tsSdbObj.wal, name, index); } static void sdbNotifyRole(void *ahandle, int8_t role) { @@ -281,7 +282,7 @@ void sdbUpdateSync() { syncInfo.vgId = 1; syncInfo.version = sdbGetVersion(); syncInfo.syncCfg = syncCfg; - sprintf(syncInfo.path, "%s/", tsMnodeDir); + sprintf(syncInfo.path, "%s", tsMnodeDir); syncInfo.ahandle = NULL; syncInfo.getWalInfo = sdbGetWalInfo; syncInfo.getFileInfo = sdbGetFileInfo; diff --git a/src/mnode/src/mgmtUser.c b/src/mnode/src/mgmtUser.c index b4dd58cb3b5d7a9c41766de2c039c7f09ea4d39a..ecd3c217cae6af01ec1fc9a47de03a2d652377f7 100644 --- a/src/mnode/src/mgmtUser.c +++ b/src/mnode/src/mgmtUser.c @@ -396,7 +396,7 @@ static void mgmtProcessAlterUserMsg(SQueuedMsg *pMsg) { code = mgmtUpdateUser(pUser); mLPrint("user:%s, password is altered by %s, result:%s", pUser->user, pOperUser->user, tstrerror(code)); } else { - mError("user:%s, no rights to ater user", pOperUser->user); + mError("user:%s, no rights to alter user", pOperUser->user); code = TSDB_CODE_NO_RIGHTS; } @@ -439,13 +439,13 @@ static void mgmtProcessAlterUserMsg(SQueuedMsg *pMsg) { code = mgmtUpdateUser(pUser); mLPrint("user:%s, privilege is altered by %s, result:%s", pUser->user, pOperUser->user, tstrerror(code)); } else { - mError("user:%s, no rights to ater user", pOperUser->user); + mError("user:%s, no rights to alter user", pOperUser->user); code = TSDB_CODE_NO_RIGHTS; } mgmtSendSimpleResp(pMsg->thandle, code); } else { - mError("user:%s, no rights to ater user", pOperUser->user); + mError("user:%s, no rights to alter user", pOperUser->user); mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_NO_RIGHTS); } diff --git a/src/mnode/src/mgmtVgroup.c b/src/mnode/src/mgmtVgroup.c index f48bb37b86db0a509ed94e29502c9452de6c6490..8601be39371e4551303d8cd3eb556c6b739d2458 100644 --- a/src/mnode/src/mgmtVgroup.c +++ b/src/mnode/src/mgmtVgroup.c @@ -160,10 +160,7 @@ static int32_t mgmtVgroupActionUpdate(SSdbOper *pOper) { mgmtDecVgroupRef(pVgroup); - mTrace("vgId:%d, is updated, numOfVnode:%d", pVgroup->vgId, pVgroup->numOfVnodes); - if (pDb) { - mTrace("tables:%d", pDb->cfg.maxTables); - } + mTrace("vgId:%d, is updated, numOfVnode:%d tables:%d", pVgroup->vgId, pVgroup->numOfVnodes, pDb == NULL ? 0 : pDb->cfg.maxTables); return TSDB_CODE_SUCCESS; } diff --git a/src/rpc/src/rpcMain.c b/src/rpc/src/rpcMain.c index d463bc3d9596abfe683d2abd232368920b6e14ea..3e4e05cd11f8daa68c0d67a4204f2e310409cd97 100644 --- a/src/rpc/src/rpcMain.c +++ b/src/rpc/src/rpcMain.c @@ -1364,7 +1364,7 @@ static int rpcCheckAuthentication(SRpcConn *pConn, char *msg, int msgLen) { } } } else { - tTrace("%s %p, auth spi not matched, msg discarded", pRpc->label, pConn); + tTrace("%s %p, auth spi:%d not matched with received:%d", pRpc->label, pConn, pConn->spi, pHead->spi); code = TSDB_CODE_AUTH_FAILURE; } diff --git a/src/tsdb/inc/tsdbMain.h b/src/tsdb/inc/tsdbMain.h index 39808ab02fd23373a14aae8027604cf4f37b026d..e056a10bbab38e423bc2e978c0a344987bebc836 100644 --- a/src/tsdb/inc/tsdbMain.h +++ b/src/tsdb/inc/tsdbMain.h @@ -160,6 +160,7 @@ typedef struct { typedef struct { int64_t index; + int numOfCacheBlocks; SList * memPool; } STsdbCachePool; @@ -227,13 +228,13 @@ typedef struct { int maxFGroups; int numOfFGroups; - SFileGroup fGroup[]; + SFileGroup *fGroup; } STsdbFileH; #define TSDB_MIN_FILE_ID(fh) (fh)->fGroup[0].fileId #define TSDB_MAX_FILE_ID(fh) (fh)->fGroup[(fh)->numOfFGroups - 1].fileId -STsdbFileH *tsdbInitFileH(char *dataDir, int maxFiles); +STsdbFileH *tsdbInitFileH(char *dataDir, STsdbCfg *pCfg); void tsdbCloseFileH(STsdbFileH *pFileH); int tsdbCreateFile(char *dataDir, int fileId, const char *suffix, int maxTables, SFile *pFile, int writeHeader, int toClose); @@ -261,11 +262,12 @@ SFileGroup *tsdbGetFileGroupNext(SFileGroupIter *pIter); typedef struct { int32_t len; int32_t offset; + int32_t padding; // For padding purpose int32_t hasLast : 1; int32_t numOfBlocks : 31; - int32_t checksum; + int64_t uid; TSKEY maxKey; -} SCompIdx; /* sizeof(SCompIdx) = 24 */ +} SCompIdx; /* sizeof(SCompIdx) = 28 */ /** * if numOfSubBlocks == 0, then the SCompBlock is a sub-block @@ -485,6 +487,11 @@ int tsdbMoveLastBlockIfNeccessary(SRWHelper *pHelper); int tsdbWriteCompInfo(SRWHelper *pHelper); int tsdbWriteCompIdx(SRWHelper *pHelper); +// --------- Other functions need to further organize +void tsdbFitRetention(STsdbRepo *pRepo); +int tsdbAlterCacheTotalBlocks(STsdbRepo *pRepo, int totalBlocks); +void tsdbAdjustCacheBlocks(STsdbCache *pCache); + #ifdef __cplusplus } #endif diff --git a/src/tsdb/src/tsdbCache.c b/src/tsdb/src/tsdbCache.c index 9351bc602b5f34746381cbc8c712429b02a6561a..84f8a81eeaaca56b605d769545b5f1fd5e30c960 100644 --- a/src/tsdb/src/tsdbCache.c +++ b/src/tsdb/src/tsdbCache.c @@ -20,6 +20,7 @@ static int tsdbAllocBlockFromPool(STsdbCache *pCache); static void tsdbFreeBlockList(SList *list); static void tsdbFreeCacheMem(SCacheMem *mem); +static int tsdbAddCacheBlockToPool(STsdbCache *pCache); STsdbCache *tsdbInitCache(int cacheBlockSize, int totalBlocks, TsdbRepoT *pRepo) { STsdbCache *pCache = (STsdbCache *)calloc(1, sizeof(STsdbCache)); @@ -40,13 +41,7 @@ STsdbCache *tsdbInitCache(int cacheBlockSize, int totalBlocks, TsdbRepoT *pRepo) if (pPool->memPool == NULL) goto _err; for (int i = 0; i < totalBlocks; i++) { - STsdbCacheBlock *pBlock = (STsdbCacheBlock *)malloc(sizeof(STsdbCacheBlock) + cacheBlockSize); - if (pBlock == NULL) { - goto _err; - } - pBlock->offset = 0; - pBlock->remain = cacheBlockSize; - tdListAppend(pPool->memPool, (void *)(&pBlock)); + if (tsdbAddCacheBlockToPool(pCache) < 0) goto _err; } pCache->mem = NULL; @@ -142,4 +137,70 @@ static int tsdbAllocBlockFromPool(STsdbCache *pCache) { tsdbUnLockRepo(pCache->pRepo); return 0; +} + +int tsdbAlterCacheTotalBlocks(STsdbRepo *pRepo, int totalBlocks) { + STsdbCache *pCache = pRepo->tsdbCache; + int oldNumOfBlocks = pCache->totalCacheBlocks; + + tsdbLockRepo((TsdbRepoT *)pRepo); + + ASSERT(pCache->totalCacheBlocks != totalBlocks); + + if (pCache->totalCacheBlocks < totalBlocks) { + ASSERT(pCache->totalCacheBlocks == pCache->pool.numOfCacheBlocks); + int blocksToAdd = pCache->totalCacheBlocks - totalBlocks; + pCache->totalCacheBlocks = totalBlocks; + for (int i = 0; i < blocksToAdd; i++) { + if (tsdbAddCacheBlockToPool(pCache) < 0) { + tsdbUnLockRepo((TsdbRepoT *)pRepo); + tsdbError("tsdbId %d: failed to add cache block to cache pool", pRepo->config.tsdbId); + return -1; + } + } + } else { + pCache->totalCacheBlocks = totalBlocks; + tsdbAdjustCacheBlocks(pCache); + } + + tsdbUnLockRepo((TsdbRepoT *)pRepo); + tsdbTrace("tsdbId %d: tsdb total cache blocks changed from %d to %d", pRepo->config.tsdbId, oldNumOfBlocks, totalBlocks); + return 0; +} + +static int tsdbAddCacheBlockToPool(STsdbCache *pCache) { + STsdbCachePool *pPool = &pCache->pool; + + STsdbCacheBlock *pBlock = malloc(sizeof(STsdbCacheBlock) + pCache->cacheBlockSize); + if (pBlock == NULL) return -1; + + pBlock->offset = 0; + pBlock->remain = pCache->cacheBlockSize; + tdListAppend(pPool->memPool, (void *)(&pBlock)); + pPool->numOfCacheBlocks++; + + return 0; +} + +static int tsdbRemoveCacheBlockFromPool(STsdbCache *pCache) { + STsdbCachePool *pPool = &pCache->pool; + STsdbCacheBlock *pBlock = NULL; + + ASSERT(pCache->totalCacheBlocks >= 0); + + SListNode *node = tdListPopHead(pPool->memPool); + if (node == NULL) return -1; + + tdListNodeGetData(pPool->memPool, node, &pBlock); + free(pBlock); + listNodeFree(node); + pPool->numOfCacheBlocks--; + + return 0; +} + +void tsdbAdjustCacheBlocks(STsdbCache *pCache) { + while (pCache->totalCacheBlocks < pCache->pool.numOfCacheBlocks) { + if (tsdbRemoveCacheBlockFromPool(pCache) < 0) break; + } } \ No newline at end of file diff --git a/src/tsdb/src/tsdbFile.c b/src/tsdb/src/tsdbFile.c index ab76f69bedf1d289be57f7b2539ff1b9fbcac466..b1228b0230537874442f3dc6fa5d497a13c9cfa6 100644 --- a/src/tsdb/src/tsdbFile.c +++ b/src/tsdb/src/tsdbFile.c @@ -27,6 +27,7 @@ #include "tchecksum.h" #include "tsdbMain.h" #include "tutil.h" +#include "ttime.h" const char *tsdbFileSuffix[] = { ".head", // TSDB_FILE_TYPE_HEAD @@ -40,13 +41,19 @@ static int tsdbWriteFileHead(SFile *pFile); static int tsdbWriteHeadFileIdx(SFile *pFile, int maxTables); static int tsdbOpenFGroup(STsdbFileH *pFileH, char *dataDir, int fid); -STsdbFileH *tsdbInitFileH(char *dataDir, int maxFiles) { - STsdbFileH *pFileH = (STsdbFileH *)calloc(1, sizeof(STsdbFileH) + sizeof(SFileGroup) * maxFiles); +STsdbFileH *tsdbInitFileH(char *dataDir, STsdbCfg *pCfg) { + STsdbFileH *pFileH = (STsdbFileH *)calloc(1, sizeof(STsdbFileH)); if (pFileH == NULL) { // TODO: deal with ERROR here return NULL; } - pFileH->maxFGroups = maxFiles; + pFileH->maxFGroups = pCfg->keep / pCfg->daysPerFile + 3; + + pFileH->fGroup = (SFileGroup *)calloc(pFileH->maxFGroups, sizeof(SFileGroup)); + if (pFileH->fGroup == NULL) { + free(pFileH); + return NULL; + } DIR *dir = opendir(dataDir); if (dir == NULL) { @@ -69,7 +76,12 @@ STsdbFileH *tsdbInitFileH(char *dataDir, int maxFiles) { return pFileH; } -void tsdbCloseFileH(STsdbFileH *pFileH) { free(pFileH); } +void tsdbCloseFileH(STsdbFileH *pFileH) { + if (pFileH) { + tfree(pFileH->fGroup); + free(pFileH); + } +} static int tsdbInitFile(char *dataDir, int fid, const char *suffix, SFile *pFile) { tsdbGetFileName(dataDir, fid, suffix, pFile->fname); @@ -161,6 +173,18 @@ void tsdbInitFileGroupIter(STsdbFileH *pFileH, SFileGroupIter *pIter, int direct } } +void tsdbFitRetention(STsdbRepo *pRepo) { + STsdbFileH *pFileH = pRepo->tsdbFileH; + SFileGroup *pGroup = pFileH->fGroup; + + int mfid = + tsdbGetKeyFileId(taosGetTimestamp(pRepo->config.precision), pRepo->config.daysPerFile, pRepo->config.precision); + + while (pFileH->numOfFGroups > 0 && pGroup[0].fileId < mfid) { + tsdbRemoveFileGroup(pFileH, pGroup[0].fileId); + } +} + void tsdbSeekFileGroupIter(SFileGroupIter *pIter, int fid) { if (pIter->numOfFGroups == 0) { assert(pIter->pFileGroup == NULL); @@ -252,43 +276,6 @@ int tsdbCopyBlockDataInFile(SFile *pOutFile, SFile *pInFile, SCompInfo *pCompInf return 0; } -// int tsdbLoadCompIdx(SFileGroup *pGroup, void *buf, int maxTables) { -// SFile *pFile = &(pGroup->files[TSDB_FILE_TYPE_HEAD]); -// if (lseek(pFile->fd, TSDB_FILE_HEAD_SIZE, SEEK_SET) < 0) return -1; - -// if (read(pFile->fd, buf, sizeof(SCompIdx) * maxTables) < 0) return -1; -// // TODO: need to check the correctness -// return 0; -// } - -// int tsdbLoadCompBlocks(SFileGroup *pGroup, SCompIdx *pIdx, void *buf) { -// SFile *pFile = &(pGroup->files[TSDB_FILE_TYPE_HEAD]); - -// if (lseek(pFile->fd, pIdx->offset, SEEK_SET) < 0) return -1; - -// if (read(pFile->fd, buf, pIdx->len) < 0) return -1; - -// // TODO: need to check the correctness - -// return 0; -// } - -// int tsdbLoadCompCols(SFile *pFile, SCompBlock *pBlock, void *buf) { -// // assert(pBlock->numOfSubBlocks == 0 || pBlock->numOfSubBlocks == 1); - -// if (lseek(pFile->fd, pBlock->offset, SEEK_SET) < 0) return -1; -// size_t size = sizeof(SCompData) + sizeof(SCompCol) * pBlock->numOfCols; -// if (read(pFile->fd, buf, size) < 0) return -1; - -// return 0; -// } - -// int tsdbLoadColData(SFile *pFile, SCompCol *pCol, int64_t blockBaseOffset, void *buf) { -// if (lseek(pFile->fd, blockBaseOffset + pCol->offset, SEEK_SET) < 0) return -1; -// if (read(pFile->fd, buf, pCol->len) < 0) return -1; -// return 0; -// } - static int compFGroupKey(const void *key, const void *fgroup) { int fid = *(int *)key; SFileGroup *pFGroup = (SFileGroup *)fgroup; diff --git a/src/tsdb/src/tsdbMain.c b/src/tsdb/src/tsdbMain.c index b1ef3d2d9ce38e0c0e0347ac9d1c6b9a61905cb3..3f41a3c5fe71f8e9986321808ccde0a5b3f2bed1 100644 --- a/src/tsdb/src/tsdbMain.c +++ b/src/tsdb/src/tsdbMain.c @@ -6,6 +6,7 @@ #include "tsdbMain.h" #include "tscompression.h" #include "tchecksum.h" +#include "ttime.h" int tsdbDebugFlag = 135; @@ -27,7 +28,7 @@ static int32_t tsdbCheckAndSetDefaultCfg(STsdbCfg *pCfg); static int32_t tsdbSetRepoEnv(STsdbRepo *pRepo); static int32_t tsdbDestroyRepoEnv(STsdbRepo *pRepo); // static int tsdbOpenMetaFile(char *tsdbDir); -static int32_t tsdbInsertDataToTable(TsdbRepoT *repo, SSubmitBlk *pBlock); +static int32_t tsdbInsertDataToTable(TsdbRepoT *repo, SSubmitBlk *pBlock, TSKEY now); static int32_t tsdbRestoreCfg(STsdbRepo *pRepo, STsdbCfg *pCfg); static int32_t tsdbGetDataDirName(STsdbRepo *pRepo, char *fname); static void * tsdbCommitData(void *arg); @@ -35,8 +36,9 @@ static int tsdbCommitToFile(STsdbRepo *pRepo, int fid, SSkipListIterator **i SDataCols *pDataCols); static TSKEY tsdbNextIterKey(SSkipListIterator *pIter); static int tsdbHasDataToCommit(SSkipListIterator **iters, int nIters, TSKEY minKey, TSKEY maxKey); -// static int tsdbWriteBlockToFileImpl(SFile *pFile, SDataCols *pCols, int pointsToWrite, int64_t *offset, int32_t *len, -// int64_t uid); +static void tsdbAlterCompression(STsdbRepo *pRepo, int8_t compression); +static void tsdbAlterKeep(STsdbRepo *pRepo, int32_t keep); +static void tsdbAlterMaxTables(STsdbRepo *pRepo, int32_t maxTables); #define TSDB_GET_TABLE_BY_ID(pRepo, sid) (((STSDBRepo *)pRepo)->pTableList)[sid] #define TSDB_GET_TABLE_BY_NAME(pRepo, name) @@ -214,7 +216,7 @@ TsdbRepoT *tsdbOpenRepo(char *tsdbDir, STsdbAppH *pAppH) { } tsdbGetDataDirName(pRepo, dataDir); - pRepo->tsdbFileH = tsdbInitFileH(dataDir, pRepo->config.maxTables); + pRepo->tsdbFileH = tsdbInitFileH(dataDir, &(pRepo->config)); if (pRepo->tsdbFileH == NULL) { tsdbFreeCache(pRepo->tsdbCache); tsdbFreeMeta(pRepo->tsdbMeta); @@ -297,10 +299,23 @@ int32_t tsdbCloseRepo(TsdbRepoT *repo) { */ int32_t tsdbConfigRepo(TsdbRepoT *repo, STsdbCfg *pCfg) { STsdbRepo *pRepo = (STsdbRepo *)repo; + STsdbCfg * pRCfg = &pRepo->config; - pRepo->config = *pCfg; - // TODO - return 0; + if (tsdbCheckAndSetDefaultCfg(pCfg) < 0) return TSDB_CODE_INVALID_CONFIG; + + ASSERT(pRCfg->tsdbId == pCfg->tsdbId); + ASSERT(pRCfg->cacheBlockSize == pCfg->cacheBlockSize); + ASSERT(pRCfg->daysPerFile == pCfg->daysPerFile); + ASSERT(pRCfg->minRowsPerFileBlock == pCfg->minRowsPerFileBlock); + ASSERT(pRCfg->maxRowsPerFileBlock == pCfg->maxRowsPerFileBlock); + ASSERT(pRCfg->precision == pCfg->precision); + + if (pRCfg->compression != pCfg->compression) tsdbAlterCompression(pRepo, pCfg->compression); + if (pRCfg->keep != pCfg->keep) tsdbAlterKeep(pRepo, pCfg->keep); + if (pRCfg->totalBlocks != pCfg->totalBlocks) tsdbAlterCacheTotalBlocks(pRepo, pCfg->totalBlocks); + if (pRCfg->maxTables != pCfg->maxTables) tsdbAlterMaxTables(pRepo, pCfg->maxTables); + + return TSDB_CODE_SUCCESS; } int32_t tsdbTriggerCommit(TsdbRepoT *repo) { @@ -394,13 +409,16 @@ STableInfo *tsdbGetTableInfo(TsdbRepoT *pRepo, STableId tableId) { // TODO: need to return the number of data inserted int32_t tsdbInsertData(TsdbRepoT *repo, SSubmitMsg *pMsg) { SSubmitMsgIter msgIter; + STsdbRepo *pRepo = (STsdbRepo *)repo; tsdbInitSubmitMsgIter(pMsg, &msgIter); SSubmitBlk *pBlock = NULL; int32_t code = TSDB_CODE_SUCCESS; - + + TSKEY now = taosGetTimestamp(pRepo->config.precision); + while ((pBlock = tsdbGetSubmitMsgNext(&msgIter)) != NULL) { - if ((code = tsdbInsertDataToTable(repo, pBlock)) != TSDB_CODE_SUCCESS) { + if ((code = tsdbInsertDataToTable(repo, pBlock, now)) != TSDB_CODE_SUCCESS) { return code; } } @@ -787,21 +805,31 @@ static int32_t tdInsertRowToTable(STsdbRepo *pRepo, SDataRow row, STable *pTable return 0; } -static int32_t tsdbInsertDataToTable(TsdbRepoT *repo, SSubmitBlk *pBlock) { +static int32_t tsdbInsertDataToTable(TsdbRepoT *repo, SSubmitBlk *pBlock, TSKEY now) { STsdbRepo *pRepo = (STsdbRepo *)repo; STableId tableId = {.uid = pBlock->uid, .tid = pBlock->tid}; STable *pTable = tsdbIsValidTableToInsert(pRepo->tsdbMeta, tableId); if (pTable == NULL) { - uError("failed to get table for insert, uid:%" PRIu64 ", tid:%d", tableId.uid, tableId.tid); + tsdbError("failed to get table for insert, uid:%" PRIu64 ", tid:%d", tableId.uid, tableId.tid); return TSDB_CODE_INVALID_TABLE_ID; } - SSubmitBlkIter blkIter; - SDataRow row; + SSubmitBlkIter blkIter = {0}; + SDataRow row = NULL; + + TSKEY minKey = now - tsMsPerDay[pRepo->config.precision] * pRepo->config.keep; + TSKEY maxKey = now + tsMsPerDay[pRepo->config.precision] * pRepo->config.daysPerFile; tsdbInitSubmitBlkIter(pBlock, &blkIter); while ((row = tsdbGetSubmitBlkNext(&blkIter)) != NULL) { + if (dataRowKey(row) < minKey || dataRowKey(row) > maxKey) { + tsdbError( + "tsdbId: %d, table tid: %d, talbe uid: %ld timestamp is out of range. now: %ld maxKey: %ld, minKey: %ld", + pRepo->config.tsdbId, pTable->tableId.tid, pTable->tableId.uid, now, minKey, maxKey); + return TSDB_CODE_TIMESTAMP_OUT_OF_RANGE; + } + if (tdInsertRowToTable(pRepo, row, pTable) < 0) { return -1; } @@ -903,6 +931,9 @@ static void *tsdbCommitData(void *arg) { } } + // Do retention actions + tsdbFitRetention(pRepo); + _exit: tdFreeDataCols(pDataCols); tsdbDestroyTableIters(iters, pCfg->maxTables); @@ -910,6 +941,7 @@ _exit: tsdbLockRepo(arg); tdListMove(pCache->imem->list, pCache->pool.memPool); + tsdbAdjustCacheBlocks(pCache); tdListFree(pCache->imem->list); free(pCache->imem); pCache->imem = NULL; @@ -1028,4 +1060,27 @@ static int tsdbHasDataToCommit(SSkipListIterator **iters, int nIters, TSKEY minK if (nextKey > 0 && (nextKey >= minKey && nextKey <= maxKey)) return 1; } return 0; +} + +static void tsdbAlterCompression(STsdbRepo *pRepo, int8_t compression) { + pRepo->config.compression = compression; +} + +static void tsdbAlterKeep(STsdbRepo *pRepo, int32_t keep) { + STsdbCfg *pCfg = &pRepo->config; + + int maxFiles = keep / pCfg->maxTables + 3; + if (pRepo->config.keep > keep) { + pRepo->tsdbFileH->maxFGroups = maxFiles; + } else { + pRepo->tsdbFileH->fGroup = realloc(pRepo->tsdbFileH->fGroup, sizeof(SFileGroup)); + if (pRepo->tsdbFileH->fGroup == NULL) { + // TODO: deal with the error + } + pRepo->tsdbFileH->maxFGroups = maxFiles; + } +} + +static void tsdbAlterMaxTables(STsdbRepo *pRepo, int32_t maxTables) { + // TODO } \ No newline at end of file diff --git a/src/tsdb/src/tsdbRWHelper.c b/src/tsdb/src/tsdbRWHelper.c index 653379e03b1154cf95fab271286996f68fce170d..e32a64629678a4d16a54885ccb9184a09a50a15a 100644 --- a/src/tsdb/src/tsdbRWHelper.c +++ b/src/tsdb/src/tsdbRWHelper.c @@ -414,6 +414,7 @@ int tsdbWriteCompInfo(SRWHelper *pHelper) { ASSERT((pIdx->len - sizeof(SCompInfo) - sizeof(TSCKSUM)) % sizeof(SCompBlock) == 0); taosCalcChecksumAppend(0, (uint8_t *)pHelper->pCompInfo, pIdx->len); pIdx->offset = lseek(pHelper->files.nHeadF.fd, 0, SEEK_END); + pIdx->uid = pHelper->tableInfo.uid; if (pIdx->offset < 0) return -1; ASSERT(pIdx->offset >= tsizeof(pHelper->pCompIdx)); diff --git a/src/util/inc/ttime.h b/src/util/inc/ttime.h index 34c241cbc0f22afc511660cee475c82d08466599..61df65f345afc3085890cdcb8396ddba6a2fe857 100644 --- a/src/util/inc/ttime.h +++ b/src/util/inc/ttime.h @@ -22,22 +22,37 @@ extern "C" { #include #include +#include "tutil.h" //@return timestamp in second int32_t taosGetTimestampSec(); //@return timestamp in millisecond -int64_t taosGetTimestampMs(); +static FORCE_INLINE int64_t taosGetTimestampMs() { + struct timeval systemTime; + gettimeofday(&systemTime, NULL); + return (int64_t)systemTime.tv_sec * 1000L + (uint64_t)systemTime.tv_usec / 1000; +} //@return timestamp in microsecond -int64_t taosGetTimestampUs(); +static FORCE_INLINE int64_t taosGetTimestampUs() { + struct timeval systemTime; + gettimeofday(&systemTime, NULL); + return (int64_t)systemTime.tv_sec * 1000000L + (uint64_t)systemTime.tv_usec; +} /* * @return timestamp decided by global conf variable, tsTimePrecision * if precision == TSDB_TIME_PRECISION_MICRO, it returns timestamp in microsecond. * precision == TSDB_TIME_PRECISION_MILLI, it returns timestamp in millisecond. */ -int64_t taosGetTimestamp(int32_t precision); +static FORCE_INLINE int64_t taosGetTimestamp(int32_t precision) { + if (precision == TSDB_TIME_PRECISION_MICRO) { + return taosGetTimestampUs(); + } else { + return taosGetTimestampMs(); + } +} int32_t getTimestampInUsFromStr(char* token, int32_t tokenlen, int64_t* ts); diff --git a/src/util/src/tqueue.c b/src/util/src/tqueue.c index c639452823438257b62fbfc8adef96bca94ecf8b..a458cefc9c9c703ffb2144fb95161d5892431ec8 100644 --- a/src/util/src/tqueue.c +++ b/src/util/src/tqueue.c @@ -41,6 +41,7 @@ typedef struct _taos_qset { pthread_mutex_t mutex; int32_t numOfQueues; int32_t numOfItems; + tsem_t sem; } STaosQset; typedef struct _taos_qall { @@ -59,6 +60,7 @@ taos_queue taosOpenQueue() { } pthread_mutex_init(&queue->mutex, NULL); + return queue; } @@ -79,7 +81,7 @@ void taosCloseQueue(taos_queue param) { } pthread_mutex_unlock(&queue->mutex); - + pthread_mutex_destroy(&queue->mutex); free(queue); } @@ -116,11 +118,12 @@ int taosWriteQitem(taos_queue param, int type, void *item) { queue->numOfItems++; if (queue->qset) atomic_add_fetch_32(&queue->qset->numOfItems, 1); - uTrace("item:%p is put into queue:%p, type:%d items:%d", item, queue, type, queue->numOfItems); pthread_mutex_unlock(&queue->mutex); + if (queue->qset) tsem_post(&queue->qset->sem); + return 0; } @@ -217,12 +220,15 @@ taos_qset taosOpenQset() { } pthread_mutex_init(&qset->mutex, NULL); + tsem_init(&qset->sem, 0, 0); return qset; } void taosCloseQset(taos_qset param) { STaosQset *qset = (STaosQset *)param; + pthread_mutex_destroy(&qset->mutex); + tsem_destroy(&qset->sem); free(qset); } @@ -298,6 +304,8 @@ int taosReadQitemFromQset(taos_qset param, int *type, void **pitem, void **phand STaosQnode *pNode = NULL; int code = 0; + tsem_wait(&qset->sem); + pthread_mutex_lock(&qset->mutex); for(int i=0; inumOfQueues; ++i) { @@ -339,6 +347,7 @@ int taosReadAllQitemsFromQset(taos_qset param, taos_qall p2, void **phandle) { STaosQall *qall = (STaosQall *)p2; int code = 0; + tsem_wait(&qset->sem); pthread_mutex_lock(&qset->mutex); for(int i=0; inumOfQueues; ++i) { @@ -364,6 +373,7 @@ int taosReadAllQitemsFromQset(taos_qset param, taos_qall p2, void **phandle) { queue->tail = NULL; queue->numOfItems = 0; atomic_sub_fetch_32(&qset->numOfItems, qall->numOfItems); + for (int j=1; jnumOfItems; ++j) tsem_wait(&qset->sem); } pthread_mutex_unlock(&queue->mutex); diff --git a/src/util/src/ttime.c b/src/util/src/ttime.c index 015cb19606ff11b5ddb857a1fc11299f224afd16..d34bf0e6ce922a09eb9941bb8cac9c98141a68cc 100644 --- a/src/util/src/ttime.c +++ b/src/util/src/ttime.c @@ -121,30 +121,6 @@ static int32_t parseLocaltime(char* timestr, int64_t* time, int32_t timePrec); int32_t taosGetTimestampSec() { return (int32_t)time(NULL); } -int64_t taosGetTimestampMs() { - struct timeval systemTime; - gettimeofday(&systemTime, NULL); - return (int64_t)systemTime.tv_sec * 1000L + (uint64_t)systemTime.tv_usec / 1000; -} - -int64_t taosGetTimestampUs() { - struct timeval systemTime; - gettimeofday(&systemTime, NULL); - return (int64_t)systemTime.tv_sec * 1000000L + (uint64_t)systemTime.tv_usec; -} - -/* - * If tsTimePrecision == 1, taosGetTimestamp will return timestamp in microsecond. - * Otherwise, it will return timestamp in millisecond. - */ -int64_t taosGetTimestamp(int32_t precision) { - if (precision == TSDB_TIME_PRECISION_MICRO) { - return taosGetTimestampUs(); - } else { - return taosGetTimestampMs(); - } -} - int32_t taosParseTime(char* timestr, int64_t* time, int32_t len, int32_t timePrec) { /* parse datatime string in with tz */ if (strnchr(timestr, 'T', len, false) != NULL) { diff --git a/src/vnode/src/vnodeMain.c b/src/vnode/src/vnodeMain.c index c305ff0665588684d8ffc11e52315e3bd78fd2fa..f5d7bd45a74233c9245a1bcc47aa9ef50b18e781 100644 --- a/src/vnode/src/vnodeMain.c +++ b/src/vnode/src/vnodeMain.c @@ -184,6 +184,7 @@ int32_t vnodeOpen(int32_t vnode, char *rootDir) { pVnode->status = TAOS_VN_STATUS_INIT; pVnode->refCount = 1; pVnode->version = 0; + pVnode->tsdbCfg.tsdbId = pVnode->vgId; taosAddIntHash(tsDnodeVnodesHash, pVnode->vgId, (char *)(&pVnode)); int32_t code = vnodeReadCfg(pVnode); diff --git a/src/vnode/src/vnodeWrite.c b/src/vnode/src/vnodeWrite.c index 2f49280cb6af32fc308a59a7820bcde8993f444f..3541fc15b649c64dbb411c1b03b0763e3d329f67 100644 --- a/src/vnode/src/vnodeWrite.c +++ b/src/vnode/src/vnodeWrite.c @@ -111,11 +111,13 @@ static int32_t vnodeProcessCreateTableMsg(SVnodeObj *pVnode, void *pCont, SRspRe int32_t code = 0; dTrace("pVnode:%p vgId:%d, table:%s, start to create", pVnode, pVnode->vgId, pTable->tableId); - int16_t numOfColumns = htons(pTable->numOfColumns); - int16_t numOfTags = htons(pTable->numOfTags); - int32_t sid = htonl(pTable->sid); - uint64_t uid = htobe64(pTable->uid); - SSchema *pSchema = (SSchema *) pTable->data; + int16_t numOfColumns = htons(pTable->numOfColumns); + int16_t numOfTags = htons(pTable->numOfTags); + int32_t sid = htonl(pTable->sid); + uint64_t uid = htobe64(pTable->uid); + SSchema * pSchema = (SSchema *)pTable->data; + STSchema *pDestTagSchema = NULL; + SDataRow dataRow = NULL; int32_t totalCols = numOfColumns + numOfTags; @@ -130,7 +132,7 @@ static int32_t vnodeProcessCreateTableMsg(SVnodeObj *pVnode, void *pCont, SRspRe tsdbTableSetName(&tCfg, pTable->tableId, false); if (numOfTags != 0) { - STSchema *pDestTagSchema = tdNewSchema(numOfTags); + pDestTagSchema = tdNewSchema(numOfTags); for (int i = numOfColumns; i < totalCols; i++) { tdSchemaAddCol(pDestTagSchema, pSchema[i].type, htons(pSchema[i].colId), htons(pSchema[i].bytes)); } @@ -140,7 +142,7 @@ static int32_t vnodeProcessCreateTableMsg(SVnodeObj *pVnode, void *pCont, SRspRe char *pTagData = pTable->data + totalCols * sizeof(SSchema); int accumBytes = 0; - SDataRow dataRow = tdNewDataRowFromSchema(pDestTagSchema); + dataRow = tdNewDataRowFromSchema(pDestTagSchema); for (int i = 0; i < numOfTags; i++) { STColumn *pTCol = schemaColAt(pDestTagSchema, i); @@ -151,6 +153,8 @@ static int32_t vnodeProcessCreateTableMsg(SVnodeObj *pVnode, void *pCont, SRspRe } code = tsdbCreateTable(pVnode->tsdb, &tCfg); + tdFreeDataRow(dataRow); + tfree(pDestTagSchema); tfree(pDestSchema); dTrace("pVnode:%p vgId:%d, table:%s is created, result:%x", pVnode, pVnode->vgId, pTable->tableId, code); diff --git a/tests/pytest/insert/binary.py b/tests/pytest/insert/binary.py index 9989865f96af21d5d806c42660a79f1be62b5b4c..e254fb1438b7d7363dd2edb695087c95c2b10a91 100644 --- a/tests/pytest/insert/binary.py +++ b/tests/pytest/insert/binary.py @@ -27,8 +27,8 @@ class TDTestCase: tdSql.query('select speed from tb order by ts desc') tdLog.info('tdSql.checkRow(1)') tdSql.checkRows(1) - tdLog.info('tdSql.checkData(0, 0, 1234)') - tdSql.checkData(0, 0, 1234) + tdLog.info("tdSql.checkData(0, 0, '1234')") + tdSql.checkData(0, 0, '1234') tdLog.info('=============== step3') tdLog.info("insert into tb values (now+2a, '23456')") tdSql.execute("insert into tb values (now+2a, '23456')") @@ -37,8 +37,8 @@ class TDTestCase: tdLog.info('tdSql.checkRow(2)') tdSql.checkRows(2) tdLog.info('==> $data00') - tdLog.info('tdSql.checkData(0, 0, 23456)') - tdSql.checkData(0, 0, 23456) + tdLog.info("tdSql.checkData(0, 0, '23456')") + tdSql.checkData(0, 0, '23456') tdLog.info('=============== step4') tdLog.info("insert into tb values (now+3a, '345678')") tdSql.error("insert into tb values (now+3a, '345678')") @@ -49,8 +49,8 @@ class TDTestCase: tdLog.info('tdSql.checkRow(3)') tdSql.checkRows(3) tdLog.info('==> $data00') - tdLog.info('tdSql.checkData(0, 0, 34567)') - tdSql.checkData(0, 0, 34567) + tdLog.info("tdSql.checkData(0, 0, '34567')") + tdSql.checkData(0, 0, '34567') tdLog.info('drop database db') tdSql.execute('drop database db') tdLog.info('show databases') diff --git a/tests/pytest/util/sql.py b/tests/pytest/util/sql.py index a1f7dd2f6468be7dee1d23e3d64d6070e7540e28..0e7e186206b85f38babe3a9c0aceb42c996c0820 100644 --- a/tests/pytest/util/sql.py +++ b/tests/pytest/util/sql.py @@ -93,6 +93,9 @@ class TDSql: if data is None: tdLog.info("sql:%.40s, row:%d col:%d data:%s == expect:%s" % (self.sql, row, col, self.queryResult[row][col], data)) + elif isinstance(data, str): + tdLog.info("sql:%.40s, row:%d col:%d data:%s == expect:%s" % + (self.sql, row, col, self.queryResult[row][col], data)) elif isinstance(data, datetime.date): tdLog.info("sql:%.40s, row:%d col:%d data:%s == expect:%s" % (self.sql, row, col, self.queryResult[row][col], data)) diff --git a/tests/script/jenkins/basic.txt b/tests/script/jenkins/basic.txt new file mode 100644 index 0000000000000000000000000000000000000000..81f6bc55f79a43726b704ff3a261b32d2c053a3a --- /dev/null +++ b/tests/script/jenkins/basic.txt @@ -0,0 +1,63 @@ +cd ../../debug; cmake .. +#cd ../../debug; make clean +cd ../../debug; make + +cd ../../../debug; cmake .. +#cd ../../../debug; make clean +cd ../../../debug; make + +./test.sh -u -f unique/account/account_create.sim +./test.sh -u -f unique/account/account_delete.sim +./test.sh -u -f unique/account/account_len.sim +./test.sh -u -f unique/account/authority.sim +./test.sh -u -f unique/account/basic.sim +./test.sh -u -f unique/account/paras.sim +./test.sh -u -f unique/account/pass_alter.sim +./test.sh -u -f unique/account/pass_len.sim +./test.sh -u -f unique/account/usage.sim +./test.sh -u -f unique/account/user_create.sim +./test.sh -u -f unique/account/user_len.sim + +#big + +./test.sh -u -f unique/cluster/balance1.sim +./test.sh -u -f unique/cluster/balance2.sim +./test.sh -u -f unique/cluster/balance3.sim + +./test.sh -u -f unique/column/replica3.sim + +./test.sh -u -f unique/db/replica_add12.sim +./test.sh -u -f unique/db/replica_add13.sim +./test.sh -u -f unique/db/replica_add23.sim +./test.sh -u -f unique/db/replica_reduce21.sim +./test.sh -u -f unique/db/replica_reduce32.sim +./test.sh -u -f unique/db/replica_reduce31.sim +./test.sh -u -f unique/db/replica_part.sim + +./test.sh -u -f unique/dnode/balance1.sim +./test.sh -u -f unique/dnode/balance2.sim +./test.sh -u -f unique/dnode/balance3.sim +./test.sh -u -f unique/dnode/balancex.sim +./test.sh -u -f unique/dnode/offline1.sim +./test.sh -u -f unique/dnode/offline2.sim + +./test.sh -u -f unique/http/admin.sim + +#import + +#metrics + +./test.sh -u -f unique/mnode/mgmt22.sim +./test.sh -u -f unique/mnode/mgmt23.sim +./test.sh -u -f unique/mnode/mgmt24.sim +./test.sh -u -f unique/mnode/mgmt25.sim +./test.sh -u -f unique/mnode/mgmt26.sim +./test.sh -u -f unique/mnode/mgmt33.sim +./test.sh -u -f unique/mnode/mgmt34.sim + +#stream + +#table + +./test.sh -u -f unique/vnode/replica2_basic2.sim +./test.sh -u -f unique/vnode/replica3_basic.sim \ No newline at end of file diff --git a/tests/script/jenkins/basic1.txt b/tests/script/jenkins/basic1.txt deleted file mode 100644 index ef6d4e239b90879f7899bb22e54aa1b60e072266..0000000000000000000000000000000000000000 --- a/tests/script/jenkins/basic1.txt +++ /dev/null @@ -1,11 +0,0 @@ -./test.sh -f general/user/basic1.sim - -./test.sh -f general/db/basic1.sim -./test.sh -f general/db/basic2.sim -./test.sh -f general/db/basic3.sim -./test.sh -f general/db/basic4.sim -./test.sh -f general/db/basic5.sim - -./test.sh -f general/table/basic1.sim -./test.sh -f general/table/basic2.sim -./test.sh -f general/table/basic3.sim \ No newline at end of file diff --git a/tests/script/unique/account/authority.sim b/tests/script/unique/account/authority.sim index e6532458f0a83580ada801daed0829b8eaf398b0..4198f2c3335680b9da6b7514da6510f23a524798 100644 --- a/tests/script/unique/account/authority.sim +++ b/tests/script/unique/account/authority.sim @@ -227,7 +227,8 @@ print ============= step6 sql close sql connect owrite sleep 2000 - +sql reset query cache +sleep 1000 sql create database d1 sql create database d3 sql create table d1.t1 (ts timestamp, i int) diff --git a/tests/script/unique/account/testSuite.sim b/tests/script/unique/account/testSuite.sim index 38856196c28f1161ee4f4ba74bc7a462202f6890..9d4141cfe0c086f9a8863fffb00a9cb0f410e265 100644 --- a/tests/script/unique/account/testSuite.sim +++ b/tests/script/unique/account/testSuite.sim @@ -4,7 +4,7 @@ run unique/account/account_len.sim run unique/account/authority.sim run unique/account/basic.sim run unique/account/paras.sim -#run unique/account/pass_alter.sim +run unique/account/pass_alter.sim run unique/account/pass_len.sim run unique/account/usage.sim run unique/account/user_create.sim diff --git a/tests/script/unique/big/balance.sim b/tests/script/unique/big/balance.sim index 3ae30f283d6a21ee16e8b9b9779df528deb352df..270c3810a703edaa8d09e733b685689164248068 100644 --- a/tests/script/unique/big/balance.sim +++ b/tests/script/unique/big/balance.sim @@ -1,9 +1,3 @@ - - - - - - system sh/stop_dnodes.sh system sh/deploy.sh -n dnode1 -i 1 system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 4 diff --git a/tests/script/unique/cluster/balance1.sim b/tests/script/unique/cluster/balance1.sim index a7113b45359f6d23ac647b74c5a62bb8419ba423..50f56688f36ab4b95d6c59f6ce1c74953927b530 100644 --- a/tests/script/unique/cluster/balance1.sim +++ b/tests/script/unique/cluster/balance1.sim @@ -92,7 +92,7 @@ $x = 0 show2: $x = $x + 1 sleep 2000 - if $x == 30 then + if $x == 20 then return -1 endi sql show dnodes -x show2 @@ -134,7 +134,7 @@ $x = 0 show4: $x = $x + 1 sleep 2000 - if $x == 30 then + if $x == 20 then return -1 endi sql show dnodes -x show4 @@ -442,19 +442,24 @@ sql reset query cache sleep 1000 sql use c_b1_d1 -sql select * from c_b1_t1 +sql select * from c_b1_d1.c_b1_t1 +print $rows +print $data01 $data11 $data21 $data31 $data41 if $rows != 5 then return -1 endi sql use c_b1_d2 -sql select * from c_b1_t2 -if $rows == 6 then +sql select * from c_b1_d2.c_b1_t2 +print $rows +print $data01 $data11 $data21 $data31 $data41 +if $rows != 6 then return -1 endi sql use c_b1_d3 -sql select * from c_b1_t3 order by t desc +sql select * from c_b1_d3.c_b1_t3 order by t desc +print $rows print $data01 $data11 $data21 $data31 $data41 if $rows != 6 then return -1 @@ -464,11 +469,13 @@ if $data01 != 36 then endi sql use c_b1_d4 -sql select * from c_b1_t4 order by t desc +sql select * from c_b1_d4.c_b1_t4 order by t desc +print $rows print $data01 $data11 $data21 $data31 $data41 sql use c_b1_d5 -sql select * from c_b1_t5 order by t desc +sql select * from c_b1_d5.c_b1_t5 order by t desc +print $rows print $data01 $data11 $data21 $data31 $data41 if $data01 != 51 then return -1 @@ -487,7 +494,8 @@ if $data41 != 55 then endi sql use c_b1_d6 -sql select * from c_b1_t6 order by t desc +sql select * from c_b1_d6.c_b1_t6 order by t desc +print $rows print $data01 $data11 $data21 $data31 $data41 if $data01 != 61 then return -1 @@ -506,7 +514,8 @@ if $data41 != 65 then endi sql use c_b1_d7 -sql select * from c_b1_t7 order by t desc +sql select * from c_b1_d7.c_b1_t7 order by t desc +print $rows print $data01 $data11 $data21 $data31 $data41 if $data01 != 71 then return -1 @@ -525,7 +534,8 @@ if $data41 != 75 then endi sql use c_b1_d8 -sql select * from c_b1_t8 order by t desc +sql select * from c_b1_d8.c_b1_t8 order by t desc +print $rows print $data01 $data11 $data21 $data31 $data41 if $data01 != 81 then return -1 diff --git a/tests/script/unique/cluster/balance1_bug.sim b/tests/script/unique/cluster/balance1_bug.sim deleted file mode 100644 index d9f903d55e271b2ad08ecb1714b7858a7f7d5f88..0000000000000000000000000000000000000000 --- a/tests/script/unique/cluster/balance1_bug.sim +++ /dev/null @@ -1,789 +0,0 @@ -system sh/stop_dnodes.sh -system sh/deploy.sh -n dnode1 -i 1 -system sh/deploy.sh -n dnode2 -i 2 -system sh/deploy.sh -n dnode3 -i 3 -system sh/deploy.sh -n dnode4 -i 4 - -system sh/cfg.sh -n dnode1 -c numOfMPeers -v 3 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 3 -system sh/cfg.sh -n dnode3 -c numOfMPeers -v 3 -system sh/cfg.sh -n dnode4 -c numOfMPeers -v 3 - -system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 4 -system sh/cfg.sh -n dnode2 -c numOfTotalVnodes -v 4 -system sh/cfg.sh -n dnode3 -c numOfTotalVnodes -v 4 -system sh/cfg.sh -n dnode4 -c numOfTotalVnodes -v 4 - -system sh/cfg.sh -n dnode1 -c clog -v 1 -system sh/cfg.sh -n dnode2 -c clog -v 1 -system sh/cfg.sh -n dnode3 -c clog -v 1 -system sh/cfg.sh -n dnode4 -c clog -v 1 - -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 0 -system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 0 -system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 0 -system sh/cfg.sh -n dnode4 -c mgmtEqualVnodeNum -v 0 - -print ============== step1 -print ========= start dnode1 -system sh/exec_up.sh -n dnode1 -s start -sql connect - -sql create database c_b1_d1 tables 4 -sql use c_b1_d1 - -sql create table c_b1_t1 (t timestamp, i int) -sql insert into c_b1_t1 values(now+1s, 15) -sql insert into c_b1_t1 values(now+2s, 14) -sql insert into c_b1_t1 values(now+2s, 13) -sql insert into c_b1_t1 values(now+3s, 12) -sql insert into c_b1_t1 values(now+4s, 11) - -sql create database c_b1_d2 tables 4 -sql use c_b1_d2 -sql create table c_b1_t2 (t timestamp, i int) -sql insert into c_b1_t2 values(now+1s, 25) -sql insert into c_b1_t2 values(now+2s, 24) -sql insert into c_b1_t2 values(now+3s, 23) -sql insert into c_b1_t2 values(now+4s, 22) -sql insert into c_b1_t2 values(now+5s, 21) - -sql show dnodes -$dnode1Vnodes = $data2_1 -print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes - -if $dnode1Vnodes != 2 then - return -1 -endi -if $dnode2Vnodes != null then - return -1 -endi - -print ============================== step2 -print ========= start dnode2 -sleep 2000 -sql create dnode $hostname2 -system sh/exec_up.sh -n dnode2 -s start -sleep 5000 - -$x = 0 -show2: - $x = $x + 1 - sleep 2000 - if $x == 30 then - return -1 - endi -sql show dnodes -x show2 -$dnode1Vnodes = $data2_1 -print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes - -if $dnode1Vnodes != 3 then - goto show2 -endi -if $dnode2Vnodes != 3 then - goto show2 -endi - -sql show mnodes -$dnode1Role = $data2_1 -$dnode2Role = $data2_2 -$dnode3Role = $data2_3 -$dnode4Role = $data2_4 -print dnode1 ==> $dnode1Role -print dnode2 ==> $dnode2Role -print dnode3 ==> $dnode3Role -print dnode4 ==> $dnode4Role - -print ============================== step3 -print ========= add db3 -sql create database c_b1_d3 tables 4 -sql use c_b1_d3 -sql create table c_b1_t3 (t timestamp, i int) -sql insert into c_b1_t3 values(now+1s, 35) -sql insert into c_b1_t3 values(now+2s, 34) -sql insert into c_b1_t3 values(now+3s, 33) -sql insert into c_b1_t3 values(now+4s, 32) -sql insert into c_b1_t3 values(now+5s, 31) - -print ============================== step4 -print ========= drop dnode2 -sql drop dnode $hostname2 -sleep 9000 - -$x = 0 -show4: - $x = $x + 1 - sleep 2000 - if $x == 30 then - return -1 - endi -sql show dnodes -x show4 -$dnode1Vnodes = $data2_1 -print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes - -if $dnode1Vnodes != 1 then - goto show4 -endi -if $dnode2Vnodes != null then - goto show4 -endi - -sql show mnodes -$dnode1Role = $data2_1 -$dnode2Role = $data2_2 -$dnode3Role = $data2_3 -$dnode4Role = $data2_4 -print dnode1 ==> $dnode1Role -print dnode2 ==> $dnode2Role -print dnode3 ==> $dnode3Role -print dnode4 ==> $dnode4Role - -print ============================== step5 -print ========= add dnode2 -system sh/exec_up.sh -n dnode2 -s stop -x SIGINT -sleep 5000 -system sh/exec_up.sh -n dnode2 -s start -sql create dnode $hostname2 -sleep 9000 - -$x = 0 -show5: - $x = $x + 1 - sleep 2000 - if $x == 20 then - return -1 - endi -sql show dnodes -x show5 -$dnode1Vnodes = $data2_1 -print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes - -if $dnode1Vnodes != 2 then - goto show5 -endi -if $dnode2Vnodes != 3 then - goto show5 -endi - -sql show mnodes -$dnode1Role = $data2_1 -$dnode2Role = $data2_2 -$dnode3Role = $data2_3 -$dnode4Role = $data2_4 -print dnode1 ==> $dnode1Role -print dnode2 ==> $dnode2Role -print dnode3 ==> $dnode3Role -print dnode4 ==> $dnode4Role - -print ============================== step6 -print ========= drop dnode1 -system sh/exec_up.sh -n dnode1 -s stop -x SIGINT -print stop dnode1 and sleep 10000 -sleep 10000 - -sql drop dnode $hostname1 -print drop dnode1 and sleep 9000 -sleep 9000 - -$x = 0 -show6: - $x = $x + 1 - sleep 2000 - if $x == 30 then - return -1 - endi -sql show dnodes -x show6 -$dnode1Vnodes = $data2_1 -print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes - -if $dnode1Vnodes != null then - goto show6 -endi -if $dnode2Vnodes != 1 then - goto show6 -endi - -sql show mnodes -$dnode1Role = $data2_1 -$dnode2Role = $data2_2 -$dnode3Role = $data2_3 -$dnode4Role = $data2_4 -print dnode1 ==> $dnode1Role -print dnode2 ==> $dnode2Role -print dnode3 ==> $dnode3Role -print dnode4 ==> $dnode4Role - -print ============================== step7 -print ========= add dnode1 -sql create dnode $hostname1 -sleep 23000 -system sh/exec_up.sh -n dnode1 -s start -sleep 14000 - -$x = 0 -show7: - $x = $x + 1 - sleep 2000 - if $x == 20 then - return -1 - endi -sql show dnodes -x show7 -$dnode1Vnodes = $data2_1 -print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes - -if $dnode1Vnodes != 3 then - goto show7 -endi -if $dnode2Vnodes != 2 then - goto show7 -endi - -sql show mnodes -$dnode1Role = $data2_1 -$dnode2Role = $data2_2 -$dnode3Role = $data2_3 -$dnode4Role = $data2_4 -print dnode1 ==> $dnode1Role -print dnode2 ==> $dnode2Role -print dnode3 ==> $dnode3Role -print dnode4 ==> $dnode4Role - -print ============================== step8 -print ========= drop dnode2 -system sh/exec_up.sh -n dnode2 -s stop -x SIGINT -print stop dnode2 and sleep 10000 -sleep 20000 -sql drop dnode $hostname2 -print drop dnode2 and sleep 9000 -sleep 19000 - -$x = 0 -show8: - $x = $x + 1 - sleep 2000 - if $x == 30 then - return -1 - endi -sql show dnodes -x show8 -$dnode1Vnodes = $data2_1 -print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes - -if $dnode1Vnodes != 1 then - goto show8 -endi -if $dnode2Vnodes != null then - goto show8 -endi - -sql show mnodes -$dnode1Role = $data2_1 -$dnode2Role = $data2_2 -$dnode3Role = $data2_3 -$dnode4Role = $data2_4 -print dnode1 ==> $dnode1Role -print dnode2 ==> $dnode2Role -print dnode3 ==> $dnode3Role -print dnode4 ==> $dnode4Role - -if $dnode1Role != master then - return -1 -endi - -print ============================== step9 -print ========= add dnode2 -sql create dnode $hostname2 -system sh/exec_up.sh -n dnode2 -s start -sleep 9000 - -$x = 0 -show9: - $x = $x + 1 - sleep 2000 - if $x == 30 then - return -1 - endi -sql show dnodes -x show9 -$dnode1Vnodes = $data2_1 -print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes - -if $dnode1Vnodes != 2 then - goto show9 -endi -if $dnode2Vnodes != 3 then - goto show9 -endi - -sql show mnodes -$dnode1Role = $data2_1 -$dnode2Role = $data2_2 -$dnode3Role = $data2_3 -$dnode4Role = $data2_4 -print dnode1 ==> $dnode1Role -print dnode2 ==> $dnode2Role -print dnode3 ==> $dnode3Role -print dnode4 ==> $dnode4Role - -print ============================== step10 -print ========= add db4 -sql create database c_b1_d4 tables 4 -sql use c_b1_d4 -sql create table c_b1_t4 (t timestamp, i int) -sql insert into c_b1_t4 values(now+1s, 45) -sql insert into c_b1_t4 values(now+2s, 44) -sql insert into c_b1_t4 values(now+3s, 43) -sql insert into c_b1_t4 values(now+4s, 42) -sql insert into c_b1_t4 values(now+5s, 41) - -$x = 0 -show10: - $x = $x + 1 - sleep 2000 - if $x == 30 then - return -1 - endi -sql show dnodes -x show10 -$dnode1Vnodes = $data2_1 -print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes - -if $dnode1Vnodes != 2 then - goto show10 -endi -if $dnode2Vnodes != 2 then - goto show10 -endi - -sql use c_b1_d3 -sql insert into c_b1_t3 values(now+1s, 35) - -sql use c_b1_d2 -sql insert into c_b1_t2 values(now+1s, 25) - -sql show mnodes -$dnode1Role = $data2_1 -$dnode2Role = $data2_2 -print dnode1 ==> $dnode1Role -print dnode2 ==> $dnode2Role - -if $dnode1Role != master then - return -1 -endi - -print ============================== step11 -print ========= drop dnode2 -sleep 2000 -sql drop dnode $hostname2 -sleep 9000 - -$x = 0 -show11: - $x = $x + 1 - sleep 2000 - if $x == 20 then - return -1 - endi -sql show dnodes -x show11 -$dnode1Vnodes = $data2_1 -print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes - -if $dnode1Vnodes != 0 then - goto show11 -endi -if $dnode2Vnodes != null then - goto show11 -endi - -sql show mnodes -$dnode1Role = $data2_1 -$dnode2Role = $data2_2 -$dnode3Role = $data2_3 -$dnode4Role = $data2_4 -print dnode1 ==> $dnode1Role -print dnode2 ==> $dnode2Role -print dnode3 ==> $dnode3Role -print dnode4 ==> $dnode4Role - -system sh/exec_up.sh -n dnode2 -s stop -x SIGINT - -print ============================== step12 -print ========= add db5 -sql create database c_b1_d5 tables 4 -sql use c_b1_d5 -sql create table c_b1_t5 (t timestamp, i int) -x error3 -print no enough vnodes, but create success -return -1 -error3: - -print ============================== step13 -print ========= add dnode2 -sql create dnode $hostname2 -system sh/exec_up.sh -n dnode2 -s start -sleep 9000 - -sql show mnodes -$dnode1Role = $data2_1 -$dnode2Role = $data2_2 -$dnode3Role = $data2_3 -$dnode4Role = $data2_4 -print dnode1 ==> $dnode1Role -print dnode2 ==> $dnode2Role -print dnode3 ==> $dnode3Role -print dnode4 ==> $dnode4Role - -sql use c_b1_d5; -$x = 0 -create5: - $x = $x + 1 - sleep 1000 - if $x == 50 then - return -1 - endi -sql create table c_b1_t5 (t timestamp, i int) -x create5 -sql insert into c_b1_t5 values(now+1s, 55) -sql insert into c_b1_t5 values(now+2s, 54) -sql insert into c_b1_t5 values(now+3s, 53) -sql insert into c_b1_t5 values(now+4s, 52) -sql insert into c_b1_t5 values(now+5s, 51) - -sql create database c_b1_d6 -sql use c_b1_d6 -$x = 0 -create6: - $x = $x + 1 - sleep 1000 - if $x == 50 then - return -1 - endi -sql create table c_b1_t6 (t timestamp, i int) -x create6 -sql insert into c_b1_t6 values(now+1s, 65) -sql insert into c_b1_t6 values(now+2s, 64) -sql insert into c_b1_t6 values(now+3s, 63) -sql insert into c_b1_t6 values(now+4s, 62) -sql insert into c_b1_t6 values(now+5s, 61) - -sql show dnodes -$dnode1Vnodes = $data2_1 -print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes - -#if $dnode1Vnodes != 1 then -# return -1 -#endi -#if $dnode2Vnodes != 1 then -# return -1 -#endi - -print ============================== step14 -print ========= add dnode3 - -sql show mnodes -$dnode1Role = $data2_1 -$dnode2Role = $data2_2 -$dnode3Role = $data2_3 -$dnode4Role = $data2_4 -print dnode1 ==> $dnode1Role -print dnode2 ==> $dnode2Role -print dnode3 ==> $dnode3Role -print dnode4 ==> $dnode4Role - -sleep 2000 -sql create dnode $hostname3 -system sh/exec_up.sh -n dnode3 -s start -sleep 15000 - -$x = 0 -show14: - $x = $x + 1 - sleep 2000 - if $x == 30 then - return -1 - endi -sql show dnodes -x show14 -$dnode1Vnodes = $data2_1 -print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes - -if $dnode1Vnodes != 2 then - goto show14 -endi -if $dnode2Vnodes != 2 then - goto show14 -endi -if $dnode3Vnodes != 2 then - goto show14 -endi - -sql show mnodes -$dnode1Role = $data2_1 -$dnode2Role = $data2_2 -$dnode3Role = $data2_3 -print dnode1 ==> $dnode1Role -print dnode2 ==> $dnode2Role -print dnode3 ==> $dnode3Role - -print ============================== step15 -print ========= create db7 db8 - -sql create database c_b1_d7 tables 4 -sql use c_b1_d7 -sql create table c_b1_t7 (t timestamp, i int) -sql insert into c_b1_t7 values(now+1s, 75) -sql insert into c_b1_t7 values(now+2s, 74) -sql insert into c_b1_t7 values(now+3s, 73) -sql insert into c_b1_t7 values(now+4s, 72) -sql insert into c_b1_t7 values(now+5s, 71) - -sql create database c_b1_d8 -sql use c_b1_d8 -sql create table c_b1_t8 (t timestamp, i int) -sql insert into c_b1_t8 values(now+1s, 85) -sql insert into c_b1_t8 values(now+2s, 84) -sql insert into c_b1_t8 values(now+3s, 83) -sql insert into c_b1_t8 values(now+4s, 82) -sql insert into c_b1_t8 values(now+5s, 81) - -sql show mnodes -$dnode1Role = $data2_1 -$dnode2Role = $data2_2 -$dnode3Role = $data2_3 -$dnode4Role = $data2_4 -print dnode1 ==> $dnode1Role -print dnode2 ==> $dnode2Role -print dnode3 ==> $dnode3Role -print dnode4 ==> $dnode4Role - -print ========== add dnode4 -sleep 2000 -sql create dnode $hostname4 -print sql create dnode $hostname4 over -system sh/exec_up.sh -n dnode4 -s start -print sleep 12000 -sleep 12000 -print sleep 12000 over - -$x = 0 -show15: - $x = $x + 1 - sleep 2000 - if $x == 15 then - return -1 - endi -sql show dnodes -x show15 -$dnode1Vnodes = $data2_1 -print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes -$dnode4Vnodes = $data2_4 -print dnode4 $dnode4Vnodes - -if $dnode1Vnodes != 2 then - goto show15 -endi -if $dnode2Vnodes != 2 then - goto show15 -endi -if $dnode3Vnodes != 2 then - goto show15 -endi -if $dnode4Vnodes != 2 then - goto show15 -endi - -print ============================== step16 -print ========= drop dnode4, create db9 - -sql drop dnode $hostname4 -sleep 10000 -sql create database c_b1_d9 tables 4 -sql use c_b1_d9 -sql create table c_b1_t9 (t timestamp, i int) -sql insert into c_b1_t9 values(now+1s, 95) -sql insert into c_b1_t9 values(now+2s, 94) -sql insert into c_b1_t9 values(now+3s, 93) -sql insert into c_b1_t9 values(now+4s, 92) -sql insert into c_b1_t9 values(now+5s, 91) - -system sh/exec_up.sh -n dnode4 -s stop -x SIGINT - -$x = 0 -show16: - $x = $x + 1 - sleep 2000 - if $x == 30 then - return -1 - endi -sql show dnodes -x show16 -$dnode1Vnodes = $data2_1 -print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes - -if $dnode1Vnodes != 1 then - goto show16 -endi -if $dnode2Vnodes != 1 then - goto show16 -endi -if $dnode3Vnodes != 1 then - goto show16 -endi - -print ============================== step17 -print ========= check data - -sleep 2000 - -sql use c_b1_d1 -sql select * from c_b1_t1 order by t desc -x s1 -s1: - -sql use c_b1_d2 -sql select * from c_b1_t2 order by t desc -x s2 -print $data01 $data11 $data21 $data31 $data41 - -if $data01 != 25 then - return -1 -endi - -if $data11 != 21 then - return -1 -endi -if $data21 != 22 then - return -1 -endi -if $data31 != 23 then - return -1 -endi -if $data41 != 24 then - return -1 -endi -s2: - -sql use c_b1_d3 -sql select * from c_b1_t3 order by t desc -x s3 -print $data01 $data11 $data21 $data31 $data41 -if $data01 != 35 then - return -1 -endi -s3: - -sql use c_b1_d4 -sql select * from c_b1_d4.c_b1_t4 order by t desc -x s4 -print $data01 $data11 $data21 $data31 $data41 -s4: - - -sql use c_b1_d5 -sql select * from c_b1_d5.c_b1_t5 order by t desc -x s5 -print $data01 $data11 $data21 $data31 $data41 -if $data01 != 51 then - return -1 -endi -if $data11 != 52 then - return -1 -endi -if $data21 != 53 then - return -1 -endi -if $data31 != 54 then - return -1 -endi -if $data41 != 55 then - return -1 -endi -s5: - -sql use c_b1_d6 -sql select * from c_b1_d6.c_b1_t6 order by t desc -x s6 -print $data01 $data11 $data21 $data31 $data41 -if $data01 != 61 then - return -1 -endi -if $data11 != 62 then - return -1 -endi -if $data21 != 63 then - return -1 -endi -if $data31 != 64 then - return -1 -endi -if $data41 != 65 then - return -1 -endi -s6: - -sql use c_b1_d7 -sql select * from c_b1_d7.c_b1_t7 order by t desc -x s7 -print $data01 $data11 $data21 $data31 $data41 -if $data01 != 71 then - return -1 -endi -if $data11 != 72 then - return -1 -endi -if $data21 != 73 then - return -1 -endi -if $data31 != 74 then - return -1 -endi -if $data41 != 75 then - return -1 -endi -s7: - -sql use c_b1_d9 -sql select * from c_b1_t9 order by t desc -x s8 -print $data01 $data11 $data21 $data31 $data41 -if $data01 != 91 then - return -1 -endi -if $data11 != 92 then - return -1 -endi -if $data21 != 93 then - return -1 -endi -if $data31 != 94 then - return -1 -endi -if $data41 != 95 then - return -1 -endi -s8: - -print ============================================ over -system sh/exec_up.sh -n dnode1 -s stop -x SIGINT -system sh/exec_up.sh -n dnode2 -s stop -x SIGINT -system sh/exec_up.sh -n dnode3 -s stop -x SIGINT -system sh/exec_up.sh -n dnode4 -s stop -x SIGINT - - - diff --git a/tests/script/unique/cluster/balance1_single.sim b/tests/script/unique/cluster/balance1_single.sim deleted file mode 100644 index be46186a595a38e9d91d4423a47b9432fc995ef0..0000000000000000000000000000000000000000 --- a/tests/script/unique/cluster/balance1_single.sim +++ /dev/null @@ -1,716 +0,0 @@ -system sh/stop_dnodes.sh -system sh/deploy.sh -n dnode1 -i 1 -system sh/deploy.sh -n dnode2 -i 2 -system sh/deploy.sh -n dnode3 -i 3 -system sh/deploy.sh -n dnode4 -i 4 -system sh/deploy.sh -n dnode5 -i 5 - -system sh/cfg.sh -n dnode1 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode4 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode5 -c numOfMPeers -v 1 - -system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 4 -system sh/cfg.sh -n dnode2 -c numOfTotalVnodes -v 4 -system sh/cfg.sh -n dnode3 -c numOfTotalVnodes -v 4 -system sh/cfg.sh -n dnode4 -c numOfTotalVnodes -v 4 -system sh/cfg.sh -n dnode5 -c numOfTotalVnodes -v 4 - -system sh/cfg.sh -n dnode1 -c clog -v 1 -system sh/cfg.sh -n dnode2 -c clog -v 1 -system sh/cfg.sh -n dnode3 -c clog -v 1 -system sh/cfg.sh -n dnode4 -c clog -v 1 -system sh/cfg.sh -n dnode5 -c clog -v 1 - -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode4 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode5 -c mgmtEqualVnodeNum -v 4 - -print ============== step1 -print ========= start dnode1 -system sh/exec_up.sh -n dnode1 -s start -sleep 3000 -sql connect -sql create dnode $hostname2 -system sh/exec_up.sh -n dnode2 -s start - -$x = 0 -show1: - $x = $x + 1 - sleep 1000 - if $x == 50 then - return -1 - endi -sql show dnodes -x show1 -$dnode1Vnodes = $data2_1 -print dnode1 $dnode2Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode3Vnodes - -if $dnode1Vnodes != 4 then - goto show1 -endi -if $dnode2Vnodes != 4 then - goto show1 -endi -sleep 1000 - -sql create database c_b1_d1 tables 4 -sql use c_b1_d1 - -sql create table c_b1_t1 (t timestamp, i int) -sql insert into c_b1_t1 values(now+1s, 15) -sql insert into c_b1_t1 values(now+2s, 14) -sql insert into c_b1_t1 values(now+2s, 13) -sql insert into c_b1_t1 values(now+3s, 12) -sql insert into c_b1_t1 values(now+4s, 11) - -sql create database c_b1_d2 tables 4 -sql use c_b1_d2 -sql create table c_b1_t2 (t timestamp, i int) -sql insert into c_b1_t2 values(now+1s, 25) -sql insert into c_b1_t2 values(now+2s, 24) -sql insert into c_b1_t2 values(now+3s, 23) -sql insert into c_b1_t2 values(now+4s, 22) -sql insert into c_b1_t2 values(now+5s, 21) - -sql show dnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes - -if $dnode2Vnodes != 2 then - return -1 -endi -if $dnode3Vnodes != null then - return -1 -endi - -print ============================== step2 -print ========= start dnode3 -sleep 3000 -sql create dnode $hostname3 -system sh/exec_up.sh -n dnode3 -s start -sleep 8000 - -$x = 0 -show2: - $x = $x + 1 - sleep 1000 - if $x == 50 then - return -1 - endi -sql show dnodes -x show2 -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes - -if $dnode2Vnodes != 3 then - goto show2 -endi -if $dnode3Vnodes != 3 then - goto show2 -endi - -sql show mnodes -$dnode1Role = $data2_1 -$dnode2Role = $data2_2 -$dnode3Role = $data2_3 -$dnode4Role = $data2_4 -print dnode1 ==> $dnode1Role -print dnode2 ==> $dnode2Role -print dnode3 ==> $dnode3Role -print dnode4 ==> $dnode4Role - -print ============================== step3 -print ========= add db3 -sql create database c_b1_d3 tables 4 -sql use c_b1_d3 -sql create table c_b1_t3 (t timestamp, i int) -sql insert into c_b1_t3 values(now+1s, 35) -sql insert into c_b1_t3 values(now+2s, 34) -sql insert into c_b1_t3 values(now+3s, 33) -sql insert into c_b1_t3 values(now+4s, 32) -sql insert into c_b1_t3 values(now+5s, 31) - - -print ============================== step4 -print ========= drop dnode3 -sql drop dnode $hostname3 -sleep 9000 - -$x = 0 -show4: - $x = $x + 1 - sleep 1000 - if $x == 50 then - return -1 - endi -sql show dnodes -x show4 -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes - -if $dnode2Vnodes != 1 then - goto show4 -endi -if $dnode3Vnodes != null then - goto show4 -endi - -sql show mnodes -$dnode1Role = $data2_1 -$dnode2Role = $data2_2 -$dnode3Role = $data2_3 -$dnode4Role = $data2_4 -print dnode1 ==> $dnode1Role -print dnode2 ==> $dnode2Role -print dnode3 ==> $dnode3Role -print dnode4 ==> $dnode4Role - -print ============================== step5 -print ========= add dnode3 -system sh/exec_up.sh -n dnode3 -s stop -x SIGINT -sleep 5000 -system sh/exec_up.sh -n dnode3 -s start -sql create dnode $hostname3 -sleep 9000 - -$x = 0 -show5: - $x = $x + 1 - sleep 1000 - if $x == 50 then - return -1 - endi -sql show dnodes -x show5 -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes - -if $dnode2Vnodes != 2 then - goto show5 -endi -if $dnode3Vnodes != 3 then - goto show5 -endi - -print ============================== step6 -print ========= drop dnode2 -system sh/exec_up.sh -n dnode2 -s stop -x SIGINT -print stop dnode2 and sleep 10000 -sleep 10000 - -sql drop dnode $hostname2 -print drop dnode2 and sleep 9000 -sleep 9000 - -$x = 0 -show6: - $x = $x + 1 - sleep 2000 - if $x == 30 then - return -1 - endi -sql show dnodes -x show6 -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes - -if $dnode2Vnodes != null then - goto show6 -endi -if $dnode3Vnodes != 1 then - goto show6 -endi - -#only c_b2_d2 has data, c_b1_d1 and c_b1_d3 is null - -print ============================== step7 -print ========= add dnode2 -sql create dnode $hostname2 -system sh/exec_up.sh -n dnode2 -s start -sleep 9000 - -$x = 0 -show7: - $x = $x + 1 - sleep 1000 - if $x == 50 then - return -1 - endi -sql show dnodes -x show7 -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes - -if $dnode2Vnodes != 3 then - goto show7 -endi -if $dnode3Vnodes != 2 then - goto show7 -endi - -print ============================== step8 -print ========= drop dnode3 -system sh/exec_up.sh -n dnode3 -s stop -x SIGINT -print stop dnode3 and sleep 10000 -sleep 10000 -sql drop dnode $hostname3 -print drop dnode3 and sleep 9000 -sleep 9000 - -$x = 0 -show8: - $x = $x + 1 - sleep 1000 - if $x == 50 then - return -1 - endi -sql show dnodes -x show8 -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes - -if $dnode2Vnodes != 1 then - goto show8 -endi -if $dnode3Vnodes != null then - goto show8 -endi - -print ============================== step9 -print ========= add dnode3 -sql create dnode $hostname3 -system sh/exec_up.sh -n dnode3 -s start -sleep 9000 - -$x = 0 -show9: - $x = $x + 1 - sleep 1000 - if $x == 50 then - return -1 - endi -sql show dnodes -x show9 -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes - -if $dnode2Vnodes != 2 then - goto show9 -endi -if $dnode3Vnodes != 3 then - goto show9 -endi - -print ============================== step10 -print ========= add db4 -sql create database c_b1_d4 tables 4 -sql use c_b1_d4 -sql create table c_b1_t4 (t timestamp, i int) -sql insert into c_b1_t4 values(now+1s, 45) -sql insert into c_b1_t4 values(now+2s, 44) -sql insert into c_b1_t4 values(now+3s, 43) -sql insert into c_b1_t4 values(now+4s, 42) -sql insert into c_b1_t4 values(now+5s, 41) - -$x = 0 -show10: - $x = $x + 1 - sleep 1000 - if $x == 50 then - return -1 - endi -sql show dnodes -x show10 -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes - -if $dnode2Vnodes != 2 then - goto show10 -endi -if $dnode3Vnodes != 2 then - goto show10 -endi - -sql use c_b1_d3 -sql insert into c_b1_t3 values(now+1s, 35) - -sql use c_b1_d2 -sql insert into c_b1_t2 values(now+1s, 25) - -print ============================== step11 -print ========= drop dnode3 -sql drop dnode $hostname3 -sleep 9000 - -$x = 0 -show11: - $x = $x + 1 - sleep 1000 - if $x == 50 then - return -1 - endi -sql show dnodes -x show11 -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes - -if $dnode2Vnodes != 0 then - goto show11 -endi -if $dnode3Vnodes != null then - goto show11 -endi - -system sh/exec_up.sh -n dnode3 -s stop -x SIGINT - -print ============================== step12 -print ========= add db5 -sql create database c_b1_d5 tables 4 -sql use c_b1_d5 - -print ============================== step13 -print ========= add dnode3 -sql create dnode $hostname3 -system sh/exec_up.sh -n dnode3 -s start -sleep 9000 - -sql use c_b1_d5; -$x = 0 -create5: - $x = $x + 1 - sleep 1000 - if $x == 50 then - return -1 - endi -sql create table c_b1_t5 (t timestamp, i int) -x create5 -sql insert into c_b1_t5 values(now+1s, 55) -sql insert into c_b1_t5 values(now+2s, 54) -sql insert into c_b1_t5 values(now+3s, 53) -sql insert into c_b1_t5 values(now+4s, 52) -sql insert into c_b1_t5 values(now+5s, 51) - -sql create database c_b1_d6 tables 4 -sql use c_b1_d6 -$x = 0 -create6: - $x = $x + 1 - sleep 1000 - if $x == 20 then - return -1 - endi -sql create table c_b1_t6 (t timestamp, i int) -x create6 -sql insert into c_b1_t6 values(now+1s, 65) -sql insert into c_b1_t6 values(now+2s, 64) -sql insert into c_b1_t6 values(now+3s, 63) -sql insert into c_b1_t6 values(now+4s, 62) -sql insert into c_b1_t6 values(now+5s, 61) - -sql show dnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes - -#if $dnode2Vnodes != 1 then -# return -1 -#endi -#if $dnode3Vnodes != 1 then -# return -1 -#endi - -print ============================== step14 -print ========= add dnode4 -sql create dnode $hostname4 -system sh/exec_up.sh -n dnode4 -s start -sleep 10000 - -$x = 0 -show14: - $x = $x + 1 - sleep 1000 - if $x == 50 then - return -1 - endi -sql show dnodes -x show14 -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes -$dnode4Vnodes = $data2_4 -print dnode4 $dnode4Vnodes - -if $dnode2Vnodes != 2 then - goto show14 -endi -if $dnode3Vnodes != 2 then - goto show14 -endi -if $dnode4Vnodes != 2 then - goto show14 -endi - -print ============================== step15 -print ========= create db7 db8 - -sql create database c_b1_d7 tables 4 -sql use c_b1_d7 -sql create table c_b1_t7 (t timestamp, i int) -sql insert into c_b1_t7 values(now+1s, 75) -sql insert into c_b1_t7 values(now+2s, 74) -sql insert into c_b1_t7 values(now+3s, 73) -sql insert into c_b1_t7 values(now+4s, 72) -sql insert into c_b1_t7 values(now+5s, 71) - -sql create database c_b1_d8 tables 4 -sql use c_b1_d8 -sql create table c_b1_t8 (t timestamp, i int) -sql insert into c_b1_t8 values(now+1s, 85) -sql insert into c_b1_t8 values(now+2s, 84) -sql insert into c_b1_t8 values(now+3s, 83) -sql insert into c_b1_t8 values(now+4s, 82) -sql insert into c_b1_t8 values(now+5s, 81) - - -print ========== add dnode5 -sql create dnode $hostname5 -print sql create dnode $hostname5 over -system sh/exec_up.sh -n dnode5 -s start -print sleep 12000 -sleep 12000 -print sleep 12000 over - -$x = 0 -show15: - $x = $x + 1 - sleep 1000 - if $x == 30 then - return -1 - endi -sql show dnodes -x show15 -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes -$dnode4Vnodes = $data2_4 -print dnode4 $dnode4Vnodes -$dnode5Vnodes = $data2_5 -print dnode5 $dnode5Vnodes - -if $dnode2Vnodes != 2 then - goto show15 -endi -if $dnode3Vnodes != 2 then - goto show15 -endi -if $dnode4Vnodes != 2 then - goto show15 -endi -if $dnode5Vnodes != 2 then - goto show15 -endi - -print ============================== step16 -print ========= drop dnode5, create db9 - -sql drop dnode $hostname5 -sleep 10000 -sql create database c_b1_d9 tables 4 -sql use c_b1_d9 -sql create table c_b1_t9 (t timestamp, i int) -sql insert into c_b1_t9 values(now+1s, 95) -sql insert into c_b1_t9 values(now+2s, 94) -sql insert into c_b1_t9 values(now+3s, 93) -sql insert into c_b1_t9 values(now+4s, 92) -sql insert into c_b1_t9 values(now+5s, 91) - -system sh/exec_up.sh -n dnode5 -s stop -x SIGINT - -$x = 0 -show16: - $x = $x + 1 - sleep 1000 - if $x == 50 then - return -1 - endi -sql show dnodes -x show16 -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes -$dnode4Vnodes = $data2_4 -print dnode4 $dnode4Vnodes - -if $dnode2Vnodes != 1 then - goto show16 -endi -if $dnode3Vnodes != 1 then - goto show16 -endi -if $dnode4Vnodes != 1 then - goto show16 -endi - -print ============================== step17 -print ========= check data - -sql use c_b1_d1 -sql select * from c_b1_t1 -if $rows != 0 then - return -1 -endi - -sql use c_b1_d2 -sql select * from c_b1_t2 -if $rows != 6 then - return -1 -endi - -sql use c_b1_d3 -sql select * from c_b1_t3 order by t desc -print $data01 $data11 $data21 $data31 $data41 -if $rows != 1 then - return -1 -endi -if $data01 != 35 then - return -1 -endi - -sql use c_b1_d4 -sql select * from c_b1_t4 order by t desc -print $data01 $data11 $data21 $data31 $data41 -if $data01 != 41 then - return -1 -endi -if $data11 != 42 then - return -1 -endi -if $data21 != 43 then - return -1 -endi -if $data31 != 44 then - return -1 -endi -if $data41 != 45 then - return -1 -endi - -sql use c_b1_d5 -sql select * from c_b1_t5 order by t desc -print $data01 $data11 $data21 $data31 $data41 -if $data01 != 51 then - return -1 -endi -if $data11 != 52 then - return -1 -endi -if $data21 != 53 then - return -1 -endi -if $data31 != 54 then - return -1 -endi -if $data41 != 55 then - return -1 -endi - -sql use c_b1_d6 -sql select * from c_b1_t6 order by t desc -print $data01 $data11 $data21 $data31 $data41 -if $data01 != 61 then - return -1 -endi -if $data11 != 62 then - return -1 -endi -if $data21 != 63 then - return -1 -endi -if $data31 != 64 then - return -1 -endi -if $data41 != 65 then - return -1 -endi - -sql use c_b1_d7 -sql select * from c_b1_t7 order by t desc -print $data01 $data11 $data21 $data31 $data41 -if $data01 != 71 then - return -1 -endi -if $data11 != 72 then - return -1 -endi -if $data21 != 73 then - return -1 -endi -if $data31 != 74 then - return -1 -endi -if $data41 != 75 then - return -1 -endi - -sql use c_b1_d8 -sql select * from c_b1_t8 order by t desc -print $data01 $data11 $data21 $data31 $data41 -if $data01 != 81 then - return -1 -endi -if $data11 != 82 then - return -1 -endi -if $data21 != 83 then - return -1 -endi -if $data31 != 84 then - return -1 -endi -if $data41 != 85 then - return -1 -endi - -sql use c_b1_d9 -sql select * from c_b1_t9 order by t desc -print $data01 $data11 $data21 $data31 $data41 -if $data01 != 91 then - return -1 -endi -if $data11 != 92 then - return -1 -endi -if $data21 != 93 then - return -1 -endi -if $data31 != 94 then - return -1 -endi -if $data41 != 95 then - return -1 -endi - - -print ============================================ over -#system sh/exec_up.sh -n dnode2 -s stop -x SIGINT -#system sh/exec_up.sh -n dnode3 -s stop -x SIGINT -#system sh/exec_up.sh -n dnode4 -s stop -x SIGINT -#system sh/exec_up.sh -n dnode5 -s stop -x SIGINT - - - diff --git a/tests/script/unique/cluster/balance2.sim b/tests/script/unique/cluster/balance2.sim index 907b344140e067ca7a8dfab862ad7b2a612428bf..04ab5f8fe4f126bf1254209254abe8ed6ce0f4fd 100644 --- a/tests/script/unique/cluster/balance2.sim +++ b/tests/script/unique/cluster/balance2.sim @@ -128,13 +128,13 @@ print dnode2 $dnode2Vnodes $dnode3Vnodes = $data2_3 print dnode3 $dnode3Vnodes -if $dnode1Vnodes != 1 then +if $dnode1Vnodes != 3 then goto show2 endi if $dnode2Vnodes != null then goto show2 endi -if $dnode3Vnodes != 1 then +if $dnode3Vnodes != 3 then goto show2 endi @@ -151,18 +151,9 @@ print dnode4 ==> $dnode4Role system sh/exec_up.sh -n dnode2 -s stop -x SIGINT print ============================== step3 -print ========= start dnode2 -sql create dnode $hostname2 - -sleep 3000 -system sh/deploy.sh -n dnode2 -i 2 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 3 -system sh/cfg.sh -n dnode2 -c numOfTotalVnodes -v 4 -system sh/cfg.sh -n dnode2 -c clog -v 1 -system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 0 -sleep 3000 - -system sh/exec_up.sh -n dnode2 -s start +print ========= start dnode4 +sql create dnode $hostname4 +system sh/exec_up.sh -n dnode4 -s start sleep 10000 $x = 0 @@ -175,15 +166,15 @@ show3: sql show dnodes -x show3 $dnode1Vnodes = $data2_1 print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes +$dnode4Vnodes = $data2_4 +print dnode4 $dnode4Vnodes $dnode3Vnodes = $data2_3 print dnode3 $dnode3Vnodes if $dnode1Vnodes != 2 then goto show3 endi -if $dnode2Vnodes != 2 then +if $dnode4Vnodes != 2 then goto show3 endi if $dnode3Vnodes != 2 then @@ -200,6 +191,20 @@ print dnode2 ==> $dnode2Role print dnode3 ==> $dnode3Role print dnode4 ==> $dnode4Role +if $dnode1Role != master then + return -1 +endi +if $dnode2Role != null then + return -1 +endi +if $dnode3Role != slave then + return -1 +endi + +if $dnode4Role != slave then + return -1 +endi + print ============================== step4 print ========= drop dnode3 sql drop dnode $hostname3 @@ -215,15 +220,15 @@ show4: sql show dnodes -x show4 $dnode1Vnodes = $data2_1 print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes +$dnode4Vnodes = $data2_4 +print dnode4 $dnode4Vnodes $dnode3Vnodes = $data2_3 print dnode3 $dnode3Vnodes -if $dnode1Vnodes != 1 then +if $dnode1Vnodes != 3 then goto show4 endi -if $dnode2Vnodes != 1 then +if $dnode4Vnodes != 3 then goto show4 endi if $dnode3Vnodes != null then @@ -240,21 +245,26 @@ print dnode2 ==> $dnode2Role print dnode3 ==> $dnode3Role print dnode4 ==> $dnode4Role +if $dnode1Role != master then + return -1 +endi +if $dnode2Role != null then + return -1 +endi +if $dnode3Role != null then + return -1 +endi + +if $dnode4Role != slave then + return -1 +endi + system sh/exec_up.sh -n dnode3 -s stop -x SIGINT print ============================== step5 print ========= start dnode3 -sql create dnode $hostname3 - -sleep 3000 -system sh/deploy.sh -n dnode3 -i 3 -system sh/cfg.sh -n dnode3 -c numOfMPeers -v 3 -system sh/cfg.sh -n dnode3 -c numOfTotalVnodes -v 4 -system sh/cfg.sh -n dnode3 -c clog -v 1 -system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 0 -sleep 3000 - -system sh/exec_up.sh -n dnode3 -s start +sql create dnode $hostname5 +system sh/exec_up.sh -n dnode5 -s start sleep 9000 $x = 0 @@ -267,33 +277,30 @@ show5: sql show dnodes -x show5 $dnode1Vnodes = $data2_1 print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes +$dnode4Vnodes = $data2_4 +print dnode4 $dnode4Vnodes +$dnode5Vnodes = $data2_5 +print dnode5 $dnode5Vnodes if $dnode1Vnodes != 2 then goto show5 endi -if $dnode2Vnodes != 2 then +if $dnode4Vnodes != 2 then goto show5 endi -if $dnode3Vnodes != 2 then +if $dnode5Vnodes != 2 then goto show5 endi sql show mnodes $dnode1Role = $data2_1 -$dnode2Role = $data2_2 -$dnode3Role = $data2_3 $dnode4Role = $data2_4 +$dnode5Role = $data2_5 print dnode1 ==> $dnode1Role -print dnode2 ==> $dnode2Role -print dnode3 ==> $dnode3Role print dnode4 ==> $dnode4Role +print dnode5 ==> $dnode5Role print ============================== step6 -print ========= drop dnode1 system sh/exec_up.sh -n dnode1 -s stop -x SIGINT print stop dnode1 and sleep 10000 sleep 10000 @@ -302,347 +309,63 @@ sql drop dnode $hostname1 print drop dnode1 and sleep 9000 sleep 9000 -$x = 0 -show6: - $x = $x + 1 - sleep 2000 - if $x == 30 then - return -1 - endi -sql show dnodes -x show6 -$dnode1Vnodes = $data2_1 -print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes - -if $dnode1Vnodes != null then - goto show6 -endi -if $dnode2Vnodes != 1 then - goto show6 -endi -if $dnode3Vnodes != 1 then - goto show6 -endi - sql show mnodes $dnode1Role = $data2_1 -$dnode2Role = $data2_2 -$dnode3Role = $data2_3 $dnode4Role = $data2_4 +$dnode5Role = $data2_5 print dnode1 ==> $dnode1Role -print dnode2 ==> $dnode2Role -print dnode3 ==> $dnode3Role print dnode4 ==> $dnode4Role +print dnode5 ==> $dnode5Role -print ============================== step7 -print ========= start dnode1 -sql create dnode $hostname1 - -sql show mnodes -$dnode1Role = $data2_1 -$dnode2Role = $data2_2 -$dnode3Role = $data2_3 -$dnode4Role = $data2_4 -print dnode1 ==> $dnode1Role -print dnode2 ==> $dnode2Role -print dnode3 ==> $dnode3Role -print dnode4 ==> $dnode4Role - -sleep 3000 -system sh/deploy.sh -n dnode1 -i 1 -system sh/cfg.sh -n dnode1 -c numOfMPeers -v 3 -system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 4 -system sh/cfg.sh -n dnode1 -c clog -v 1 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 0 -sleep 3000 - -system sh/exec_up.sh -n dnode1 -s start -sleep 9000 - -$x = 0 - -show7: - sql show mnodes - $dnode1Role = $data2_1 - $dnode2Role = $data2_2 - $dnode3Role = $data2_3 - $dnode4Role = $data2_4 - print dnode1 ==> $dnode1Role - print dnode2 ==> $dnode2Role - print dnode3 ==> $dnode3Role - print dnode4 ==> $dnode4Role - - $x = $x + 1 - sleep 2000 - if $x == 30 then - return -1 - endi -sql show dnodes -x show7 -$dnode1Vnodes = $data2_1 -print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes - -if $dnode1Vnodes != 2 then - goto show7 -endi -if $dnode2Vnodes != 2 then - goto show7 -endi -if $dnode3Vnodes != 2 then - goto show7 -endi - -print ============================== step8 -print ========= add db4 - -sql create database c_b2_d4 replica 2 tables 4 -sql use c_b2_d4 -sql create table c_b2_t4 (t timestamp, i int) -sql insert into c_b2_t4 values(1520000020045, 45) -sql insert into c_b2_t4 values(1520000021044, 44) -sql insert into c_b2_t4 values(1520000022043, 43) -sql insert into c_b2_t4 values(1520000023042, 42) -sql insert into c_b2_t4 values(1520000024041, 41) - -sql create dnode $hostname4 -system sh/exec_up.sh -n dnode4 -s start -sleep 9000 - -sql show mnodes -$dnode1Role = $data2_1 -$dnode2Role = $data2_2 -$dnode3Role = $data2_3 -$dnode4Role = $data2_4 -print dnode1 ==> $dnode1Role -print dnode2 ==> $dnode2Role -print dnode3 ==> $dnode3Role -print dnode4 ==> $dnode4Role - -$x = 0 -show8: - $x = $x + 1 - sleep 2000 - if $x == 30 then - return -1 - endi -sql show dnodes -x show8 -$dnode1Vnodes = $data2_1 -print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes -$dnode4Vnodes = $data2_4 -print dnode4 $dnode4Vnodes - -if $dnode1Vnodes != 2 then - goto show8 -endi -if $dnode2Vnodes != 2 then - goto show8 -endi -if $dnode3Vnodes != 2 then - goto show8 -endi -if $dnode4Vnodes != 2 then - goto show8 -endi - -print ============================== step9 -print ========= drop dnode1.4 -sql drop dnode $hostname1 -sql drop dnode $hostname4 -sleep 10000 - -sql show mnodes -$dnode1Role = $data2_1 -$dnode2Role = $data2_2 -$dnode3Role = $data2_3 -$dnode4Role = $data2_4 -print dnode1 ==> $dnode1Role -print dnode2 ==> $dnode2Role -print dnode3 ==> $dnode3Role -print dnode4 ==> $dnode4Role - -$x = 0 -show9: - $x = $x + 1 - sleep 2000 - if $x == 30 then - return -1 - endi -sql show dnodes -x show9 -$dnode1Vnodes = $data2_1 -print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes -$dnode4Vnodes = $data2_4 -print dnode4 $dnode4Vnodes - -if $dnode1Vnodes != null then - goto show9 -endi -if $dnode2Vnodes != 0 then - goto show9 -endi -if $dnode3Vnodes != 0 then - goto show9 -endi -if $dnode4Vnodes != null then - goto show9 +if $dnode1Role != offline then + return -1 endi -system sh/exec_up.sh -n dnode1 -s stop -x SIGINT -system sh/exec_up.sh -n dnode4 -s stop -x SIGINT - -print ============================== step10 -print ========= start dnode1.4 -sql create dnode $hostname1 -sql create dnode $hostname4 - -sleep 3000 -system sh/deploy.sh -n dnode1 -i 1 -ssystem sh/cfg.sh -n dnode1 -c numOfMPeers -v 3 -system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 4 -system sh/cfg.sh -n dnode1 -c clog -v 1 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 0 -sleep 3000 - -sleep 3000 -system sh/deploy.sh -n dnode4 -i 4 -system sh/cfg.sh -n dnode4 -c numOfMPeers -v 3 -system sh/cfg.sh -n dnode4 -c numOfTotalVnodes -v 4 -system sh/cfg.sh -n dnode4 -c clog -v 1 -system sh/cfg.sh -n dnode4 -c mgmtEqualVnodeNum -v 0 -sleep 3000 - +print ============================== step6.1 system sh/exec_up.sh -n dnode1 -s start -system sh/exec_up.sh -n dnode4 -s start -sleep 10000 $x = 0 -show10: - sql show mnodes - $dnode1Role = $data2_1 - $dnode2Role = $data2_2 - $dnode3Role = $data2_3 - $dnode4Role = $data2_4 - print dnode1 ==> $dnode1Role - print dnode2 ==> $dnode2Role - print dnode3 ==> $dnode3Role - print dnode4 ==> $dnode4Role - +show6: $x = $x + 1 sleep 2000 if $x == 30 then return -1 endi -sql show dnodes -x show10 +sql show dnodes -x show6 $dnode1Vnodes = $data2_1 print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes $dnode4Vnodes = $data2_4 print dnode4 $dnode4Vnodes +$dnode5Vnodes = $data2_5 +print dnode5 $dnode5Vnodes -if $dnode1Vnodes != 2 then - goto show10 -endi -if $dnode2Vnodes != 2 then - goto show10 +if $dnode1Vnodes != null then + goto show6 endi -if $dnode3Vnodes != 2 then - goto show10 +if $dnode4Vnodes != 3 then + goto show6 endi -if $dnode4Vnodes != 2 then - goto show10 +if $dnode5Vnodes != 3 then + goto show6 endi -print ============================== step11 - sql show mnodes $dnode1Role = $data2_1 -$dnode2Role = $data2_2 -$dnode3Role = $data2_3 $dnode4Role = $data2_4 +$dnode5Role = $data2_5 print dnode1 ==> $dnode1Role -print dnode2 ==> $dnode2Role -print dnode3 ==> $dnode3Role print dnode4 ==> $dnode4Role +print dnode5 ==> $dnode5Role -sql create database c_b2_d5 replica 2 tables 4 -sql use c_b2_d5; -sql create table c_b2_t5 (t timestamp, i int) -sql insert into c_b2_t5 values(1520000020055, 55) -sql insert into c_b2_t5 values(1520000021054, 54) -sql insert into c_b2_t5 values(1520000022053, 53) -sql insert into c_b2_t5 values(1520000023052, 52) -sql insert into c_b2_t5 values(1520000024051, 51) - -sql create database c_b2_d6 replica 2 tables 4 -sql use c_b2_d6 -sql create table c_b2_t6 (t timestamp, i int) -sql insert into c_b2_t6 values(1520000020065, 65) -sql insert into c_b2_t6 values(1520000021064, 64) -sql insert into c_b2_t6 values(1520000022063, 63) -sql insert into c_b2_t6 values(1520000023062, 62) -sql insert into c_b2_t6 values(1520000024061, 61) - -$x = 0 -show11: - $x = $x + 1 - sleep 2000 - if $x == 30 then - return -1 - endi -sql show dnodes -x show11 -$dnode1Vnodes = $data2_1 -print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes -$dnode4Vnodes = $data2_4 -print dnode4 $dnode4Vnodes - -if $dnode1Vnodes != 1 then - goto show11 -endi -if $dnode2Vnodes != 1 then - goto show11 -endi -if $dnode3Vnodes != 1 then - goto show11 -endi -if $dnode4Vnodes != 1 then - goto show11 -endi - -sql show mnodes -$dnode1Role = $data2_1 -$dnode2Role = $data2_2 -$dnode3Role = $data2_3 -$dnode4Role = $data2_4 -print dnode1 ==> $dnode1Role -print dnode2 ==> $dnode2Role -print dnode3 ==> $dnode3Role -print dnode4 ==> $dnode4Role +#system sh/exec_up.sh -n dnode1 -s stop -x SIGINT print ============================== step12 print ========= check data -sql use c_b2_d1 -sql select * from c_b2_t1 order by t desc +sql reset query cache +sleep 1000 + +sql select * from c_b2_d1.c_b2_t1 order by t desc print $data01 $data11 $data21 $data31 $data41 if $data01 != 11 then return -1 @@ -660,8 +383,7 @@ if $data41 != 15 then return -1 endi -sql use c_b2_d2 -sql select * from c_b2_t2 order by t desc +sql select * from c_b2_d2.c_b2_t2 order by t desc print $data01 $data11 $data21 $data31 $data41 #if $data01 != 21 then @@ -680,8 +402,7 @@ print $data01 $data11 $data21 $data31 $data41 # return -1 #endi -sql use c_b2_d3 -sql select * from c_b2_t3 order by t desc +sql select * from c_b2_d3.c_b2_t3 order by t desc print $data01 $data11 $data21 $data31 $data41 if $data01 != 31 then return -1 @@ -699,8 +420,7 @@ if $data41 != 35 then return -1 endi -sql use c_b2_d4 -sql select * from c_b2_t4 order by t desc +sql select * from c_b2_d4.c_b2_t4 order by t desc print $data01 $data11 $data21 $data31 $data41 if $data01 != 41 then return -1 @@ -718,8 +438,7 @@ if $data41 != 45 then return -1 endi -sql use c_b2_d5 -sql select * from c_b2_t5 order by t desc +sql select * from c_b2_d5.c_b2_t5 order by t desc print $data01 $data11 $data21 $data31 $data41 if $data01 != 51 then return -1 @@ -737,8 +456,7 @@ if $data41 != 55 then return -1 endi -sql use c_b2_d6 -sql select * from c_b2_t6 order by t desc +sql select * from c_b2_d6.c_b2_t6 order by t desc print $data01 $data11 $data21 $data31 $data41 if $data01 != 61 then return -1 @@ -756,7 +474,6 @@ if $data41 != 65 then return -1 endi - print ============================================ over system sh/exec_up.sh -n dnode1 -s stop -x SIGINT system sh/exec_up.sh -n dnode2 -s stop -x SIGINT @@ -766,5 +483,3 @@ system sh/exec_up.sh -n dnode5 -s stop -x SIGINT system sh/exec_up.sh -n dnode6 -s stop -x SIGINT system sh/exec_up.sh -n dnode7 -s stop -x SIGINT system sh/exec_up.sh -n dnode8 -s stop -x SIGINT - - diff --git a/tests/script/unique/cluster/balance3.sim b/tests/script/unique/cluster/balance3.sim index 76ea380e8e12b9e0621dde2774c89a144e781918..1e66fcf253ffb489aba6f1de6177de888b118a05 100644 --- a/tests/script/unique/cluster/balance3.sim +++ b/tests/script/unique/cluster/balance3.sim @@ -1,14 +1,5 @@ system sh/stop_dnodes.sh - - - - - - - - - system sh/deploy.sh -n dnode1 -i 1 system sh/deploy.sh -n dnode2 -i 2 system sh/deploy.sh -n dnode3 -i 3 @@ -188,16 +179,8 @@ endi system sh/exec_up.sh -n dnode2 -s stop -x SIGINT print ============================== step4 -print ========= start dnode2 -sleep 3000 -system sh/deploy.sh -n dnode2 -i 2 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 3 -system sh/cfg.sh -n dnode2 -c numOfTotalVnodes -v 4 -system sh/cfg.sh -n dnode2 -c clog -v 1 -system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 0 -sleep 3000 -sql create dnode $hostname2 -system sh/exec_up.sh -n dnode2 -s start +sql create dnode $hostname5 +system sh/exec_up.sh -n dnode5 -s start sleep 10000 $x = 0 @@ -210,14 +193,14 @@ show4: sql show dnodes -x show4 $dnode1Vnodes = $data2_1 print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes +$dnode5Vnodes = $data2_5 +print dnode5 $dnode5Vnodes $dnode3Vnodes = $data2_3 print dnode3 $dnode3Vnodes $dnode4Vnodes = $data2_4 print dnode4 $dnode4Vnodes -if $dnode2Vnodes != 2 then +if $dnode5Vnodes != 2 then goto show4 endi @@ -236,8 +219,8 @@ show5: sql show dnodes -x show5 $dnode1Vnodes = $data2_1 print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes +$dnode5Vnodes = $data2_5 +print dnode5 $dnode5Vnodes $dnode3Vnodes = $data2_3 print dnode3 $dnode3Vnodes $dnode4Vnodes = $data2_4 @@ -246,7 +229,7 @@ print dnode4 $dnode4Vnodes if $dnode1Vnodes != 1 then goto show5 endi -if $dnode2Vnodes != 1 then +if $dnode5Vnodes != 1 then goto show5 endi if $dnode3Vnodes != null then @@ -256,20 +239,11 @@ if $dnode4Vnodes != 1 then goto show5 endi - system sh/exec_up.sh -n dnode3 -s stop -x SIGINT print ============================== step6 -print ========= start dnode3 -sleep 3000 -system sh/deploy.sh -n dnode3 -i 3 -system sh/cfg.sh -n dnode3 -c numOfMPeers -v 3 -system sh/cfg.sh -n dnode3 -c numOfTotalVnodes -v 4 -system sh/cfg.sh -n dnode3 -c clog -v 1 -system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 0 -sleep 3000 -sql create dnode $hostname3 -system sh/exec_up.sh -n dnode3 -s start +sql create dnode $hostname6 +system sh/exec_up.sh -n dnode6 -s start sleep 9000 $x = 0 @@ -282,14 +256,14 @@ show6: sql show dnodes -x show6 $dnode1Vnodes = $data2_1 print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes $dnode4Vnodes = $data2_4 print dnode4 $dnode4Vnodes +$dnode5Vnodes = $data2_5 +print dnode5 $dnode5Vnodes +$dnode6Vnodes = $data2_6 +print dnode6 $dnode6Vnodes -if $dnode3Vnodes != 2 then +if $dnode6Vnodes != 2 then goto show6 endi @@ -308,20 +282,20 @@ show7: sql show dnodes -x show7 $dnode1Vnodes = $data2_1 print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes $dnode4Vnodes = $data2_4 print dnode4 $dnode4Vnodes +$dnode5Vnodes = $data2_5 +print dnode5 $dnode5Vnodes +$dnode6Vnodes = $data2_6 +print dnode6 $dnode6Vnodes if $dnode1Vnodes != 1 then goto show7 endi -if $dnode2Vnodes != 1 then +if $dnode5Vnodes != 1 then goto show7 endi -if $dnode3Vnodes != 1 then +if $dnode6Vnodes != 1 then goto show7 endi if $dnode4Vnodes != null then @@ -331,16 +305,8 @@ endi system sh/exec_up.sh -n dnode4 -s stop -x SIGINT print ============================== step8 -print ========= start dnode4 -sleep 3000 -system sh/deploy.sh -n dnode4 -i 4 -system sh/cfg.sh -n dnode4 -c numOfMPeers -v 3 -system sh/cfg.sh -n dnode4 -c numOfTotalVnodes -v 4 -system sh/cfg.sh -n dnode4 -c clog -v 1 -system sh/cfg.sh -n dnode4 -c mgmtEqualVnodeNum -v 0 -sleep 3000 -sql create dnode $hostname4 -system sh/exec_up.sh -n dnode4 -s start +sql create dnode $hostname7 +system sh/exec_up.sh -n dnode7 -s start sleep 9000 $x = 0 @@ -353,14 +319,14 @@ show8: sql show dnodes -x show8 $dnode1Vnodes = $data2_1 print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes -$dnode4Vnodes = $data2_4 -print dnode4 $dnode4Vnodes - -if $dnode4Vnodes != 2 then +$dnode5Vnodes = $data2_5 +print dnode5 $dnode5Vnodes +$dnode6Vnodes = $data2_6 +print dnode6 $dnode6Vnodes +$dnode7Vnodes = $data2_7 +print dnode7 $dnode7Vnodes + +if $dnode7Vnodes != 2 then goto show8 endi @@ -382,39 +348,26 @@ show9: return -1 endi sql show dnodes -x show9 -$dnode1Vnodes = $data2_1 -print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes -$dnode4Vnodes = $data2_4 -print dnode4 $dnode4Vnodes - -if $dnode1Vnodes != null then - goto show9 -endi -if $dnode2Vnodes != 1 then +$dnode5Vnodes = $data2_5 +print dnode5 $dnode5Vnodes +$dnode6Vnodes = $data2_6 +print dnode6 $dnode6Vnodes +$dnode7Vnodes = $data2_7 +print dnode7 $dnode7Vnodes + +if $dnode5Vnodes != 1 then goto show9 endi -if $dnode3Vnodes != 1 then +if $dnode6Vnodes != 1 then goto show9 endi -if $dnode4Vnodes != 1 then +if $dnode7Vnodes != 1 then goto show9 endi print ============================== step10 -print ========= start dnode1 -sleep 3000 -system sh/deploy.sh -n dnode1 -i 1 -system sh/cfg.sh -n dnode1 -c numOfMPeers -v 3 -system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 4 -system sh/cfg.sh -n dnode1 -c clog -v 1 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 0 -sleep 3000 -sql create dnode $hostname1 -system sh/exec_up.sh -n dnode1 -s start +sql create dnode $hostname8 +system sh/exec_up.sh -n dnode8 -s start sleep 9000 $x = 0 @@ -425,16 +378,16 @@ show10: return -1 endi sql show dnodes -x show10 -$dnode1Vnodes = $data2_1 -print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes -$dnode4Vnodes = $data2_4 -print dnode4 $dnode4Vnodes - -if $dnode1Vnodes != 2 then +$dnode5Vnodes = $data2_5 +print dnode5 $dnode5Vnodes +$dnode6Vnodes = $data2_6 +print dnode6 $dnode6Vnodes +$dnode7Vnodes = $data2_7 +print dnode7 $dnode7Vnodes +$dnode8Vnodes = $data2_8 +print dnode8 $dnode8Vnodes + +if $dnode8Vnodes != 2 then goto show10 endi @@ -488,48 +441,15 @@ endi # goto show11 #endi -print ============================== step12 -print ========= drop dnode1 -sql drop dnode $hostname1 -sleep 10000 - -$x = 0 -show12: - $x = $x + 1 - sleep 2000 - if $x == 30 then - return -1 - endi -sql show dnodes -x show12 -$dnode1Vnodes = $data2_1 -print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes -$dnode4Vnodes = $data2_4 -print dnode4 $dnode4Vnodes - -if $dnode1Vnodes != null then - goto show12 -endi -if $dnode2Vnodes != 0 then - goto show12 -endi -if $dnode3Vnodes != 0 then - goto show12 -endi -if $dnode4Vnodes != 0 then - goto show12 -endi - system sh/exec_up.sh -n dnode1 -s stop -x SIGINT print ============================== step13 +sql reset query cache +sleep 1000 + print ========= check data -sql use c_b3_d1 -sql select * from c_b3_t1 order by t desc +sql select * from c_b3_d1.c_b3_t1 order by t desc print $data01 $data11 $data21 $data31 $data41 if $data01 != 11 then return -1 @@ -547,8 +467,7 @@ if $data41 != 15 then return -1 endi -sql use c_b3_d2 -sql select * from c_b3_t2 order by t desc +sql select * from c_b3_d2.c_b3_t2 order by t desc print $data01 $data11 $data21 $data31 $data41 if $data01 != 21 then @@ -567,8 +486,7 @@ if $data41 != 25 then return -1 endi -sql use c_b3_d3 -sql select * from c_b3_t3 order by t desc +sql select * from c_b3_d3.c_b3_t3 order by t desc print $data01 $data11 $data21 $data31 $data41 if $data01 != 31 then return -1 @@ -586,8 +504,7 @@ if $data41 != 35 then return -1 endi -sql use c_b3_d4 -sql select * from c_b3_t4 order by t desc +sql select * from c_b3_d4.c_b3_t4 order by t desc print $data01 $data11 $data21 $data31 $data41 if $data01 != 41 then return -1 @@ -615,5 +532,3 @@ system sh/exec_up.sh -n dnode5 -s stop -x SIGINT system sh/exec_up.sh -n dnode6 -s stop -x SIGINT system sh/exec_up.sh -n dnode7 -s stop -x SIGINT system sh/exec_up.sh -n dnode8 -s stop -x SIGINT - - diff --git a/tests/script/unique/cluster/testSuite.sim b/tests/script/unique/cluster/testSuite.sim index 74fa2cb2715e28c81106251d3d5e0f815f7abe05..34cdda85dd2e984e509941a97269a984592d4118 100644 --- a/tests/script/unique/cluster/testSuite.sim +++ b/tests/script/unique/cluster/testSuite.sim @@ -1,5 +1,3 @@ run unique/cluster/balance1.sim run unique/cluster/balance2.sim run unique/cluster/balance3.sim -run unique/cluster/balance1_bug.sim -run unique/cluster/balance1_single.sim \ No newline at end of file diff --git a/tests/script/uniqueSuite.sim b/tests/script/uniqueSuite.sim deleted file mode 100644 index 0a3d57c27e3f11012e9d37f53745fb617d545d50..0000000000000000000000000000000000000000 --- a/tests/script/uniqueSuite.sim +++ /dev/null @@ -1,5 +0,0 @@ -################################# - -run unique/mnode/testSuite.sim - -##################################