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 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

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

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

print ========= start dnodes
system sh/exec.sh -n dnode1 -s start
sql connect
sql create dnode 192.168.0.2
system sh/exec.sh -n dnode2 -s start
sql create dnode 192.168.0.3
system sh/exec.sh -n dnode3 -s start
sql create dnode 192.168.0.4
system sh/exec.sh -n dnode4 -s start
sleep 3000

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(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
sql alter database d1 replica 3
sql alter database d2 replica 3
sql alter database d3 replica 3
sql alter database d4 replica 3
sleep 12000

print ======== step3
$x = 0
show3: 
	$x = $x + 1
	sleep 2000
	if $x == 10 then 
		return -1
	endi
	
sql show dnodes
print dnode192.168.0.1 ==> openVnodes: $data2_192.168.0.1  freeVnodes: $data3_192.168.0.1
print dnode192.168.0.2 ==> openVnodes: $data2_192.168.0.2  freeVnodes: $data3_192.168.0.2
print dnode192.168.0.3 ==> openVnodes: $data2_192.168.0.3  freeVnodes: $data3_192.168.0.3
print dnode192.168.0.4 ==> openVnodes: $data2_192.168.0.4  freeVnodes: $data3_192.168.0.4

if $data2_192.168.0.1 != 0 then
  goto show3
endi

if $data2_192.168.0.2 != 4 then
  goto show3
endi

if $data2_192.168.0.3 != 4 then
  goto show3
endi

if $data2_192.168.0.4 != 4 then
  goto show3
endi

if $data3_192.168.0.1 != 4 then
  goto show3
endi

if $data3_192.168.0.2 != 0 then
  goto show3
endi

if $data3_192.168.0.3 != 0 then
  goto show3
endi

if $data3_192.168.0.4 != 0 then
  goto show3
endi

print ======== step4
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

sleep 10000
print ========= step5 
system sh/exec.sh -n dnode2 -s stop -x SIGINT
sleep 3000

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 ========= step6
system sh/exec.sh -n dnode2 -s start
sleep 5000
system sh/exec.sh -n dnode3 -s stop -x SIGINT
sleep 3000

sql insert into d1.t1 values(now, 4)
sql insert into d2.t2 values(now, 4)
sql insert into d3.t3 values(now, 4)
sql insert into d4.t4 values(now, 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
sleep 5000
system sh/exec.sh -n dnode4 -s stop -x SIGINT
sleep 3000

sql insert into d1.t1 values(now, 5)
sql insert into d2.t2 values(now, 5)
sql insert into d3.t3 values(now, 5)
sql insert into d4.t4 values(now, 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
sleep 5000
system sh/exec.sh -n dnode2 -s stop -x SIGINT
sleep 3000

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
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