[sheepdog] [PATCH v2 12/21] tests/functional: teach it to support erasure code

Liu Yuan namei.unix at gmail.com
Wed Oct 16 07:50:38 CEST 2013


usage:
$ ./check -ec # will trigger the erasure tests on most test scripts

Signed-off-by: Liu Yuan <namei.unix at gmail.com>
---
 tests/functional/008           |    8 +-
 tests/functional/009           |   15 +--
 tests/functional/010           |   26 ++----
 tests/functional/010.out       |  200 ++++++++++++----------------------------
 tests/functional/014           |    6 +-
 tests/functional/015           |    6 +-
 tests/functional/018           |   10 +-
 tests/functional/019           |   10 +-
 tests/functional/020           |    6 +-
 tests/functional/022           |    2 +-
 tests/functional/024           |   10 +-
 tests/functional/026           |   14 +--
 tests/functional/029           |    9 +-
 tests/functional/029.out       |   22 ++++-
 tests/functional/031           |   12 ++-
 tests/functional/031.out       |   10 +-
 tests/functional/032           |    4 +-
 tests/functional/032.out       |   78 ++++++++++++++++
 tests/functional/034           |   18 ++--
 tests/functional/034.out       |    8 ++
 tests/functional/035           |   12 +--
 tests/functional/035.out       |  100 ++++++++++++++------
 tests/functional/043           |   10 +-
 tests/functional/043.out       |   70 +++++++-------
 tests/functional/045           |    8 +-
 tests/functional/050           |    6 +-
 tests/functional/054           |   15 +--
 tests/functional/054.out       |    6 +-
 tests/functional/060           |    4 +-
 tests/functional/060.out       |   64 ++++++-------
 tests/functional/062           |   12 ++-
 tests/functional/062.out       |    3 +-
 tests/functional/071           |    8 +-
 tests/functional/check         |    4 +
 tests/functional/common.config |    1 +
 tests/functional/common.rc     |    9 ++
 36 files changed, 441 insertions(+), 365 deletions(-)

diff --git a/tests/functional/008 b/tests/functional/008
index 9afe56b..5cb0e09 100755
--- a/tests/functional/008
+++ b/tests/functional/008
@@ -4,23 +4,23 @@
 
 . ./common
 
-for i in `seq 0 7`; do
+for i in `seq 0 15`; do
     _start_sheep $i
 done
 
-_wait_for_sheep "8"
+_wait_for_sheep 16
 
 _cluster_format -c 3
 
 for i in `seq 0 4`; do
-    $DOG vdi create test$i 100M
+    _vdi_create test$i 100M
 done
 
 for i in `seq 0 4`; do
     _random | $DOG vdi write test$i -p 7000 &
 done
 
-sleep 3
+sleep 1
 
 echo begin kill
 
diff --git a/tests/functional/009 b/tests/functional/009
index 86a4806..a12b277 100755
--- a/tests/functional/009
+++ b/tests/functional/009
@@ -5,16 +5,16 @@
 . ./common
 
 # start three sheep daemons
-for i in 0 1 2; do
+for i in `seq 0 6`; do
     _start_sheep $i
 done
 
-_wait_for_sheep 3
+_wait_for_sheep 7
 
-_cluster_format -c 2
+_cluster_format
 
 # create a pre-allocated vdi
-$DOG vdi create test 80M -P
+_vdi_create test 80M -P
 
 # stop the 3rd node
 _kill_sheep 2
@@ -28,9 +28,10 @@ _start_sheep 2
 _wait_for_sheep_recovery 0
 
 # show md5sum of the vdi on each node
-for i in 0 1 2; do
+for i in `seq 0 6`; do
     $DOG vdi read test -p 700$i | md5sum > $STORE/csum.$i
 done
 
-diff -u $STORE/csum.0 $STORE/csum.1
-diff -u $STORE/csum.0 $STORE/csum.2
+for i in `seq 1 6`; do
+    diff -u $STORE/csum.0 $STORE/csum.$i
+done
diff --git a/tests/functional/010 b/tests/functional/010
index d050941..580140c 100755
--- a/tests/functional/010
+++ b/tests/functional/010
@@ -4,30 +4,26 @@
 
 . ./common
 
-for i in `seq 0 4`; do
+for i in `seq 0 7`; do
     _start_sheep $i
 done
 
-_wait_for_sheep 5
+_wait_for_sheep 8
 
-_cluster_format
+_cluster_format -c 6
 $DOG cluster recover disable
 
-$DOG vdi create test 4G
+_vdi_create test 4G
 
 # create 8 objects
 for i in `seq 0 7`; do
     echo $i | $DOG vdi write test $((i * 4 * 1024 * 1024)) 512
 done
 
