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

print ========== step1
system sh/exec.sh -n dnode1 -s start
sql connect
sleep 3000

sql create dnode $hostname2
system sh/exec.sh -n dnode2 -s start
sleep 3000

print ========== step2
sql create database d1
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+3s, 13)
sql insert into d1.t1 values(now+4s, 12)
sql insert into d1.t1 values(now+5s, 11)

print ========== step3
sleep 2000
sql create dnode $hostname3
system sh/exec.sh -n dnode3 -s start
sql create dnode $hostname4
system sh/exec.sh -n dnode4 -s start

sql show dnodes
print dnode1 openVnodes $data2_1
print dnode2 openVnodes $data2_2
print dnode3 openVnodes $data2_3
print dnode4 openVnodes $data2_4
if $data2_1 != 0 then
	return -1
endi
if $data2_2 != 1 then
	return -1
endi
if $data2_3 != 0 then
	return -1
endi
if $data2_4 != 0 then
	return -1
endi

print ========== step4
sql alter dnode 2 balance "vnode:2-dnode:3"

$x = 0
show4: 
	$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
print dnode3 openVnodes $data2_3
print dnode4 openVnodes $data2_4
if $data2_2 != 0 then
    goto show4
endi
if $data2_3 != 1 then
    goto show4
endi
if $data2_4 != 0 then
    goto show4
endi

print ========== step5
sql alter dnode 3 balance "vnode:2-dnode:4"

$x = 0
show5: 
	$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
print dnode3 openVnodes $data2_3
print dnode4 openVnodes $data2_4
if $data2_2 != 0 then
    goto show5
endi
if $data2_3 != 0 then
    goto show5
endi
if $data2_4 != 1 then
    goto show5
endi

print ========== step6
sql alter dnode 4 balance "vnode:2-dnode:2"

$x = 0
show6: 
	$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
print dnode3 openVnodes $data2_3
print dnode4 openVnodes $data2_4
if $data2_2 != 1 then
    goto show6
endi
if $data2_3 != 0 then
    goto show6
endi
if $data2_4 != 0 then
    goto show6
endi

print ========== step7
sql select * from d1.t1 order by t desc
print $data01 $data11 $data21 $data31 $data41 
if $data01 != 11 then
  return -1
endi
if $data11 != 12 then
  return -1
endi
if $data21 != 13 then
  return -1
endi
if $data31 != 14 then
  return -1
endi
if $data41 != 15 then
  return -1
endi

print ========== step8
sql_error sql alter dnode 4 balance "vnode:2-dnode:5"

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