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

print ========= start dnodes
system sh/exec.sh -n dnode1 -s start
sql connect
sql create dnode $hostname2
system sh/exec.sh -n dnode2 -s start
sql create dnode $hostname3
system sh/exec.sh -n dnode3 -s start

$x = 0
step1: 
	$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_1 != ready then
  goto step1
endi
if $data4_2 != ready then
  goto step1
endi
if $data4_3 != ready then
  goto step1
endi

sql show mnodes
print mnode1 $data2_1
print mnode1 $data2_2
print mnode1 $data2_3
if $data2_1 != master then
  goto step1
endi

print ======== step1 
sql create database d1 replica 3
sql create database d2 replica 3
sql create database d3 replica 3
sql create database d4 replica 3

sql create table d1.t1 (ts timestamp, i int)
sql create table d2.t2 (ts timestamp, i int)
sql create table d3.t3 (ts timestamp, i int)
sql create table d4.t4 (ts timestamp, i int)

sql insert into d1.t1 values(now, 1)
sql insert into d2.t2 values(now, 1)
sql insert into d3.t3 values(now, 1)
sql insert into d4.t4 values(now, 1)

sql select * from d1.t1
if $rows != 1 then
	return -1
endi

sql select * from d2.t2
if $rows != 1 then
	return -1
endi

sql select * from d3.t3
if $rows != 1 then
	return -1
endi

sql select * from d4.t4
if $rows != 1 then
	return -1
endi

print ========= step2 alter db
sql_error alter database d1 replica 1
sql_error alter database d2 replica 1
sql_error alter database d3 replica 1
sql_error alter database d4 replica 1
sql alter database d1 replica 2
sql alter database d2 replica 2
sql alter database d3 replica 2
sql alter database d4 replica 2

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

sql show d1.vgroups 
print online vnodes $data03
if $data03 != 2 then
	goto a2
endi

sql show d2.vgroups 
print online vnodes $data03
if $data03 != 2 then
	goto a2
endi

sql show d3.vgroups 
print online vnodes $data03
if $data03 != 2 then
	goto a2
endi

sql show d4.vgroups 
print online vnodes $data03
if $data03 != 2 then
	goto a2
endi

sql alter database d1 replica 1
sql alter database d2 replica 1
sql alter database d3 replica 1
sql alter database d4 replica 1

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

sql show d1.vgroups 
print online vnodes $data03
if $data03 != 1 then
	goto a1
endi

sql show d2.vgroups 
print online vnodes $data03
if $data03 != 1 then
	goto a1
endi

sql show d3.vgroups 
print online vnodes $data03
if $data03 != 1 then
	goto a1
endi

sql show d4.vgroups 
print online vnodes $data03
if $data03 != 1 then
	goto a1
endi

sql show dnodes
print $data00 $data01 $data02 $data03
print $data10 $data11 $data12 $data13
print $data20 $data21 $data22 $data23

if $data02 != 0 then
	goto a1
endi
if $data12 != 2 then
	goto a1
endi
if $data22 != 2 then
	goto a1
endi

print ========= step3
sql reset query cache
sleep 100

sql insert into d1.t1 values(now, 2)
sql insert into d2.t2 values(now, 2)
sql insert into d3.t3 values(now, 2)
sql insert into d4.t4 values(now, 2)

sql select * from d1.t1
if $rows != 2 then
	return -1
endi

sql select * from d2.t2
if $rows != 2 then
	return -1
endi

sql select * from d3.t3
if $rows != 2 then
	return -1
endi

sql select * from d4.t4
if $rows != 2 then
	return -1
endi

print ========= step4 alter db
sql alter database d1 replica 2
sql alter database d2 replica 2
sql alter database d3 replica 2
sql alter database d4 replica 2

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

sql show d1.vgroups 
print online vnodes $data03
if $data03 != 2 then
	goto step4
endi

sql show d2.vgroups 
print online vnodes $data03
if $data03 != 2 then
	goto step4
endi

sql show d3.vgroups 
print online vnodes $data03
if $data03 != 2 then
	goto step4
endi

sql show d4.vgroups 
print online vnodes $data03
if $data03 != 2 then
	goto step4
endi

sql insert into d1.t1 values(now, 3)
sql insert into d2.t2 values(now, 3)
sql insert into d3.t3 values(now, 3)
sql insert into d4.t4 values(now, 3)

sql select * from d1.t1
if $rows != 3 then
	return -1
endi

sql select * from d2.t2
if $rows != 3 then
	return -1
endi

sql select * from d3.t3
if $rows != 3 then
	return -1
endi

sql select * from d4.t4
if $rows != 3 then
	return -1
endi

print ========= step4
system sh/exec.sh -n dnode2 -s stop -x SIGINT
sql reset query cache
sleep 100

#sql insert into d1.t1 values(now, 4) -x step1
#step1:
#sql insert into d2.t2 values(now, 4) -x step2
#step2:
#sql insert into d3.t3 values(now, 4) -x step3
#step3:
#sql insert into d4.t4 values(now, 4) -x step4
#step4:

print ========= step5
system sh/exec.sh -n dnode2 -s start
system sh/exec.sh -n dnode3 -s stop -x SIGINT

#sql insert into d1.t1 values(now, 5) -x step5
#step5:
#sql insert into d2.t2 values(now, 5) -x step6
#step6:
#sql insert into d3.t3 values(now, 5) -x step7
#step7:
#sql insert into d4.t4 values(now, 5) -x step8
#step8:

print ========= step6
system sh/exec.sh -n dnode3 -s start

sql insert into d1.t1 values(now, 6)
sql insert into d2.t2 values(now, 6)
sql insert into d3.t3 values(now, 6)
sql insert into d4.t4 values(now, 6)

sql select * from d1.t1
sql select * from d2.t2
sql select * from d3.t3
sql select * from d4.t4

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