Merge branch 'develop' into feature/2.0tsdb
This commit is contained in:
commit
6db44e7137
45
.travis.yml
45
.travis.yml
|
@ -24,10 +24,11 @@ matrix:
|
||||||
- python-setuptools
|
- python-setuptools
|
||||||
- python3-pip
|
- python3-pip
|
||||||
- python3-setuptools
|
- python3-setuptools
|
||||||
|
- valgrind
|
||||||
|
|
||||||
before_install:
|
before_install:
|
||||||
- sudo apt update -y -qq
|
- sudo apt update -y -qq
|
||||||
- sudo apt install -y net-tools python-pip python-setuptools python3-pip python3-setuptools
|
- sudo apt install -y net-tools python-pip python-setuptools python3-pip python3-setuptools valgrind
|
||||||
|
|
||||||
before_script:
|
before_script:
|
||||||
- cd ${TRAVIS_BUILD_DIR}
|
- cd ${TRAVIS_BUILD_DIR}
|
||||||
|
@ -43,16 +44,32 @@ matrix:
|
||||||
case $TRAVIS_OS_NAME in
|
case $TRAVIS_OS_NAME in
|
||||||
linux)
|
linux)
|
||||||
cd ${TRAVIS_BUILD_DIR}/debug
|
cd ${TRAVIS_BUILD_DIR}/debug
|
||||||
sudo make install || exit $?
|
sudo make install || travis_terminate $?
|
||||||
|
|
||||||
pip install --user ${TRAVIS_BUILD_DIR}/src/connector/python/linux/python2/
|
pip install --user ${TRAVIS_BUILD_DIR}/src/connector/python/linux/python2/
|
||||||
pip3 install --user ${TRAVIS_BUILD_DIR}/src/connector/python/linux/python3/
|
pip3 install --user ${TRAVIS_BUILD_DIR}/src/connector/python/linux/python3/
|
||||||
|
|
||||||
cd ${TRAVIS_BUILD_DIR}/tests
|
cd ${TRAVIS_BUILD_DIR}/tests
|
||||||
bash ./test-all.sh
|
./test-all.sh || travis_terminate $?
|
||||||
|
|
||||||
if [ "$?" -ne "0" ]; then
|
cd ${TRAVIS_BUILD_DIR}/tests/pytest
|
||||||
exit $?
|
./simpletest.sh -g 2>&1 | tee mem-error-out.txt
|
||||||
|
sleep 1
|
||||||
|
|
||||||
|
# Color setting
|
||||||
|
RED='\033[0;31m'
|
||||||
|
GREEN='\033[1;32m'
|
||||||
|
GREEN_DARK='\033[0;32m'
|
||||||
|
GREEN_UNDERLINE='\033[4;32m'
|
||||||
|
NC='\033[0m'
|
||||||
|
|
||||||
|
memError=`grep -m 1 'ERROR SUMMARY' mem-error-out.txt | awk '{print $4}'`
|
||||||
|
|
||||||
|
if [ -n "$memError" ]; then
|
||||||
|
if [ "$memError" -gt 23 ]; then
|
||||||
|
echo -e "${RED} ## Memory errors number valgrind reports is $memError. More than our threshold! ## ${NC} "
|
||||||
|
travis_terminate $memError
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
;;
|
;;
|
||||||
|
@ -74,12 +91,12 @@ matrix:
|
||||||
# GitHub project metadata
|
# GitHub project metadata
|
||||||
# ** specific to your project **
|
# ** specific to your project **
|
||||||
project:
|
project:
|
||||||
name: sangshuduo/TDengine
|
name: TDengine
|
||||||
version: 2.x
|
version: 2.x
|
||||||
description: sangshuduo/TDengine
|
description: taosdata/TDengine
|
||||||
|
|
||||||
# Where email notification of build analysis results will be sent
|
# Where email notification of build analysis results will be sent
|
||||||
notification_email: sangshuduo@gmail.com
|
notification_email: sdsang@taosdata.com
|
||||||
|
|
||||||
# Commands to prepare for build_command
|
# Commands to prepare for build_command
|
||||||
# ** likely specific to your build **
|
# ** likely specific to your build **
|
||||||
|
@ -87,7 +104,7 @@ matrix:
|
||||||
|
|
||||||
# The command that will be added as an argument to "cov-build" to compile your project for analysis,
|
# The command that will be added as an argument to "cov-build" to compile your project for analysis,
|
||||||
# ** likely specific to your build **
|
# ** likely specific to your build **
|
||||||
build_command: cmake --build .
|
build_command: make
|
||||||
|
|
||||||
# Pattern to match selecting branches that will run analysis. We recommend leaving this set to 'coverity_scan'.
|
# Pattern to match selecting branches that will run analysis. We recommend leaving this set to 'coverity_scan'.
|
||||||
# Take care in resource usage, and consider the build frequency allowances per
|
# Take care in resource usage, and consider the build frequency allowances per
|
||||||
|
@ -132,17 +149,17 @@ matrix:
|
||||||
case $TRAVIS_OS_NAME in
|
case $TRAVIS_OS_NAME in
|
||||||
linux)
|
linux)
|
||||||
cd ${TRAVIS_BUILD_DIR}/debug
|
cd ${TRAVIS_BUILD_DIR}/debug
|
||||||
sudo make install || exit $?
|
sudo make install || travis_terminate $?
|
||||||
|
|
||||||
pip install --user ${TRAVIS_BUILD_DIR}/src/connector/python/linux/python2/
|
pip install --user ${TRAVIS_BUILD_DIR}/src/connector/python/linux/python2/
|
||||||
pip3 install --user ${TRAVIS_BUILD_DIR}/src/connector/python/linux/python3/
|
pip3 install --user ${TRAVIS_BUILD_DIR}/src/connector/python/linux/python3/
|
||||||
|
|
||||||
cd ${TRAVIS_BUILD_DIR}/tests
|
cd ${TRAVIS_BUILD_DIR}/tests
|
||||||
|
|
||||||
bash ./test-all.sh
|
./test-all.sh
|
||||||
|
|
||||||
if [ "$?" -ne "0" ]; then
|
if [ "$?" -ne "0" ]; then
|
||||||
exit $?
|
travis_terminate $?
|
||||||
fi
|
fi
|
||||||
|
|
||||||
sudo pkill taosd
|
sudo pkill taosd
|
||||||
|
@ -150,7 +167,7 @@ matrix:
|
||||||
|
|
||||||
cd ${TRAVIS_BUILD_DIR}
|
cd ${TRAVIS_BUILD_DIR}
|
||||||
lcov -d . --capture --rc lcov_branch_coverage=1 -o coverage.info
|
lcov -d . --capture --rc lcov_branch_coverage=1 -o coverage.info
|
||||||
lcov -l --rc lcov_branch_coverage=1 coverage.info || exit $?
|
lcov -l --rc lcov_branch_coverage=1 coverage.info || travis_terminate $?
|
||||||
|
|
||||||
gem install coveralls-lcov
|
gem install coveralls-lcov
|
||||||
|
|
||||||
|
@ -166,7 +183,6 @@ matrix:
|
||||||
echo -e "${GREEN} ## Uploaded to Coveralls.io! ## ${NC}"
|
echo -e "${GREEN} ## Uploaded to Coveralls.io! ## ${NC}"
|
||||||
else
|
else
|
||||||
echo -e "${RED} ## Coveralls.io not collect coverage report! ## ${NC} "
|
echo -e "${RED} ## Coveralls.io not collect coverage report! ## ${NC} "
|
||||||
exit $?
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
bash <(curl -s https://codecov.io/bash) -y .codecov.yml -f coverage.info
|
bash <(curl -s https://codecov.io/bash) -y .codecov.yml -f coverage.info
|
||||||
|
@ -174,7 +190,6 @@ matrix:
|
||||||
echo -e "${GREEN} ## Uploaded to Codecov! ## ${NC} "
|
echo -e "${GREEN} ## Uploaded to Codecov! ## ${NC} "
|
||||||
else
|
else
|
||||||
echo -e "${RED} ## Codecov did not collect coverage report! ## ${NC} "
|
echo -e "${RED} ## Codecov did not collect coverage report! ## ${NC} "
|
||||||
exit $?
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
;;
|
;;
|
||||||
|
|
|
@ -465,7 +465,7 @@ extern void * tscQhandle;
|
||||||
extern int tscKeepConn[];
|
extern int tscKeepConn[];
|
||||||
extern int tsInsertHeadSize;
|
extern int tsInsertHeadSize;
|
||||||
extern int tscNumOfThreads;
|
extern int tscNumOfThreads;
|
||||||
extern SRpcIpSet tscMgmtIpList;
|
extern SRpcIpSet tscMgmtIpSet;
|
||||||
|
|
||||||
typedef void (*__async_cb_func_t)(void *param, TAOS_RES *tres, int numOfRows);
|
typedef void (*__async_cb_func_t)(void *param, TAOS_RES *tres, int numOfRows);
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
|
|
||||||
#define TSC_MGMT_VNODE 999
|
#define TSC_MGMT_VNODE 999
|
||||||
|
|
||||||
SRpcIpSet tscMgmtIpList;
|
SRpcIpSet tscMgmtIpSet;
|
||||||
SRpcIpSet tscDnodeIpSet;
|
SRpcIpSet tscDnodeIpSet;
|
||||||
|
|
||||||
int (*tscBuildMsg[TSDB_SQL_MAX])(SSqlObj *pSql, SSqlInfo *pInfo) = {0};
|
int (*tscBuildMsg[TSDB_SQL_MAX])(SSqlObj *pSql, SSqlInfo *pInfo) = {0};
|
||||||
|
@ -58,35 +58,40 @@ static void tscSetDnodeIpList(SSqlObj* pSql, STableMeta* pTableMeta) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void tscPrintMgmtIp() {
|
void tscPrintMgmtIp() {
|
||||||
if (tscMgmtIpList.numOfIps <= 0) {
|
if (tscMgmtIpSet.numOfIps <= 0) {
|
||||||
tscError("invalid mgmt IP list:%d", tscMgmtIpList.numOfIps);
|
tscError("invalid mgmt IP list:%d", tscMgmtIpSet.numOfIps);
|
||||||
} else {
|
} else {
|
||||||
for (int i = 0; i < tscMgmtIpList.numOfIps; ++i) {
|
for (int i = 0; i < tscMgmtIpSet.numOfIps; ++i) {
|
||||||
tscTrace("mgmt index:%d ip:%d", i, tscMgmtIpList.ip[i]);
|
tscTrace("mgmt index:%d ip:%d", i, tscMgmtIpSet.ip[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void tscSetMgmtIpListFromCluster(SRpcIpSet *pIpList) {
|
void tscSetMgmtIpListFromCluster(SRpcIpSet *pIpList) {
|
||||||
tscMgmtIpList.numOfIps = htons(pIpList->numOfIps);
|
tscMgmtIpSet.numOfIps = pIpList->numOfIps;
|
||||||
tscMgmtIpList.inUse = htons(pIpList->inUse);
|
tscMgmtIpSet.inUse = pIpList->inUse;
|
||||||
tscMgmtIpList.port = htons(pIpList->port);
|
tscMgmtIpSet.port = htons(pIpList->port);
|
||||||
for (int32_t i = 0; i <tscMgmtIpList.numOfIps; ++i) {
|
for (int32_t i = 0; i < tscMgmtIpSet.numOfIps; ++i) {
|
||||||
tscMgmtIpList.ip[i] = pIpList->ip[i];
|
tscMgmtIpSet.ip[i] = htonl(pIpList->ip[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void tscSetMgmtIpListFromEdge() {
|
void tscSetMgmtIpListFromEdge() {
|
||||||
if (tscMgmtIpList.numOfIps != 1) {
|
if (tscMgmtIpSet.numOfIps != 1) {
|
||||||
tscMgmtIpList.numOfIps = 1;
|
tscMgmtIpSet.numOfIps = 1;
|
||||||
tscMgmtIpList.inUse = 0;
|
tscMgmtIpSet.inUse = 0;
|
||||||
tscMgmtIpList.port = tsMnodeShellPort;
|
tscMgmtIpSet.port = tsMnodeShellPort;
|
||||||
tscMgmtIpList.ip[0] = inet_addr(tsMasterIp);
|
tscMgmtIpSet.ip[0] = inet_addr(tsMasterIp);
|
||||||
tscTrace("edge mgmt IP list:");
|
tscTrace("edge mgmt IP list:");
|
||||||
tscPrintMgmtIp();
|
tscPrintMgmtIp();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void tscUpdateIpSet(void *ahandle, SRpcIpSet *pIpSet) {
|
||||||
|
tscTrace("mgmt IP list is changed for ufp is called");
|
||||||
|
tscMgmtIpSet = *pIpSet;
|
||||||
|
}
|
||||||
|
|
||||||
void tscSetMgmtIpList(SRpcIpSet *pIpList) {
|
void tscSetMgmtIpList(SRpcIpSet *pIpList) {
|
||||||
/*
|
/*
|
||||||
* The iplist returned by the cluster edition is the current management nodes
|
* The iplist returned by the cluster edition is the current management nodes
|
||||||
|
@ -109,7 +114,7 @@ void tscSetMgmtIpList(SRpcIpSet *pIpList) {
|
||||||
UNUSED_FUNC
|
UNUSED_FUNC
|
||||||
static int32_t tscGetMgmtConnMaxRetryTimes() {
|
static int32_t tscGetMgmtConnMaxRetryTimes() {
|
||||||
int32_t factor = 2;
|
int32_t factor = 2;
|
||||||
return tscMgmtIpList.numOfIps * factor;
|
return tscMgmtIpSet.numOfIps * factor;
|
||||||
}
|
}
|
||||||
|
|
||||||
void tscProcessHeartBeatRsp(void *param, TAOS_RES *tres, int code) {
|
void tscProcessHeartBeatRsp(void *param, TAOS_RES *tres, int code) {
|
||||||
|
@ -204,7 +209,7 @@ int tscSendMsgToServer(SSqlObj *pSql) {
|
||||||
};
|
};
|
||||||
rpcSendRequest(pVnodeConn, &pSql->ipList, &rpcMsg);
|
rpcSendRequest(pVnodeConn, &pSql->ipList, &rpcMsg);
|
||||||
} else {
|
} else {
|
||||||
pSql->ipList = tscMgmtIpList;
|
pSql->ipList = tscMgmtIpSet;
|
||||||
pSql->ipList.port = tsMnodeShellPort;
|
pSql->ipList.port = tsMnodeShellPort;
|
||||||
|
|
||||||
tscTrace("%p msg:%s is sent to server %d", pSql, taosMsg[pSql->cmd.msgType], pSql->ipList.port);
|
tscTrace("%p msg:%s is sent to server %d", pSql, taosMsg[pSql->cmd.msgType], pSql->ipList.port);
|
||||||
|
@ -425,7 +430,7 @@ int tscProcessSql(SSqlObj *pSql) {
|
||||||
return pSql->res.code;
|
return pSql->res.code;
|
||||||
}
|
}
|
||||||
} else if (pSql->cmd.command < TSDB_SQL_LOCAL) {
|
} else if (pSql->cmd.command < TSDB_SQL_LOCAL) {
|
||||||
pSql->ipList = tscMgmtIpList;
|
pSql->ipList = tscMgmtIpSet;
|
||||||
} else { // local handler
|
} else { // local handler
|
||||||
return (*tscProcessMsgRsp[pCmd->command])(pSql);
|
return (*tscProcessMsgRsp[pCmd->command])(pSql);
|
||||||
}
|
}
|
||||||
|
@ -2224,10 +2229,7 @@ int tscProcessConnectRsp(SSqlObj *pSql) {
|
||||||
assert(len <= tListLen(pObj->db));
|
assert(len <= tListLen(pObj->db));
|
||||||
strncpy(pObj->db, temp, tListLen(pObj->db));
|
strncpy(pObj->db, temp, tListLen(pObj->db));
|
||||||
|
|
||||||
// SIpList * pIpList;
|
tscSetMgmtIpList(&pConnect->ipList);
|
||||||
// char *rsp = pRes->pRsp + sizeof(SCMConnectRsp);
|
|
||||||
// pIpList = (SIpList *)rsp;
|
|
||||||
// tscSetMgmtIpList(pIpList);
|
|
||||||
|
|
||||||
strcpy(pObj->sversion, pConnect->serverVersion);
|
strcpy(pObj->sversion, pConnect->serverVersion);
|
||||||
pObj->writeAuth = pConnect->writeAuth;
|
pObj->writeAuth = pConnect->writeAuth;
|
||||||
|
|
|
@ -72,23 +72,23 @@ STscObj *taosConnectImpl(const char *ip, const char *user, const char *pass, con
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ip && ip[0]) {
|
if (ip && ip[0]) {
|
||||||
tscMgmtIpList.inUse = 0;
|
tscMgmtIpSet.inUse = 0;
|
||||||
tscMgmtIpList.port = tsMnodeShellPort;
|
tscMgmtIpSet.port = tsMnodeShellPort;
|
||||||
tscMgmtIpList.numOfIps = 1;
|
tscMgmtIpSet.numOfIps = 1;
|
||||||
tscMgmtIpList.ip[0] = inet_addr(ip);
|
tscMgmtIpSet.ip[0] = inet_addr(ip);
|
||||||
|
|
||||||
if (tsMasterIp[0] && strcmp(ip, tsMasterIp) != 0) {
|
if (tsMasterIp[0] && strcmp(ip, tsMasterIp) != 0) {
|
||||||
tscMgmtIpList.numOfIps = 2;
|
tscMgmtIpSet.numOfIps = 2;
|
||||||
tscMgmtIpList.ip[1] = inet_addr(tsMasterIp);
|
tscMgmtIpSet.ip[1] = inet_addr(tsMasterIp);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tsSecondIp[0] && strcmp(tsSecondIp, tsMasterIp) != 0) {
|
if (tsSecondIp[0] && strcmp(tsSecondIp, tsMasterIp) != 0) {
|
||||||
tscMgmtIpList.numOfIps = 3;
|
tscMgmtIpSet.numOfIps = 3;
|
||||||
tscMgmtIpList.ip[2] = inet_addr(tsSecondIp);
|
tscMgmtIpSet.ip[2] = inet_addr(tsSecondIp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
tscMgmtIpList.port = port ? port : tsMnodeShellPort;
|
tscMgmtIpSet.port = port ? port : tsMnodeShellPort;
|
||||||
|
|
||||||
STscObj *pObj = (STscObj *)calloc(1, sizeof(STscObj));
|
STscObj *pObj = (STscObj *)calloc(1, sizeof(STscObj));
|
||||||
if (NULL == pObj) {
|
if (NULL == pObj) {
|
||||||
|
|
|
@ -47,6 +47,7 @@ int tscNumOfThreads;
|
||||||
|
|
||||||
static pthread_once_t tscinit = PTHREAD_ONCE_INIT;
|
static pthread_once_t tscinit = PTHREAD_ONCE_INIT;
|
||||||
void taosInitNote(int numOfNoteLines, int maxNotes, char* lable);
|
void taosInitNote(int numOfNoteLines, int maxNotes, char* lable);
|
||||||
|
void tscUpdateIpSet(void *ahandle, SRpcIpSet *pIpSet);
|
||||||
|
|
||||||
void tscCheckDiskUsage(void *para, void *unused) {
|
void tscCheckDiskUsage(void *para, void *unused) {
|
||||||
taosGetDisk();
|
taosGetDisk();
|
||||||
|
@ -65,6 +66,7 @@ int32_t tscInitRpc(const char *user, const char *secret) {
|
||||||
rpcInit.label = "TSC-vnode";
|
rpcInit.label = "TSC-vnode";
|
||||||
rpcInit.numOfThreads = tscNumOfThreads;
|
rpcInit.numOfThreads = tscNumOfThreads;
|
||||||
rpcInit.cfp = tscProcessMsgFromServer;
|
rpcInit.cfp = tscProcessMsgFromServer;
|
||||||
|
rpcInit.ufp = tscUpdateIpSet;
|
||||||
rpcInit.sessions = tsMaxVnodeConnections;
|
rpcInit.sessions = tsMaxVnodeConnections;
|
||||||
rpcInit.connType = TAOS_CONN_CLIENT;
|
rpcInit.connType = TAOS_CONN_CLIENT;
|
||||||
rpcInit.user = (char*)user;
|
rpcInit.user = (char*)user;
|
||||||
|
@ -145,14 +147,14 @@ void taos_init_imp() {
|
||||||
taosInitNote(tsNumOfLogLines / 10, 1, (char*)"tsc_note");
|
taosInitNote(tsNumOfLogLines / 10, 1, (char*)"tsc_note");
|
||||||
}
|
}
|
||||||
|
|
||||||
tscMgmtIpList.inUse = 0;
|
tscMgmtIpSet.inUse = 0;
|
||||||
tscMgmtIpList.port = tsMnodeShellPort;
|
tscMgmtIpSet.port = tsMnodeShellPort;
|
||||||
tscMgmtIpList.numOfIps = 1;
|
tscMgmtIpSet.numOfIps = 1;
|
||||||
tscMgmtIpList.ip[0] = inet_addr(tsMasterIp);
|
tscMgmtIpSet.ip[0] = inet_addr(tsMasterIp);
|
||||||
|
|
||||||
if (tsSecondIp[0] && strcmp(tsSecondIp, tsMasterIp) != 0) {
|
if (tsSecondIp[0] && strcmp(tsSecondIp, tsMasterIp) != 0) {
|
||||||
tscMgmtIpList.numOfIps = 2;
|
tscMgmtIpSet.numOfIps = 2;
|
||||||
tscMgmtIpList.ip[1] = inet_addr(tsSecondIp);
|
tscMgmtIpSet.ip[1] = inet_addr(tsSecondIp);
|
||||||
}
|
}
|
||||||
|
|
||||||
tscInitMsgsFp();
|
tscInitMsgsFp();
|
||||||
|
|
|
@ -54,6 +54,11 @@ static SRpcIpSet tsMnodeIpSet = {0};
|
||||||
static SDMMnodeInfos tsMnodeInfos = {0};
|
static SDMMnodeInfos tsMnodeInfos = {0};
|
||||||
static SDMDnodeCfg tsDnodeCfg = {0};
|
static SDMDnodeCfg tsDnodeCfg = {0};
|
||||||
|
|
||||||
|
void dnodeUpdateIpSet(void *ahandle, SRpcIpSet *pIpSet) {
|
||||||
|
dTrace("mgmt IP list is changed for ufp is called");
|
||||||
|
tsMnodeIpSet = *pIpSet;
|
||||||
|
}
|
||||||
|
|
||||||
int32_t dnodeInitMClient() {
|
int32_t dnodeInitMClient() {
|
||||||
dnodeReadDnodeCfg();
|
dnodeReadDnodeCfg();
|
||||||
tsRebootTime = taosGetTimestampSec();
|
tsRebootTime = taosGetTimestampSec();
|
||||||
|
@ -90,6 +95,7 @@ int32_t dnodeInitMClient() {
|
||||||
rpcInit.label = "DND-MC";
|
rpcInit.label = "DND-MC";
|
||||||
rpcInit.numOfThreads = 1;
|
rpcInit.numOfThreads = 1;
|
||||||
rpcInit.cfp = dnodeProcessRspFromMnode;
|
rpcInit.cfp = dnodeProcessRspFromMnode;
|
||||||
|
rpcInit.ufp = dnodeUpdateIpSet;
|
||||||
rpcInit.sessions = 100;
|
rpcInit.sessions = 100;
|
||||||
rpcInit.connType = TAOS_CONN_CLIENT;
|
rpcInit.connType = TAOS_CONN_CLIENT;
|
||||||
rpcInit.idleTime = tsShellActivityTimer * 2000;
|
rpcInit.idleTime = tsShellActivityTimer * 2000;
|
||||||
|
|
|
@ -40,7 +40,7 @@ void * mgmtGetNextMnode(void *pNode, struct SMnodeObj **pMnode);
|
||||||
void mgmtReleaseMnode(struct SMnodeObj *pMnode);
|
void mgmtReleaseMnode(struct SMnodeObj *pMnode);
|
||||||
|
|
||||||
char * mgmtGetMnodeRoleStr();
|
char * mgmtGetMnodeRoleStr();
|
||||||
void mgmtGetMnodeIpList(SRpcIpSet *ipSet, bool usePublicIp);
|
void mgmtGetMnodeIpSet(SRpcIpSet *ipSet, bool usePublicIp);
|
||||||
void mgmtGetMnodeInfos(void *mnodes);
|
void mgmtGetMnodeInfos(void *mnodes);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|
|
@ -28,8 +28,10 @@
|
||||||
#include "mgmtLog.h"
|
#include "mgmtLog.h"
|
||||||
#include "mgmtDb.h"
|
#include "mgmtDb.h"
|
||||||
#include "mgmtDServer.h"
|
#include "mgmtDServer.h"
|
||||||
|
#include "mgmtMnode.h"
|
||||||
#include "mgmtProfile.h"
|
#include "mgmtProfile.h"
|
||||||
#include "mgmtShell.h"
|
#include "mgmtShell.h"
|
||||||
|
#include "mgmtSdb.h"
|
||||||
#include "mgmtTable.h"
|
#include "mgmtTable.h"
|
||||||
#include "mgmtVgroup.h"
|
#include "mgmtVgroup.h"
|
||||||
|
|
||||||
|
@ -99,6 +101,18 @@ static void mgmtProcessMsgFromDnode(SRpcMsg *rpcMsg) {
|
||||||
mgmtSendSimpleResp(rpcMsg->handle, TSDB_CODE_INVALID_MSG_LEN);
|
mgmtSendSimpleResp(rpcMsg->handle, TSDB_CODE_INVALID_MSG_LEN);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!sdbIsMaster()) {
|
||||||
|
SRpcConnInfo connInfo;
|
||||||
|
rpcGetConnInfo(rpcMsg->handle, &connInfo);
|
||||||
|
bool usePublicIp = false;
|
||||||
|
|
||||||
|
SRpcIpSet ipSet = {0};
|
||||||
|
mgmtGetMnodeIpSet(&ipSet, usePublicIp);
|
||||||
|
mTrace("conn from dnode ip:%s redirect msg", taosIpStr(connInfo.clientIp));
|
||||||
|
rpcSendRedirectRsp(rpcMsg->handle, &ipSet);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (mgmtProcessDnodeMsgFp[rpcMsg->msgType]) {
|
if (mgmtProcessDnodeMsgFp[rpcMsg->msgType]) {
|
||||||
SRpcMsg *pMsg = malloc(sizeof(SRpcMsg));
|
SRpcMsg *pMsg = malloc(sizeof(SRpcMsg));
|
||||||
|
|
|
@ -171,7 +171,7 @@ char *mgmtGetMnodeRoleStr(int32_t role) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void mgmtGetMnodeIpList(SRpcIpSet *ipSet, bool usePublicIp) {
|
void mgmtGetMnodeIpSet(SRpcIpSet *ipSet, bool usePublicIp) {
|
||||||
void *pNode = NULL;
|
void *pNode = NULL;
|
||||||
while (1) {
|
while (1) {
|
||||||
SMnodeObj *pMnode = NULL;
|
SMnodeObj *pMnode = NULL;
|
||||||
|
|
|
@ -141,13 +141,19 @@ void mgmtDealyedAddToShellQueue(SQueuedMsg *queuedMsg) {
|
||||||
|
|
||||||
static void mgmtProcessMsgFromShell(SRpcMsg *rpcMsg) {
|
static void mgmtProcessMsgFromShell(SRpcMsg *rpcMsg) {
|
||||||
if (rpcMsg == NULL || rpcMsg->pCont == NULL) {
|
if (rpcMsg == NULL || rpcMsg->pCont == NULL) {
|
||||||
|
mgmtSendSimpleResp(rpcMsg->handle, TSDB_CODE_INVALID_MSG_LEN);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!sdbIsMaster()) {
|
if (!sdbIsMaster()) {
|
||||||
// rpcSendRedirectRsp(rpcMsg->handle, mgmtGetMnodeIpListForRedirect());
|
SRpcConnInfo connInfo;
|
||||||
mgmtSendSimpleResp(rpcMsg->handle, TSDB_CODE_NO_MASTER);
|
rpcGetConnInfo(rpcMsg->handle, &connInfo);
|
||||||
rpcFreeCont(rpcMsg->pCont);
|
bool usePublicIp = (connInfo.serverIp == tsPublicIpInt);
|
||||||
|
|
||||||
|
SRpcIpSet ipSet = {0};
|
||||||
|
mgmtGetMnodeIpSet(&ipSet, usePublicIp);
|
||||||
|
mTrace("conn from ip:%s user:%s redirect msg", taosIpStr(connInfo.clientIp), connInfo.user);
|
||||||
|
rpcSendRedirectRsp(rpcMsg->handle, &ipSet);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -332,7 +338,7 @@ static void mgmtProcessHeartBeatMsg(SQueuedMsg *pMsg) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
mgmtGetMnodeIpList(&pHBRsp->ipList, pMsg->usePublicIp);
|
mgmtGetMnodeIpSet(&pHBRsp->ipList, pMsg->usePublicIp);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* TODO
|
* TODO
|
||||||
|
@ -357,6 +363,11 @@ static int mgmtShellRetriveAuth(char *user, char *spi, char *encrypt, char *secr
|
||||||
*encrypt = 0;
|
*encrypt = 0;
|
||||||
*ckey = 0;
|
*ckey = 0;
|
||||||
|
|
||||||
|
if (!sdbIsMaster()) {
|
||||||
|
*secret = 0;
|
||||||
|
return TSDB_CODE_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
SUserObj *pUser = mgmtGetUser(user);
|
SUserObj *pUser = mgmtGetUser(user);
|
||||||
if (pUser == NULL) {
|
if (pUser == NULL) {
|
||||||
*secret = 0;
|
*secret = 0;
|
||||||
|
@ -414,7 +425,7 @@ static void mgmtProcessConnectMsg(SQueuedMsg *pMsg) {
|
||||||
pConnectRsp->writeAuth = pUser->writeAuth;
|
pConnectRsp->writeAuth = pUser->writeAuth;
|
||||||
pConnectRsp->superAuth = pUser->superAuth;
|
pConnectRsp->superAuth = pUser->superAuth;
|
||||||
|
|
||||||
mgmtGetMnodeIpList(&pConnectRsp->ipList, pMsg->usePublicIp);
|
mgmtGetMnodeIpSet(&pConnectRsp->ipList, pMsg->usePublicIp);
|
||||||
|
|
||||||
connect_over:
|
connect_over:
|
||||||
rpcRsp.code = code;
|
rpcRsp.code = code;
|
||||||
|
|
|
@ -1 +1,3 @@
|
||||||
sudo python ./test.py -f insert/basic.py
|
#!/bin/bash
|
||||||
|
python2 ./test.py -f insert/basic.py $1
|
||||||
|
python2 ./test.py -s $1
|
||||||
|
|
|
@ -15,6 +15,9 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
import sys
|
import sys
|
||||||
import getopt
|
import getopt
|
||||||
|
import subprocess
|
||||||
|
from distutils.log import warn as printf
|
||||||
|
|
||||||
from util.log import *
|
from util.log import *
|
||||||
from util.dnodes import *
|
from util.dnodes import *
|
||||||
from util.cases import *
|
from util.cases import *
|
||||||
|
@ -29,8 +32,10 @@ if __name__ == "__main__":
|
||||||
deployPath = ""
|
deployPath = ""
|
||||||
masterIp = ""
|
masterIp = ""
|
||||||
testCluster = False
|
testCluster = False
|
||||||
opts, args = getopt.getopt(sys.argv[1:], 'f:p:m:sch', [
|
valgrind = 0
|
||||||
'file=', 'path=', 'master', 'stop', 'cluster', 'help'])
|
stop = 0
|
||||||
|
opts, args = getopt.gnu_getopt(sys.argv[1:], 'f:p:m:scgh', [
|
||||||
|
'file=', 'path=', 'master', 'stop', 'cluster', 'valgrind', 'help'])
|
||||||
for key, value in opts:
|
for key, value in opts:
|
||||||
if key in ['-h', '--help']:
|
if key in ['-h', '--help']:
|
||||||
tdLog.printNoPrefix(
|
tdLog.printNoPrefix(
|
||||||
|
@ -41,21 +46,49 @@ if __name__ == "__main__":
|
||||||
tdLog.printNoPrefix('-c Test Cluster Flag')
|
tdLog.printNoPrefix('-c Test Cluster Flag')
|
||||||
tdLog.printNoPrefix('-s stop All dnodes')
|
tdLog.printNoPrefix('-s stop All dnodes')
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
if key in ['-f', '--file']:
|
if key in ['-f', '--file']:
|
||||||
fileName = value
|
fileName = value
|
||||||
|
|
||||||
if key in ['-p', '--path']:
|
if key in ['-p', '--path']:
|
||||||
deployPath = value
|
deployPath = value
|
||||||
|
|
||||||
if key in ['-m', '--master']:
|
if key in ['-m', '--master']:
|
||||||
masterIp = value
|
masterIp = value
|
||||||
|
|
||||||
if key in ['-c', '--cluster']:
|
if key in ['-c', '--cluster']:
|
||||||
testCluster = True
|
testCluster = True
|
||||||
|
|
||||||
|
if key in ['-g', '--valgrind']:
|
||||||
|
valgrind = 1
|
||||||
|
|
||||||
if key in ['-s', '--stop']:
|
if key in ['-s', '--stop']:
|
||||||
cmd = "ps -ef|grep -w taosd | grep 'taosd' | grep -v grep | awk '{print $2}' && pkill -9 taosd"
|
stop = 1
|
||||||
os.system(cmd)
|
|
||||||
tdLog.exit('stop All dnodes')
|
if (stop != 0):
|
||||||
|
if (valgrind == 0):
|
||||||
|
toBeKilled = "taosd"
|
||||||
|
else:
|
||||||
|
toBeKilled = "valgrind.bin"
|
||||||
|
|
||||||
|
killCmd = "ps -ef|grep -w %s| grep -v grep | awk '{print $2}' | xargs kill -HUP " % toBeKilled
|
||||||
|
os.system(killCmd)
|
||||||
|
time.sleep(1)
|
||||||
|
|
||||||
|
psCmd = "ps -ef|grep -w %s| grep -v grep | awk '{print $2}'" % toBeKilled
|
||||||
|
processID = subprocess.check_output(psCmd, shell=True)
|
||||||
|
|
||||||
|
while( processID ):
|
||||||
|
os.system(killCmd)
|
||||||
|
time.sleep(1)
|
||||||
|
processID = subprocess.check_output(psCmd, shell=True)
|
||||||
|
|
||||||
|
tdLog.exit('stop All dnodes')
|
||||||
|
|
||||||
if masterIp == "":
|
if masterIp == "":
|
||||||
tdDnodes.init(deployPath)
|
tdDnodes.init(deployPath)
|
||||||
|
tdDnodes.setValgrind(valgrind)
|
||||||
|
|
||||||
if testCluster:
|
if testCluster:
|
||||||
tdLog.notice("Procedures for testing cluster")
|
tdLog.notice("Procedures for testing cluster")
|
||||||
if fileName == "all":
|
if fileName == "all":
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
import os.path
|
import os.path
|
||||||
|
import subprocess
|
||||||
from util.log import *
|
from util.log import *
|
||||||
|
|
||||||
|
|
||||||
|
@ -29,6 +30,9 @@ class TDSimClient:
|
||||||
if os.system(cmd) != 0:
|
if os.system(cmd) != 0:
|
||||||
tdLog.exit(cmd)
|
tdLog.exit(cmd)
|
||||||
|
|
||||||
|
def setValgrind(self, value):
|
||||||
|
self.valgrind = value
|
||||||
|
|
||||||
def deploy(self):
|
def deploy(self):
|
||||||
self.logDir = "%s/sim/psim/log" % (self.path,)
|
self.logDir = "%s/sim/psim/log" % (self.path,)
|
||||||
self.cfgDir = "%s/sim/psim/cfg" % (self.path)
|
self.cfgDir = "%s/sim/psim/cfg" % (self.path)
|
||||||
|
@ -78,10 +82,14 @@ class TDDnode:
|
||||||
self.index = index
|
self.index = index
|
||||||
self.running = 0
|
self.running = 0
|
||||||
self.deployed = 0
|
self.deployed = 0
|
||||||
|
self.valgrind = 0
|
||||||
|
|
||||||
def init(self, path):
|
def init(self, path):
|
||||||
self.path = path
|
self.path = path
|
||||||
|
|
||||||
|
def setValgrind(self, value):
|
||||||
|
self.valgrind = value
|
||||||
|
|
||||||
def deploy(self):
|
def deploy(self):
|
||||||
self.logDir = "%s/sim/dnode%d/log" % (self.path, self.index)
|
self.logDir = "%s/sim/dnode%d/log" % (self.path, self.index)
|
||||||
self.dataDir = "%s/sim/dnode%d/data" % (self.path, self.index)
|
self.dataDir = "%s/sim/dnode%d/data" % (self.path, self.index)
|
||||||
|
@ -164,9 +172,18 @@ class TDDnode:
|
||||||
|
|
||||||
if self.deployed == 0:
|
if self.deployed == 0:
|
||||||
tdLog.exit("dnode:%d is not deployed" % (self.index))
|
tdLog.exit("dnode:%d is not deployed" % (self.index))
|
||||||
cmd = "nohup %staosd -c %s > /dev/null 2>&1 & " % (
|
|
||||||
binPath, self.cfgDir)
|
if self.valgrind == 0:
|
||||||
print(cmd)
|
cmd = "nohup %staosd -c %s > /dev/null 2>&1 & " % (
|
||||||
|
binPath, self.cfgDir)
|
||||||
|
else:
|
||||||
|
valgrindCmdline = "valgrind --tool=memcheck --leak-check=full --show-reachable=no --track-origins=yes --show-leak-kinds=all -v --workaround-gcc296-bugs=yes"
|
||||||
|
|
||||||
|
cmd = "nohup %s %staosd -c %s 2>&1 & " % (
|
||||||
|
valgrindCmdline, binPath, self.cfgDir)
|
||||||
|
|
||||||
|
print(cmd)
|
||||||
|
|
||||||
if os.system(cmd) != 0:
|
if os.system(cmd) != 0:
|
||||||
tdLog.exit(cmd)
|
tdLog.exit(cmd)
|
||||||
self.running = 1
|
self.running = 1
|
||||||
|
@ -275,8 +292,12 @@ class TDDnodes:
|
||||||
self.sim.init(self.path)
|
self.sim.init(self.path)
|
||||||
self.sim.deploy()
|
self.sim.deploy()
|
||||||
|
|
||||||
|
def setValgrind(self, value):
|
||||||
|
self.valgrind = value
|
||||||
|
|
||||||
def deploy(self, index):
|
def deploy(self, index):
|
||||||
self.check(index)
|
self.check(index)
|
||||||
|
self.dnodes[index - 1].setValgrind(self.valgrind)
|
||||||
self.dnodes[index - 1].deploy()
|
self.dnodes[index - 1].deploy()
|
||||||
|
|
||||||
def cfg(self, index, option, value):
|
def cfg(self, index, option, value):
|
||||||
|
@ -312,11 +333,14 @@ class TDDnodes:
|
||||||
for i in range(len(self.dnodes)):
|
for i in range(len(self.dnodes)):
|
||||||
self.dnodes[i].stop()
|
self.dnodes[i].stop()
|
||||||
|
|
||||||
cmd = "sudo systemctl stop taosd"
|
psCmd = "ps -ef | grep -w taosd | grep 'root' | grep -v grep | awk '{print $2}'"
|
||||||
os.system(cmd)
|
processID = subprocess.check_output(psCmd, shell=True)
|
||||||
|
if processID:
|
||||||
|
cmd = "sudo systemctl stop taosd"
|
||||||
|
os.system(cmd)
|
||||||
# if os.system(cmd) != 0 :
|
# if os.system(cmd) != 0 :
|
||||||
# tdLog.exit(cmd)
|
# tdLog.exit(cmd)
|
||||||
cmd = "ps -ef | grep -w taosd | grep 'dnode' | grep -v grep | awk '{print $2}' && sudo pkill -sigkill taosd"
|
cmd = "ps -ef | grep -w taosd | grep 'dnode' | grep -v grep | awk '{print $2}' && pkill -sigkill taosd"
|
||||||
os.system(cmd)
|
os.system(cmd)
|
||||||
# if os.system(cmd) != 0 :
|
# if os.system(cmd) != 0 :
|
||||||
# tdLog.exit(cmd)
|
# tdLog.exit(cmd)
|
||||||
|
|
|
@ -42,7 +42,7 @@ class TDLog:
|
||||||
printf("\033[1;31m%s %s\033[0m" % (datetime.datetime.now(), err))
|
printf("\033[1;31m%s %s\033[0m" % (datetime.datetime.now(), err))
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
def printfNoPrefix(self, info):
|
def printNoPrefix(self, info):
|
||||||
printf("\033[1;36m%s\033[0m" % (info))
|
printf("\033[1;36m%s\033[0m" % (info))
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -93,7 +93,7 @@ echo "privateIp $NODE_IP" >> $TAOS_CFG
|
||||||
echo "dDebugFlag 199" >> $TAOS_CFG
|
echo "dDebugFlag 199" >> $TAOS_CFG
|
||||||
echo "mDebugFlag 199" >> $TAOS_CFG
|
echo "mDebugFlag 199" >> $TAOS_CFG
|
||||||
echo "sdbDebugFlag 199" >> $TAOS_CFG
|
echo "sdbDebugFlag 199" >> $TAOS_CFG
|
||||||
echo "rpcDebugFlag 131" >> $TAOS_CFG
|
echo "rpcDebugFlag 135" >> $TAOS_CFG
|
||||||
echo "tmrDebugFlag 131" >> $TAOS_CFG
|
echo "tmrDebugFlag 131" >> $TAOS_CFG
|
||||||
echo "cDebugFlag 135" >> $TAOS_CFG
|
echo "cDebugFlag 135" >> $TAOS_CFG
|
||||||
echo "httpDebugFlag 131" >> $TAOS_CFG
|
echo "httpDebugFlag 131" >> $TAOS_CFG
|
||||||
|
|
|
@ -11,7 +11,8 @@ set +e
|
||||||
FILE_NAME=
|
FILE_NAME=
|
||||||
RELEASE=0
|
RELEASE=0
|
||||||
ASYNC=0
|
ASYNC=0
|
||||||
while getopts "f:a" arg
|
VALGRIND=0
|
||||||
|
while getopts "f:av" arg
|
||||||
do
|
do
|
||||||
case $arg in
|
case $arg in
|
||||||
f)
|
f)
|
||||||
|
@ -20,6 +21,9 @@ do
|
||||||
a)
|
a)
|
||||||
ASYNC=1
|
ASYNC=1
|
||||||
;;
|
;;
|
||||||
|
v)
|
||||||
|
VALGRIND=1
|
||||||
|
;;
|
||||||
?)
|
?)
|
||||||
echo "unknow argument"
|
echo "unknow argument"
|
||||||
;;
|
;;
|
||||||
|
@ -96,10 +100,14 @@ ulimit -c unlimited
|
||||||
#sudo sysctl -w kernel.core_pattern=$TOP_DIR/core.%p.%e
|
#sudo sysctl -w kernel.core_pattern=$TOP_DIR/core.%p.%e
|
||||||
|
|
||||||
if [ -n "$FILE_NAME" ]; then
|
if [ -n "$FILE_NAME" ]; then
|
||||||
echo "ExcuteCmd:" $PROGRAM -c $CFG_DIR -f $FILE_NAME
|
|
||||||
echo "------------------------------------------------------------------------"
|
echo "------------------------------------------------------------------------"
|
||||||
#valgrind --tool=memcheck --leak-check=full --show-reachable=no --track-origins=yes --show-leak-kinds=all -v --workaround-gcc296-bugs=yes --log-file=valgrind.log $PROGRAM -c $CFG_DIR -f $FILE_NAME
|
if [ $VALGRIND -eq 1 ]; then
|
||||||
$PROGRAM -c $CFG_DIR -f $FILE_NAME
|
echo valgrind --tool=memcheck --leak-check=full --show-reachable=no --track-origins=yes --show-leak-kinds=all -v --workaround-gcc296-bugs=yes --log-file=${CODE_DIR}/../script/valgrind.log $PROGRAM -c $CFG_DIR -f $FILE_NAME
|
||||||
|
valgrind --tool=memcheck --leak-check=full --show-reachable=no --track-origins=yes --show-leak-kinds=all -v --workaround-gcc296-bugs=yes --log-file=${CODE_DIR}/../script/valgrind.log $PROGRAM -c $CFG_DIR -f $FILE_NAME
|
||||||
|
else
|
||||||
|
echo "ExcuteCmd:" $PROGRAM -c $CFG_DIR -f $FILE_NAME
|
||||||
|
$PROGRAM -c $CFG_DIR -f $FILE_NAME
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
echo "ExcuteCmd:" $PROGRAM -c $CFG_DIR -f basicSuite.sim
|
echo "ExcuteCmd:" $PROGRAM -c $CFG_DIR -f basicSuite.sim
|
||||||
echo "------------------------------------------------------------------------"
|
echo "------------------------------------------------------------------------"
|
||||||
|
|
|
@ -109,3 +109,7 @@ endi
|
||||||
if $data3_3 != null then
|
if $data3_3 != null then
|
||||||
goto show7
|
goto show7
|
||||||
endi
|
endi
|
||||||
|
|
||||||
|
system sh/exec_up.sh -n dnode1 -s stop
|
||||||
|
system sh/exec_up.sh -n dnode2 -s stop
|
||||||
|
system sh/exec_up.sh -n dnode3 -s stop
|
|
@ -77,4 +77,8 @@ if $data3_1 != master then
|
||||||
endi
|
endi
|
||||||
if $data3_2 != slave then
|
if $data3_2 != slave then
|
||||||
goto step5
|
goto step5
|
||||||
endi
|
endi
|
||||||
|
|
||||||
|
system sh/exec_up.sh -n dnode1 -s stop
|
||||||
|
system sh/exec_up.sh -n dnode2 -s stop
|
||||||
|
system sh/exec_up.sh -n dnode3 -s stop
|
|
@ -93,3 +93,7 @@ endi
|
||||||
if $dnode3Role != slave then
|
if $dnode3Role != slave then
|
||||||
return -1
|
return -1
|
||||||
endi
|
endi
|
||||||
|
|
||||||
|
system sh/exec_up.sh -n dnode1 -s stop
|
||||||
|
system sh/exec_up.sh -n dnode2 -s stop
|
||||||
|
system sh/exec_up.sh -n dnode3 -s stop
|
|
@ -123,3 +123,6 @@ if $dnode3Role != slave then
|
||||||
return -1
|
return -1
|
||||||
endi
|
endi
|
||||||
|
|
||||||
|
system sh/exec_up.sh -n dnode1 -s stop
|
||||||
|
system sh/exec_up.sh -n dnode2 -s stop
|
||||||
|
system sh/exec_up.sh -n dnode3 -s stop
|
|
@ -83,3 +83,7 @@ endi
|
||||||
if $dnode3Role != null then
|
if $dnode3Role != null then
|
||||||
return -1
|
return -1
|
||||||
endi
|
endi
|
||||||
|
|
||||||
|
system sh/exec_up.sh -n dnode1 -s stop
|
||||||
|
system sh/exec_up.sh -n dnode2 -s stop
|
||||||
|
system sh/exec_up.sh -n dnode3 -s stop
|
|
@ -38,5 +38,6 @@ if $data4_2 != 4 then
|
||||||
return -1
|
return -1
|
||||||
endi
|
endi
|
||||||
|
|
||||||
|
system sh/exec_up.sh -n dnode1 -s stop
|
||||||
|
system sh/exec_up.sh -n dnode2 -s stop
|
||||||
|
system sh/exec_up.sh -n dnode3 -s stop
|
|
@ -7,4 +7,3 @@ run unique/mnode/mgmt33.sim
|
||||||
run unique/mnode/mgmt34.sim
|
run unique/mnode/mgmt34.sim
|
||||||
run unique/mnode/mgmtr2.sim
|
run unique/mnode/mgmtr2.sim
|
||||||
run unique/mnode/secondIp.sim
|
run unique/mnode/secondIp.sim
|
||||||
|
|
||||||
|
|
|
@ -8,32 +8,33 @@ GREEN_UNDERLINE='\033[4;32m'
|
||||||
NC='\033[0m'
|
NC='\033[0m'
|
||||||
|
|
||||||
cd script
|
cd script
|
||||||
sudo ./test.sh 2>&1 | grep 'success\|failed' | tee out.txt
|
./test.sh -f basicSuite.sim 2>&1 | grep 'success\|failed\|fault' | tee out.txt
|
||||||
|
|
||||||
total_success=`grep success out.txt | wc -l`
|
totalSuccess=`grep success out.txt | wc -l`
|
||||||
|
totalBasic=`grep success out.txt | grep Suite | wc -l`
|
||||||
|
|
||||||
if [ "$total_success" -gt "0" ]; then
|
if [ "$totalSuccess" -gt "0" ]; then
|
||||||
total_success=`expr $total_success - 1`
|
totalSuccess=`expr $totalSuccess - $totalBasic`
|
||||||
echo -e "${GREEN} ### Total $total_success TSIM case(s) succeed! ### ${NC}"
|
echo -e "${GREEN} ### Total $totalSuccess TSIM case(s) succeed! ### ${NC}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
total_failed=`grep failed out.txt | wc -l`
|
totalFailed=`grep 'failed\|fault' out.txt | wc -l`
|
||||||
if [ "$total_failed" -ne "0" ]; then
|
if [ "$totalFailed" -ne "0" ]; then
|
||||||
echo -e "${RED} ### Total $total_failed TSIM case(s) failed! ### ${NC}"
|
echo -e "${RED} ### Total $totalFailed TSIM case(s) failed! ### ${NC}"
|
||||||
exit $total_failed
|
exit $totalFailed
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cd ../pytest
|
cd ../pytest
|
||||||
sudo ./simpletest.sh 2>&1 | grep 'successfully executed\|failed' | tee pytest-out.txt
|
./simpletest.sh 2>&1 | grep 'successfully executed\|failed' | tee pytest-out.txt
|
||||||
total_py_success=`grep 'successfully executed' pytest-out.txt | wc -l`
|
totalPySuccess=`grep 'successfully executed' pytest-out.txt | wc -l`
|
||||||
|
|
||||||
if [ "$total_py_success" -gt "0" ]; then
|
if [ "$totalPySuccess" -gt "0" ]; then
|
||||||
echo -e "${GREEN} ### Total $total_py_success python case(s) succeed! ### ${NC}"
|
echo -e "${GREEN} ### Total $totalPySuccess python case(s) succeed! ### ${NC}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
total_py_failed=`grep 'failed' pytest-out.txt | wc -l`
|
totalPyFailed=`grep 'failed' pytest-out.txt | wc -l`
|
||||||
if [ "$total_py_failed" -ne "0" ]; then
|
if [ "$totalPyFailed" -ne "0" ]; then
|
||||||
echo -e "${RED} ### Total $total_py_failed python case(s) failed! ### ${NC}"
|
echo -e "${RED} ### Total $totalPyFailed python case(s) failed! ### ${NC}"
|
||||||
exit $total_py_failed
|
exit $totalPyFailed
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue