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 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 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 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 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
sql create dnode $hostname4
system sh/exec.sh -n dnode4 -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
if $data4_4 != 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 2
sql create database d2 replica 2
sql create database d3 replica 2
sql create database d4 replica 2

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(1588262400001, 1)
sql insert into d2.t2 values(1588262400001, 1)
sql insert into d3.t3 values(1588262400001, 1)
sql insert into d4.t4 values(1588262400001, 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
sql alter database d1 replica 3
sql alter database d2 replica 3
sql alter database d3 replica 3
sql alter database d4 replica 3

$x = 0
a1: 
	$x = $x + 1
	sleep 1000
	if $x == 40 then
	  return -1
	endi
	
sql show d1.vgroups 
print online vnodes $data03
if $data03 != 3 then
	goto a1
endi

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

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

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

print ======== step3
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 != 4 then
   return -1
endi

if $data2_3 != 4 then
   return -1
endi

if $data2_3 != 4 then
   return -1
endi

print ======== step4
sql insert into d1.t1 values(1588262400002, 2)
sql insert into d2.t2 values(1588262400002, 2)
sql insert into d3.t3 values(1588262400002, 2)
sql insert into d4.t4 values(1588262400002, 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

sql reset query cache
sleep 100

print ========= step5 
system sh/exec.sh -n dnode2 -s stop -x SIGINT
sql insert into d1.t1 values(1588262400003, 3)
sql insert into d2.t2 values(1588262400003, 3)
sql insert into d3.t3 values(1588262400003, 3)
sql insert into d4.t4 values(1588262400003, 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 ========= step6
system sh/exec.sh -n dnode2 -s start

$x = 0
step6: 
	$x = $x + 1
	sleep 1000
	if $x == 20 then
	  return -1
	endi
	
sql show d1.vgroups 
print online vnodes $data03
if $data03 != 3 then
	goto step6
endi

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

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

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

system sh/exec.sh -n dnode3 -s stop -x SIGINT

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

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

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

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

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

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

$x = 0
step7: 
	$x = $x + 1
	sleep 1000
	if $x == 20 then
	  return -1
	endi
	
sql show d1.vgroups 
print online vnodes $data03
if $data03 != 3 then
	goto step7
endi

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

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

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

system sh/exec.sh -n dnode4 -s stop -x SIGINT

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

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

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

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

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

print ========= step8
system sh/exec.sh -n dnode4 -s start

$x = 0
step8: 
	$x = $x + 1
	sleep 2000
	if $x == 10 then
	  return -1
	endi
	
sql show d1.vgroups 
print online vnodes $data03
if $data03 != 3 then
	goto step8
endi

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

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

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

system sh/exec.sh -n dnode2 -s stop -x SIGINT

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

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

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

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

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

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