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


system sh/cfg.sh -n dnode1 -c maxtablesPerVnode -v 4
system sh/cfg.sh -n dnode2 -c maxtablesPerVnode -v 4
system sh/cfg.sh -n dnode3 -c maxtablesPerVnode -v 4
system sh/cfg.sh -n dnode4 -c maxtablesPerVnode -v 4

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

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

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

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
sleep 3000
sql connect

print ============== step2: start dnode2/dnode3 and add into cluster, then create database, create table , and insert data
system sh/exec.sh -n dnode2 -s start
system sh/exec.sh -n dnode3 -s start
system sh/exec.sh -n dnode4 -s start
sql create dnode $hostname2
sql create dnode $hostname3
sql create dnode $hostname4
sleep 3000

$rowNum = 10
$tblNum = 16
$totalRows = 0
$tsStart = 1420041600000

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

# create table , insert data
$stb = stb
sql create table $stb (ts timestamp, c1 int) tags(t1 int)


$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 ) 
    $x = $x + 10
  endw 
  $totalRows = $totalRows + $x
  print       info: inserted $x rows into $tb and totalRows: $totalRows
  $i = $i + 1
endw 

print       info: select count(*) from $stb
sleep 1000
sql reset query cache
sleep 1000
sql select count(*) from $stb
print data00 $data00
if $data00 != $totalRows then
	return -1
endi

sql show dnodes
if $rows != 4 then
  return -1
endi

print ============== step3: stop dnode4, after timerout dnode4 will be auto-dropped. 
system sh/exec.sh -n dnode4 -s stop
sleep 12000

$loopCnt = 0
wait_dnode4_dropped:
$loopCnt = $loopCnt + 1
if $loopCnt == 10 then 
  return -1
endi

sql show dnodes
if $rows != 3 then
  sleep 2000
  goto wait_dnode4_dropped
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 $dnode2Status != ready then
  sleep 2000
  goto wait_dnode4_dropped
endi
if $dnode3Status != ready then
  sleep 2000
  goto wait_dnode4_dropped
endi

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

print ============== step4: restart dnode4, but there are not dnode4 in cluster 
system sh/exec.sh -n dnode4 -s start
sleep 3000
sql show dnodes
if $rows != 3 then
  return -1
endi

print ============== step5: recreate dnode4 into cluster, result should fail
sql create dnode $hostname4
sleep 12000
sql show dnodes
if $rows != 3 then
  return -1
endi

print ============== step5: remove dnode4 director, then recreate dnode4 into cluster, result should ok 
system sh/exec.sh -n dnode4 -s stop
system rm -rf ../../../sim/dnode4

system sh/deploy.sh -n dnode4 -i 4
system sh/cfg.sh -n dnode4 -c numOfMnodes -v 1
system sh/cfg.sh -n dnode4 -c walLevel -v 1
system sh/cfg.sh -n dnode4 -c balanceInterval -v 10
system sh/cfg.sh -n dnode4 -c maxtablesPerVnode -v 4
system sh/cfg.sh -n dnode4 -c role -v 2
system sh/cfg.sh -n dnode4 -c arbitrator -v $arbitrator
system sh/cfg.sh -n dnode4 -c offlineThreshold -v 5
system sh/cfg.sh -n dnode4 -c enableCoreFile -v 1

system sh/exec.sh -n dnode4 -s start
sql create dnode $hostname4
sleep 6000

$loopCnt = 0
wait_dnode4_ready:
$loopCnt = $loopCnt + 1
if $loopCnt == 10 then 
  return -1
endi

sql show dnodes
if $rows != 4 then
  sleep 2000
  goto wait_dnode4_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_6 
#$dnode5Status = $data4_5

if $dnode2Status != ready then
  sleep 2000
  goto wait_dnode4_ready
endi
if $dnode3Status != ready then
  sleep 2000
  goto wait_dnode4_ready
endi
if $dnode4Status != ready then
  sleep 2000
  goto wait_dnode4_ready
endi
