summaryrefslogtreecommitdiffstats
path: root/src/test/test_split.sh
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/test_split.sh')
-rwxr-xr-xsrc/test/test_split.sh68
1 files changed, 68 insertions, 0 deletions
diff --git a/src/test/test_split.sh b/src/test/test_split.sh
new file mode 100755
index 000000000..d86a08af2
--- /dev/null
+++ b/src/test/test_split.sh
@@ -0,0 +1,68 @@
+#!/usr/bin/env bash
+set -x
+
+#
+# Add some objects to the data PGs, and then test splitting those PGs
+#
+
+# Includes
+source "`dirname $0`/test_common.sh"
+
+TEST_POOL=rbd
+
+# Constants
+my_write_objects() {
+ write_objects $1 $2 10 1000000 $TEST_POOL
+}
+
+setup() {
+ export CEPH_NUM_OSD=$1
+
+ # Start ceph
+ ./stop.sh
+
+ ./vstart.sh -d -n
+}
+
+get_pgp_num() {
+ ./ceph -c ./ceph.conf osd pool get $TEST_POOL pgp_num > $TEMPDIR/pgp_num
+ [ $? -eq 0 ] || die "failed to get pgp_num"
+ PGP_NUM=`grep PGP_NUM $TEMPDIR/pgp_num | sed 's/.*PGP_NUM:\([ 0123456789]*\).*$/\1/'`
+}
+
+split1_impl() {
+ # Write lots and lots of objects
+ my_write_objects 1 2
+
+ get_pgp_num
+ echo "\$PGP_NUM=$PGP_NUM"
+
+ # Double the number of PGs
+ PGP_NUM=$((PGP_NUM*2))
+ echo "doubling PGP_NUM to $PGP_NUM..."
+ ./ceph -c ./ceph.conf osd pool set $TEST_POOL pgp_num $PGP_NUM
+
+ sleep 30
+
+ # success
+ return 0
+}
+
+split1() {
+ setup 2
+ split1_impl
+}
+
+many_pools() {
+ setup 3
+ for i in `seq 1 3000`; do
+ ./ceph -c ./ceph.conf osd pool create "pool${i}" 8 || die "pool create failed"
+ done
+ my_write_objects 1 10
+}
+
+run() {
+ split1 || die "test failed"
+}
+
+$@