提交 6e8f3055 编写于 作者: H hjxilinx

[td-183] merge with develop branch

...@@ -59,17 +59,30 @@ matrix: ...@@ -59,17 +59,30 @@ matrix:
GREEN_UNDERLINE='\033[4;32m' GREEN_UNDERLINE='\033[4;32m'
NC='\033[0m' NC='\033[0m'
tail -10 mem-error-out.txt grep 'ERROR SUMMARY' mem-error-out.txt | uniq | tee uniq-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}'` for memError in `cat uniq-mem-error-out.txt | awk '{print $4}'`
do
if [ -n "$memError" ]; then if [ -n "$memError" ]; then
if [ "$memError" -gt 16 ] || [ "$defiMemError" -gt 0 ]; then if [ "$memError" -gt 16 ]; then
echo -e "${RED} ## Memory errors number valgrind reports is $memError.\ echo -e "${RED} ## Memory errors number valgrind reports is $memError.\
Definitely lost is $defiMemError. More than our threshold! ## ${NC}" More than our threshold! ## ${NC}"
travis_terminate $memError travis_terminate $memError
fi
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 esac
......
...@@ -115,6 +115,251 @@ TDengine provides abundant developing tools for users to develop on TDengine. Fo ...@@ -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) - [RESTful API](https://www.taosdata.com/en/documentation/connector/#RESTful-Connector)
- [Node.js](https://www.taosdata.com/en/documentation/connector/#Node.js-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 <https://github.com/taosdata/TDengine>; 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 \<TDengine\>/tests/script
2. sudo ./test.sh
### How to run Python test suite
1. cd \<TDengine\>/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
> \<TDengine\>/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
> \<TDengine\>/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 \<TDengine\>/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. <https://nakedsecurity.sophos.com/2020/01/03/python-is-dead-long-live-python/> 
### 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 ### 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. The TDengine community has also kindly built some of their own connectors! Follow the links below to find the source code for them.
......
...@@ -2262,7 +2262,7 @@ int tscProcessConnectRsp(SSqlObj *pSql) { ...@@ -2262,7 +2262,7 @@ int tscProcessConnectRsp(SSqlObj *pSql) {
strcpy(pObj->sversion, pConnect->serverVersion); strcpy(pObj->sversion, pConnect->serverVersion);
pObj->writeAuth = pConnect->writeAuth; pObj->writeAuth = pConnect->writeAuth;
pObj->superAuth = pConnect->superAuth; pObj->superAuth = pConnect->superAuth;
// taosTmrReset(tscProcessActivityTimer, tsShellActivityTimer * 500, pObj, tscTmr, &pObj->pTimer); taosTmrReset(tscProcessActivityTimer, tsShellActivityTimer * 500, pObj, tscTmr, &pObj->pTimer);
return 0; return 0;
} }
......
...@@ -168,6 +168,13 @@ static void syncConnCallback(void *param, TAOS_RES *tres, int code) { ...@@ -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) { 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); 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); STscObj *pObj = taosConnectImpl(ip, user, pass, db, port, NULL, NULL, NULL);
if (pObj != NULL) { if (pObj != NULL) {
......
...@@ -13,122 +13,6 @@ ...@@ -13,122 +13,6 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
char *taosMsg[] = { #define TAOS_MESSAGE_C
"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"
};
#include "taosmsg.h"
...@@ -146,6 +146,7 @@ class CTaosInterface(object): ...@@ -146,6 +146,7 @@ class CTaosInterface(object):
libtaos.taos_errstr.restype = ctypes.c_char_p libtaos.taos_errstr.restype = ctypes.c_char_p
libtaos.taos_subscribe.restype = ctypes.c_void_p libtaos.taos_subscribe.restype = ctypes.c_void_p
libtaos.taos_consume.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): def __init__(self, config=None):
''' '''
...@@ -314,6 +315,8 @@ class CTaosInterface(object): ...@@ -314,6 +315,8 @@ class CTaosInterface(object):
isMicro = (CTaosInterface.libtaos.taos_result_precision(result) == FieldType.C_TIMESTAMP_MICRO) isMicro = (CTaosInterface.libtaos.taos_result_precision(result) == FieldType.C_TIMESTAMP_MICRO)
blocks = [None] * len(fields) 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)): for i in range(len(fields)):
data = ctypes.cast(pblock, ctypes.POINTER(ctypes.c_void_p))[i] data = ctypes.cast(pblock, ctypes.POINTER(ctypes.c_void_p))[i]
if data == None: if data == None:
...@@ -323,7 +326,7 @@ class CTaosInterface(object): ...@@ -323,7 +326,7 @@ class CTaosInterface(object):
if fields[i]['type'] not in _CONVERT_FUNC: if fields[i]['type'] not in _CONVERT_FUNC:
raise DatabaseError("Invalid data type returned from database") 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) return blocks, abs(num_of_rows)
......
...@@ -74,8 +74,10 @@ void dnodeCleanupRead() { ...@@ -74,8 +74,10 @@ void dnodeCleanupRead() {
for (int i=0; i < readPool.max; ++i) { for (int i=0; i < readPool.max; ++i) {
SReadWorker *pWorker = readPool.readWorker + i; SReadWorker *pWorker = readPool.readWorker + i;
if (pWorker->thread) if (pWorker->thread) {
pthread_cancel(pWorker->thread);
pthread_join(pWorker->thread, NULL); pthread_join(pWorker->thread, NULL);
}
} }
taosCloseQset(readQset); taosCloseQset(readQset);
...@@ -114,12 +116,12 @@ void dnodeRead(SRpcMsg *pMsg) { ...@@ -114,12 +116,12 @@ void dnodeRead(SRpcMsg *pMsg) {
pRead->pCont = pCont; pRead->pCont = pCont;
pRead->contLen = pHead->contLen; pRead->contLen = pHead->contLen;
taosWriteQitem(queue, TAOS_QTYPE_RPC, pRead);
// next vnode // next vnode
leftLen -= pHead->contLen; leftLen -= pHead->contLen;
pCont -= pHead->contLen; pCont -= pHead->contLen;
queuedMsgNum++; queuedMsgNum++;
taosWriteQitem(queue, TAOS_QTYPE_RPC, pRead);
} }
if (queuedMsgNum == 0) { if (queuedMsgNum == 0) {
......
...@@ -71,7 +71,10 @@ void dnodeCleanupWrite() { ...@@ -71,7 +71,10 @@ void dnodeCleanupWrite() {
for (int32_t i = 0; i < wWorkerPool.max; ++i) { for (int32_t i = 0; i < wWorkerPool.max; ++i) {
SWriteWorker *pWorker = wWorkerPool.writeWorker + i; SWriteWorker *pWorker = wWorkerPool.writeWorker + i;
if (pWorker->thread) { if (pWorker->thread) {
pthread_cancel(pWorker->thread);
pthread_join(pWorker->thread, NULL); pthread_join(pWorker->thread, NULL);
taosFreeQall(pWorker->qall);
taosCloseQset(pWorker->qset);
} }
} }
......
...@@ -115,6 +115,7 @@ TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_QUERY_ID, 0, 255, "invalid query i ...@@ -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_STREAM_ID, 0, 256, "invalid stream id")
TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_CONNECTION, 0, 257, "invalid connection") 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_SDB_ERROR, 0, 258, "sdb error")
TAOS_DEFINE_ERROR(TSDB_CODE_TIMESTAMP_OUT_OF_RANGE, 0, 259, "timestamp is out of range")
// acct // acct
TAOS_DEFINE_ERROR(TSDB_CODE_ACCT_ALREADY_EXIST, 0, 300, "accounts already exist") 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") ...@@ -172,6 +173,9 @@ TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_VALUE, 0, 462, "invalid value")
// others // others
TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_FILE_FORMAT, 0, 500, "invalid file format") 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 #ifdef TAOS_ERROR_C
}; };
......
...@@ -28,103 +28,76 @@ extern "C" { ...@@ -28,103 +28,76 @@ extern "C" {
#include "trpc.h" #include "trpc.h"
// message type // message type
#define TSDB_MSG_TYPE_REG 1
#define TSDB_MSG_TYPE_REG_RSP 2 #ifdef TAOS_MESSAGE_C
#define TSDB_MSG_TYPE_SUBMIT 3 #define TAOS_DEFINE_MESSAGE_TYPE( name, msg ) msg, msg "-rsp",
#define TSDB_MSG_TYPE_SUBMIT_RSP 4 char *taosMsg[] = {
#define TSDB_MSG_TYPE_QUERY 5 "null",
#define TSDB_MSG_TYPE_QUERY_RSP 6 #else
#define TSDB_MSG_TYPE_RETRIEVE 7 #define TAOS_DEFINE_MESSAGE_TYPE( name, msg ) name, name##_RSP,
#define TSDB_MSG_TYPE_RETRIEVE_RSP 8 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 // message from mnode to dnode
#define TSDB_MSG_TYPE_MD_CREATE_TABLE 9 TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_MD_CREATE_TABLE, "create-table" ) // 9
#define TSDB_MSG_TYPE_MD_CREATE_TABLE_RSP 10 TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_MD_DROP_TABLE, "drop-table" ) // 11
#define TSDB_MSG_TYPE_MD_DROP_TABLE 11 TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_MD_ALTER_TABLE, "alter-table" ) // 13
#define TSDB_MSG_TYPE_MD_DROP_TABLE_RSP 12 TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_MD_CREATE_VNODE, "create-vnode" ) // 15
#define TSDB_MSG_TYPE_MD_ALTER_TABLE 13 TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_MD_DROP_VNODE, "drop-vnode" ) // 17
#define TSDB_MSG_TYPE_MD_ALTER_TABLE_RSP 14 TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_MD_DROP_STABLE, "drop-stable" ) // 19
#define TSDB_MSG_TYPE_MD_CREATE_VNODE 15 TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_MD_ALTER_STREAM, "alter-stream" ) // 21
#define TSDB_MSG_TYPE_MD_CREATE_VNODE_RSP 16 TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_MD_CONFIG_DNODE, "config-dnode" ) // 23
#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
// message from client to mnode // message from client to mnode
#define TSDB_MSG_TYPE_CM_CONNECT 31 TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_CONNECT, "connect" ) // 31
#define TSDB_MSG_TYPE_CM_CONNECT_RSP 32 TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_CREATE_ACCT, "create-acct" ) // 33
#define TSDB_MSG_TYPE_CM_CREATE_ACCT 33 TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_ALTER_ACCT, "alter-acct" ) // 35
#define TSDB_MSG_TYPE_CM_CREATE_ACCT_RSP 34 TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_DROP_ACCT, "drop-acct" ) // 37
#define TSDB_MSG_TYPE_CM_ALTER_ACCT 35 TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_CREATE_USER, "create-user" ) // 39
#define TSDB_MSG_TYPE_CM_ALTER_ACCT_RSP 36 TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_ALTER_USER, "alter-user" ) // 41
#define TSDB_MSG_TYPE_CM_DROP_ACCT 37 TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_DROP_USER, "drop-user" ) // 43
#define TSDB_MSG_TYPE_CM_DROP_ACCT_RSP 38 TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_CREATE_DNODE, "create-dnode" ) // 45
#define TSDB_MSG_TYPE_CM_CREATE_USER 39 TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_DROP_DNODE, "drop-dnode" ) // 47
#define TSDB_MSG_TYPE_CM_CREATE_USER_RSP 40 TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_CREATE_DB, "create-db" ) // 49
#define TSDB_MSG_TYPE_CM_ALTER_USER 41 TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_DROP_DB, "drop-db" ) // 51
#define TSDB_MSG_TYPE_CM_ALTER_USER_RSP 42 TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_USE_DB, "use-db" ) // 53
#define TSDB_MSG_TYPE_CM_DROP_USER 43 TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_ALTER_DB, "alter-db" ) // 55
#define TSDB_MSG_TYPE_CM_DROP_USER_RSP 44 TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_CREATE_TABLE, "create-table" ) // 57
#define TSDB_MSG_TYPE_CM_CREATE_DNODE 45 TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_DROP_TABLE, "drop-table" ) // 59
#define TSDB_MSG_TYPE_CM_CREATE_DNODE_RSP 46 TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_ALTER_TABLE, "alter-table" ) // 61
#define TSDB_MSG_TYPE_CM_DROP_DNODE 47 TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_TABLE_META, "table-meta" ) // 63
#define TSDB_MSG_TYPE_CM_DROP_DNODE_RSP 48 TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_STABLE_VGROUP, "stable-vgroup" ) // 65
#define TSDB_MSG_TYPE_CM_CONFIG_DNODE TSDB_MSG_TYPE_MD_CONFIG_DNODE TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_TABLES_META, "tables-meta" ) // 67
#define TSDB_MSG_TYPE_CM_CONFIG_DNODE_RSP TSDB_MSG_TYPE_MD_CONFIG_DNODE_RSP TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_ALTER_STREAM, "alter-stream" ) // 69
#define TSDB_MSG_TYPE_CM_CREATE_DB 49 TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_SHOW, "show" ) // 71
#define TSDB_MSG_TYPE_CM_CREATE_DB_RSP 50 TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_KILL_QUERY, "kill-query" ) // 73
#define TSDB_MSG_TYPE_CM_DROP_DB 51 TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_KILL_STREAM, "kill-stream" ) // 75
#define TSDB_MSG_TYPE_CM_DROP_DB_RSP 52 TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_KILL_CONN, "kill-conn" ) // 77
#define TSDB_MSG_TYPE_CM_USE_DB 53 TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_HEARTBEAT, "heartbeat" ) // 79
#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
// message from dnode to mnode // message from dnode to mnode
#define TSDB_MSG_TYPE_DM_CONFIG_TABLE 91 TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_DM_CONFIG_TABLE, "config-table" ) // 91
#define TSDB_MSG_TYPE_DM_CONFIG_TABLE_RSP 92 TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_DM_CONFIG_VNODE, "config-vnode" ) // 93
#define TSDB_MSG_TYPE_DM_CONFIG_VNODE 93 TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_DM_STATUS, "status" ) // 95
#define TSDB_MSG_TYPE_DM_CONFIG_VNODE_RSP 94 TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_DM_GRANT, "grant" ) // 97
#define TSDB_MSG_TYPE_DM_STATUS 95
#define TSDB_MSG_TYPE_DM_STATUS_RSP 96 TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_SDB_SYNC, "sdb-sync" ) // 101
#define TSDB_MSG_TYPE_DM_GRANT 97 TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_SDB_FORWARD, "sdb-forward" ) // 103
#define TSDB_MSG_TYPE_DM_GRANT_RSP 98
#ifndef TAOS_MESSAGE_C
#define TSDB_MSG_TYPE_SDB_SYNC 101 TSDB_MSG_TYPE_MAX // 105
#define TSDB_MSG_TYPE_SDB_SYNC_RSP 102 #endif
#define TSDB_MSG_TYPE_SDB_FORWARD 103
#define TSDB_MSG_TYPE_SDB_FORWARD_RSP 104 };
#define TSDB_MSG_TYPE_MAX 105 #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 // IE type
#define TSDB_IE_TYPE_SEC 1 #define TSDB_IE_TYPE_SEC 1
......
...@@ -61,6 +61,7 @@ struct arguments { ...@@ -61,6 +61,7 @@ struct arguments {
int threadNum; int threadNum;
char* commands; char* commands;
int abort; int abort;
int port;
}; };
/**************** Function declarations ****************/ /**************** Function declarations ****************/
......
...@@ -81,7 +81,7 @@ void shellParseArgument(int argc, char *argv[], struct arguments *arguments) { ...@@ -81,7 +81,7 @@ void shellParseArgument(int argc, char *argv[], struct arguments *arguments) {
// for management port // for management port
else if (strcmp(argv[i], "-P") == 0) { else if (strcmp(argv[i], "-P") == 0) {
if (i < argc - 1) { if (i < argc - 1) {
tsMnodeShellPort = atoi(argv[++i]); arguments->port = atoi(argv[++i]);
} else { } else {
fprintf(stderr, "option -P requires an argument\n"); fprintf(stderr, "option -P requires an argument\n");
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
......
...@@ -66,7 +66,7 @@ TAOS *shellInit(struct arguments *args) { ...@@ -66,7 +66,7 @@ TAOS *shellInit(struct arguments *args) {
tsTableMetaKeepTimer = 3000; tsTableMetaKeepTimer = 3000;
// Connect to the database. // 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) { if (con == NULL) {
return con; return con;
} }
......
...@@ -63,7 +63,7 @@ static error_t parse_opt(int key, char *arg, struct argp_state *state) { ...@@ -63,7 +63,7 @@ static error_t parse_opt(int key, char *arg, struct argp_state *state) {
break; break;
case 'P': case 'P':
if (arg) { if (arg) {
tsMnodeShellPort = atoi(arg); arguments->port = atoi(arg);
} else { } else {
fprintf(stderr, "Invalid port\n"); fprintf(stderr, "Invalid port\n");
return -1; return -1;
......
...@@ -61,7 +61,7 @@ void shellParseArgument(int argc, char *argv[], struct arguments *arguments) { ...@@ -61,7 +61,7 @@ void shellParseArgument(int argc, char *argv[], struct arguments *arguments) {
// for management port // for management port
else if (strcmp(argv[i], "-P") == 0) { else if (strcmp(argv[i], "-P") == 0) {
if (i < argc - 1) { if (i < argc - 1) {
tsMnodeShellPort = atoi(argv[++i]); arguments->port = atoi(argv[++i]);
} else { } else {
fprintf(stderr, "option -P requires an argument\n"); fprintf(stderr, "option -P requires an argument\n");
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
......
...@@ -52,14 +52,14 @@ int32_t mgmtInitDServer() { ...@@ -52,14 +52,14 @@ int32_t mgmtInitDServer() {
rpcInit.idleTime = tsShellActivityTimer * 1000; rpcInit.idleTime = tsShellActivityTimer * 1000;
rpcInit.afp = mgmtDServerRetrieveAuth; rpcInit.afp = mgmtDServerRetrieveAuth;
tsMgmtDServerQhandle = taosInitScheduler(tsMaxShellConns, 1, "MS");
tsMgmtDServerRpc = rpcOpen(&rpcInit); tsMgmtDServerRpc = rpcOpen(&rpcInit);
if (tsMgmtDServerRpc == NULL) { if (tsMgmtDServerRpc == NULL) {
mError("failed to init server connection to dnode"); mError("failed to init server connection to dnode");
return -1; return -1;
} }
tsMgmtDServerQhandle = taosInitScheduler(tsMaxShellConns, 1, "MS");
mPrint("server connection to dnode is opened"); mPrint("server connection to dnode is opened");
return 0; return 0;
} }
......
...@@ -426,6 +426,7 @@ static int32_t mgmtDropDnodeByEp(char *ep) { ...@@ -426,6 +426,7 @@ static int32_t mgmtDropDnodeByEp(char *ep) {
return TSDB_CODE_NO_REMOVE_MASTER; return TSDB_CODE_NO_REMOVE_MASTER;
} }
mPrint("dnode:%d, start to drop it", pDnode->dnodeId);
#ifndef _SYNC #ifndef _SYNC
return mgmtDropDnode(pDnode); return mgmtDropDnode(pDnode);
#else #else
......
...@@ -143,7 +143,9 @@ static void *sdbGetTableFromId(int32_t tableId) { ...@@ -143,7 +143,9 @@ static void *sdbGetTableFromId(int32_t tableId) {
static int32_t sdbInitWal() { static int32_t sdbInitWal() {
SWalCfg walCfg = {.walLevel = 2, .wals = 2, .keep = 1}; 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) { if (tsSdbObj.wal == NULL) {
sdbError("failed to open sdb wal in %s", tsMnodeDir); sdbError("failed to open sdb wal in %s", tsMnodeDir);
return -1; return -1;
...@@ -196,8 +198,7 @@ static uint32_t sdbGetFileInfo(void *ahandle, char *name, uint32_t *index, int32 ...@@ -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) { static int sdbGetWalInfo(void *ahandle, char *name, uint32_t *index) {
strcpy(name, "wal0"); return walGetWalFile(tsSdbObj.wal, name, index);
return 0;
} }
static void sdbNotifyRole(void *ahandle, int8_t role) { static void sdbNotifyRole(void *ahandle, int8_t role) {
...@@ -281,7 +282,7 @@ void sdbUpdateSync() { ...@@ -281,7 +282,7 @@ void sdbUpdateSync() {
syncInfo.vgId = 1; syncInfo.vgId = 1;
syncInfo.version = sdbGetVersion(); syncInfo.version = sdbGetVersion();
syncInfo.syncCfg = syncCfg; syncInfo.syncCfg = syncCfg;
sprintf(syncInfo.path, "%s/", tsMnodeDir); sprintf(syncInfo.path, "%s", tsMnodeDir);
syncInfo.ahandle = NULL; syncInfo.ahandle = NULL;
syncInfo.getWalInfo = sdbGetWalInfo; syncInfo.getWalInfo = sdbGetWalInfo;
syncInfo.getFileInfo = sdbGetFileInfo; syncInfo.getFileInfo = sdbGetFileInfo;
......
...@@ -396,7 +396,7 @@ static void mgmtProcessAlterUserMsg(SQueuedMsg *pMsg) { ...@@ -396,7 +396,7 @@ static void mgmtProcessAlterUserMsg(SQueuedMsg *pMsg) {
code = mgmtUpdateUser(pUser); code = mgmtUpdateUser(pUser);
mLPrint("user:%s, password is altered by %s, result:%s", pUser->user, pOperUser->user, tstrerror(code)); mLPrint("user:%s, password is altered by %s, result:%s", pUser->user, pOperUser->user, tstrerror(code));
} else { } 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; code = TSDB_CODE_NO_RIGHTS;
} }
...@@ -439,13 +439,13 @@ static void mgmtProcessAlterUserMsg(SQueuedMsg *pMsg) { ...@@ -439,13 +439,13 @@ static void mgmtProcessAlterUserMsg(SQueuedMsg *pMsg) {
code = mgmtUpdateUser(pUser); code = mgmtUpdateUser(pUser);
mLPrint("user:%s, privilege is altered by %s, result:%s", pUser->user, pOperUser->user, tstrerror(code)); mLPrint("user:%s, privilege is altered by %s, result:%s", pUser->user, pOperUser->user, tstrerror(code));
} else { } 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; code = TSDB_CODE_NO_RIGHTS;
} }
mgmtSendSimpleResp(pMsg->thandle, code); mgmtSendSimpleResp(pMsg->thandle, code);
} else { } 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); mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_NO_RIGHTS);
} }
......
...@@ -160,10 +160,7 @@ static int32_t mgmtVgroupActionUpdate(SSdbOper *pOper) { ...@@ -160,10 +160,7 @@ static int32_t mgmtVgroupActionUpdate(SSdbOper *pOper) {
mgmtDecVgroupRef(pVgroup); mgmtDecVgroupRef(pVgroup);
mTrace("vgId:%d, is updated, numOfVnode:%d", pVgroup->vgId, pVgroup->numOfVnodes); mTrace("vgId:%d, is updated, numOfVnode:%d tables:%d", pVgroup->vgId, pVgroup->numOfVnodes, pDb == NULL ? 0 : pDb->cfg.maxTables);
if (pDb) {
mTrace("tables:%d", pDb->cfg.maxTables);
}
return TSDB_CODE_SUCCESS; return TSDB_CODE_SUCCESS;
} }
......
...@@ -1364,7 +1364,7 @@ static int rpcCheckAuthentication(SRpcConn *pConn, char *msg, int msgLen) { ...@@ -1364,7 +1364,7 @@ static int rpcCheckAuthentication(SRpcConn *pConn, char *msg, int msgLen) {
} }
} }
} else { } 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; code = TSDB_CODE_AUTH_FAILURE;
} }
......
...@@ -160,6 +160,7 @@ typedef struct { ...@@ -160,6 +160,7 @@ typedef struct {
typedef struct { typedef struct {
int64_t index; int64_t index;
int numOfCacheBlocks;
SList * memPool; SList * memPool;
} STsdbCachePool; } STsdbCachePool;
...@@ -227,13 +228,13 @@ typedef struct { ...@@ -227,13 +228,13 @@ typedef struct {
int maxFGroups; int maxFGroups;
int numOfFGroups; int numOfFGroups;
SFileGroup fGroup[]; SFileGroup *fGroup;
} STsdbFileH; } STsdbFileH;
#define TSDB_MIN_FILE_ID(fh) (fh)->fGroup[0].fileId #define TSDB_MIN_FILE_ID(fh) (fh)->fGroup[0].fileId
#define TSDB_MAX_FILE_ID(fh) (fh)->fGroup[(fh)->numOfFGroups - 1].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); void tsdbCloseFileH(STsdbFileH *pFileH);
int tsdbCreateFile(char *dataDir, int fileId, const char *suffix, int maxTables, SFile *pFile, int writeHeader, int tsdbCreateFile(char *dataDir, int fileId, const char *suffix, int maxTables, SFile *pFile, int writeHeader,
int toClose); int toClose);
...@@ -261,11 +262,12 @@ SFileGroup *tsdbGetFileGroupNext(SFileGroupIter *pIter); ...@@ -261,11 +262,12 @@ SFileGroup *tsdbGetFileGroupNext(SFileGroupIter *pIter);
typedef struct { typedef struct {
int32_t len; int32_t len;
int32_t offset; int32_t offset;
int32_t padding; // For padding purpose
int32_t hasLast : 1; int32_t hasLast : 1;
int32_t numOfBlocks : 31; int32_t numOfBlocks : 31;
int32_t checksum; int64_t uid;
TSKEY maxKey; TSKEY maxKey;
} SCompIdx; /* sizeof(SCompIdx) = 24 */ } SCompIdx; /* sizeof(SCompIdx) = 28 */
/** /**
* if numOfSubBlocks == 0, then the SCompBlock is a sub-block * if numOfSubBlocks == 0, then the SCompBlock is a sub-block
...@@ -485,6 +487,11 @@ int tsdbMoveLastBlockIfNeccessary(SRWHelper *pHelper); ...@@ -485,6 +487,11 @@ int tsdbMoveLastBlockIfNeccessary(SRWHelper *pHelper);
int tsdbWriteCompInfo(SRWHelper *pHelper); int tsdbWriteCompInfo(SRWHelper *pHelper);
int tsdbWriteCompIdx(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 #ifdef __cplusplus
} }
#endif #endif
......
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
static int tsdbAllocBlockFromPool(STsdbCache *pCache); static int tsdbAllocBlockFromPool(STsdbCache *pCache);
static void tsdbFreeBlockList(SList *list); static void tsdbFreeBlockList(SList *list);
static void tsdbFreeCacheMem(SCacheMem *mem); static void tsdbFreeCacheMem(SCacheMem *mem);
static int tsdbAddCacheBlockToPool(STsdbCache *pCache);
STsdbCache *tsdbInitCache(int cacheBlockSize, int totalBlocks, TsdbRepoT *pRepo) { STsdbCache *tsdbInitCache(int cacheBlockSize, int totalBlocks, TsdbRepoT *pRepo) {
STsdbCache *pCache = (STsdbCache *)calloc(1, sizeof(STsdbCache)); STsdbCache *pCache = (STsdbCache *)calloc(1, sizeof(STsdbCache));
...@@ -40,13 +41,7 @@ STsdbCache *tsdbInitCache(int cacheBlockSize, int totalBlocks, TsdbRepoT *pRepo) ...@@ -40,13 +41,7 @@ STsdbCache *tsdbInitCache(int cacheBlockSize, int totalBlocks, TsdbRepoT *pRepo)
if (pPool->memPool == NULL) goto _err; if (pPool->memPool == NULL) goto _err;
for (int i = 0; i < totalBlocks; i++) { for (int i = 0; i < totalBlocks; i++) {
STsdbCacheBlock *pBlock = (STsdbCacheBlock *)malloc(sizeof(STsdbCacheBlock) + cacheBlockSize); if (tsdbAddCacheBlockToPool(pCache) < 0) goto _err;
if (pBlock == NULL) {
goto _err;
}
pBlock->offset = 0;
pBlock->remain = cacheBlockSize;
tdListAppend(pPool->memPool, (void *)(&pBlock));
} }
pCache->mem = NULL; pCache->mem = NULL;
...@@ -142,4 +137,70 @@ static int tsdbAllocBlockFromPool(STsdbCache *pCache) { ...@@ -142,4 +137,70 @@ static int tsdbAllocBlockFromPool(STsdbCache *pCache) {
tsdbUnLockRepo(pCache->pRepo); tsdbUnLockRepo(pCache->pRepo);
return 0; 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
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
#include "tchecksum.h" #include "tchecksum.h"
#include "tsdbMain.h" #include "tsdbMain.h"
#include "tutil.h" #include "tutil.h"
#include "ttime.h"
const char *tsdbFileSuffix[] = { const char *tsdbFileSuffix[] = {
".head", // TSDB_FILE_TYPE_HEAD ".head", // TSDB_FILE_TYPE_HEAD
...@@ -40,13 +41,19 @@ static int tsdbWriteFileHead(SFile *pFile); ...@@ -40,13 +41,19 @@ static int tsdbWriteFileHead(SFile *pFile);
static int tsdbWriteHeadFileIdx(SFile *pFile, int maxTables); static int tsdbWriteHeadFileIdx(SFile *pFile, int maxTables);
static int tsdbOpenFGroup(STsdbFileH *pFileH, char *dataDir, int fid); static int tsdbOpenFGroup(STsdbFileH *pFileH, char *dataDir, int fid);
STsdbFileH *tsdbInitFileH(char *dataDir, int maxFiles) { STsdbFileH *tsdbInitFileH(char *dataDir, STsdbCfg *pCfg) {
STsdbFileH *pFileH = (STsdbFileH *)calloc(1, sizeof(STsdbFileH) + sizeof(SFileGroup) * maxFiles); STsdbFileH *pFileH = (STsdbFileH *)calloc(1, sizeof(STsdbFileH));
if (pFileH == NULL) { // TODO: deal with ERROR here if (pFileH == NULL) { // TODO: deal with ERROR here
return NULL; 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); DIR *dir = opendir(dataDir);
if (dir == NULL) { if (dir == NULL) {
...@@ -69,7 +76,12 @@ STsdbFileH *tsdbInitFileH(char *dataDir, int maxFiles) { ...@@ -69,7 +76,12 @@ STsdbFileH *tsdbInitFileH(char *dataDir, int maxFiles) {
return pFileH; 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) { static int tsdbInitFile(char *dataDir, int fid, const char *suffix, SFile *pFile) {
tsdbGetFileName(dataDir, fid, suffix, pFile->fname); tsdbGetFileName(dataDir, fid, suffix, pFile->fname);
...@@ -161,6 +173,18 @@ void tsdbInitFileGroupIter(STsdbFileH *pFileH, SFileGroupIter *pIter, int direct ...@@ -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) { void tsdbSeekFileGroupIter(SFileGroupIter *pIter, int fid) {
if (pIter->numOfFGroups == 0) { if (pIter->numOfFGroups == 0) {
assert(pIter->pFileGroup == NULL); assert(pIter->pFileGroup == NULL);
...@@ -252,43 +276,6 @@ int tsdbCopyBlockDataInFile(SFile *pOutFile, SFile *pInFile, SCompInfo *pCompInf ...@@ -252,43 +276,6 @@ int tsdbCopyBlockDataInFile(SFile *pOutFile, SFile *pInFile, SCompInfo *pCompInf
return 0; 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) { static int compFGroupKey(const void *key, const void *fgroup) {
int fid = *(int *)key; int fid = *(int *)key;
SFileGroup *pFGroup = (SFileGroup *)fgroup; SFileGroup *pFGroup = (SFileGroup *)fgroup;
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#include "tsdbMain.h" #include "tsdbMain.h"
#include "tscompression.h" #include "tscompression.h"
#include "tchecksum.h" #include "tchecksum.h"
#include "ttime.h"
int tsdbDebugFlag = 135; int tsdbDebugFlag = 135;
...@@ -27,7 +28,7 @@ static int32_t tsdbCheckAndSetDefaultCfg(STsdbCfg *pCfg); ...@@ -27,7 +28,7 @@ static int32_t tsdbCheckAndSetDefaultCfg(STsdbCfg *pCfg);
static int32_t tsdbSetRepoEnv(STsdbRepo *pRepo); static int32_t tsdbSetRepoEnv(STsdbRepo *pRepo);
static int32_t tsdbDestroyRepoEnv(STsdbRepo *pRepo); static int32_t tsdbDestroyRepoEnv(STsdbRepo *pRepo);
// static int tsdbOpenMetaFile(char *tsdbDir); // 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 tsdbRestoreCfg(STsdbRepo *pRepo, STsdbCfg *pCfg);
static int32_t tsdbGetDataDirName(STsdbRepo *pRepo, char *fname); static int32_t tsdbGetDataDirName(STsdbRepo *pRepo, char *fname);
static void * tsdbCommitData(void *arg); static void * tsdbCommitData(void *arg);
...@@ -35,8 +36,9 @@ static int tsdbCommitToFile(STsdbRepo *pRepo, int fid, SSkipListIterator **i ...@@ -35,8 +36,9 @@ static int tsdbCommitToFile(STsdbRepo *pRepo, int fid, SSkipListIterator **i
SDataCols *pDataCols); SDataCols *pDataCols);
static TSKEY tsdbNextIterKey(SSkipListIterator *pIter); static TSKEY tsdbNextIterKey(SSkipListIterator *pIter);
static int tsdbHasDataToCommit(SSkipListIterator **iters, int nIters, TSKEY minKey, TSKEY maxKey); 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, static void tsdbAlterCompression(STsdbRepo *pRepo, int8_t compression);
// int64_t uid); 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_ID(pRepo, sid) (((STSDBRepo *)pRepo)->pTableList)[sid]
#define TSDB_GET_TABLE_BY_NAME(pRepo, name) #define TSDB_GET_TABLE_BY_NAME(pRepo, name)
...@@ -214,7 +216,7 @@ TsdbRepoT *tsdbOpenRepo(char *tsdbDir, STsdbAppH *pAppH) { ...@@ -214,7 +216,7 @@ TsdbRepoT *tsdbOpenRepo(char *tsdbDir, STsdbAppH *pAppH) {
} }
tsdbGetDataDirName(pRepo, dataDir); tsdbGetDataDirName(pRepo, dataDir);
pRepo->tsdbFileH = tsdbInitFileH(dataDir, pRepo->config.maxTables); pRepo->tsdbFileH = tsdbInitFileH(dataDir, &(pRepo->config));
if (pRepo->tsdbFileH == NULL) { if (pRepo->tsdbFileH == NULL) {
tsdbFreeCache(pRepo->tsdbCache); tsdbFreeCache(pRepo->tsdbCache);
tsdbFreeMeta(pRepo->tsdbMeta); tsdbFreeMeta(pRepo->tsdbMeta);
...@@ -297,10 +299,23 @@ int32_t tsdbCloseRepo(TsdbRepoT *repo) { ...@@ -297,10 +299,23 @@ int32_t tsdbCloseRepo(TsdbRepoT *repo) {
*/ */
int32_t tsdbConfigRepo(TsdbRepoT *repo, STsdbCfg *pCfg) { int32_t tsdbConfigRepo(TsdbRepoT *repo, STsdbCfg *pCfg) {
STsdbRepo *pRepo = (STsdbRepo *)repo; STsdbRepo *pRepo = (STsdbRepo *)repo;
STsdbCfg * pRCfg = &pRepo->config;
pRepo->config = *pCfg; if (tsdbCheckAndSetDefaultCfg(pCfg) < 0) return TSDB_CODE_INVALID_CONFIG;
// TODO
return 0; 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) { int32_t tsdbTriggerCommit(TsdbRepoT *repo) {
...@@ -394,13 +409,16 @@ STableInfo *tsdbGetTableInfo(TsdbRepoT *pRepo, STableId tableId) { ...@@ -394,13 +409,16 @@ STableInfo *tsdbGetTableInfo(TsdbRepoT *pRepo, STableId tableId) {
// TODO: need to return the number of data inserted // TODO: need to return the number of data inserted
int32_t tsdbInsertData(TsdbRepoT *repo, SSubmitMsg *pMsg) { int32_t tsdbInsertData(TsdbRepoT *repo, SSubmitMsg *pMsg) {
SSubmitMsgIter msgIter; SSubmitMsgIter msgIter;
STsdbRepo *pRepo = (STsdbRepo *)repo;
tsdbInitSubmitMsgIter(pMsg, &msgIter); tsdbInitSubmitMsgIter(pMsg, &msgIter);
SSubmitBlk *pBlock = NULL; SSubmitBlk *pBlock = NULL;
int32_t code = TSDB_CODE_SUCCESS; int32_t code = TSDB_CODE_SUCCESS;
TSKEY now = taosGetTimestamp(pRepo->config.precision);
while ((pBlock = tsdbGetSubmitMsgNext(&msgIter)) != NULL) { while ((pBlock = tsdbGetSubmitMsgNext(&msgIter)) != NULL) {
if ((code = tsdbInsertDataToTable(repo, pBlock)) != TSDB_CODE_SUCCESS) { if ((code = tsdbInsertDataToTable(repo, pBlock, now)) != TSDB_CODE_SUCCESS) {
return code; return code;
} }
} }
...@@ -787,21 +805,31 @@ static int32_t tdInsertRowToTable(STsdbRepo *pRepo, SDataRow row, STable *pTable ...@@ -787,21 +805,31 @@ static int32_t tdInsertRowToTable(STsdbRepo *pRepo, SDataRow row, STable *pTable
return 0; return 0;
} }
static int32_t tsdbInsertDataToTable(TsdbRepoT *repo, SSubmitBlk *pBlock) { static int32_t tsdbInsertDataToTable(TsdbRepoT *repo, SSubmitBlk *pBlock, TSKEY now) {
STsdbRepo *pRepo = (STsdbRepo *)repo; STsdbRepo *pRepo = (STsdbRepo *)repo;
STableId tableId = {.uid = pBlock->uid, .tid = pBlock->tid}; STableId tableId = {.uid = pBlock->uid, .tid = pBlock->tid};
STable *pTable = tsdbIsValidTableToInsert(pRepo->tsdbMeta, tableId); STable *pTable = tsdbIsValidTableToInsert(pRepo->tsdbMeta, tableId);
if (pTable == NULL) { 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; return TSDB_CODE_INVALID_TABLE_ID;
} }
SSubmitBlkIter blkIter; SSubmitBlkIter blkIter = {0};
SDataRow row; 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); tsdbInitSubmitBlkIter(pBlock, &blkIter);
while ((row = tsdbGetSubmitBlkNext(&blkIter)) != NULL) { 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) { if (tdInsertRowToTable(pRepo, row, pTable) < 0) {
return -1; return -1;
} }
...@@ -903,6 +931,9 @@ static void *tsdbCommitData(void *arg) { ...@@ -903,6 +931,9 @@ static void *tsdbCommitData(void *arg) {
} }
} }
// Do retention actions
tsdbFitRetention(pRepo);
_exit: _exit:
tdFreeDataCols(pDataCols); tdFreeDataCols(pDataCols);
tsdbDestroyTableIters(iters, pCfg->maxTables); tsdbDestroyTableIters(iters, pCfg->maxTables);
...@@ -910,6 +941,7 @@ _exit: ...@@ -910,6 +941,7 @@ _exit:
tsdbLockRepo(arg); tsdbLockRepo(arg);
tdListMove(pCache->imem->list, pCache->pool.memPool); tdListMove(pCache->imem->list, pCache->pool.memPool);
tsdbAdjustCacheBlocks(pCache);
tdListFree(pCache->imem->list); tdListFree(pCache->imem->list);
free(pCache->imem); free(pCache->imem);
pCache->imem = NULL; pCache->imem = NULL;
...@@ -1028,4 +1060,27 @@ static int tsdbHasDataToCommit(SSkipListIterator **iters, int nIters, TSKEY minK ...@@ -1028,4 +1060,27 @@ static int tsdbHasDataToCommit(SSkipListIterator **iters, int nIters, TSKEY minK
if (nextKey > 0 && (nextKey >= minKey && nextKey <= maxKey)) return 1; if (nextKey > 0 && (nextKey >= minKey && nextKey <= maxKey)) return 1;
} }
return 0; 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
...@@ -414,6 +414,7 @@ int tsdbWriteCompInfo(SRWHelper *pHelper) { ...@@ -414,6 +414,7 @@ int tsdbWriteCompInfo(SRWHelper *pHelper) {
ASSERT((pIdx->len - sizeof(SCompInfo) - sizeof(TSCKSUM)) % sizeof(SCompBlock) == 0); ASSERT((pIdx->len - sizeof(SCompInfo) - sizeof(TSCKSUM)) % sizeof(SCompBlock) == 0);
taosCalcChecksumAppend(0, (uint8_t *)pHelper->pCompInfo, pIdx->len); taosCalcChecksumAppend(0, (uint8_t *)pHelper->pCompInfo, pIdx->len);
pIdx->offset = lseek(pHelper->files.nHeadF.fd, 0, SEEK_END); pIdx->offset = lseek(pHelper->files.nHeadF.fd, 0, SEEK_END);
pIdx->uid = pHelper->tableInfo.uid;
if (pIdx->offset < 0) return -1; if (pIdx->offset < 0) return -1;
ASSERT(pIdx->offset >= tsizeof(pHelper->pCompIdx)); ASSERT(pIdx->offset >= tsizeof(pHelper->pCompIdx));
......
...@@ -22,22 +22,37 @@ extern "C" { ...@@ -22,22 +22,37 @@ extern "C" {
#include <stdint.h> #include <stdint.h>
#include <time.h> #include <time.h>
#include "tutil.h"
//@return timestamp in second //@return timestamp in second
int32_t taosGetTimestampSec(); int32_t taosGetTimestampSec();
//@return timestamp in millisecond //@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 //@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 * @return timestamp decided by global conf variable, tsTimePrecision
* if precision == TSDB_TIME_PRECISION_MICRO, it returns timestamp in microsecond. * if precision == TSDB_TIME_PRECISION_MICRO, it returns timestamp in microsecond.
* precision == TSDB_TIME_PRECISION_MILLI, it returns timestamp in millisecond. * 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); int32_t getTimestampInUsFromStr(char* token, int32_t tokenlen, int64_t* ts);
......
...@@ -41,6 +41,7 @@ typedef struct _taos_qset { ...@@ -41,6 +41,7 @@ typedef struct _taos_qset {
pthread_mutex_t mutex; pthread_mutex_t mutex;
int32_t numOfQueues; int32_t numOfQueues;
int32_t numOfItems; int32_t numOfItems;
tsem_t sem;
} STaosQset; } STaosQset;
typedef struct _taos_qall { typedef struct _taos_qall {
...@@ -59,6 +60,7 @@ taos_queue taosOpenQueue() { ...@@ -59,6 +60,7 @@ taos_queue taosOpenQueue() {
} }
pthread_mutex_init(&queue->mutex, NULL); pthread_mutex_init(&queue->mutex, NULL);
return queue; return queue;
} }
...@@ -79,7 +81,7 @@ void taosCloseQueue(taos_queue param) { ...@@ -79,7 +81,7 @@ void taosCloseQueue(taos_queue param) {
} }
pthread_mutex_unlock(&queue->mutex); pthread_mutex_unlock(&queue->mutex);
pthread_mutex_destroy(&queue->mutex);
free(queue); free(queue);
} }
...@@ -116,11 +118,12 @@ int taosWriteQitem(taos_queue param, int type, void *item) { ...@@ -116,11 +118,12 @@ int taosWriteQitem(taos_queue param, int type, void *item) {
queue->numOfItems++; queue->numOfItems++;
if (queue->qset) atomic_add_fetch_32(&queue->qset->numOfItems, 1); 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); uTrace("item:%p is put into queue:%p, type:%d items:%d", item, queue, type, queue->numOfItems);
pthread_mutex_unlock(&queue->mutex); pthread_mutex_unlock(&queue->mutex);
if (queue->qset) tsem_post(&queue->qset->sem);
return 0; return 0;
} }
...@@ -217,12 +220,15 @@ taos_qset taosOpenQset() { ...@@ -217,12 +220,15 @@ taos_qset taosOpenQset() {
} }
pthread_mutex_init(&qset->mutex, NULL); pthread_mutex_init(&qset->mutex, NULL);
tsem_init(&qset->sem, 0, 0);
return qset; return qset;
} }
void taosCloseQset(taos_qset param) { void taosCloseQset(taos_qset param) {
STaosQset *qset = (STaosQset *)param; STaosQset *qset = (STaosQset *)param;
pthread_mutex_destroy(&qset->mutex);
tsem_destroy(&qset->sem);
free(qset); free(qset);
} }
...@@ -298,6 +304,8 @@ int taosReadQitemFromQset(taos_qset param, int *type, void **pitem, void **phand ...@@ -298,6 +304,8 @@ int taosReadQitemFromQset(taos_qset param, int *type, void **pitem, void **phand
STaosQnode *pNode = NULL; STaosQnode *pNode = NULL;
int code = 0; int code = 0;
tsem_wait(&qset->sem);
pthread_mutex_lock(&qset->mutex); pthread_mutex_lock(&qset->mutex);
for(int i=0; i<qset->numOfQueues; ++i) { for(int i=0; i<qset->numOfQueues; ++i) {
...@@ -339,6 +347,7 @@ int taosReadAllQitemsFromQset(taos_qset param, taos_qall p2, void **phandle) { ...@@ -339,6 +347,7 @@ int taosReadAllQitemsFromQset(taos_qset param, taos_qall p2, void **phandle) {
STaosQall *qall = (STaosQall *)p2; STaosQall *qall = (STaosQall *)p2;
int code = 0; int code = 0;
tsem_wait(&qset->sem);
pthread_mutex_lock(&qset->mutex); pthread_mutex_lock(&qset->mutex);
for(int i=0; i<qset->numOfQueues; ++i) { for(int i=0; i<qset->numOfQueues; ++i) {
...@@ -364,6 +373,7 @@ int taosReadAllQitemsFromQset(taos_qset param, taos_qall p2, void **phandle) { ...@@ -364,6 +373,7 @@ int taosReadAllQitemsFromQset(taos_qset param, taos_qall p2, void **phandle) {
queue->tail = NULL; queue->tail = NULL;
queue->numOfItems = 0; queue->numOfItems = 0;
atomic_sub_fetch_32(&qset->numOfItems, qall->numOfItems); atomic_sub_fetch_32(&qset->numOfItems, qall->numOfItems);
for (int j=1; j<qall->numOfItems; ++j) tsem_wait(&qset->sem);
} }
pthread_mutex_unlock(&queue->mutex); pthread_mutex_unlock(&queue->mutex);
......
...@@ -121,30 +121,6 @@ static int32_t parseLocaltime(char* timestr, int64_t* time, int32_t timePrec); ...@@ -121,30 +121,6 @@ static int32_t parseLocaltime(char* timestr, int64_t* time, int32_t timePrec);
int32_t taosGetTimestampSec() { return (int32_t)time(NULL); } 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) { int32_t taosParseTime(char* timestr, int64_t* time, int32_t len, int32_t timePrec) {
/* parse datatime string in with tz */ /* parse datatime string in with tz */
if (strnchr(timestr, 'T', len, false) != NULL) { if (strnchr(timestr, 'T', len, false) != NULL) {
......
...@@ -184,6 +184,7 @@ int32_t vnodeOpen(int32_t vnode, char *rootDir) { ...@@ -184,6 +184,7 @@ int32_t vnodeOpen(int32_t vnode, char *rootDir) {
pVnode->status = TAOS_VN_STATUS_INIT; pVnode->status = TAOS_VN_STATUS_INIT;
pVnode->refCount = 1; pVnode->refCount = 1;
pVnode->version = 0; pVnode->version = 0;
pVnode->tsdbCfg.tsdbId = pVnode->vgId;
taosAddIntHash(tsDnodeVnodesHash, pVnode->vgId, (char *)(&pVnode)); taosAddIntHash(tsDnodeVnodesHash, pVnode->vgId, (char *)(&pVnode));
int32_t code = vnodeReadCfg(pVnode); int32_t code = vnodeReadCfg(pVnode);
......
...@@ -111,11 +111,13 @@ static int32_t vnodeProcessCreateTableMsg(SVnodeObj *pVnode, void *pCont, SRspRe ...@@ -111,11 +111,13 @@ static int32_t vnodeProcessCreateTableMsg(SVnodeObj *pVnode, void *pCont, SRspRe
int32_t code = 0; int32_t code = 0;
dTrace("pVnode:%p vgId:%d, table:%s, start to create", pVnode, pVnode->vgId, pTable->tableId); dTrace("pVnode:%p vgId:%d, table:%s, start to create", pVnode, pVnode->vgId, pTable->tableId);
int16_t numOfColumns = htons(pTable->numOfColumns); int16_t numOfColumns = htons(pTable->numOfColumns);
int16_t numOfTags = htons(pTable->numOfTags); int16_t numOfTags = htons(pTable->numOfTags);
int32_t sid = htonl(pTable->sid); int32_t sid = htonl(pTable->sid);
uint64_t uid = htobe64(pTable->uid); uint64_t uid = htobe64(pTable->uid);
SSchema *pSchema = (SSchema *) pTable->data; SSchema * pSchema = (SSchema *)pTable->data;
STSchema *pDestTagSchema = NULL;
SDataRow dataRow = NULL;
int32_t totalCols = numOfColumns + numOfTags; int32_t totalCols = numOfColumns + numOfTags;
...@@ -130,7 +132,7 @@ static int32_t vnodeProcessCreateTableMsg(SVnodeObj *pVnode, void *pCont, SRspRe ...@@ -130,7 +132,7 @@ static int32_t vnodeProcessCreateTableMsg(SVnodeObj *pVnode, void *pCont, SRspRe
tsdbTableSetName(&tCfg, pTable->tableId, false); tsdbTableSetName(&tCfg, pTable->tableId, false);
if (numOfTags != 0) { if (numOfTags != 0) {
STSchema *pDestTagSchema = tdNewSchema(numOfTags); pDestTagSchema = tdNewSchema(numOfTags);
for (int i = numOfColumns; i < totalCols; i++) { for (int i = numOfColumns; i < totalCols; i++) {
tdSchemaAddCol(pDestTagSchema, pSchema[i].type, htons(pSchema[i].colId), htons(pSchema[i].bytes)); 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 ...@@ -140,7 +142,7 @@ static int32_t vnodeProcessCreateTableMsg(SVnodeObj *pVnode, void *pCont, SRspRe
char *pTagData = pTable->data + totalCols * sizeof(SSchema); char *pTagData = pTable->data + totalCols * sizeof(SSchema);
int accumBytes = 0; int accumBytes = 0;
SDataRow dataRow = tdNewDataRowFromSchema(pDestTagSchema); dataRow = tdNewDataRowFromSchema(pDestTagSchema);
for (int i = 0; i < numOfTags; i++) { for (int i = 0; i < numOfTags; i++) {
STColumn *pTCol = schemaColAt(pDestTagSchema, i); STColumn *pTCol = schemaColAt(pDestTagSchema, i);
...@@ -151,6 +153,8 @@ static int32_t vnodeProcessCreateTableMsg(SVnodeObj *pVnode, void *pCont, SRspRe ...@@ -151,6 +153,8 @@ static int32_t vnodeProcessCreateTableMsg(SVnodeObj *pVnode, void *pCont, SRspRe
} }
code = tsdbCreateTable(pVnode->tsdb, &tCfg); code = tsdbCreateTable(pVnode->tsdb, &tCfg);
tdFreeDataRow(dataRow);
tfree(pDestTagSchema);
tfree(pDestSchema); tfree(pDestSchema);
dTrace("pVnode:%p vgId:%d, table:%s is created, result:%x", pVnode, pVnode->vgId, pTable->tableId, code); dTrace("pVnode:%p vgId:%d, table:%s is created, result:%x", pVnode, pVnode->vgId, pTable->tableId, code);
......
...@@ -27,8 +27,8 @@ class TDTestCase: ...@@ -27,8 +27,8 @@ class TDTestCase:
tdSql.query('select speed from tb order by ts desc') tdSql.query('select speed from tb order by ts desc')
tdLog.info('tdSql.checkRow(1)') tdLog.info('tdSql.checkRow(1)')
tdSql.checkRows(1) tdSql.checkRows(1)
tdLog.info('tdSql.checkData(0, 0, 1234)') tdLog.info("tdSql.checkData(0, 0, '1234')")
tdSql.checkData(0, 0, 1234) tdSql.checkData(0, 0, '1234')
tdLog.info('=============== step3') tdLog.info('=============== step3')
tdLog.info("insert into tb values (now+2a, '23456')") tdLog.info("insert into tb values (now+2a, '23456')")
tdSql.execute("insert into tb values (now+2a, '23456')") tdSql.execute("insert into tb values (now+2a, '23456')")
...@@ -37,8 +37,8 @@ class TDTestCase: ...@@ -37,8 +37,8 @@ class TDTestCase:
tdLog.info('tdSql.checkRow(2)') tdLog.info('tdSql.checkRow(2)')
tdSql.checkRows(2) tdSql.checkRows(2)
tdLog.info('==> $data00') tdLog.info('==> $data00')
tdLog.info('tdSql.checkData(0, 0, 23456)') tdLog.info("tdSql.checkData(0, 0, '23456')")
tdSql.checkData(0, 0, 23456) tdSql.checkData(0, 0, '23456')
tdLog.info('=============== step4') tdLog.info('=============== step4')
tdLog.info("insert into tb values (now+3a, '345678')") tdLog.info("insert into tb values (now+3a, '345678')")
tdSql.error("insert into tb values (now+3a, '345678')") tdSql.error("insert into tb values (now+3a, '345678')")
...@@ -49,8 +49,8 @@ class TDTestCase: ...@@ -49,8 +49,8 @@ class TDTestCase:
tdLog.info('tdSql.checkRow(3)') tdLog.info('tdSql.checkRow(3)')
tdSql.checkRows(3) tdSql.checkRows(3)
tdLog.info('==> $data00') tdLog.info('==> $data00')
tdLog.info('tdSql.checkData(0, 0, 34567)') tdLog.info("tdSql.checkData(0, 0, '34567')")
tdSql.checkData(0, 0, 34567) tdSql.checkData(0, 0, '34567')
tdLog.info('drop database db') tdLog.info('drop database db')
tdSql.execute('drop database db') tdSql.execute('drop database db')
tdLog.info('show databases') tdLog.info('show databases')
......
...@@ -93,6 +93,9 @@ class TDSql: ...@@ -93,6 +93,9 @@ class TDSql:
if data is None: if data is None:
tdLog.info("sql:%.40s, row:%d col:%d data:%s == expect:%s" % tdLog.info("sql:%.40s, row:%d col:%d data:%s == expect:%s" %
(self.sql, row, col, self.queryResult[row][col], data)) (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): elif isinstance(data, datetime.date):
tdLog.info("sql:%.40s, row:%d col:%d data:%s == expect:%s" % tdLog.info("sql:%.40s, row:%d col:%d data:%s == expect:%s" %
(self.sql, row, col, self.queryResult[row][col], data)) (self.sql, row, col, self.queryResult[row][col], data))
......
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
./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
...@@ -227,7 +227,8 @@ print ============= step6 ...@@ -227,7 +227,8 @@ print ============= step6
sql close sql close
sql connect owrite sql connect owrite
sleep 2000 sleep 2000
sql reset query cache
sleep 1000
sql create database d1 sql create database d1
sql create database d3 sql create database d3
sql create table d1.t1 (ts timestamp, i int) sql create table d1.t1 (ts timestamp, i int)
......
...@@ -4,7 +4,7 @@ run unique/account/account_len.sim ...@@ -4,7 +4,7 @@ run unique/account/account_len.sim
run unique/account/authority.sim run unique/account/authority.sim
run unique/account/basic.sim run unique/account/basic.sim
run unique/account/paras.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/pass_len.sim
run unique/account/usage.sim run unique/account/usage.sim
run unique/account/user_create.sim run unique/account/user_create.sim
......
system sh/stop_dnodes.sh system sh/stop_dnodes.sh
system sh/deploy.sh -n dnode1 -i 1 system sh/deploy.sh -n dnode1 -i 1
system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 4 system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 4
......
...@@ -92,7 +92,7 @@ $x = 0 ...@@ -92,7 +92,7 @@ $x = 0
show2: show2:
$x = $x + 1 $x = $x + 1
sleep 2000 sleep 2000
if $x == 30 then if $x == 20 then
return -1 return -1
endi endi
sql show dnodes -x show2 sql show dnodes -x show2
...@@ -134,7 +134,7 @@ $x = 0 ...@@ -134,7 +134,7 @@ $x = 0
show4: show4:
$x = $x + 1 $x = $x + 1
sleep 2000 sleep 2000
if $x == 30 then if $x == 20 then
return -1 return -1
endi endi
sql show dnodes -x show4 sql show dnodes -x show4
...@@ -442,19 +442,24 @@ sql reset query cache ...@@ -442,19 +442,24 @@ sql reset query cache
sleep 1000 sleep 1000
sql use c_b1_d1 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 if $rows != 5 then
return -1 return -1
endi endi
sql use c_b1_d2 sql use c_b1_d2
sql select * from c_b1_t2 sql select * from c_b1_d2.c_b1_t2
if $rows == 6 then print $rows
print $data01 $data11 $data21 $data31 $data41
if $rows != 6 then
return -1 return -1
endi endi
sql use c_b1_d3 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 print $data01 $data11 $data21 $data31 $data41
if $rows != 6 then if $rows != 6 then
return -1 return -1
...@@ -464,11 +469,13 @@ if $data01 != 36 then ...@@ -464,11 +469,13 @@ if $data01 != 36 then
endi endi
sql use c_b1_d4 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 print $data01 $data11 $data21 $data31 $data41
sql use c_b1_d5 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 print $data01 $data11 $data21 $data31 $data41
if $data01 != 51 then if $data01 != 51 then
return -1 return -1
...@@ -487,7 +494,8 @@ if $data41 != 55 then ...@@ -487,7 +494,8 @@ if $data41 != 55 then
endi endi
sql use c_b1_d6 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 print $data01 $data11 $data21 $data31 $data41
if $data01 != 61 then if $data01 != 61 then
return -1 return -1
...@@ -506,7 +514,8 @@ if $data41 != 65 then ...@@ -506,7 +514,8 @@ if $data41 != 65 then
endi endi
sql use c_b1_d7 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 print $data01 $data11 $data21 $data31 $data41
if $data01 != 71 then if $data01 != 71 then
return -1 return -1
...@@ -525,7 +534,8 @@ if $data41 != 75 then ...@@ -525,7 +534,8 @@ if $data41 != 75 then
endi endi
sql use c_b1_d8 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 print $data01 $data11 $data21 $data31 $data41
if $data01 != 81 then if $data01 != 81 then
return -1 return -1
......
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
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
...@@ -128,13 +128,13 @@ print dnode2 $dnode2Vnodes ...@@ -128,13 +128,13 @@ print dnode2 $dnode2Vnodes
$dnode3Vnodes = $data2_3 $dnode3Vnodes = $data2_3
print dnode3 $dnode3Vnodes print dnode3 $dnode3Vnodes
if $dnode1Vnodes != 1 then if $dnode1Vnodes != 3 then
goto show2 goto show2
endi endi
if $dnode2Vnodes != null then if $dnode2Vnodes != null then
goto show2 goto show2
endi endi
if $dnode3Vnodes != 1 then if $dnode3Vnodes != 3 then
goto show2 goto show2
endi endi
...@@ -151,18 +151,9 @@ print dnode4 ==> $dnode4Role ...@@ -151,18 +151,9 @@ print dnode4 ==> $dnode4Role
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
print ============================== step3 print ============================== step3
print ========= start dnode2 print ========= start dnode4
sql create dnode $hostname2 sql create dnode $hostname4
system sh/exec_up.sh -n dnode4 -s start
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
sleep 10000 sleep 10000
$x = 0 $x = 0
...@@ -175,15 +166,15 @@ show3: ...@@ -175,15 +166,15 @@ show3:
sql show dnodes -x show3 sql show dnodes -x show3
$dnode1Vnodes = $data2_1 $dnode1Vnodes = $data2_1
print dnode1 $dnode1Vnodes print dnode1 $dnode1Vnodes
$dnode2Vnodes = $data2_2 $dnode4Vnodes = $data2_4
print dnode2 $dnode2Vnodes print dnode4 $dnode4Vnodes
$dnode3Vnodes = $data2_3 $dnode3Vnodes = $data2_3
print dnode3 $dnode3Vnodes print dnode3 $dnode3Vnodes
if $dnode1Vnodes != 2 then if $dnode1Vnodes != 2 then
goto show3 goto show3
endi endi
if $dnode2Vnodes != 2 then if $dnode4Vnodes != 2 then
goto show3 goto show3
endi endi
if $dnode3Vnodes != 2 then if $dnode3Vnodes != 2 then
...@@ -200,6 +191,20 @@ print dnode2 ==> $dnode2Role ...@@ -200,6 +191,20 @@ print dnode2 ==> $dnode2Role
print dnode3 ==> $dnode3Role print dnode3 ==> $dnode3Role
print dnode4 ==> $dnode4Role 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 ============================== step4
print ========= drop dnode3 print ========= drop dnode3
sql drop dnode $hostname3 sql drop dnode $hostname3
...@@ -215,15 +220,15 @@ show4: ...@@ -215,15 +220,15 @@ show4:
sql show dnodes -x show4 sql show dnodes -x show4
$dnode1Vnodes = $data2_1 $dnode1Vnodes = $data2_1
print dnode1 $dnode1Vnodes print dnode1 $dnode1Vnodes
$dnode2Vnodes = $data2_2 $dnode4Vnodes = $data2_4
print dnode2 $dnode2Vnodes print dnode4 $dnode4Vnodes
$dnode3Vnodes = $data2_3 $dnode3Vnodes = $data2_3
print dnode3 $dnode3Vnodes print dnode3 $dnode3Vnodes
if $dnode1Vnodes != 1 then if $dnode1Vnodes != 3 then
goto show4 goto show4
endi endi
if $dnode2Vnodes != 1 then if $dnode4Vnodes != 3 then
goto show4 goto show4
endi endi
if $dnode3Vnodes != null then if $dnode3Vnodes != null then
...@@ -240,21 +245,26 @@ print dnode2 ==> $dnode2Role ...@@ -240,21 +245,26 @@ print dnode2 ==> $dnode2Role
print dnode3 ==> $dnode3Role print dnode3 ==> $dnode3Role
print dnode4 ==> $dnode4Role 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 system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
print ============================== step5 print ============================== step5
print ========= start dnode3 print ========= start dnode3
sql create dnode $hostname3 sql create dnode $hostname5
system sh/exec_up.sh -n dnode5 -s start
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
sleep 9000 sleep 9000
$x = 0 $x = 0
...@@ -267,33 +277,30 @@ show5: ...@@ -267,33 +277,30 @@ show5:
sql show dnodes -x show5 sql show dnodes -x show5
$dnode1Vnodes = $data2_1 $dnode1Vnodes = $data2_1
print dnode1 $dnode1Vnodes print dnode1 $dnode1Vnodes
$dnode2Vnodes = $data2_2 $dnode4Vnodes = $data2_4
print dnode2 $dnode2Vnodes print dnode4 $dnode4Vnodes
$dnode3Vnodes = $data2_3 $dnode5Vnodes = $data2_5
print dnode3 $dnode3Vnodes print dnode5 $dnode5Vnodes
if $dnode1Vnodes != 2 then if $dnode1Vnodes != 2 then
goto show5 goto show5
endi endi
if $dnode2Vnodes != 2 then if $dnode4Vnodes != 2 then
goto show5 goto show5
endi endi
if $dnode3Vnodes != 2 then if $dnode5Vnodes != 2 then
goto show5 goto show5
endi endi
sql show mnodes sql show mnodes
$dnode1Role = $data2_1 $dnode1Role = $data2_1
$dnode2Role = $data2_2
$dnode3Role = $data2_3
$dnode4Role = $data2_4 $dnode4Role = $data2_4
$dnode5Role = $data2_5
print dnode1 ==> $dnode1Role print dnode1 ==> $dnode1Role
print dnode2 ==> $dnode2Role
print dnode3 ==> $dnode3Role
print dnode4 ==> $dnode4Role print dnode4 ==> $dnode4Role
print dnode5 ==> $dnode5Role
print ============================== step6 print ============================== step6
print ========= drop dnode1
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
print stop dnode1 and sleep 10000 print stop dnode1 and sleep 10000
sleep 10000 sleep 10000
...@@ -302,347 +309,63 @@ sql drop dnode $hostname1 ...@@ -302,347 +309,63 @@ sql drop dnode $hostname1
print drop dnode1 and sleep 9000 print drop dnode1 and sleep 9000
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 sql show mnodes
$dnode1Role = $data2_1 $dnode1Role = $data2_1
$dnode2Role = $data2_2
$dnode3Role = $data2_3
$dnode4Role = $data2_4 $dnode4Role = $data2_4
$dnode5Role = $data2_5
print dnode1 ==> $dnode1Role print dnode1 ==> $dnode1Role
print dnode2 ==> $dnode2Role
print dnode3 ==> $dnode3Role
print dnode4 ==> $dnode4Role print dnode4 ==> $dnode4Role
print dnode5 ==> $dnode5Role
print ============================== step7 if $dnode1Role != offline then
print ========= start dnode1 return -1
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
endi endi
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT print ============================== step6.1
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
system sh/exec_up.sh -n dnode1 -s start system sh/exec_up.sh -n dnode1 -s start
system sh/exec_up.sh -n dnode4 -s start
sleep 10000
$x = 0 $x = 0
show10: show6:
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 $x = $x + 1
sleep 2000 sleep 2000
if $x == 30 then if $x == 30 then
return -1 return -1
endi endi
sql show dnodes -x show10 sql show dnodes -x show6
$dnode1Vnodes = $data2_1 $dnode1Vnodes = $data2_1
print dnode1 $dnode1Vnodes print dnode1 $dnode1Vnodes
$dnode2Vnodes = $data2_2
print dnode2 $dnode2Vnodes
$dnode3Vnodes = $data2_3
print dnode3 $dnode3Vnodes
$dnode4Vnodes = $data2_4 $dnode4Vnodes = $data2_4
print dnode4 $dnode4Vnodes print dnode4 $dnode4Vnodes
$dnode5Vnodes = $data2_5
print dnode5 $dnode5Vnodes
if $dnode1Vnodes != 2 then if $dnode1Vnodes != null then
goto show10 goto show6
endi
if $dnode2Vnodes != 2 then
goto show10
endi endi
if $dnode3Vnodes != 2 then if $dnode4Vnodes != 3 then
goto show10 goto show6
endi endi
if $dnode4Vnodes != 2 then if $dnode5Vnodes != 3 then
goto show10 goto show6
endi endi
print ============================== step11
sql show mnodes sql show mnodes
$dnode1Role = $data2_1 $dnode1Role = $data2_1
$dnode2Role = $data2_2
$dnode3Role = $data2_3
$dnode4Role = $data2_4 $dnode4Role = $data2_4
$dnode5Role = $data2_5
print dnode1 ==> $dnode1Role print dnode1 ==> $dnode1Role
print dnode2 ==> $dnode2Role
print dnode3 ==> $dnode3Role
print dnode4 ==> $dnode4Role print dnode4 ==> $dnode4Role
print dnode5 ==> $dnode5Role
sql create database c_b2_d5 replica 2 tables 4 #system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
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
print ============================== step12 print ============================== step12
print ========= check data print ========= check data
sql use c_b2_d1 sql reset query cache
sql select * from c_b2_t1 order by t desc sleep 1000
sql select * from c_b2_d1.c_b2_t1 order by t desc
print $data01 $data11 $data21 $data31 $data41 print $data01 $data11 $data21 $data31 $data41
if $data01 != 11 then if $data01 != 11 then
return -1 return -1
...@@ -660,8 +383,7 @@ if $data41 != 15 then ...@@ -660,8 +383,7 @@ if $data41 != 15 then
return -1 return -1
endi endi
sql use c_b2_d2 sql select * from c_b2_d2.c_b2_t2 order by t desc
sql select * from c_b2_t2 order by t desc
print $data01 $data11 $data21 $data31 $data41 print $data01 $data11 $data21 $data31 $data41
#if $data01 != 21 then #if $data01 != 21 then
...@@ -680,8 +402,7 @@ print $data01 $data11 $data21 $data31 $data41 ...@@ -680,8 +402,7 @@ print $data01 $data11 $data21 $data31 $data41
# return -1 # return -1
#endi #endi
sql use c_b2_d3 sql select * from c_b2_d3.c_b2_t3 order by t desc
sql select * from c_b2_t3 order by t desc
print $data01 $data11 $data21 $data31 $data41 print $data01 $data11 $data21 $data31 $data41
if $data01 != 31 then if $data01 != 31 then
return -1 return -1
...@@ -699,8 +420,7 @@ if $data41 != 35 then ...@@ -699,8 +420,7 @@ if $data41 != 35 then
return -1 return -1
endi endi
sql use c_b2_d4 sql select * from c_b2_d4.c_b2_t4 order by t desc
sql select * from c_b2_t4 order by t desc
print $data01 $data11 $data21 $data31 $data41 print $data01 $data11 $data21 $data31 $data41
if $data01 != 41 then if $data01 != 41 then
return -1 return -1
...@@ -718,8 +438,7 @@ if $data41 != 45 then ...@@ -718,8 +438,7 @@ if $data41 != 45 then
return -1 return -1
endi endi
sql use c_b2_d5 sql select * from c_b2_d5.c_b2_t5 order by t desc
sql select * from c_b2_t5 order by t desc
print $data01 $data11 $data21 $data31 $data41 print $data01 $data11 $data21 $data31 $data41
if $data01 != 51 then if $data01 != 51 then
return -1 return -1
...@@ -737,8 +456,7 @@ if $data41 != 55 then ...@@ -737,8 +456,7 @@ if $data41 != 55 then
return -1 return -1
endi endi
sql use c_b2_d6 sql select * from c_b2_d6.c_b2_t6 order by t desc
sql select * from c_b2_t6 order by t desc
print $data01 $data11 $data21 $data31 $data41 print $data01 $data11 $data21 $data31 $data41
if $data01 != 61 then if $data01 != 61 then
return -1 return -1
...@@ -756,7 +474,6 @@ if $data41 != 65 then ...@@ -756,7 +474,6 @@ if $data41 != 65 then
return -1 return -1
endi endi
print ============================================ over print ============================================ over
system sh/exec_up.sh -n dnode1 -s stop -x SIGINT 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 dnode2 -s stop -x SIGINT
...@@ -766,5 +483,3 @@ system sh/exec_up.sh -n dnode5 -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 dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -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 system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
system sh/stop_dnodes.sh system sh/stop_dnodes.sh
system sh/deploy.sh -n dnode1 -i 1 system sh/deploy.sh -n dnode1 -i 1
system sh/deploy.sh -n dnode2 -i 2 system sh/deploy.sh -n dnode2 -i 2
system sh/deploy.sh -n dnode3 -i 3 system sh/deploy.sh -n dnode3 -i 3
...@@ -188,16 +179,8 @@ endi ...@@ -188,16 +179,8 @@ endi
system sh/exec_up.sh -n dnode2 -s stop -x SIGINT system sh/exec_up.sh -n dnode2 -s stop -x SIGINT
print ============================== step4 print ============================== step4
print ========= start dnode2 sql create dnode $hostname5
sleep 3000 system sh/exec_up.sh -n dnode5 -s start
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
sleep 10000 sleep 10000
$x = 0 $x = 0
...@@ -210,14 +193,14 @@ show4: ...@@ -210,14 +193,14 @@ show4:
sql show dnodes -x show4 sql show dnodes -x show4
$dnode1Vnodes = $data2_1 $dnode1Vnodes = $data2_1
print dnode1 $dnode1Vnodes print dnode1 $dnode1Vnodes
$dnode2Vnodes = $data2_2 $dnode5Vnodes = $data2_5
print dnode2 $dnode2Vnodes print dnode5 $dnode5Vnodes
$dnode3Vnodes = $data2_3 $dnode3Vnodes = $data2_3
print dnode3 $dnode3Vnodes print dnode3 $dnode3Vnodes
$dnode4Vnodes = $data2_4 $dnode4Vnodes = $data2_4
print dnode4 $dnode4Vnodes print dnode4 $dnode4Vnodes
if $dnode2Vnodes != 2 then if $dnode5Vnodes != 2 then
goto show4 goto show4
endi endi
...@@ -236,8 +219,8 @@ show5: ...@@ -236,8 +219,8 @@ show5:
sql show dnodes -x show5 sql show dnodes -x show5
$dnode1Vnodes = $data2_1 $dnode1Vnodes = $data2_1
print dnode1 $dnode1Vnodes print dnode1 $dnode1Vnodes
$dnode2Vnodes = $data2_2 $dnode5Vnodes = $data2_5
print dnode2 $dnode2Vnodes print dnode5 $dnode5Vnodes
$dnode3Vnodes = $data2_3 $dnode3Vnodes = $data2_3
print dnode3 $dnode3Vnodes print dnode3 $dnode3Vnodes
$dnode4Vnodes = $data2_4 $dnode4Vnodes = $data2_4
...@@ -246,7 +229,7 @@ print dnode4 $dnode4Vnodes ...@@ -246,7 +229,7 @@ print dnode4 $dnode4Vnodes
if $dnode1Vnodes != 1 then if $dnode1Vnodes != 1 then
goto show5 goto show5
endi endi
if $dnode2Vnodes != 1 then if $dnode5Vnodes != 1 then
goto show5 goto show5
endi endi
if $dnode3Vnodes != null then if $dnode3Vnodes != null then
...@@ -256,20 +239,11 @@ if $dnode4Vnodes != 1 then ...@@ -256,20 +239,11 @@ if $dnode4Vnodes != 1 then
goto show5 goto show5
endi endi
system sh/exec_up.sh -n dnode3 -s stop -x SIGINT system sh/exec_up.sh -n dnode3 -s stop -x SIGINT
print ============================== step6 print ============================== step6
print ========= start dnode3 sql create dnode $hostname6
sleep 3000 system sh/exec_up.sh -n dnode6 -s start
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
sleep 9000 sleep 9000
$x = 0 $x = 0
...@@ -282,14 +256,14 @@ show6: ...@@ -282,14 +256,14 @@ show6:
sql show dnodes -x show6 sql show dnodes -x show6
$dnode1Vnodes = $data2_1 $dnode1Vnodes = $data2_1
print dnode1 $dnode1Vnodes print dnode1 $dnode1Vnodes
$dnode2Vnodes = $data2_2
print dnode2 $dnode2Vnodes
$dnode3Vnodes = $data2_3
print dnode3 $dnode3Vnodes
$dnode4Vnodes = $data2_4 $dnode4Vnodes = $data2_4
print dnode4 $dnode4Vnodes 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 goto show6
endi endi
...@@ -308,20 +282,20 @@ show7: ...@@ -308,20 +282,20 @@ show7:
sql show dnodes -x show7 sql show dnodes -x show7
$dnode1Vnodes = $data2_1 $dnode1Vnodes = $data2_1
print dnode1 $dnode1Vnodes print dnode1 $dnode1Vnodes
$dnode2Vnodes = $data2_2
print dnode2 $dnode2Vnodes
$dnode3Vnodes = $data2_3
print dnode3 $dnode3Vnodes
$dnode4Vnodes = $data2_4 $dnode4Vnodes = $data2_4
print dnode4 $dnode4Vnodes print dnode4 $dnode4Vnodes
$dnode5Vnodes = $data2_5
print dnode5 $dnode5Vnodes
$dnode6Vnodes = $data2_6
print dnode6 $dnode6Vnodes
if $dnode1Vnodes != 1 then if $dnode1Vnodes != 1 then
goto show7 goto show7
endi endi
if $dnode2Vnodes != 1 then if $dnode5Vnodes != 1 then
goto show7 goto show7
endi endi
if $dnode3Vnodes != 1 then if $dnode6Vnodes != 1 then
goto show7 goto show7
endi endi
if $dnode4Vnodes != null then if $dnode4Vnodes != null then
...@@ -331,16 +305,8 @@ endi ...@@ -331,16 +305,8 @@ endi
system sh/exec_up.sh -n dnode4 -s stop -x SIGINT system sh/exec_up.sh -n dnode4 -s stop -x SIGINT
print ============================== step8 print ============================== step8
print ========= start dnode4 sql create dnode $hostname7
sleep 3000 system sh/exec_up.sh -n dnode7 -s start
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
sleep 9000 sleep 9000
$x = 0 $x = 0
...@@ -353,14 +319,14 @@ show8: ...@@ -353,14 +319,14 @@ show8:
sql show dnodes -x show8 sql show dnodes -x show8
$dnode1Vnodes = $data2_1 $dnode1Vnodes = $data2_1
print dnode1 $dnode1Vnodes print dnode1 $dnode1Vnodes
$dnode2Vnodes = $data2_2 $dnode5Vnodes = $data2_5
print dnode2 $dnode2Vnodes print dnode5 $dnode5Vnodes
$dnode3Vnodes = $data2_3 $dnode6Vnodes = $data2_6
print dnode3 $dnode3Vnodes print dnode6 $dnode6Vnodes
$dnode4Vnodes = $data2_4 $dnode7Vnodes = $data2_7
print dnode4 $dnode4Vnodes print dnode7 $dnode7Vnodes
if $dnode4Vnodes != 2 then if $dnode7Vnodes != 2 then
goto show8 goto show8
endi endi
...@@ -382,39 +348,26 @@ show9: ...@@ -382,39 +348,26 @@ show9:
return -1 return -1
endi endi
sql show dnodes -x show9 sql show dnodes -x show9
$dnode1Vnodes = $data2_1 $dnode5Vnodes = $data2_5
print dnode1 $dnode1Vnodes print dnode5 $dnode5Vnodes
$dnode2Vnodes = $data2_2 $dnode6Vnodes = $data2_6
print dnode2 $dnode2Vnodes print dnode6 $dnode6Vnodes
$dnode3Vnodes = $data2_3 $dnode7Vnodes = $data2_7
print dnode3 $dnode3Vnodes print dnode7 $dnode7Vnodes
$dnode4Vnodes = $data2_4
print dnode4 $dnode4Vnodes if $dnode5Vnodes != 1 then
if $dnode1Vnodes != null then
goto show9
endi
if $dnode2Vnodes != 1 then
goto show9 goto show9
endi endi
if $dnode3Vnodes != 1 then if $dnode6Vnodes != 1 then
goto show9 goto show9
endi endi
if $dnode4Vnodes != 1 then if $dnode7Vnodes != 1 then
goto show9 goto show9
endi endi
print ============================== step10 print ============================== step10
print ========= start dnode1 sql create dnode $hostname8
sleep 3000 system sh/exec_up.sh -n dnode8 -s start
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
sleep 9000 sleep 9000
$x = 0 $x = 0
...@@ -425,16 +378,16 @@ show10: ...@@ -425,16 +378,16 @@ show10:
return -1 return -1
endi endi
sql show dnodes -x show10 sql show dnodes -x show10
$dnode1Vnodes = $data2_1 $dnode5Vnodes = $data2_5
print dnode1 $dnode1Vnodes print dnode5 $dnode5Vnodes
$dnode2Vnodes = $data2_2 $dnode6Vnodes = $data2_6
print dnode2 $dnode2Vnodes print dnode6 $dnode6Vnodes
$dnode3Vnodes = $data2_3 $dnode7Vnodes = $data2_7
print dnode3 $dnode3Vnodes print dnode7 $dnode7Vnodes
$dnode4Vnodes = $data2_4 $dnode8Vnodes = $data2_8
print dnode4 $dnode4Vnodes print dnode8 $dnode8Vnodes
if $dnode1Vnodes != 2 then if $dnode8Vnodes != 2 then
goto show10 goto show10
endi endi
...@@ -488,48 +441,15 @@ endi ...@@ -488,48 +441,15 @@ endi
# goto show11 # goto show11
#endi #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 system sh/exec_up.sh -n dnode1 -s stop -x SIGINT
print ============================== step13 print ============================== step13
sql reset query cache
sleep 1000
print ========= check data print ========= check data
sql use c_b3_d1 sql select * from c_b3_d1.c_b3_t1 order by t desc
sql select * from c_b3_t1 order by t desc
print $data01 $data11 $data21 $data31 $data41 print $data01 $data11 $data21 $data31 $data41
if $data01 != 11 then if $data01 != 11 then
return -1 return -1
...@@ -547,8 +467,7 @@ if $data41 != 15 then ...@@ -547,8 +467,7 @@ if $data41 != 15 then
return -1 return -1
endi endi
sql use c_b3_d2 sql select * from c_b3_d2.c_b3_t2 order by t desc
sql select * from c_b3_t2 order by t desc
print $data01 $data11 $data21 $data31 $data41 print $data01 $data11 $data21 $data31 $data41
if $data01 != 21 then if $data01 != 21 then
...@@ -567,8 +486,7 @@ if $data41 != 25 then ...@@ -567,8 +486,7 @@ if $data41 != 25 then
return -1 return -1
endi endi
sql use c_b3_d3 sql select * from c_b3_d3.c_b3_t3 order by t desc
sql select * from c_b3_t3 order by t desc
print $data01 $data11 $data21 $data31 $data41 print $data01 $data11 $data21 $data31 $data41
if $data01 != 31 then if $data01 != 31 then
return -1 return -1
...@@ -586,8 +504,7 @@ if $data41 != 35 then ...@@ -586,8 +504,7 @@ if $data41 != 35 then
return -1 return -1
endi endi
sql use c_b3_d4 sql select * from c_b3_d4.c_b3_t4 order by t desc
sql select * from c_b3_t4 order by t desc
print $data01 $data11 $data21 $data31 $data41 print $data01 $data11 $data21 $data31 $data41
if $data01 != 41 then if $data01 != 41 then
return -1 return -1
...@@ -615,5 +532,3 @@ system sh/exec_up.sh -n dnode5 -s stop -x SIGINT ...@@ -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 dnode6 -s stop -x SIGINT
system sh/exec_up.sh -n dnode7 -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 system sh/exec_up.sh -n dnode8 -s stop -x SIGINT
run unique/cluster/balance1.sim run unique/cluster/balance1.sim
run unique/cluster/balance2.sim run unique/cluster/balance2.sim
run unique/cluster/balance3.sim run unique/cluster/balance3.sim
run unique/cluster/balance1_bug.sim
run unique/cluster/balance1_single.sim
\ No newline at end of file
#################################
run unique/mnode/testSuite.sim
##################################
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册