system sh/stop_dnodes.sh

system sh/ip.sh -i 1 -s up
system sh/ip.sh -i 2 -s up
system sh/ip.sh -i 3 -s up
system sh/ip.sh -i 4 -s up

system sh/deploy.sh -n dnode1 -m 192.168.0.1 -i 192.168.0.1
system sh/deploy.sh -n dnode2 -m 192.168.0.1 -i 192.168.0.2
system sh/deploy.sh -n dnode3 -m 192.168.0.1 -i 192.168.0.3
system sh/deploy.sh -n dnode4 -m 192.168.0.1 -i 192.168.0.4

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

system sh/cfg.sh -n dnode1 -c balanceStartInterval -v 10
system sh/cfg.sh -n dnode2 -c balanceStartInterval -v 10
system sh/cfg.sh -n dnode3 -c balanceStartInterval -v 10
system sh/cfg.sh -n dnode4 -c balanceStartInterval -v 10

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

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

print ========== step1
system sh/exec.sh -n dnode1 -s start
sql connect
sql create dnode 192.168.0.2
sql create dnode 192.168.0.3
system sh/exec.sh -n dnode2 -s start
system sh/exec.sh -n dnode3 -s start
sleep 3000
 
sql create database d1 replica 3 
sql create table d1.t1 (t timestamp, i int)
sql insert into d1.t1 values(now+1s, 15)
sql insert into d1.t1 values(now+2s, 14)
sql insert into d1.t1 values(now+2s, 13)
sql insert into d1.t1 values(now+3s, 12)
sql insert into d1.t1 values(now+4s, 11)

print ========== step2
sql drop dnode 192.168.0.2
system sh/exec.sh -n dnode2 -s stop -x SIGINT
sleep 3000

sql alter dnode 192.168.0.2 unremove
system sh/exec.sh -n dnode2 -s start

sql show dnodes
print 192.168.0.1 freeVnodes $data3_192.168.0.1
print 192.168.0.2 freeVnodes $data3_192.168.0.2
print 192.168.0.3 freeVnodes $data3_192.168.0.3
if $data3_192.168.0.1 != 3 then
  return -1
endi
if $data3_192.168.0.2 != 3 then
  return 
endi
if $data3_192.168.0.3 != 3 then
  return -1
endi

print ========== step3
sql drop dnode 192.168.0.2
system sh/exec.sh -n dnode2 -s stop -x SIGINT
sleep 3000

sql alter dnode 192.168.0.2 unremove
system sh/exec.sh -n dnode2 -s start

sql show dnodes
print 192.168.0.1 freeVnodes $data3_192.168.0.1
print 192.168.0.2 freeVnodes $data3_192.168.0.2
print 192.168.0.3 freeVnodes $data3_192.168.0.3
if $data3_192.168.0.1 != 3 then
  return -1
endi
if $data3_192.168.0.2 != 3 then
  return -1
endi
if $data3_192.168.0.3 != 3 then
  return -1
endi

print ========== step4
sql create dnode 192.168.0.4
sql drop dnode 192.168.0.2

sleep 5000
sql show dnodes
$dnode1Vnodes = $data2_192.168.0.1
print 192.168.0.1 $dnode1Vnodes
$dnode2Vnodes = $data2_192.168.0.2
print 192.168.0.2 $dnode2Vnodes
$dnode3Vnodes = $data2_192.168.0.3
print 192.168.0.3 $dnode3Vnodes

sql show dnodes
print 192.168.0.1 freeVnodes $data3_192.168.0.1
print 192.168.0.2 freeVnodes $data3_192.168.0.2
print 192.168.0.3 freeVnodes $data3_192.168.0.3
if $data3_192.168.0.1 != 3 then
  return -1
endi
if $data3_192.168.0.2 != 3 then
  return -1
endi
if $data3_192.168.0.3 != 3 then
  return -1
endi

print ========== step5
system sh/exec.sh -n dnode4 -s start
sleep 3000

$x = 0
show5: 
	$x = $x + 1
	sleep 5000
	if $x == 20 then 
	  return -1
	endi
	
sql show dnodes
print 192.168.0.1 freeVnodes $data3_192.168.0.1
print 192.168.0.2 freeVnodes $data3_192.168.0.2
print 192.168.0.3 freeVnodes $data3_192.168.0.3
print 192.168.0.4 freeVnodes $data3_192.168.0.4
if $data3_192.168.0.1 != 3 then
  goto show5
endi
if $data3_192.168.0.2 != null then
  goto show5
endi
if $data3_192.168.0.3 != 3 then
  goto show5
endi
if $data3_192.168.0.4 != 3 then
  goto show5
endi
