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 numOfMnodes -v 1
system sh/cfg.sh -n dnode2 -c numOfMnodes -v 1
system sh/cfg.sh -n dnode3 -c numOfMnodes -v 1
system sh/cfg.sh -n dnode4 -c numOfMnodes -v 1

system sh/cfg.sh -n dnode1 -c walLevel -v 2
system sh/cfg.sh -n dnode2 -c walLevel -v 2
system sh/cfg.sh -n dnode3 -c walLevel -v 2
system sh/cfg.sh -n dnode4 -c walLevel -v 2

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 dnode4 -c balanceInterval -v 10

system sh/cfg.sh -n dnode1 -c role -v 1
system sh/cfg.sh -n dnode2 -c role -v 2
system sh/cfg.sh -n dnode3 -c role -v 2
system sh/cfg.sh -n dnode4 -c role -v 2

$totalTableNum = 10
system sh/cfg.sh -n dnode1 -c maxtablesPerVnode -v $totalTableNum
system sh/cfg.sh -n dnode2 -c maxtablesPerVnode -v $totalTableNum
system sh/cfg.sh -n dnode3 -c maxtablesPerVnode -v $totalTableNum
system sh/cfg.sh -n dnode4 -c maxtablesPerVnode -v $totalTableNum

system sh/cfg.sh -n dnode1 -c maxVgroupsPerDb -v 1
system sh/cfg.sh -n dnode2 -c maxVgroupsPerDb -v 1
system sh/cfg.sh -n dnode3 -c maxVgroupsPerDb -v 1
system sh/cfg.sh -n dnode4 -c maxVgroupsPerDb -v 1

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
system sh/cfg.sh -n dnode4 -c arbitrator -v $arbitrator

print ============== step0: start tarbitrator
system sh/exec_tarbitrator.sh -s start

print ============== step1: start dnode1, only deploy mnode
system sh/exec.sh -n dnode1 -s start
sql connect

print ============== step2: start dnode2 and add into cluster , then create database with replica 1, and create table, insert data
system sh/exec.sh -n dnode2 -s start
sql create dnode $hostname2

$x = 0
step1: 
	$x = $x + 1
	sleep 1000
	if $x == 40 then
		return -1
	endi

sql show dnodes
print dnode1 $data4_1
print dnode2 $data4_2

if $data4_1 != ready then
  goto step1
endi
if $data4_2 != ready then
  goto step1
endi

$db = db
sql create database $db replica 1
sql use $db

# create table , insert data
$stb = stb
sql create table $stb (ts timestamp, c1 int) tags(t1 int)
$rowNum = 100
$tblNum = $totalTableNum
$totalRows = 0
$tsStart = 1420041600000

$i = 0
while $i < $tblNum
  $tb = tb . $i
  sql create table $tb using $stb tags( $i )
 
  $x = 0
  while $x < $rowNum
    $ts = $tsStart + $x
    sql insert into $tb values ( $ts + 0a , $x ) ( $ts + 1a , $x ) ( $ts + 2a , $x ) ( $ts + 3a , $x ) ( $ts + 4a , $x ) ( $ts + 5a , $x ) ( $ts + 6a , $x ) ( $ts + 7a , $x ) ( $ts + 8a , $x ) ( $ts + 9a , $x ) ( $ts + 10a , $x ) ( $ts + 11a , $x ) ( $ts + 12a , $x ) ( $ts + 13a , $x ) ( $ts + 14a , $x ) ( $ts + 15a , $x ) ( $ts + 16a , $x ) ( $ts + 17a , $x ) ( $ts + 18a , $x ) ( $ts + 19a , $x ) ( $ts + 20a , $x ) ( $ts + 21a , $x ) ( $ts + 22a , $x ) ( $ts + 23a , $x ) ( $ts + 24a , $x ) ( $ts + 25a , $x ) ( $ts + 26a , $x ) ( $ts + 27a , $x ) ( $ts + 28a , $x ) ( $ts + 29a , $x ) ( $ts + 30a , $x ) ( $ts + 31a , $x ) ( $ts + 32a , $x ) ( $ts + 33a , $x ) ( $ts + 34a , $x ) ( $ts + 25a , $x ) ( $ts + 26a , $x ) ( $ts + 27a , $x ) ( $ts + 28a , $x ) ( $ts + 29a , $x ) ( $ts + 30a , $x ) ( $ts + 31a , $x ) ( $ts + 32a , $x ) ( $ts + 33a , $x ) ( $ts + 34a , $x ) ( $ts + 35a , $x ) ( $ts + 36a , $x ) ( $ts + 37a , $x ) ( $ts + 38a , $x ) ( $ts + 39a , $x ) ( $ts + 40a , $x ) ( $ts + 41a , $x ) ( $ts + 42a , $x ) ( $ts + 43a , $x ) ( $ts + 44a , $x ) ( $ts + 45a , $x ) ( $ts + 46a , $x ) ( $ts + 47a , $x ) ( $ts + 48a , $x ) ( $ts + 49a , $x ) ( $ts + 50a , $x ) ( $ts + 51a , $x ) ( $ts + 52a , $x ) ( $ts + 53a , $x ) ( $ts + 54a , $x ) ( $ts + 55a , $x ) ( $ts + 56a , $x ) ( $ts + 57a , $x ) ( $ts + 58a , $x ) ( $ts + 59a , $x ) 
    $x = $x + 60
  endw 
  $totalRows = $totalRows + $x
  print       info: inserted $x rows into $tb and totalRows: $totalRows
  $i = $i + 1