-ls $STORE/*/obj/* | _filter_store | sort
-
 _kill_sheep 3
 _kill_sheep 4
 
-_wait_for_sheep 3
-$DOG cluster info | head -6 | _filter_cluster_info
-ls $STORE/*/obj/* | _filter_store | sort
+_wait_for_sheep 6
 
 # overwrite the objects to invoke object recovery
 for i in `seq 4 7`; do
@@ -35,34 +31,26 @@ for i in `seq 4 7`; do
     echo $(($i + 100)) | $DOG vdi write test $((i * 4 * 1024 * 1024)) 512
 done
 
-$DOG cluster info | head -6 | _filter_cluster_info
-ls $STORE/*/obj/* | _filter_store | sort
-
 $DOG cluster recover enable
 _wait_for_sheep_recovery 0
 $DOG cluster info | head -6 | _filter_cluster_info
 ls $STORE/*/obj/* | _filter_store | sort
 
 $DOG cluster recover disable
-for i in `seq 3 7`; do
+for i in 3 4; do
     _start_sheep $i
 done
 
 _wait_for_sheep 8
 
-$DOG cluster info | head -6 | _filter_cluster_info
-ls $STORE/*/obj/* | _filter_store | sort
-
 # overwrite the objects to invoke object recovery
 for i in `seq 0 3`; do
     $DOG vdi read test $((i * 4 * 1024 * 1024)) 512 -p 7007 | md5sum
     echo $(($i + 200)) | $DOG vdi write test $((i * 4 * 1024 * 1024)) 512
 done
 
-$DOG cluster info | head -6 | _filter_cluster_info
-ls $STORE/*/obj/* | _filter_store | sort
-
 $DOG cluster recover enable
 _wait_for_sheep_recovery 0
 $DOG cluster info | head -6 | _filter_cluster_info
 ls $STORE/*/obj/* | _filter_store | sort
+$DOG vdi read test 0 32m | md5sum
diff --git a/tests/functional/010.out b/tests/functional/010.out
index fc3b12e..61c0c75 100644
--- a/tests/functional/010.out
+++ b/tests/functional/010.out
@@ -1,115 +1,17 @@
 QA output created by 010
 using backend plain store
 Cluster recovery: disable
-STORE/0/obj/007c2b2500000000
-STORE/0/obj/007c2b2500000001
-STORE/0/obj/007c2b2500000002
-STORE/0/obj/007c2b2500000004
-STORE/0/obj/007c2b2500000006
-STORE/0/obj/007c2b2500000007
-STORE/1/obj/007c2b2500000000
-STORE/1/obj/007c2b2500000001
-STORE/1/obj/007c2b2500000003
-STORE/1/obj/007c2b2500000005
-STORE/1/obj/007c2b2500000006
-STORE/1/obj/807c2b2500000000
-STORE/2/obj/007c2b2500000002
-STORE/2/obj/007c2b2500000003
-STORE/2/obj/007c2b2500000004
-STORE/2/obj/007c2b2500000005
-STORE/2/obj/007c2b2500000007
-STORE/2/obj/807c2b2500000000
-STORE/3/obj/007c2b2500000000
-STORE/3/obj/007c2b2500000001
-STORE/3/obj/007c2b2500000003
-STORE/4/obj/007c2b2500000002
-STORE/4/obj/007c2b2500000004
-STORE/4/obj/007c2b2500000005
-STORE/4/obj/007c2b2500000006
-STORE/4/obj/007c2b2500000007
-STORE/4/obj/807c2b2500000000
-Cluster status: running, auto-recovery disabled
-
-Cluster created at DATE
-
-Epoch Time           Version
-DATE      3 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002]
-STORE/0/obj/007c2b2500000000
-STORE/0/obj/007c2b2500000001
-STORE/0/obj/007c2b2500000002
-STORE/0/obj/007c2b2500000004
-STORE/0/obj/007c2b2500000006
-STORE/0/obj/007c2b2500000007
-STORE/1/obj/007c2b2500000000
-STORE/1/obj/007c2b2500000001
-STORE/1/obj/007c2b2500000003
-STORE/1/obj/007c2b2500000005
-STORE/1/obj/007c2b2500000006
-STORE/1/obj/807c2b2500000000
-STORE/2/obj/007c2b2500000002
-STORE/2/obj/007c2b2500000003
-STORE/2/obj/007c2b2500000004
-STORE/2/obj/007c2b2500000005
-STORE/2/obj/007c2b2500000007
-STORE/2/obj/807c2b2500000000
-STORE/3/obj/007c2b2500000000
-STORE/3/obj/007c2b2500000001
-STORE/3/obj/007c2b2500000003
-STORE/4/obj/007c2b2500000002
-STORE/4/obj/007c2b2500000004
-STORE/4/obj/007c2b2500000005
-STORE/4/obj/007c2b2500000006
-STORE/4/obj/007c2b2500000007
-STORE/4/obj/807c2b2500000000
 a8775e30ddc5eda14d76e5361a514392  -
 8124234db4755d4772c3440f2cbd1ecb  -
 62630992718e77c73873ce1672d80786  -
 19b9d4d75a5a71bfad364628880fa913  -
-Cluster status: running, auto-recovery disabled
-
-Cluster created at DATE
-
-Epoch Time           Version
-DATE      3 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002]
-STORE/0/obj/007c2b2500000000
-STORE/0/obj/007c2b2500000001
-STORE/0/obj/007c2b2500000002
-STORE/0/obj/007c2b2500000004
-STORE/0/obj/007c2b2500000005
-STORE/0/obj/007c2b2500000006
-STORE/0/obj/007c2b2500000007
-STORE/0/obj/807c2b2500000000
-STORE/1/obj/007c2b2500000000
-STORE/1/obj/007c2b2500000001
-STORE/1/obj/007c2b2500000003
-STORE/1/obj/007c2b2500000004
-STORE/1/obj/007c2b2500000005
-STORE/1/obj/007c2b2500000006
-STORE/1/obj/007c2b2500000007
-STORE/1/obj/807c2b2500000000
-STORE/2/obj/007c2b2500000002
-STORE/2/obj/007c2b2500000003
-STORE/2/obj/007c2b2500000004
-STORE/2/obj/007c2b2500000005
-STORE/2/obj/007c2b2500000006
-STORE/2/obj/007c2b2500000007
-STORE/2/obj/807c2b2500000000
-STORE/3/obj/007c2b2500000000
-STORE/3/obj/007c2b2500000001
-STORE/3/obj/007c2b2500000003
-STORE/4/obj/007c2b2500000002
-STORE/4/obj/007c2b2500000004
-STORE/4/obj/007c2b2500000005
-STORE/4/obj/007c2b2500000006
-STORE/4/obj/007c2b2500000007
-STORE/4/obj/807c2b2500000000
 Cluster recovery: enable
 Cluster status: running, auto-recovery enabled
 
 Cluster created at DATE
 
 Epoch Time           Version
-DATE      3 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002]
+DATE      3 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7005, 127.0.0.1:7006, 127.0.0.1:7007]
 STORE/0/obj/007c2b2500000000
 STORE/0/obj/007c2b2500000001
 STORE/0/obj/007c2b2500000002
@@ -140,89 +42,107 @@ STORE/2/obj/807c2b2500000000
 STORE/3/obj/007c2b2500000000
 STORE/3/obj/007c2b2500000001
 STORE/3/obj/007c2b2500000003
+STORE/3/obj/007c2b2500000005
+STORE/3/obj/007c2b2500000006
+STORE/3/obj/007c2b2500000007
+STORE/4/obj/007c2b2500000000
 STORE/4/obj/007c2b2500000002
 STORE/4/obj/007c2b2500000004
 STORE/4/obj/007c2b2500000005
 STORE/4/obj/007c2b2500000006
 STORE/4/obj/007c2b2500000007
 STORE/4/obj/807c2b2500000000
-Cluster recovery: disable
-Cluster status: running, auto-recovery disabled
-
-Cluster created at DATE
-
-Epoch Time           Version
-DATE      8 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003, 127.0.0.1:7004, 127.0.0.1:7005, 127.0.0.1:7006, 127.0.0.1:7007]
-STORE/0/obj/007c2b2500000001
-STORE/0/obj/007c2b2500000002
-STORE/0/obj/007c2b2500000006
-STORE/1/obj/007c2b2500000000
-STORE/1/obj/007c2b2500000001
-STORE/1/obj/007c2b2500000003
-STORE/1/obj/007c2b2500000005
-STORE/2/obj/007c2b2500000004
-STORE/2/obj/007c2b2500000005
-STORE/2/obj/807c2b2500000000
-e0b27e7466a3c21d0a4dedfed8bb9184  -
-f35835c0a25be5ee75a536d1816c1db4  -
-0faf5f38c28a38a6db1e6dfcdf259141  -
-83bffbfb00dbcb7d6b4a2fa9274175b9  -
-Cluster status: running, auto-recovery disabled
-
-Cluster created at DATE
-
-Epoch Time           Version
-DATE      8 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003, 127.0.0.1:7004, 127.0.0.1:7005, 127.0.0.1:7006, 127.0.0.1:7007]
-STORE/0/obj/007c2b2500000001
-STORE/0/obj/007c2b2500000002
-STORE/0/obj/007c2b2500000006
-STORE/1/obj/007c2b2500000000
-STORE/1/obj/007c2b2500000001
-STORE/1/obj/007c2b2500000003
-STORE/1/obj/007c2b2500000005
-STORE/2/obj/007c2b2500000004
-STORE/2/obj/007c2b2500000005
-STORE/2/obj/807c2b2500000000
-STORE/3/obj/007c2b2500000000
-STORE/3/obj/007c2b2500000003
-STORE/4/obj/807c2b2500000000
+STORE/5/obj/007c2b2500000000
+STORE/5/obj/007c2b2500000001
 STORE/5/obj/007c2b2500000002
+STORE/5/obj/007c2b2500000003
+STORE/5/obj/007c2b2500000004
+STORE/5/obj/007c2b2500000005
+STORE/5/obj/007c2b2500000006
+STORE/5/obj/007c2b2500000007
+STORE/5/obj/807c2b2500000000
 STORE/6/obj/007c2b2500000000
+STORE/6/obj/007c2b2500000001
 STORE/6/obj/007c2b2500000002
 STORE/6/obj/007c2b2500000003
+STORE/6/obj/007c2b2500000004
+STORE/6/obj/007c2b2500000005
+STORE/6/obj/007c2b2500000006
+STORE/6/obj/007c2b2500000007
+STORE/6/obj/807c2b2500000000
+STORE/7/obj/007c2b2500000000
 STORE/7/obj/007c2b2500000001
+STORE/7/obj/007c2b2500000002
+STORE/7/obj/007c2b2500000003
+STORE/7/obj/007c2b2500000004
+STORE/7/obj/007c2b2500000005
+STORE/7/obj/007c2b2500000006
+STORE/7/obj/007c2b2500000007
 STORE/7/obj/807c2b2500000000
+Cluster recovery: disable
+e0b27e7466a3c21d0a4dedfed8bb9184  -
+f35835c0a25be5ee75a536d1816c1db4  -
+0faf5f38c28a38a6db1e6dfcdf259141  -
+83bffbfb00dbcb7d6b4a2fa9274175b9  -
 Cluster recovery: enable
 Cluster status: running, auto-recovery enabled
 
 Cluster created at DATE
 
 Epoch Time           Version
-DATE      8 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003, 127.0.0.1:7004, 127.0.0.1:7005, 127.0.0.1:7006, 127.0.0.1:7007]
+DATE      5 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003, 127.0.0.1:7004, 127.0.0.1:7005, 127.0.0.1:7006, 127.0.0.1:7007]
+STORE/0/obj/007c2b2500000000
 STORE/0/obj/007c2b2500000001
 STORE/0/obj/007c2b2500000002
+STORE/0/obj/007c2b2500000004
 STORE/0/obj/007c2b2500000006
+STORE/0/obj/007c2b2500000007
 STORE/1/obj/007c2b2500000000
 STORE/1/obj/007c2b2500000001
 STORE/1/obj/007c2b2500000003
+STORE/1/obj/007c2b2500000004
 STORE/1/obj/007c2b2500000005
+STORE/1/obj/007c2b2500000006
+STORE/1/obj/807c2b2500000000
+STORE/2/obj/007c2b2500000002
+STORE/2/obj/007c2b2500000003
 STORE/2/obj/007c2b2500000004
 STORE/2/obj/007c2b2500000005
+STORE/2/obj/007c2b2500000007
 STORE/2/obj/807c2b2500000000
 STORE/3/obj/007c2b2500000000
+STORE/3/obj/007c2b2500000001
 STORE/3/obj/007c2b2500000003
+STORE/3/obj/007c2b2500000005
+STORE/3/obj/007c2b2500000006
+STORE/3/obj/007c2b2500000007
+STORE/4/obj/007c2b2500000000
+STORE/4/obj/007c2b2500000002
+STORE/4/obj/007c2b2500000004
 STORE/4/obj/007c2b2500000005
 STORE/4/obj/007c2b2500000006
 STORE/4/obj/007c2b2500000007
 STORE/4/obj/807c2b2500000000
+STORE/5/obj/007c2b2500000001
 STORE/5/obj/007c2b2500000002
+STORE/5/obj/007c2b2500000003
 STORE/5/obj/007c2b2500000004
+STORE/5/obj/007c2b2500000005
+STORE/5/obj/007c2b2500000006
 STORE/5/obj/007c2b2500000007
+STORE/5/obj/807c2b2500000000
 STORE/6/obj/007c2b2500000000
+STORE/6/obj/007c2b2500000001
 STORE/6/obj/007c2b2500000002
 STORE/6/obj/007c2b2500000003
 STORE/6/obj/007c2b2500000004
 STORE/6/obj/007c2b2500000007
+STORE/6/obj/807c2b2500000000
+STORE/7/obj/007c2b2500000000
 STORE/7/obj/007c2b2500000001
+STORE/7/obj/007c2b2500000002
+STORE/7/obj/007c2b2500000003
+STORE/7/obj/007c2b2500000005
 STORE/7/obj/007c2b2500000006
 STORE/7/obj/807c2b2500000000
+dc5bfba305d41bc126940b324945c54e  -
diff --git a/tests/functional/014 b/tests/functional/014
index 764f3ee..d88d2df 100755
--- a/tests/functional/014
+++ b/tests/functional/014
@@ -4,14 +4,14 @@
 
 . ./common
 
-for i in 0 2; do
+for i in `seq 0 5`; do
     _start_sheep $i
 done
 
-_wait_for_sheep 2
+_wait_for_sheep 6
 
 _cluster_format -c 2
-$DOG vdi create test 4G
+_vdi_create test 4G
 
 echo -n value > $STORE/tmp.dat
 
diff --git a/tests/functional/015 b/tests/functional/015
index b985506..d703ff9 100755
--- a/tests/functional/015
+++ b/tests/functional/015
@@ -4,15 +4,15 @@
 
 . ./common
 
-for i in 0 2; do
+for i in `seq 0 5`; do
     _start_sheep $i
 done
 
-_wait_for_sheep 2
+_wait_for_sheep 6
 
 _cluster_format -c 2
 
-$DOG vdi create test 539545600
+_vdi_create test 539545600
 $DOG vdi setattr test lock 1 -x &
 $DOG vdi setattr test lock 1 -x &
 $DOG vdi setattr test lock 1 -x &
diff --git a/tests/functional/018 b/tests/functional/018
index bcec541..0136144 100755
--- a/tests/functional/018
+++ b/tests/functional/018
@@ -4,24 +4,24 @@
 
 . ./common
 
-for i in `seq 0 2`; do
+for i in `seq 0 5`; do
     _start_sheep $i "-w size=100M"
 done
 
-_wait_for_sheep "3"
+_wait_for_sheep 6
 
 _cluster_format -c 2
 
-$DOG vdi create test 4M
+_vdi_create test 4M
 
 _random | $DOG vdi write -w test
 
 $DOG vdi cache flush test
 
-for port in `seq 0 2`; do
+for port in `seq 0 5`; do
     $DOG vdi read test -p 700$port | md5sum > $STORE/csum.$port
 done
 
-for port in `seq 1 2`; do
+for port in `seq 1 5`; do
     diff -u $STORE/csum.0 $STORE/csum.$port
 done
diff --git a/tests/functional/019 b/tests/functional/019
index 136fb6e..d32f287 100755
--- a/tests/functional/019
+++ b/tests/functional/019
@@ -4,22 +4,22 @@
 
 . ./common
 
-for i in `seq 0 2`; do
+for i in `seq 0 5`; do
     _start_sheep $i "-w size=100M"
 done
 
-_wait_for_sheep "3"
+_wait_for_sheep 6
 
 _cluster_format -c 2
 
-$DOG vdi create test 4M
+_vdi_create test 4M
 
 _random | $DOG vdi write test
 
-for port in `seq 0 2`; do
+for port in `seq 0 5`; do
     $DOG vdi read test -p 700$port | md5sum > $STORE/csum.$port
 done
 
-for port in `seq 1 2`; do
+for port in `seq 1 5`; do
     diff -u $STORE/csum.0 $STORE/csum.$port
 done
diff --git a/tests/functional/020 b/tests/functional/020
index a2a6d04..6610bb1 100755
--- a/tests/functional/020
+++ b/tests/functional/020
@@ -4,15 +4,15 @@
 
 . ./common
 
-for i in `seq 0 2`; do
+for i in `seq 0 5`; do
     _start_sheep $i "-w size=20M"
 done
 
-_wait_for_sheep "3"
+_wait_for_sheep 6
 
 _cluster_format -c 2
 
-$DOG vdi create test 40M
+_vdi_create test 40M
 
 _random | $DOG vdi write test
 
diff --git a/tests/functional/022 b/tests/functional/022
index c2fe9f0..22ad2a1 100755
--- a/tests/functional/022
+++ b/tests/functional/022
@@ -13,6 +13,6 @@ _wait_for_sheep "3"
 _cluster_format -c 3
 
 echo "creating a VDI should fail without data nodes available"
-$DOG vdi create test 100M
+_vdi_create test 100M
 
 status=0
diff --git a/tests/functional/024 b/tests/functional/024
index 87421a8..e1c1180 100755
--- a/tests/functional/024
+++ b/tests/functional/024
@@ -12,14 +12,14 @@ VDI_NAME="test"
 VDI_SIZE="300M"
 
 echo "starting first sheep"
-_start_sheep 0
-_wait_for_sheep 1
+for i in `seq 0 5`; do _start_sheep $i; done
+_wait_for_sheep 6
 
 echo "formatting cluster"
 _cluster_format -c 1
 
 echo "creating vdi ${NAME}"
-$DOG vdi create ${VDI_NAME} ${VDI_SIZE}
+_vdi_create ${VDI_NAME} ${VDI_SIZE}
 sleep 1
 
 echo "filling ${VDI_NAME} with data"
@@ -29,8 +29,8 @@ echo "reading back ${VDI_NAME}"
 $QEMU_IO -c "read 0 1m" sheepdog:${VDI_NAME} | _filter_qemu_io
 
 echo "starting second sheep"
-_start_sheep 1
-_wait_for_sheep 2
+_start_sheep 6
+_wait_for_sheep 7
 
 echo "reading data from second sheep"
 $QEMU_IO -c "read 0 ${VDI_SIZE}" sheepdog:localhost:7001:${VDI_NAME} | _filter_qemu_io
diff --git a/tests/functional/026 b/tests/functional/026
index bf62a6d..a26492c 100755
--- a/tests/functional/026
+++ b/tests/functional/026
@@ -8,33 +8,33 @@ if [[ "$DRIVER" == zoo* ]];then
     DRIVER=${DRIVER/1000/5000}
 fi
 
-for i in `seq 0 7`; do
+for i in `seq 0 15`; do
     _start_sheep $i
 done
 
-_wait_for_sheep "8"
+_wait_for_sheep 16
 
 _cluster_format
 
 # create new vdis
 (
 for i in `seq 0 40`;do
-    $DOG vdi create test$i 4M
+    _vdi_create test$i 4M
 done
 ) &
 
 # kill nodes and join them back
 for i in 1 2; do _kill_sheep $i;done
-_wait_for_sheep 6
+_wait_for_sheep 14
 _wait_for_sheep_recovery 0
 for i in 3 4; do _kill_sheep $i;done
-_wait_for_sheep 4
+_wait_for_sheep 12
 _wait_for_sheep_recovery 0
 for i in 5; do _kill_sheep $i;done
-_wait_for_sheep 3
+_wait_for_sheep 11
 _wait_for_sheep_recovery 0
 for i in `seq 1 5`; do _start_sheep $i;done
-_wait_for_sheep 8
+_wait_for_sheep 16
 
 # wait for dog to finish
 wait
diff --git a/tests/functional/029 b/tests/functional/029
index 7101d5e..45e0a81 100755
--- a/tests/functional/029
+++ b/tests/functional/029
@@ -4,11 +4,11 @@
 
 . ./common
 
-for i in `seq 0 6`; do
+for i in `seq 0 7`; do
 	_start_sheep $i;
 done
 
-_wait_for_sheep 7
+_wait_for_sheep 8
 
 _cluster_format -c 3
 
@@ -16,6 +16,7 @@ for i in `seq 2 4`; do
 	$DOG vdi create test$i 20M -c $i -P
 done
 
+$DOG vdi create -e test5 20M -P
 $DOG vdi snapshot -s tag test2
 $DOG vdi clone -s 1 test2 clone -c 3
 
@@ -24,7 +25,7 @@ for i in `seq 2 3`; do
 	_kill_sheep $i;
 done
 
-for i in `seq 7 8`; do
+for i in `seq 8 9`; do
 	_start_sheep $i;
 done
 
@@ -35,7 +36,7 @@ $DOG vdi delete -s 1 test2
 
 _vdi_list
 
-for i in `seq 2 4`; do
+for i in `seq 2 5`; do
 	$DOG vdi object test$i -i 1;
 done
 
diff --git a/tests/functional/029.out b/tests/functional/029.out
index df90d4d..6e1456e 100644
--- a/tests/functional/029.out
+++ b/tests/functional/029.out
@@ -1,19 +1,21 @@
 QA output created by 029
 using backend plain store
   Name        Id    Size    Used  Shared    Creation time   VDI id  Copies  Tag
+  test5        0   20 MB   20 MB  0.0 MB DATE   fd2c30     6              
   test4        0   20 MB   20 MB  0.0 MB DATE   fd2de3     4              
   test3        0   20 MB   20 MB  0.0 MB DATE   fd3662     3              
   test2        0   20 MB  0.0 MB   20 MB DATE   fd3816     2              
-Looking for the object 0xfd381500000001 (the inode vid 0xfd3816 idx 1) with 7 nodes
+Looking for the object 0xfd381500000001 (the inode vid 0xfd3816 idx 1) with 8 nodes
 
 127.0.0.1:7000 has the object (should be 2 copies)
 127.0.0.1:7001 doesn't have the object
 127.0.0.1:7004 doesn't have the object
 127.0.0.1:7005 doesn't have the object
-127.0.0.1:7006 has the object (should be 2 copies)
+127.0.0.1:7006 doesn't have the object
 127.0.0.1:7007 doesn't have the object
 127.0.0.1:7008 doesn't have the object
-Looking for the object 0xfd366200000001 (the inode vid 0xfd3662 idx 1) with 7 nodes
+127.0.0.1:7009 has the object (should be 2 copies)
+Looking for the object 0xfd366200000001 (the inode vid 0xfd3662 idx 1) with 8 nodes
 
 127.0.0.1:7000 doesn't have the object
 127.0.0.1:7001 has the object (should be 3 copies)
@@ -22,7 +24,8 @@ Looking for the object 0xfd366200000001 (the inode vid 0xfd3662 idx 1) with 7 no
 127.0.0.1:7006 doesn't have the object
 127.0.0.1:7007 has the object (should be 3 copies)
 127.0.0.1:7008 doesn't have the object
-Looking for the object 0xfd2de300000001 (the inode vid 0xfd2de3 idx 1) with 7 nodes
+127.0.0.1:7009 doesn't have the object
+Looking for the object 0xfd2de300000001 (the inode vid 0xfd2de3 idx 1) with 8 nodes
 
 127.0.0.1:7000 doesn't have the object
 127.0.0.1:7001 has the object (should be 4 copies)
@@ -31,3 +34,14 @@ Looking for the object 0xfd2de300000001 (the inode vid 0xfd2de3 idx 1) with 7 no
 127.0.0.1:7006 doesn't have the object
 127.0.0.1:7007 has the object (should be 4 copies)
 127.0.0.1:7008 has the object (should be 4 copies)
+127.0.0.1:7009 doesn't have the object
+Looking for the object 0xfd2c3000000001 (the inode vid 0xfd2c30 idx 1) with 8 nodes
+
+127.0.0.1:7000 has the object (should be 6 copies)
+127.0.0.1:7001 has the object (should be 6 copies)
+127.0.0.1:7004 has the object (should be 6 copies)
+127.0.0.1:7005 doesn't have the object
+127.0.0.1:7006 has the object (should be 6 copies)
+127.0.0.1:7007 has the object (should be 6 copies)
+127.0.0.1:7008 doesn't have the object
+127.0.0.1:7009 has the object (should be 6 copies)
diff --git a/tests/functional/031 b/tests/functional/031
index fb5d043..56145ec 100755
--- a/tests/functional/031
+++ b/tests/functional/031
@@ -4,21 +4,23 @@
 
 . ./common
 
-_start_sheep 0
-_wait_for_sheep 1
+for i in `seq 0 5`;do _start_sheep $i;done
+_wait_for_sheep 6
 
 _cluster_format -c 1
 
 for i in 1 2 3; do
-    $DOG vdi create test$i ${i}00M
+    $DOG vdi create test$i ${i}00M -c $i
 done
 
+$DOG vdi create -e test4 400M
+
 _vdi_list
 
 $DOG cluster shutdown
 _wait_for_sheep_stop
 
-_start_sheep 0
-_wait_for_sheep 1
+for i in `seq 0 5`;do _start_sheep $i;done
+_wait_for_sheep 6
 
 _vdi_list
diff --git a/tests/functional/031.out b/tests/functional/031.out
index 4c66cff..0876706 100644
--- a/tests/functional/031.out
+++ b/tests/functional/031.out
@@ -1,10 +1,12 @@
 QA output created by 031
 using backend plain store
   Name        Id    Size    Used  Shared    Creation time   VDI id  Copies  Tag
+  test4        0  400 MB  0.0 MB  0.0 MB DATE   fd2de3     6              
   test1        0  100 MB  0.0 MB  0.0 MB DATE   fd32fc     1              
-  test3        0  300 MB  0.0 MB  0.0 MB DATE   fd3662     1              
-  test2        0  200 MB  0.0 MB  0.0 MB DATE   fd3815     1              
+  test3        0  300 MB  0.0 MB  0.0 MB DATE   fd3662     3              
+  test2        0  200 MB  0.0 MB  0.0 MB DATE   fd3815     2              
   Name        Id    Size    Used  Shared    Creation time   VDI id  Copies  Tag
+  test4        0  400 MB  0.0 MB  0.0 MB DATE   fd2de3     6              
   test1        0  100 MB  0.0 MB  0.0 MB DATE   fd32fc     1              
-  test3        0  300 MB  0.0 MB  0.0 MB DATE   fd3662     1              
-  test2        0  200 MB  0.0 MB  0.0 MB DATE   fd3815     1              
+  test3        0  300 MB  0.0 MB  0.0 MB DATE   fd3662     3              
+  test2        0  200 MB  0.0 MB  0.0 MB DATE   fd3815     2              
diff --git a/tests/functional/032 b/tests/functional/032
index 00727cd..d902a30 100755
--- a/tests/functional/032
+++ b/tests/functional/032
@@ -10,9 +10,9 @@ done
 
 _wait_for_sheep 8
 
-_cluster_format
+_cluster_format -c 6
 
-$DOG vdi create test 100M
+_vdi_create test 100M
 # create 25 objects
 for i in `seq 0 24`; do
     echo $i | $DOG vdi write test $((i * 4 * 1024 * 1024)) 512
diff --git a/tests/functional/032.out b/tests/functional/032.out
index df1ffa5..29a47e1 100644
--- a/tests/functional/032.out
+++ b/tests/functional/032.out
@@ -1,84 +1,162 @@
 QA output created by 032
 using backend plain store
 9c7766570b3be3aff2724f587c2f4107  -
+STORE/1/obj/807c2b2500000000
 STORE/2/obj/807c2b2500000000
 STORE/4/obj/807c2b2500000000
+STORE/5/obj/807c2b2500000000
+STORE/6/obj/807c2b2500000000
 STORE/7/obj/807c2b2500000000
+STORE/0/obj/007c2b2500000000
 STORE/1/obj/007c2b2500000000
 STORE/3/obj/007c2b2500000000
+STORE/4/obj/007c2b2500000000
 STORE/6/obj/007c2b2500000000
+STORE/7/obj/007c2b2500000000
 STORE/0/obj/007c2b2500000001
 STORE/1/obj/007c2b2500000001
+STORE/3/obj/007c2b2500000001
+STORE/5/obj/007c2b2500000001
+STORE/6/obj/007c2b2500000001
 STORE/7/obj/007c2b2500000001
 STORE/0/obj/007c2b2500000002
+STORE/2/obj/007c2b2500000002
+STORE/4/obj/007c2b2500000002
 STORE/5/obj/007c2b2500000002
 STORE/6/obj/007c2b2500000002
+STORE/7/obj/007c2b2500000002
 STORE/1/obj/007c2b2500000003
+STORE/2/obj/007c2b2500000003
 STORE/3/obj/007c2b2500000003
+STORE/5/obj/007c2b2500000003
 STORE/6/obj/007c2b2500000003
+STORE/7/obj/007c2b2500000003
+STORE/0/obj/007c2b2500000004
+STORE/1/obj/007c2b2500000004
 STORE/2/obj/007c2b2500000004
+STORE/4/obj/007c2b2500000004
 STORE/5/obj/007c2b2500000004
 STORE/6/obj/007c2b2500000004
 STORE/1/obj/007c2b2500000005
 STORE/2/obj/007c2b2500000005
+STORE/3/obj/007c2b2500000005
 STORE/4/obj/007c2b2500000005
+STORE/5/obj/007c2b2500000005
+STORE/7/obj/007c2b2500000005
 STORE/0/obj/007c2b2500000006
+STORE/1/obj/007c2b2500000006
+STORE/3/obj/007c2b2500000006
 STORE/4/obj/007c2b2500000006
+STORE/5/obj/007c2b2500000006
 STORE/7/obj/007c2b2500000006
+STORE/0/obj/007c2b2500000007
+STORE/2/obj/007c2b2500000007
+STORE/3/obj/007c2b2500000007
 STORE/4/obj/007c2b2500000007
 STORE/5/obj/007c2b2500000007
 STORE/6/obj/007c2b2500000007
+STORE/1/obj/007c2b2500000008
+STORE/2/obj/007c2b2500000008
 STORE/3/obj/007c2b2500000008
 STORE/4/obj/007c2b2500000008
+STORE/5/obj/007c2b2500000008
 STORE/6/obj/007c2b2500000008
 STORE/1/obj/007c2b2500000009
+STORE/2/obj/007c2b2500000009
+STORE/4/obj/007c2b2500000009
 STORE/5/obj/007c2b2500000009
 STORE/6/obj/007c2b2500000009
+STORE/7/obj/007c2b2500000009
+STORE/0/obj/007c2b250000000a
 STORE/1/obj/007c2b250000000a
 STORE/3/obj/007c2b250000000a
+STORE/4/obj/007c2b250000000a
+STORE/5/obj/007c2b250000000a
 STORE/6/obj/007c2b250000000a
+STORE/0/obj/007c2b250000000b
+STORE/1/obj/007c2b250000000b
 STORE/2/obj/007c2b250000000b
 STORE/3/obj/007c2b250000000b
+STORE/5/obj/007c2b250000000b
 STORE/6/obj/007c2b250000000b
+STORE/0/obj/007c2b250000000c
 STORE/1/obj/007c2b250000000c
 STORE/3/obj/007c2b250000000c
+STORE/4/obj/007c2b250000000c
+STORE/6/obj/007c2b250000000c
 STORE/7/obj/007c2b250000000c
 STORE/1/obj/007c2b250000000d
+STORE/3/obj/007c2b250000000d
+STORE/4/obj/007c2b250000000d
 STORE/5/obj/007c2b250000000d
 STORE/6/obj/007c2b250000000d
+STORE/7/obj/007c2b250000000d
+STORE/1/obj/007c2b250000000e
 STORE/2/obj/007c2b250000000e
+STORE/3/obj/007c2b250000000e
 STORE/5/obj/007c2b250000000e
+STORE/6/obj/007c2b250000000e
 STORE/7/obj/007c2b250000000e
+STORE/1/obj/007c2b250000000f
+STORE/2/obj/007c2b250000000f
+STORE/3/obj/007c2b250000000f
 STORE/4/obj/007c2b250000000f
 STORE/6/obj/007c2b250000000f
 STORE/7/obj/007c2b250000000f
 STORE/0/obj/007c2b2500000010
+STORE/2/obj/007c2b2500000010
+STORE/4/obj/007c2b2500000010
 STORE/5/obj/007c2b2500000010
+STORE/6/obj/007c2b2500000010
 STORE/7/obj/007c2b2500000010
+STORE/1/obj/007c2b2500000011
 STORE/3/obj/007c2b2500000011
 STORE/4/obj/007c2b2500000011
+STORE/5/obj/007c2b2500000011
+STORE/6/obj/007c2b2500000011
 STORE/7/obj/007c2b2500000011
+STORE/1/obj/007c2b2500000012
+STORE/2/obj/007c2b2500000012
 STORE/3/obj/007c2b2500000012
 STORE/4/obj/007c2b2500000012
+STORE/6/obj/007c2b2500000012
 STORE/7/obj/007c2b2500000012
 STORE/0/obj/007c2b2500000013
 STORE/2/obj/007c2b2500000013
+STORE/3/obj/007c2b2500000013
+STORE/4/obj/007c2b2500000013
 STORE/5/obj/007c2b2500000013
+STORE/7/obj/007c2b2500000013
+STORE/0/obj/007c2b2500000014
 STORE/1/obj/007c2b2500000014
 STORE/2/obj/007c2b2500000014
+STORE/3/obj/007c2b2500000014
+STORE/4/obj/007c2b2500000014
 STORE/6/obj/007c2b2500000014
+STORE/0/obj/007c2b2500000015
+STORE/1/obj/007c2b2500000015
 STORE/2/obj/007c2b2500000015
+STORE/4/obj/007c2b2500000015
 STORE/6/obj/007c2b2500000015
 STORE/7/obj/007c2b2500000015
 STORE/0/obj/007c2b2500000016
+STORE/1/obj/007c2b2500000016
 STORE/3/obj/007c2b2500000016
 STORE/4/obj/007c2b2500000016
+STORE/6/obj/007c2b2500000016
+STORE/7/obj/007c2b2500000016
+STORE/1/obj/007c2b2500000017
+STORE/2/obj/007c2b2500000017
 STORE/3/obj/007c2b2500000017
+STORE/4/obj/007c2b2500000017
 STORE/5/obj/007c2b2500000017
 STORE/6/obj/007c2b2500000017
 STORE/1/obj/007c2b2500000018
+STORE/2/obj/007c2b2500000018
+STORE/4/obj/007c2b2500000018
 STORE/5/obj/007c2b2500000018
 STORE/6/obj/007c2b2500000018
+STORE/7/obj/007c2b2500000018
 
 
 
diff --git a/tests/functional/034 b/tests/functional/034
index 3b78db0..89929e9 100755
--- a/tests/functional/034
+++ b/tests/functional/034
@@ -9,29 +9,29 @@ if [[ "$DRIVER" == zoo* ]];then
 fi
 
 # start 8 nodes
-for i in `seq 0 7`; do
+for i in `seq 0 15`; do
     _start_sheep $i
 done
 
-_wait_for_sheep 8
+_wait_for_sheep 16
 
-_cluster_format
+_cluster_format -c 6
 
-$DOG vdi create test 100M
+_vdi_create test 100M
 # create 25 objects
 for i in `seq 0 24`; do
     echo $i | $DOG vdi write test $((i * 4 * 1024 * 1024)) 512
 done
 
 # kill 5 nodes
-nr=8
+nr=16
 for i in `seq 3 7`; do
     _wait_for_sheep $nr
     _wait_for_sheep_recovery 0
     _kill_sheep $i
     nr=$(($nr - 1))
 done
-_wait_for_sheep 3
+_wait_for_sheep 11
 
 # update vdi
 for i in `seq 0 24`; do
@@ -45,8 +45,8 @@ for i in `seq 3 7`; do
     _start_sheep $i
 done
 
-_wait_for_sheep 8
+_wait_for_sheep 16
 
-for i in `seq 0 7`; do
-    $DOG vdi read test -p 700$i | md5sum
+for i in `seq 0 15`; do
+    $DOG vdi read test -p $((7000+$i)) | md5sum
 done
diff --git a/tests/functional/034.out b/tests/functional/034.out
index 1e30cd2..37afcf4 100644
--- a/tests/functional/034.out
+++ b/tests/functional/034.out
@@ -9,3 +9,11 @@ b26a14b4868dff70944564c6cb446e28  -
 b26a14b4868dff70944564c6cb446e28  -
 b26a14b4868dff70944564c6cb446e28  -
 b26a14b4868dff70944564c6cb446e28  -
+b26a14b4868dff70944564c6cb446e28  -
+b26a14b4868dff70944564c6cb446e28  -
+b26a14b4868dff70944564c6cb446e28  -
+b26a14b4868dff70944564c6cb446e28  -
+b26a14b4868dff70944564c6cb446e28  -
+b26a14b4868dff70944564c6cb446e28  -
+b26a14b4868dff70944564c6cb446e28  -
+b26a14b4868dff70944564c6cb446e28  -
diff --git a/tests/functional/035 b/tests/functional/035
index c1559e0..ae14da8 100755
--- a/tests/functional/035
+++ b/tests/functional/035
@@ -14,18 +14,18 @@ _uninit()
 
 _need_to_be_root
 
-for i in `seq 0 5`; do
+for i in `seq 0 9`; do
 	_start_sheep $i
 done
 
-_wait_for_sheep 6
+_wait_for_sheep 10
 
-_cluster_format -c 3
+_cluster_format -c 6
 
-$DOG vdi create test 40M
+_vdi_create test 40M
 _random | $DOG vdi write test &
 
-sleep 3
+sleep 2
 # Test write timeout
 for i in `seq 1 4`; do
 	_simulate_machine_down $i
@@ -41,7 +41,7 @@ for i in `seq 0 9`; do
 	$DOG vdi object -i $i test
 done
 
-for i in 6 7 8; do
+for i in 10 11 12; do
 	_start_sheep $i
 done
 
diff --git a/tests/functional/035.out b/tests/functional/035.out
index 0ca0c37..e26d3a6 100644
--- a/tests/functional/035.out
+++ b/tests/functional/035.out
@@ -1,42 +1,82 @@
 QA output created by 035
 using backend plain store
-Looking for the object 0x7c2b2500000000 (the inode vid 0x7c2b25 idx 0) with 2 nodes
+Looking for the object 0x7c2b2500000000 (the inode vid 0x7c2b25 idx 0) with 6 nodes
 
-127.0.0.1:7000 has the object (should be 2 copies)
-127.0.0.1:7005 has the object (should be 2 copies)
-Looking for the object 0x7c2b2500000001 (the inode vid 0x7c2b25 idx 1) with 2 nodes
+127.0.0.1:7000 has the object (should be 6 copies)
+127.0.0.1:7005 has the object (should be 6 copies)
+127.0.0.1:7006 has the object (should be 6 copies)
+127.0.0.1:7007 has the object (should be 6 copies)
+127.0.0.1:7008 has the object (should be 6 copies)
+127.0.0.1:7009 has the object (should be 6 copies)
+Looking for the object 0x7c2b2500000001 (the inode vid 0x7c2b25 idx 1) with 6 nodes
 
-127.0.0.1:7000 has the object (should be 2 copies)
-127.0.0.1:7005 has the object (should be 2 copies)
-Looking for the object 0x7c2b2500000002 (the inode vid 0x7c2b25 idx 2) with 2 nodes
+127.0.0.1:7000 has the object (should be 6 copies)
+127.0.0.1:7005 has the object (should be 6 copies)
+127.0.0.1:7006 has the object (should be 6 copies)
+127.0.0.1:7007 has the object (should be 6 copies)
+127.0.0.1:7008 has the object (should be 6 copies)
+127.0.0.1:7009 has the object (should be 6 copies)
+Looking for the object 0x7c2b2500000002 (the inode vid 0x7c2b25 idx 2) with 6 nodes
 
-127.0.0.1:7000 has the object (should be 2 copies)
-127.0.0.1:7005 has the object (should be 2 copies)
-Looking for the object 0x7c2b2500000003 (the inode vid 0x7c2b25 idx 3) with 2 nodes
+127.0.0.1:7000 has the object (should be 6 copies)
+127.0.0.1:7005 has the object (should be 6 copies)
+127.0.0.1:7006 has the object (should be 6 copies)
+127.0.0.1:7007 has the object (should be 6 copies)
+127.0.0.1:7008 has the object (should be 6 copies)
+127.0.0.1:7009 has the object (should be 6 copies)
+Looking for the object 0x7c2b2500000003 (the inode vid 0x7c2b25 idx 3) with 6 nodes
 
-127.0.0.1:7000 has the object (should be 2 copies)
-127.0.0.1:7005 has the object (should be 2 copies)
-Looking for the object 0x7c2b2500000004 (the inode vid 0x7c2b25 idx 4) with 2 nodes
+127.0.0.1:7000 has the object (should be 6 copies)
+127.0.0.1:7005 has the object (should be 6 copies)
+127.0.0.1:7006 has the object (should be 6 copies)
+127.0.0.1:7007 has the object (should be 6 copies)
+127.0.0.1:7008 has the object (should be 6 copies)
+127.0.0.1:7009 has the object (should be 6 copies)
+Looking for the object 0x7c2b2500000004 (the inode vid 0x7c2b25 idx 4) with 6 nodes
 
-127.0.0.1:7000 has the object (should be 2 copies)
-127.0.0.1:7005 has the object (should be 2 copies)
-Looking for the object 0x7c2b2500000005 (the inode vid 0x7c2b25 idx 5) with 2 nodes
+127.0.0.1:7000 has the object (should be 6 copies)
+127.0.0.1:7005 has the object (should be 6 copies)
+127.0.0.1:7006 has the object (should be 6 copies)
+127.0.0.1:7007 has the object (should be 6 copies)
+127.0.0.1:7008 has the object (should be 6 copies)
+127.0.0.1:7009 has the object (should be 6 copies)
+Looking for the object 0x7c2b2500000005 (the inode vid 0x7c2b25 idx 5) with 6 nodes
 
-127.0.0.1:7000 has the object (should be 2 copies)
-127.0.0.1:7005 has the object (should be 2 copies)
-Looking for the object 0x7c2b2500000006 (the inode vid 0x7c2b25 idx 6) with 2 nodes
+127.0.0.1:7000 has the object (should be 6 copies)
+127.0.0.1:7005 has the object (should be 6 copies)
+127.0.0.1:7006 has the object (should be 6 copies)
+127.0.0.1:7007 has the object (should be 6 copies)
+127.0.0.1:7008 has the object (should be 6 copies)
+127.0.0.1:7009 has the object (should be 6 copies)
+Looking for the object 0x7c2b2500000006 (the inode vid 0x7c2b25 idx 6) with 6 nodes
 
-127.0.0.1:7000 has the object (should be 2 copies)
-127.0.0.1:7005 has the object (should be 2 copies)
-Looking for the object 0x7c2b2500000007 (the inode vid 0x7c2b25 idx 7) with 2 nodes
+127.0.0.1:7000 has the object (should be 6 copies)
+127.0.0.1:7005 has the object (should be 6 copies)
+127.0.0.1:7006 has the object (should be 6 copies)
+127.0.0.1:7007 has the object (should be 6 copies)
+127.0.0.1:7008 has the object (should be 6 copies)
+127.0.0.1:7009 has the object (should be 6 copies)
+Looking for the object 0x7c2b2500000007 (the inode vid 0x7c2b25 idx 7) with 6 nodes
 
-127.0.0.1:7000 has the object (should be 2 copies)
-127.0.0.1:7005 has the object (should be 2 copies)
-Looking for the object 0x7c2b2500000008 (the inode vid 0x7c2b25 idx 8) with 2 nodes
+127.0.0.1:7000 has the object (should be 6 copies)
+127.0.0.1:7005 has the object (should be 6 copies)
+127.0.0.1:7006 has the object (should be 6 copies)
+127.0.0.1:7007 has the object (should be 6 copies)
+127.0.0.1:7008 has the object (should be 6 copies)
+127.0.0.1:7009 has the object (should be 6 copies)
+Looking for the object 0x7c2b2500000008 (the inode vid 0x7c2b25 idx 8) with 6 nodes
 
-127.0.0.1:7000 has the object (should be 2 copies)
-127.0.0.1:7005 has the object (should be 2 copies)
-Looking for the object 0x7c2b2500000009 (the inode vid 0x7c2b25 idx 9) with 2 nodes
+127.0.0.1:7000 has the object (should be 6 copies)
+127.0.0.1:7005 has the object (should be 6 copies)
+127.0.0.1:7006 has the object (should be 6 copies)
+127.0.0.1:7007 has the object (should be 6 copies)
+127.0.0.1:7008 has the object (should be 6 copies)
+127.0.0.1:7009 has the object (should be 6 copies)
+Looking for the object 0x7c2b2500000009 (the inode vid 0x7c2b25 idx 9) with 6 nodes
 
-127.0.0.1:7000 has the object (should be 2 copies)
-127.0.0.1:7005 has the object (should be 2 copies)
+127.0.0.1:7000 has the object (should be 6 copies)
+127.0.0.1:7005 has the object (should be 6 copies)
+127.0.0.1:7006 has the object (should be 6 copies)
+127.0.0.1:7007 has the object (should be 6 copies)
+127.0.0.1:7008 has the object (should be 6 copies)
+127.0.0.1:7009 has the object (should be 6 copies)
diff --git a/tests/functional/043 b/tests/functional/043
index d336cf5..7de94d8 100755
--- a/tests/functional/043
+++ b/tests/functional/043
@@ -4,15 +4,15 @@
 
 . ./common
 
-for i in `seq 0 4`; do
+for i in `seq 0 9`; do
     _start_sheep $i
 done
 
-_wait_for_sheep 5
+_wait_for_sheep 10
 
-_cluster_format
+_cluster_format -c 6
 
-$DOG vdi create test 40M
+_vdi_create test 40M
 
 for i in `seq 0 10`; do
     echo $i | $DOG vdi write test $((i * 4 * 1024 * 1024)) 512
@@ -48,7 +48,7 @@ for i in 0 1 2 4; do
 done
 
 # check whether sheep 4 can receive notify event
-$DOG vdi create test2 20M
+_vdi_create test2 20M
 
 for i in 0 1 2 4; do
     _vdi_list -p 700$i
diff --git a/tests/functional/043.out b/tests/functional/043.out
index 9ce4dcd..fbfc21d 100644
--- a/tests/functional/043.out
+++ b/tests/functional/043.out
@@ -6,120 +6,120 @@ Cluster status: running, auto-recovery enabled
 Cluster created at DATE
 
 Epoch Time           Version
-DATE      1 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003, 127.0.0.1:7004]
+DATE      1 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003, 127.0.0.1:7004, 127.0.0.1:7005, 127.0.0.1:7006, 127.0.0.1:7007, 127.0.0.1:7008, 127.0.0.1:7009]
 e6fffdc037c9f623d1c03fda7ef9cabf  -
 Cluster status: running, auto-recovery enabled
 
 Cluster created at DATE
 
 Epoch Time           Version
-DATE      1 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003, 127.0.0.1:7004]
+DATE      1 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003, 127.0.0.1:7004, 127.0.0.1:7005, 127.0.0.1:7006, 127.0.0.1:7007, 127.0.0.1:7008, 127.0.0.1:7009]
 e6fffdc037c9f623d1c03fda7ef9cabf  -
 Cluster status: running, auto-recovery enabled
 
 Cluster created at DATE
 
 Epoch Time           Version
-DATE      1 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003, 127.0.0.1:7004]
+DATE      1 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003, 127.0.0.1:7004, 127.0.0.1:7005, 127.0.0.1:7006, 127.0.0.1:7007, 127.0.0.1:7008, 127.0.0.1:7009]
 e6fffdc037c9f623d1c03fda7ef9cabf  -
 Cluster status: running, auto-recovery enabled
 
 Cluster created at DATE
 
 Epoch Time           Version
-DATE      1 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003, 127.0.0.1:7004]
+DATE      1 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003, 127.0.0.1:7004, 127.0.0.1:7005, 127.0.0.1:7006, 127.0.0.1:7007, 127.0.0.1:7008, 127.0.0.1:7009]
 e6fffdc037c9f623d1c03fda7ef9cabf  -
 Cluster status: running, auto-recovery enabled
 
 Cluster created at DATE
 
 Epoch Time           Version
-DATE      1 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003, 127.0.0.1:7004]
+DATE      1 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003, 127.0.0.1:7004, 127.0.0.1:7005, 127.0.0.1:7006, 127.0.0.1:7007, 127.0.0.1:7008, 127.0.0.1:7009]
 c2f72711cc1e4781841aa416f0b43e0d  -
 Cluster status: running, auto-recovery enabled
 
 Cluster created at DATE
 
 Epoch Time           Version
-DATE      2 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003]
-DATE      1 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003, 127.0.0.1:7004]
+DATE      2 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003, 127.0.0.1:7005, 127.0.0.1:7006, 127.0.0.1:7007, 127.0.0.1:7008, 127.0.0.1:7009]
+DATE      1 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003, 127.0.0.1:7004, 127.0.0.1:7005, 127.0.0.1:7006, 127.0.0.1:7007, 127.0.0.1:7008, 127.0.0.1:7009]
 c2f72711cc1e4781841aa416f0b43e0d  -
 Cluster status: running, auto-recovery enabled
 
 Cluster created at DATE
 
 Epoch Time           Version
-DATE      2 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003]
-DATE      1 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003, 127.0.0.1:7004]
+DATE      2 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003, 127.0.0.1:7005, 127.0.0.1:7006, 127.0.0.1:7007, 127.0.0.1:7008, 127.0.0.1:7009]
+DATE      1 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003, 127.0.0.1:7004, 127.0.0.1:7005, 127.0.0.1:7006, 127.0.0.1:7007, 127.0.0.1:7008, 127.0.0.1:7009]
 c2f72711cc1e4781841aa416f0b43e0d  -
 Cluster status: running, auto-recovery enabled
 
 Cluster created at DATE
 
 Epoch Time           Version
-DATE      2 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003]
-DATE      1 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003, 127.0.0.1:7004]
+DATE      2 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003, 127.0.0.1:7005, 127.0.0.1:7006, 127.0.0.1:7007, 127.0.0.1:7008, 127.0.0.1:7009]
+DATE      1 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003, 127.0.0.1:7004, 127.0.0.1:7005, 127.0.0.1:7006, 127.0.0.1:7007, 127.0.0.1:7008, 127.0.0.1:7009]
 c2f72711cc1e4781841aa416f0b43e0d  -
 Cluster status: running, auto-recovery enabled
 
 Cluster created at DATE
 
 Epoch Time           Version
-DATE      2 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003]
-DATE      1 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003, 127.0.0.1:7004]
+DATE      2 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003, 127.0.0.1:7005, 127.0.0.1:7006, 127.0.0.1:7007, 127.0.0.1:7008, 127.0.0.1:7009]
+DATE      1 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003, 127.0.0.1:7004, 127.0.0.1:7005, 127.0.0.1:7006, 127.0.0.1:7007, 127.0.0.1:7008, 127.0.0.1:7009]
 c2f72711cc1e4781841aa416f0b43e0d  -
 Cluster status: running, auto-recovery enabled
 
 Cluster created at DATE
 
 Epoch Time           Version
-DATE      2 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003]
-DATE      1 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003, 127.0.0.1:7004]
+DATE      2 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003, 127.0.0.1:7005, 127.0.0.1:7006, 127.0.0.1:7007, 127.0.0.1:7008, 127.0.0.1:7009]
+DATE      1 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003, 127.0.0.1:7004, 127.0.0.1:7005, 127.0.0.1:7006, 127.0.0.1:7007, 127.0.0.1:7008, 127.0.0.1:7009]
 99970159bd855e83ced168eca46ae6c5  -
 Cluster status: running, auto-recovery enabled
 
 Cluster created at DATE
 
 Epoch Time           Version
-DATE      3 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002]
-DATE      2 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003]
-DATE      1 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003, 127.0.0.1:7004]
+DATE      3 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7005, 127.0.0.1:7006, 127.0.0.1:7007, 127.0.0.1:7008, 127.0.0.1:7009]
+DATE      2 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003, 127.0.0.1:7005, 127.0.0.1:7006, 127.0.0.1:7007, 127.0.0.1:7008, 127.0.0.1:7009]
+DATE      1 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003, 127.0.0.1:7004, 127.0.0.1:7005, 127.0.0.1:7006, 127.0.0.1:7007, 127.0.0.1:7008, 127.0.0.1:7009]
 99970159bd855e83ced168eca46ae6c5  -
 Cluster status: running, auto-recovery enabled
 
 Cluster created at DATE
 
 Epoch Time           Version
-DATE      3 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002]
-DATE      2 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003]
-DATE      1 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003, 127.0.0.1:7004]
+DATE      3 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7005, 127.0.0.1:7006, 127.0.0.1:7007, 127.0.0.1:7008, 127.0.0.1:7009]
+DATE      2 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003, 127.0.0.1:7005, 127.0.0.1:7006, 127.0.0.1:7007, 127.0.0.1:7008, 127.0.0.1:7009]
+DATE      1 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003, 127.0.0.1:7004, 127.0.0.1:7005, 127.0.0.1:7006, 127.0.0.1:7007, 127.0.0.1:7008, 127.0.0.1:7009]
 99970159bd855e83ced168eca46ae6c5  -
 Cluster status: running, auto-recovery enabled
 
 Cluster created at DATE
 
 Epoch Time           Version
-DATE      3 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002]
-DATE      2 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003]
-DATE      1 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003, 127.0.0.1:7004]
+DATE      3 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7005, 127.0.0.1:7006, 127.0.0.1:7007, 127.0.0.1:7008, 127.0.0.1:7009]
+DATE      2 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003, 127.0.0.1:7005, 127.0.0.1:7006, 127.0.0.1:7007, 127.0.0.1:7008, 127.0.0.1:7009]
+DATE      1 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003, 127.0.0.1:7004, 127.0.0.1:7005, 127.0.0.1:7006, 127.0.0.1:7007, 127.0.0.1:7008, 127.0.0.1:7009]
 99970159bd855e83ced168eca46ae6c5  -
 Cluster status: running, auto-recovery enabled
 
 Cluster created at DATE
 
 Epoch Time           Version
-DATE      3 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002]
-DATE      2 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003]
-DATE      1 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003, 127.0.0.1:7004]
+DATE      3 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7005, 127.0.0.1:7006, 127.0.0.1:7007, 127.0.0.1:7008, 127.0.0.1:7009]
+DATE      2 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003, 127.0.0.1:7005, 127.0.0.1:7006, 127.0.0.1:7007, 127.0.0.1:7008, 127.0.0.1:7009]
+DATE      1 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003, 127.0.0.1:7004, 127.0.0.1:7005, 127.0.0.1:7006, 127.0.0.1:7007, 127.0.0.1:7008, 127.0.0.1:7009]
   Name        Id    Size    Used  Shared    Creation time   VDI id  Copies  Tag
-  test         0   40 MB   40 MB  0.0 MB DATE   7c2b25     3              
-  test2        0   20 MB  0.0 MB  0.0 MB DATE   fd3815     3              
+  test         0   40 MB   40 MB  0.0 MB DATE   7c2b25     6              
+  test2        0   20 MB  0.0 MB  0.0 MB DATE   fd3815     6              
   Name        Id    Size    Used  Shared    Creation time   VDI id  Copies  Tag
-  test         0   40 MB   40 MB  0.0 MB DATE   7c2b25     3              
-  test2        0   20 MB  0.0 MB  0.0 MB DATE   fd3815     3              
+  test         0   40 MB   40 MB  0.0 MB DATE   7c2b25     6              
+  test2        0   20 MB  0.0 MB  0.0 MB DATE   fd3815     6              
   Name        Id    Size    Used  Shared    Creation time   VDI id  Copies  Tag
-  test         0   40 MB   40 MB  0.0 MB DATE   7c2b25     3              
-  test2        0   20 MB  0.0 MB  0.0 MB DATE   fd3815     3              
+  test         0   40 MB   40 MB  0.0 MB DATE   7c2b25     6              
+  test2        0   20 MB  0.0 MB  0.0 MB DATE   fd3815     6              
   Name        Id    Size    Used  Shared    Creation time   VDI id  Copies  Tag
-  test         0   40 MB   40 MB  0.0 MB DATE   7c2b25     3              
-  test2        0   20 MB  0.0 MB  0.0 MB DATE   fd3815     3              
+  test         0   40 MB   40 MB  0.0 MB DATE   7c2b25     6              
+  test2        0   20 MB  0.0 MB  0.0 MB DATE   fd3815     6              
diff --git a/tests/functional/045 b/tests/functional/045
index 530af28..2c8c8d9 100755
--- a/tests/functional/045
+++ b/tests/functional/045
@@ -4,14 +4,14 @@
 
 . ./common
 
-for i in 0 1 2; do
+for i in `seq 0 5`; do
     _start_sheep $i
 done
 
-_wait_for_sheep 3
+_wait_for_sheep 6
 
-_cluster_format -c 2
-$DOG vdi create test 4M
+_cluster_format -c 6
+_vdi_create test 4M
 
 for i in `seq 0 7`; do
     echo $i | $DOG vdi write test $(($i * 1536 + 512)) 512
diff --git a/tests/functional/050 b/tests/functional/050
index f7ddd8e..ab28f1f 100755
--- a/tests/functional/050
+++ b/tests/functional/050
@@ -14,13 +14,13 @@ _uninit()
 
 _need_to_be_root
 
-for i in `seq 0 2`; do
+for i in `seq 0 5`; do
 	_start_sheep $i "-i host=127.0.0.1,port=$((8000+$i))"
 done
 
-_wait_for_sheep 3
+_wait_for_sheep 6
 
-_cluster_format
+_cluster_format -c 6
 
 $DOG vdi create test 100M
 dd if=/dev/zero | $DOG vdi write test &
diff --git a/tests/functional/054 b/tests/functional/054
index 3b28bae..df0cdf4 100755
--- a/tests/functional/054
+++ b/tests/functional/054
@@ -9,21 +9,24 @@ _make_device 0 $((1024 ** 3))
 _make_device 1 $((2 * 1024 ** 3))
 _make_device 2 $((3 * 1024 ** 3))
 _make_device 3 $((3 * 1024 ** 3))
+_make_device 4 $((4 * 1024 ** 3))
+_make_device 5 $((5 * 1024 ** 3))
+_make_device 6 $((6 * 1024 ** 3))
 
 #start three in different size
-for i in 0 1 2; do
+for i in `seq 0 5`; do
 	_start_sheep $i
 done
-_wait_for_sheep 3
-_cluster_format
+_wait_for_sheep 6
+_cluster_format -c 6
 
-$DOG vdi create test 100M -P
+_vdi_create test 100M -P
 $DOG cluster info | _filter_cluster_info
 
 #start recovery
-_start_sheep 3
+_start_sheep 6
 
-_wait_for_sheep 4
+_wait_for_sheep 7
 _wait_for_sheep_recovery 0
 $DOG cluster info | _filter_cluster_info
 
diff --git a/tests/functional/054.out b/tests/functional/054.out
index e665a2d..43b41d6 100644
--- a/tests/functional/054.out
+++ b/tests/functional/054.out
@@ -5,12 +5,12 @@ Cluster status: running, auto-recovery enabled
 Cluster created at DATE
 
 Epoch Time           Version
-DATE      1 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002]
+DATE      1 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003, 127.0.0.1:7004, 127.0.0.1:7005]
 Cluster status: running, auto-recovery enabled
 
 Cluster created at DATE
 
 Epoch Time           Version
-DATE      2 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003]
-DATE      1 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002]
+DATE      2 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003, 127.0.0.1:7004, 127.0.0.1:7005, 127.0.0.1:7006]
+DATE      1 [127.0.0.1:7000, 127.0.0.1:7001, 127.0.0.1:7002, 127.0.0.1:7003, 127.0.0.1:7004, 127.0.0.1:7005]
 0
diff --git a/tests/functional/060 b/tests/functional/060
index 3dfc15f..fe9eab9 100755
--- a/tests/functional/060
+++ b/tests/functional/060
@@ -9,10 +9,10 @@ done
 
 _wait_for_sheep 8
 
-_cluster_format
+_cluster_format -c 6
 
 for i in `seq 0 3`; do
-    $DOG vdi create test$i 100M
+    _vdi_create test$i 100M
 
     for j in `seq 0 24`; do
 	echo "$i $j" | $DOG vdi write test$i $(($j * 4 * 1024 ** 2)) 512
diff --git a/tests/functional/060.out b/tests/functional/060.out
index 1bdd541..de66487 100644
--- a/tests/functional/060.out
+++ b/tests/functional/060.out
@@ -5,73 +5,73 @@ fee603199c05d11ae60851eb95bbc5fb  -
 10040f8a44618b0764c5a73a12f58772  -
 7357bb73af7ab89d0083925863810ee3  -
   Name        Id    Size    Used  Shared    Creation time   VDI id  Copies  Tag
-  test1        0  100 MB  100 MB  0.0 MB DATE   fd32fc     3              
-  test0        0  100 MB  100 MB  0.0 MB DATE   fd34af     3              
-  test3        0  100 MB  100 MB  0.0 MB DATE   fd3662     3              
-  test2        0  100 MB  100 MB  0.0 MB DATE   fd3815     3              
+  test1        0  100 MB  100 MB  0.0 MB DATE   fd32fc     6              
+  test0        0  100 MB  100 MB  0.0 MB DATE   fd34af     6              
+  test3        0  100 MB  100 MB  0.0 MB DATE   fd3662     6              
+  test2        0  100 MB  100 MB  0.0 MB DATE   fd3815     6              
 fb3833490ceb868a81ab0ba8bda8fdda  -
 fee603199c05d11ae60851eb95bbc5fb  -
 10040f8a44618b0764c5a73a12f58772  -
 7357bb73af7ab89d0083925863810ee3  -
   Name        Id    Size    Used  Shared    Creation time   VDI id  Copies  Tag
-  test1        0  100 MB  100 MB  0.0 MB DATE   fd32fc     3              
-  test0        0  100 MB  100 MB  0.0 MB DATE   fd34af     3              
-  test3        0  100 MB  100 MB  0.0 MB DATE   fd3662     3              
-  test2        0  100 MB  100 MB  0.0 MB DATE   fd3815     3              
+  test1        0  100 MB  100 MB  0.0 MB DATE   fd32fc     6              
+  test0        0  100 MB  100 MB  0.0 MB DATE   fd34af     6              
+  test3        0  100 MB  100 MB  0.0 MB DATE   fd3662     6              
+  test2        0  100 MB  100 MB  0.0 MB DATE   fd3815     6              
 fb3833490ceb868a81ab0ba8bda8fdda  -
 fee603199c05d11ae60851eb95bbc5fb  -
 10040f8a44618b0764c5a73a12f58772  -
 7357bb73af7ab89d0083925863810ee3  -
   Name        Id    Size    Used  Shared    Creation time   VDI id  Copies  Tag
-  test1        0  100 MB  100 MB  0.0 MB DATE   fd32fc     3              
-  test0        0  100 MB  100 MB  0.0 MB DATE   fd34af     3              
-  test3        0  100 MB  100 MB  0.0 MB DATE   fd3662     3              
-  test2        0  100 MB  100 MB  0.0 MB DATE   fd3815     3              
+  test1        0  100 MB  100 MB  0.0 MB DATE   fd32fc     6              
+  test0        0  100 MB  100 MB  0.0 MB DATE   fd34af     6              
+  test3        0  100 MB  100 MB  0.0 MB DATE   fd3662     6              
+  test2        0  100 MB  100 MB  0.0 MB DATE   fd3815     6              
 fb3833490ceb868a81ab0ba8bda8fdda  -
 fee603199c05d11ae60851eb95bbc5fb  -
 10040f8a44618b0764c5a73a12f58772  -
 7357bb73af7ab89d0083925863810ee3  -
   Name        Id    Size    Used  Shared    Creation time   VDI id  Copies  Tag
-  test1        0  100 MB  100 MB  0.0 MB DATE   fd32fc     3              
-  test0        0  100 MB  100 MB  0.0 MB DATE   fd34af     3              
-  test3        0  100 MB  100 MB  0.0 MB DATE   fd3662     3              
-  test2        0  100 MB  100 MB  0.0 MB DATE   fd3815     3              
+  test1        0  100 MB  100 MB  0.0 MB DATE   fd32fc     6              
+  test0        0  100 MB  100 MB  0.0 MB DATE   fd34af     6              
+  test3        0  100 MB  100 MB  0.0 MB DATE   fd3662     6              
+  test2        0  100 MB  100 MB  0.0 MB DATE   fd3815     6              
 fb3833490ceb868a81ab0ba8bda8fdda  -
 fee603199c05d11ae60851eb95bbc5fb  -
 10040f8a44618b0764c5a73a12f58772  -
 7357bb73af7ab89d0083925863810ee3  -
   Name        Id    Size    Used  Shared    Creation time   VDI id  Copies  Tag
-  test1        0  100 MB  100 MB  0.0 MB DATE   fd32fc     3              
-  test0        0  100 MB  100 MB  0.0 MB DATE   fd34af     3              
-  test3        0  100 MB  100 MB  0.0 MB DATE   fd3662     3              
-  test2        0  100 MB  100 MB  0.0 MB DATE   fd3815     3              
+  test1        0  100 MB  100 MB  0.0 MB DATE   fd32fc     6              
+  test0        0  100 MB  100 MB  0.0 MB DATE   fd34af     6              
+  test3        0  100 MB  100 MB  0.0 MB DATE   fd3662     6              
+  test2        0  100 MB  100 MB  0.0 MB DATE   fd3815     6              
 fb3833490ceb868a81ab0ba8bda8fdda  -
 fee603199c05d11ae60851eb95bbc5fb  -
 10040f8a44618b0764c5a73a12f58772  -
 7357bb73af7ab89d0083925863810ee3  -
   Name        Id    Size    Used  Shared    Creation time   VDI id  Copies  Tag
-  test1        0  100 MB  100 MB  0.0 MB DATE   fd32fc     3              
-  test0        0  100 MB  100 MB  0.0 MB DATE   fd34af     3              
-  test3        0  100 MB  100 MB  0.0 MB DATE   fd3662     3              
-  test2        0  100 MB  100 MB  0.0 MB DATE   fd3815     3              
+  test1        0  100 MB  100 MB  0.0 MB DATE   fd32fc     6              
+  test0        0  100 MB  100 MB  0.0 MB DATE   fd34af     6              
+  test3        0  100 MB  100 MB  0.0 MB DATE   fd3662     6              
+  test2        0  100 MB  100 MB  0.0 MB DATE   fd3815     6              
 fb3833490ceb868a81ab0ba8bda8fdda  -
 fee603199c05d11ae60851eb95bbc5fb  -
 10040f8a44618b0764c5a73a12f58772  -
 7357bb73af7ab89d0083925863810ee3  -
   Name        Id    Size    Used  Shared    Creation time   VDI id  Copies  Tag
-  test1        0  100 MB  100 MB  0.0 MB DATE   fd32fc     3              
-  test0        0  100 MB  100 MB  0.0 MB DATE   fd34af     3              
-  test3        0  100 MB  100 MB  0.0 MB DATE   fd3662     3              
-  test2        0  100 MB  100 MB  0.0 MB DATE   fd3815     3              
+  test1        0  100 MB  100 MB  0.0 MB DATE   fd32fc     6              
+  test0        0  100 MB  100 MB  0.0 MB DATE   fd34af     6              
+  test3        0  100 MB  100 MB  0.0 MB DATE   fd3662     6              
+  test2        0  100 MB  100 MB  0.0 MB DATE   fd3815     6              
 fb3833490ceb868a81ab0ba8bda8fdda  -
 fee603199c05d11ae60851eb95bbc5fb  -
 10040f8a44618b0764c5a73a12f58772  -
 7357bb73af7ab89d0083925863810ee3  -
   Name        Id    Size    Used  Shared    Creation time   VDI id  Copies  Tag
-  test1        0  100 MB  100 MB  0.0 MB DATE   fd32fc     3              
-  test0        0  100 MB  100 MB  0.0 MB DATE   fd34af     3              
-  test3        0  100 MB  100 MB  0.0 MB DATE   fd3662     3              
-  test2        0  100 MB  100 MB  0.0 MB DATE   fd3815     3              
+  test1        0  100 MB  100 MB  0.0 MB DATE   fd32fc     6              
+  test0        0  100 MB  100 MB  0.0 MB DATE   fd34af     6              
+  test3        0  100 MB  100 MB  0.0 MB DATE   fd3662     6              
+  test2        0  100 MB  100 MB  0.0 MB DATE   fd3815     6              
 fb3833490ceb868a81ab0ba8bda8fdda  -
 fee603199c05d11ae60851eb95bbc5fb  -
 10040f8a44618b0764c5a73a12f58772  -
diff --git a/tests/functional/062 b/tests/functional/062
index 5133287..61899cc 100755
--- a/tests/functional/062
+++ b/tests/functional/062
@@ -4,15 +4,15 @@
 
 . ./common
 
-for i in `seq 0 2`; do
+for i in `seq 0 5`; do
     _start_sheep $i
 done
 
-_wait_for_sheep 3
+_wait_for_sheep 6
 
-_cluster_format
+_cluster_format -c 6
 
-$DOG vdi create test 1234
+_vdi_create test 4095
 sleep 1
 $DOG vdi list -r test | awk '{$7="MASKED";print $0}'
 
@@ -30,3 +30,7 @@ echo xxx | $DOG vdi write test 1020 4
 $DOG vdi read test 1020 4
 $DOG vdi read test 510 5
 $DOG vdi read test 1 6
+
+echo erasure code | $DOG vdi write test 1020 13
+echo xxxxxx | $DOG vdi write test  1022 6
+$DOG vdi read test 1020 13
diff --git a/tests/functional/062.out b/tests/functional/062.out
index 104c0a7..07aff8a 100644
--- a/tests/functional/062.out
+++ b/tests/functional/062.out
@@ -1,6 +1,6 @@
 QA output created by 062
 using backend plain store
-= test 0 1234 0 0 MASKED 7c2b25 3
+= test 0 4095 0 0 MASKED 7c2b25 6
 hello
 world
 h!!!
@@ -8,3 +8,4 @@ h^^!
 xxx
 h^^!
 world
+erxxxxxxcode
diff --git a/tests/functional/071 b/tests/functional/071
index de935a4..83c609d 100755
--- a/tests/functional/071
+++ b/tests/functional/071
@@ -4,15 +4,15 @@
 
 . ./common
 
-for i in 0 1 2; do
+for i in `seq 0 5`; do
     _start_sheep $i
 done
 
-_wait_for_sheep 3
+_wait_for_sheep 6
 
-_cluster_format
+_cluster_format -c 6
 
-$DOG vdi create test 4M
+_vdi_create test 4M
 
 # Create a 28 KB file.  The first 12 KB (3 blocks) is filled with zero,
 # next 4 KB is filled with one, and the rest is filled with zero.
diff --git a/tests/functional/check b/tests/functional/check
index a609c35..c8678f3 100755
--- a/tests/functional/check
+++ b/tests/functional/check
@@ -176,6 +176,10 @@ testlist options
 	    MD=true
 	    xpand=false
 	    ;;
+	-ec)
+	    EC=true
+	    xpand=false
+	    ;;
 
 	-valgrind)
 	    valgrind=true
diff --git a/tests/functional/common.config b/tests/functional/common.config
index 3a2230c..112f932 100644
--- a/tests/functional/common.config
+++ b/tests/functional/common.config
@@ -82,6 +82,7 @@ export DOG_PROG=${DOG_PROG:-../../dog/dog}
 export DOG=${DOG:-$DOG_PROG}
 export VALGRIND_OPTIONS=${VALGRIND_OPTIONS:-"-q"}
 export MD=${MD:-false}
+export EC=${EC:-false}
 export QEMU_IO=${QEMU_IO_PROG:-qemu-io}
 export QEMU_IMG=${QEMU_IMG_PROG:-qemu-img}
 export SHEEPFS=${SHEEPFS:-../../sheepfs/sheepfs}
diff --git a/tests/functional/common.rc b/tests/functional/common.rc
index f9f4ef7..24c1d99 100644
--- a/tests/functional/common.rc
+++ b/tests/functional/common.rc
@@ -510,5 +510,14 @@ _vdi_list()
 	$DOG vdi list $args | _filter_short_date
 }
 
+_vdi_create()
+{
+	if $EC; then
+		$DOG vdi create -e $*
+	else
+		$DOG vdi create $*
+	fi
+}
+
 # make sure this script returns success
 /bin/true
-- 
1.7.9.5




More information about the sheepdog mailing list