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

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

$totalTableNum = 12
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

system sh/cfg.sh -n dnode1 -c offlineThreshold -v 8
system sh/cfg.sh -n dnode2 -c offlineThreshold -v 8
system sh/cfg.sh -n dnode3 -c offlineThreshold -v 8
system sh/cfg.sh -n dnode4 -c offlineThreshold -v 8

system sh/cfg.sh -n dnode1 -c statusInterval -v 3
system sh/cfg.sh -n dnode2 -c statusInterval -v 3
system sh/cfg.sh -n dnode3 -c statusInterval -v 3
system sh/cfg.sh -n dnode4 -c statusInterval -v 3

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

print ============== step1: replica is 1, and start 1 dnode, then create tables and insert data
system sh/exec.sh -n dnode1 -s start
sleep 2000
sql connect

$totalTableNum = 12

$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 = 10
$tblNum = $totalTableNum
$totalRows = $rowNum * $tblNum

$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
  print       $tb inserted rows: $x
endw 

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

print ============== step2: add 1 new dnode, expect balanced
system sh/exec.sh -n dnode2 -s start
sql create dnode $hostname2
sleep 2000

# expect after balanced, 2 vondes in dnode1, 1 vonde in dnode2
$cnt = 0
wait_dnode2_ready:
$cnt = $cnt + 1
if $cnt == 20 then
  return -1
endi
sql select * from information_schema.ins_dnodes
if $rows != 3 then
  sleep 2000
  goto wait_dnode2_ready
endi
print $data0_1  $data1_1  $data2_1  $data3_1  $data4_1
print $data0_2  $data1_2  $data2_2  $data3_2  $data4_2
print $data0_3  $data1_3  $data2_3  $data3_3  $data4_3
$dnode1Status = $data4_1  
$dnode2Status = $data4_2

if $dnode1Status != ready then
  sleep 2000
  goto wait_dnode2_ready
endi
if $dnode2Status != ready then
  sleep 2000
  goto wait_dnode2_ready
endi

print ============== step3: stop dnode1/dnode2, modify cfg numOfMnodes to 2, and restart dnode1/dnode2
system sh/exec.sh -n dnode1 -s stop
system sh/exec.sh -n dnode2 -s stop
sleep 2000

system sh/cfg.sh -n dnode1 -c numOfMnodes -v 2
system sh/cfg.sh -n dnode2 -c numOfMnodes -v 2

system sh/cfg.sh -n dnode1 -c mnodeEqualVnodeNum -v 4
system sh/cfg.sh -n dnode2 -c mnodeEqualVnodeNum -v 4

system sh/cfg.sh -n dnode1 -c role -v 1
system sh/cfg.sh -n dnode2 -c role -v 0

system sh/exec.sh -n dnode1 -s start
system sh/exec.sh -n dnode2 -s start
sleep 3000


print ============= step4: wait dnode ready
$cnt = 0
wait_dnode_ready:
$cnt = $cnt + 1
if $cnt == 10 then
  return -1
endi
sql select * from information_schema.ins_dnodes
if $rows != 3 then
  sleep 2000
  goto wait_dnode_ready
endi
print $data0_1  $data1_1  $data2_1  $data3_1  $data4_1
print $data0_2  $data1_2  $data2_2  $data3_2  $data4_2
#print $data0_3  $data1_3  $data2_3  $data3_3  $data4_3
#print $data0_4  $data1_4  $data2_4  $data3_4  $data4_4
#print $data0_5  $data1_5  $data2_5  $data3_5  $data4_5
#print $data0_6  $data1_6  $data2_6  $data3_6  $data4_6
$dnode1Status = $data4_1  
$dnode2Status = $data4_2
#$dnode3Status = $data4_3  
#$dnode4Status = $data4_4 
#$dnode5Status = $data4_5

if $dnode1Status != ready then
  sleep 2000
  goto wait_dnode_ready
endi
if $dnode2Status != ready then
  sleep 2000
  goto wait_dnode_ready
endi

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

print ============== step5: stop dnode1
sleep 3000
system sh/exec.sh -n dnode1 -s stop
sleep 2000

$cnt = 0
wait_dnode2_master:
$cnt = $cnt + 1
if $cnt == 10 then
  return -1
endi
sql select * from information_schema.ins_mnodes
if $rows != 2 then
  sleep 2000
  goto wait_dnode2_master
endi
print $data0_1  $data1_1  $data2_1  $data3_1  $data4_1
print $data0_2  $data1_2  $data2_2  $data3_2  $data4_2
#print $data0_3  $data1_3  $data2_3  $data3_3  $data4_3
#print $data0_4  $data1_4  $data2_4  $data3_4  $data4_4
#print $data0_5  $data1_5  $data2_5  $data3_5  $data4_5
#print $data0_6  $data1_6  $data2_6  $data3_6  $data4_6
$dnode1Status = $data4_1  
$dnode2Status = $data4_2
#$dnode3Status = $data4_3  
#$dnode4Status = $data4_4 
#$dnode5Status = $data4_5

if $data2_1 != offline then
  sleep 2000
  goto wait_dnode2_master
endi
if $data2_2 != master then
  sleep 2000
  goto wait_dnode2_master
endi

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


