diff --git a/tests/script/sh/deploy.sh b/tests/script/sh/deploy.sh index 83ecea555a8c85eebadfd19fade5fd17340b237e..b3134938cbc063ed7c857f1839ff401a2b2bf904 100755 --- a/tests/script/sh/deploy.sh +++ b/tests/script/sh/deploy.sh @@ -96,6 +96,7 @@ echo "second ${HOSTNAME}:7200" >> $TAOS_CFG echo "serverPort ${NODE}" >> $TAOS_CFG echo "dataDir $DATA_DIR" >> $TAOS_CFG echo "logDir $LOG_DIR" >> $TAOS_CFG +echo "debugFlag 135" >> $TAOS_CFG echo "dDebugFlag 135" >> $TAOS_CFG echo "mDebugFlag 135" >> $TAOS_CFG echo "sdbDebugFlag 135" >> $TAOS_CFG diff --git a/tests/script/sh/exec_tarbitrator.sh b/tests/script/sh/exec_tarbitrator.sh new file mode 100755 index 0000000000000000000000000000000000000000..cb0a8858cb0bb394f322a5daf03e410bdefbbe2c --- /dev/null +++ b/tests/script/sh/exec_tarbitrator.sh @@ -0,0 +1,64 @@ +#!/bin/sh + +# if [ $# != 2 || $# != 3 ]; then + # echo "argument list need input : " + # echo " -s start/stop" + # exit 1 +# fi + +EXEC_OPTON= +while getopts "n:s:u:x:ct" arg +do + case $arg in + n) + NODE_NAME=$OPTARG + ;; + s) + EXEC_OPTON=$OPTARG + ;; + c) + CLEAR_OPTION="clear" + ;; + t) + SHELL_OPTION="true" + ;; + u) + USERS=$OPTARG + ;; + x) + SIGNAL=$OPTARG + ;; + ?) + echo "unkown argument" + ;; + esac +done + + +SCRIPT_DIR=`dirname $0` +cd $SCRIPT_DIR/../ +SCRIPT_DIR=`pwd` + +cd ../../ +TAOS_DIR=`pwd` + +BUILD_DIR=$TAOS_DIR/../debug/build +SIM_DIR=$TAOS_DIR/sim +NODE_DIR=$SIM_DIR/arbitrator +EXE_DIR=$BUILD_DIR/bin +LOG_DIR=$NODE_DIR/log + +echo "------------ $EXEC_OPTON tarbitrator" + +if [ "$EXEC_OPTON" = "start" ]; then + echo "------------ log path: $LOG_DIR" + nohup $EXE_DIR/tarbitrator -p 8000 -d 135 -g $LOG_DIR > /dev/null 2>&1 & +else + #relative path + PID=`ps -ef|grep tarbitrator | grep -v grep | awk '{print $2}'` + if [ -n "$PID" ]; then + sudo kill -9 $PID + sudo pkill -9 tarbitrator + fi +fi + diff --git a/tests/script/sh/stop_dnodes.sh b/tests/script/sh/stop_dnodes.sh index 2364dff9b33805130834f0da1ef21929a9d27c90..1a6e7153c39d1be84b2d8a4bf13338564d685a2f 100755 --- a/tests/script/sh/stop_dnodes.sh +++ b/tests/script/sh/stop_dnodes.sh @@ -13,3 +13,12 @@ while [ -n "$PID" ]; do fuser -k -n tcp 6030 PID=`ps -ef|grep -w taosd | grep -v grep | awk '{print $2}'` done + +PID=`ps -ef|grep -w tarbitrator | grep -v grep | awk '{print $2}'` +while [ -n "$PID" ]; do + echo kill -9 $PID + pkill -9 tarbitrator + fuser -k -n tcp 6040 + PID=`ps -ef|grep -w tarbitrator | grep -v grep | awk '{print $2}'` +done + diff --git a/tests/script/test.sh b/tests/script/test.sh index 96ab3c5808f493ece0da4643266d8630286d53b0..984eb13c4cd43e4725021387cc468f4c9364c4ec 100755 --- a/tests/script/test.sh +++ b/tests/script/test.sh @@ -62,6 +62,11 @@ CFG_DIR=$PRG_DIR/cfg LOG_DIR=$PRG_DIR/log DATA_DIR=$PRG_DIR/data + +ARBITRATOR_PRG_DIR=$SIM_DIR/arbitrator +ARBITRATOR_LOG_DIR=$ARBITRATOR_PRG_DIR/log + + chmod -R 777 $PRG_DIR echo "------------------------------------------------------------------------" echo "Start TDengine Testing Case ..." @@ -72,9 +77,12 @@ echo "CFG_DIR : $CFG_DIR" rm -rf $LOG_DIR rm -rf $CFG_DIR +rm -rf $ARBITRATOR_LOG_DIR + mkdir -p $PRG_DIR mkdir -p $LOG_DIR mkdir -p $CFG_DIR +mkdir -p $ARBITRATOR_LOG_DIR TAOS_CFG=$PRG_DIR/cfg/taos.cfg touch -f $TAOS_CFG diff --git a/tests/script/unique/arbitrator/replica_changeWithArbitrator.sim b/tests/script/unique/arbitrator/replica_changeWithArbitrator.sim new file mode 100644 index 0000000000000000000000000000000000000000..9a04d187fab146240d011e4ea7ba7522bb9dc818 --- /dev/null +++ b/tests/script/unique/arbitrator/replica_changeWithArbitrator.sim @@ -0,0 +1,242 @@ +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/cfg.sh -n dnode1 -c numOfMPeers -v 2 +system sh/cfg.sh -n dnode2 -c numOfMPeers -v 2 +system sh/cfg.sh -n dnode3 -c numOfMPeers -v 2 + +system sh/cfg.sh -n dnode1 -c walLevel -v 1 +system sh/cfg.sh -n dnode2 -c walLevel -v 1 +system sh/cfg.sh -n dnode3 -c walLevel -v 1 + +system sh/cfg.sh -n dnode1 -c balanceInterval -v 10 +system sh/cfg.sh -n dnode2 -c balanceInterval -v 10 +system sh/cfg.sh -n dnode3 -c balanceInterval -v 10 + +system sh/cfg.sh -n dnode1 -c arbitrator -v $arbitrator +system sh/cfg.sh -n dnode2 -c arbitrator -v $arbitrator +system sh/cfg.sh -n dnode3 -c arbitrator -v $arbitrator + +print ============== step0: start tarbitrator +system sh/exec_tarbitrator.sh -s start + + +print ============== step1: replica is 1, and start 1 dnode +system sh/exec_up.sh -n dnode1 -s start +sleep 3000 +sql connect + +$db = replica_db1 +sql create database $db replica 1 maxTables 4 +sql use $db + +# create table , insert data +$stb = repl_stb +sql create table $stb (ts timestamp, c1 int) tags(t1 int) +$rowNum = 10 +$tblNum = 12 + +$ts0 = 1420041600000 +$ts = $ts0 +$delta = 1 + +$i = 0 +while $i < $tblNum + $tb = tb . $i + sql create table $tb using $stb tags( $i ) + + $x = 0 + while $x < $rowNum + $xs = $x * $delta + $ts = $ts0 + $xs + sql insert into $tb values ( $ts , $x ) + $x = $x + 1 + endw + $i = $i + 1 +endw + +print ============== step2: add 1 new dnode, expect balanced +system sh/exec_up.sh -n dnode2 -s start +sql create dnode $hostname2 + +# expect after balanced, 2 vondes in dnode1, 1 vonde in dnode2 +$x = 0 +show2: + $x = $x + 1 + sleep 2000 + if $x == 10 then + return -1 + endi + +sql show dnodes +print dnode1 openVnodes $data2_1 +print dnode2 openVnodes $data2_2 +if $data2_1 != 2 then + goto show2 +endi +if $data2_2 != 1 then + goto show2 +endi + +#print ============== step3: start tarbitrator +#system sh/exec_tarbitrator.sh -s start + +return 1 + +print ============== step4: stop dnode1, and wait dnode2 master +system sh/exec_up.sh -n dnode1 -s stop + +$x = 0 +loop_wait: + $x = $x + 1 + sleep 2000 + if $x == 10 then + print ERROR: after dnode1 stop, dnode2 didn't become a master! + return -1 + endi +sql show mnodes +$dnodeRole = $data2_1 +print dnodeRole ==> $dnodeRole +print dnodeEp ==> $data1_1 +print hostname1 ==> $hostname1 +print arbitrator ==> $arbitrator + +if $dnodeRole != master then + goto loop_wait +endi + + + + + + + + + + + + + + + + + + + + + + +# alter replica to 2 +#print ============== step3: alter replica to 2 +#sql alter database $db replica 2 + + + + + + + + + + + + + + + + + + + +#$x = 0 +#show2: +# $x = $x + 1 +# sleep 2000 +# if $x == 10 then +# return -1 +# endi +# +#sql show mnodes +#print dnode1 ==> $data2_1 +#print dnode2 ==> $data2_2 +#if $data2_1 != master then +# goto show2 +#endi +#if $data2_2 != slave then +# goto show2 +#endi +# +#print ============== step3 +#sql_error drop dnode $hostname1 -x error1 +#print should not drop master +# +#print ============== step4 +#system sh/exec_up.sh -n dnode1 -s stop -x SIGINT +#sql_error show mnodes +#print error of no master +# +#print ============== step5 +#sql_error drop dnode $hostname1 +#print error of no master +# +#print ============== step6 +#system sh/exec_up.sh -n dnode1 -s start +#sleep 2000 +#sql close +#sql connect +# +#$x = 0 +#show6: +# $x = $x + 1 +# sleep 2000 +# if $x == 10 then +# return -1 +# endi +# +#sql show mnodes -x show6 +#print dnode1 ==> $data2_1 +#print dnode2 ==> $data2_2 +#if $data2_1 != master then +# goto show6 +#endi +#if $data2_2 != slave then +# goto show6 +#endi +# +#print ============== step7 +#system sh/exec_up.sh -n dnode3 -s start +#sql create dnode $hostname3 +#sleep 5000 +# +#$x = 0 +#show7: +# $x = $x + 1 +# sleep 2000 +# if $x == 10 then +# return -1 +# endi +# +#sql show mnodes +#print dnode1 ==> $data2_1 +#print dnode2 ==> $data2_2 +#print dnode3 ==> $data2_3 +#if $data2_1 != master then +# goto show7 +#endi +#if $data2_2 != slave then +# goto show7 +#endi +#if $data3_3 != null then +# goto show7 +#endi +# +#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/exec_up.sh -n dnode5 -s stop -x SIGINT +#system sh/exec_up.sh -n dnode6 -s stop -x SIGINT +#system sh/exec_up.sh -n dnode7 -s stop -x SIGINT +#system sh/exec_up.sh -n dnode8 -s stop -x SIGINT \ No newline at end of file diff --git a/tests/tsim/src/simExe.c b/tests/tsim/src/simExe.c index 5ea1cb4a1acf8c5f62046980189090eef1c43a23..0c35e3668c20b35f8e44a7883f8efeb03e64cc6d 100644 --- a/tests/tsim/src/simExe.c +++ b/tests/tsim/src/simExe.c @@ -36,12 +36,17 @@ void simLogSql(char *sql) { fflush(fp); } +char *simParseArbitratorName(char *varName); char *simParseHostName(char *varName); char *simGetVariable(SScript *script, char *varName, int varLen) { if (strncmp(varName, "hostname", 8) == 0) { return simParseHostName(varName); } + if (strncmp(varName, "arbitrator", 10) == 0) { + return simParseArbitratorName(varName); + } + if (strncmp(varName, "error", varLen) == 0) return script->error; if (strncmp(varName, "rows", varLen) == 0) return script->rows; diff --git a/tests/tsim/src/simSystem.c b/tests/tsim/src/simSystem.c index bac68c22d3dcbe5607f775a3a805f02d197b4409..3acfebb9bd56beb825360885059927dca777fd46 100644 --- a/tests/tsim/src/simSystem.c +++ b/tests/tsim/src/simSystem.c @@ -29,6 +29,12 @@ int simDebugFlag = 135; void simCloseTaosdConnect(SScript *script); char simHostName[128]; +char *simParseArbitratorName(char *varName) { + static char hostName[140]; + sprintf(hostName, "%s:%d", simHostName, 8000); + return hostName; +} + char *simParseHostName(char *varName) { static char hostName[140];