endw 

sql select count(*) from $stb
print data00 $data00
if $data00 != $totalRows then
	return -1
endi

print ============== step2-1: stop dnode2 for falling disc, then restart dnode2, and check rows
system sh/exec.sh -n dnode2 -s stop -x SIGINT
system sh/exec.sh -n dnode2 -s start

$x = 0
a0: 
	$x = $x + 1
	sleep 1000
	if $x == 40 then
	  return -1
	endi

sql show vgroups 
print online vnodes $data03
if $data03 != 1 then
	goto a0
endi

sql select count(*) from $stb
print data00 $data00
if $data00 != $totalRows then
	return -1
endi

print ============== step3: start dnode3 and add into cluster , then alter replica from 1 to 2, and waiting sync
system sh/exec.sh -n dnode3 -s start
sql create dnode $hostname3

$x = 0
step2: 
	$x = $x + 1
	sleep 1000
	if $x == 40 then
		return -1
	endi

sql show dnodes
print dnode1 $data4_1
print dnode2 $data4_2
print dnode3 $data4_3

if $data4_3 != ready then
  goto step2
endi

sql alter database $db replica 2

$x = 0
a1: 
	$x = $x + 1
	sleep 1000
	if $x == 40 then
	  return -1
	endi

sql show vgroups 
print online vnodes $data03
if $data03 != 2 then
	goto a1
endi

# check using select
sql select count(*) from $stb
print data00 $data00
if $data00 != $totalRows then
	return -1
endi

print ============== step4: stop dnode2 for checking if sync ok
system sh/exec.sh -n dnode2 -s stop
$x = 0
a2: 
	$x = $x + 1
	sleep 1000
	if $x == 40 then
	  return -1
	endi

sql show vgroups 
print online vnodes $data03
if $data03 != 1 then
	goto a2
endi

# check using select
sql select count(*) from $stb
print data00 $data00
if $data00 != $totalRows then
	return -1
endi

print ============== step5: restart dnode2
system sh/exec.sh -n dnode2 -s start
$x = 0
a3: 
	$x = $x + 1
	sleep 1000
	if $x == 40 then
	  return -1
	endi

sql show vgroups 
print online vnodes $data03
if $data03 != 2 then
	goto a3
endi

# check using select
sql select count(*) from $stb
print data00 $data00
if $data00 != $totalRows then
	return -1
endi

print ============== step6: start dnode4 and add into cluster , then alter replica from 2 to 3, and waiting sync
system sh/exec.sh -n dnode4 -s start
sql create dnode $hostname4
$x = 0
step6: 
	$x = $x + 1
	sleep 1000
	if $x == 10 then
		return -1
	endi

sql show dnodes
print dnode1 $data4_1
print dnode2 $data4_2
print dnode3 $data4_3
print dnode4 $data4_4

if $data4_4 != ready then
  goto step6
endi

sql alter database $db replica 3
$x = 0
a4: 
	$x = $x + 1
	sleep 1000
	if $x == 40 then
	  return -1
	endi

sql show vgroups 
print online vnodes $data03
if $data03 != 3 then
	goto a4
endi

# check using select
sql select count(*) from $stb
print data00 $data00
if $data00 != $totalRows then
	return -1
endi

print ============== step7: alter replica from 3 to 2, and waiting sync
sql alter database $db replica 2
$x = 0
a5: 
	$x = $x + 1
	sleep 1000
	if $x == 40 then
	  return -1
	endi

sql show vgroups 
print online vnodes $data03
if $data03 != 2 then
	goto a5
endi

# check using select
sql select count(*) from $stb
print data00 $data00
if $data00 != $totalRows then
	return -1
endi

print ============== step8: alter replica from 2 to 1, and waiting sync
sql alter database $db replica 1
$x = 0
a6: 
	$x = $x + 1
	sleep 1000
	if $x == 40 then
	  return -1
	endi

sql show vgroups 
print online vnodes $data03
if $data03 != 1 then
	goto a6
endi

# check using select
sql select count(*) from $stb
print data00 $data00
if $data00 != $totalRows then
	return -1
endi

print ============== step9: drop dnode2/dnode3
sql drop dnode $hostname2
sql drop dnode $hostname3
sleep $sleepTimer

$x = 0
step9: 
	$x = $x + 1
	sleep 1000
	if $x == 40 then
	  return -1
	endi

sql show dnodes
if $rows != 3 then
  goto step9
endi

$x = 0
a7: 
	$x = $x + 1
	sleep 1000
	if $x == 40 then
	  return -1
	endi

sql show vgroups 
print online vnodes $data03
if $data03 != 1 then
	goto a7
endi

sleep $sleepTimer  #waiting move vnode from dnode3/dnode3 to dnode4
# check using select
sql select count(*) from $stb
print data00 $data00
if $data00 != $totalRows then
	return -1
endi


system sh/exec.sh -n dnode1 -s stop  -x SIGINT
system sh/exec.sh -n dnode2 -s stop  -x SIGINT
system sh/exec.sh -n dnode3 -s stop  -x SIGINT
system sh/exec.sh -n dnode4 -s stop  -x SIGINT
system sh/exec.sh -n dnode5 -s stop  -x SIGINT
system sh/exec.sh -n dnode6 -s stop  -x SIGINT
system sh/exec.sh -n dnode7 -s stop  -x SIGINT
system sh/exec.sh -n dnode8 -s stop  -x SIGINT
