]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
qa/suites/rbd: add snapshot-based mirroring stress test
authorJason Dillaman <dillaman@redhat.com>
Tue, 2 Feb 2021 20:28:48 +0000 (15:28 -0500)
committerJason Dillaman <dillaman@redhat.com>
Fri, 19 Feb 2021 15:39:06 +0000 (10:39 -0500)
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
(cherry picked from commit 094bfeaf8efe1c4794a2b301314eddedfa5246f9)

qa/suites/rbd/mirror-thrash/workloads/rbd-mirror-journal-stress-workunit.yaml [new file with mode: 0644]
qa/suites/rbd/mirror-thrash/workloads/rbd-mirror-snapshot-stress-workunit-exclusive-lock.yaml [new file with mode: 0644]
qa/suites/rbd/mirror-thrash/workloads/rbd-mirror-snapshot-stress-workunit-fast-diff.yaml [new file with mode: 0644]
qa/suites/rbd/mirror-thrash/workloads/rbd-mirror-snapshot-stress-workunit-minimum.yaml [new file with mode: 0644]
qa/suites/rbd/mirror-thrash/workloads/rbd-mirror-stress-workunit.yaml [deleted file]
qa/workunits/rbd/rbd_mirror_helpers.sh
qa/workunits/rbd/rbd_mirror_stress.sh

diff --git a/qa/suites/rbd/mirror-thrash/workloads/rbd-mirror-journal-stress-workunit.yaml b/qa/suites/rbd/mirror-thrash/workloads/rbd-mirror-journal-stress-workunit.yaml
new file mode 100644 (file)
index 0000000..9579b70
--- /dev/null
@@ -0,0 +1,15 @@
+meta:
+- desc: run the rbd_mirror_stress.sh workunit to test the rbd-mirror daemon
+tasks:
+- workunit:
+    clients:
+      cluster1.client.mirror: [rbd/rbd_mirror_stress.sh]
+    env:
+      # override workunit setting of CEPH_ARGS='--cluster'
+      CEPH_ARGS: ''
+      RBD_MIRROR_INSTANCES: '4'
+      RBD_MIRROR_USE_EXISTING_CLUSTER: '1'
+      RBD_MIRROR_USE_RBD_MIRROR: '1'
+      MIRROR_POOL_MODE: 'pool'
+      MIRROR_IMAGE_MODE: 'journal'
+    timeout: 6h
diff --git a/qa/suites/rbd/mirror-thrash/workloads/rbd-mirror-snapshot-stress-workunit-exclusive-lock.yaml b/qa/suites/rbd/mirror-thrash/workloads/rbd-mirror-snapshot-stress-workunit-exclusive-lock.yaml
new file mode 100644 (file)
index 0000000..8763248
--- /dev/null
@@ -0,0 +1,16 @@
+meta:
+- desc: run the rbd_mirror_stress.sh workunit to test the rbd-mirror daemon
+tasks:
+- workunit:
+    clients:
+      cluster1.client.mirror: [rbd/rbd_mirror_stress.sh]
+    env:
+      # override workunit setting of CEPH_ARGS='--cluster'
+      CEPH_ARGS: ''
+      MIRROR_POOL_MODE: 'image'
+      MIRROR_IMAGE_MODE: 'snapshot'
+      RBD_IMAGE_FEATURES: 'layering,exclusive-lock'
+      RBD_MIRROR_INSTANCES: '4'
+      RBD_MIRROR_USE_EXISTING_CLUSTER: '1'
+      RBD_MIRROR_USE_RBD_MIRROR: '1'
+    timeout: 6h
diff --git a/qa/suites/rbd/mirror-thrash/workloads/rbd-mirror-snapshot-stress-workunit-fast-diff.yaml b/qa/suites/rbd/mirror-thrash/workloads/rbd-mirror-snapshot-stress-workunit-fast-diff.yaml
new file mode 100644 (file)
index 0000000..fc43b0e
--- /dev/null
@@ -0,0 +1,16 @@
+meta:
+- desc: run the rbd_mirror_stress.sh workunit to test the rbd-mirror daemon
+tasks:
+- workunit:
+    clients:
+      cluster1.client.mirror: [rbd/rbd_mirror_stress.sh]
+    env:
+      # override workunit setting of CEPH_ARGS='--cluster'
+      CEPH_ARGS: ''
+      MIRROR_POOL_MODE: 'image'
+      MIRROR_IMAGE_MODE: 'snapshot'
+      RBD_IMAGE_FEATURES: 'layering,exclusive-lock,object-map,fast-diff'
+      RBD_MIRROR_INSTANCES: '4'
+      RBD_MIRROR_USE_EXISTING_CLUSTER: '1'
+      RBD_MIRROR_USE_RBD_MIRROR: '1'
+    timeout: 6h
diff --git a/qa/suites/rbd/mirror-thrash/workloads/rbd-mirror-snapshot-stress-workunit-minimum.yaml b/qa/suites/rbd/mirror-thrash/workloads/rbd-mirror-snapshot-stress-workunit-minimum.yaml
new file mode 100644 (file)
index 0000000..af0ea12
--- /dev/null
@@ -0,0 +1,16 @@
+meta:
+- desc: run the rbd_mirror_stress.sh workunit to test the rbd-mirror daemon
+tasks:
+- workunit:
+    clients:
+      cluster1.client.mirror: [rbd/rbd_mirror_stress.sh]
+    env:
+      # override workunit setting of CEPH_ARGS='--cluster'
+      CEPH_ARGS: ''
+      MIRROR_POOL_MODE: 'image'
+      MIRROR_IMAGE_MODE: 'snapshot'
+      RBD_IMAGE_FEATURES: 'layering'
+      RBD_MIRROR_INSTANCES: '4'
+      RBD_MIRROR_USE_EXISTING_CLUSTER: '1'
+      RBD_MIRROR_USE_RBD_MIRROR: '1'
+    timeout: 6h
diff --git a/qa/suites/rbd/mirror-thrash/workloads/rbd-mirror-stress-workunit.yaml b/qa/suites/rbd/mirror-thrash/workloads/rbd-mirror-stress-workunit.yaml
deleted file mode 100644 (file)
index 62bda88..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-meta:
-- desc: run the rbd_mirror_stress.sh workunit to test the rbd-mirror daemon
-tasks:
-- workunit:
-    clients:
-      cluster1.client.mirror: [rbd/rbd_mirror_stress.sh]
-    env:
-      # override workunit setting of CEPH_ARGS='--cluster'
-      CEPH_ARGS: ''
-      RBD_MIRROR_INSTANCES: '4'
-      RBD_MIRROR_USE_EXISTING_CLUSTER: '1'
-      RBD_MIRROR_USE_RBD_MIRROR: '1'
-    timeout: 6h
index 5a214689d244447fba9d4721cb38c6abab752dc4..3e26f977cd83ab4c78c1b53efab8f05066a939ed 100755 (executable)
@@ -542,6 +542,9 @@ status()
                     echo "image ${image} journal status"
                     rbd --cluster ${cluster} -p ${image_pool} --namespace "${image_ns}" journal status --image ${image}
                     echo
+                    echo "image ${image} snapshots"
+                    rbd --cluster ${cluster} -p ${image_pool} --namespace "${image_ns}" snap ls --all ${image}
+                    echo
                 done
 
                 echo "${cluster} ${image_pool} ${image_ns} rbd_mirroring omap vals"
@@ -902,7 +905,9 @@ create_image_and_enable_mirror()
     fi
 
     create_image ${cluster} ${pool} ${image} $@
-    enable_mirror ${cluster} ${pool} ${image} ${mode}
+    if [ "${MIRROR_POOL_MODE}" = "image" ] || [ "$pool" = "${PARENT_POOL}" ]; then
+        enable_mirror ${cluster} ${pool} ${image} ${mode}
+    fi
 }
 
 enable_journaling()
index cb4f66b256c4f44a8e688add332c13f8570c9e8e..5125d0ed6e7dd5bac43a0a6564f1b139bd30ab8a 100755 (executable)
@@ -90,9 +90,10 @@ start_mirrors ${CLUSTER2}
 
 testlog "TEST: add image and test replay after client crashes"
 image=test
-create_image ${CLUSTER2} ${POOL} ${image} '512M'
+create_image_and_enable_mirror ${CLUSTER2} ${POOL} ${image} ${MIRROR_IMAGE_MODE} '512M'
 wait_for_image_replay_started ${CLUSTER1} ${POOL} ${image}
 
+clean_snap_name=
 for i in `seq 1 10`
 do
   stress_write_image ${CLUSTER2} ${POOL} ${image}
@@ -104,12 +105,35 @@ do
   wait_for_image_replay_started ${CLUSTER1} ${POOL} ${image}
   wait_for_replay_complete ${CLUSTER1} ${CLUSTER2} ${POOL} ${image}
   wait_for_snap_present ${CLUSTER1} ${POOL} ${image} ${snap_name}
+
+  if [ -n "${clean_snap_name}" ]; then
+      compare_image_snaps ${POOL} ${image} ${clean_snap_name}
+  fi
   compare_image_snaps ${POOL} ${image} ${snap_name}
+
+  clean_snap_name="snap${i}-clean"
+  create_snap ${CLUSTER2} ${POOL} ${image} ${clean_snap_name}
 done
 
+wait_for_image_replay_started ${CLUSTER1} ${POOL} ${image}
+wait_for_replay_complete ${CLUSTER1} ${CLUSTER2} ${POOL} ${image}
+wait_for_snap_present ${CLUSTER1} ${POOL} ${image} ${clean_snap_name}
+
 for i in `seq 1 10`
 do
   snap_name="snap${i}"
+  compare_image_snaps ${POOL} ${image} ${snap_name}
+
+  snap_name="snap${i}-clean"
+  compare_image_snaps ${POOL} ${image} ${snap_name}
+done
+
+for i in `seq 1 10`
+do
+  snap_name="snap${i}"
+  remove_snapshot ${CLUSTER2} ${POOL} ${image} ${snap_name}
+
+  snap_name="snap${i}-clean"
   remove_snapshot ${CLUSTER2} ${POOL} ${image} ${snap_name}
 done
 
@@ -121,7 +145,7 @@ snap_name="snap"
 for i in `seq 1 ${IMAGE_COUNT}`
 do
   image="image_${i}"
-  create_image ${CLUSTER2} ${POOL} ${image} '128M'
+  create_image_and_enable_mirror ${CLUSTER2} ${POOL} ${image} ${MIRROR_IMAGE_MODE} '128M'
   if [ -n "${RBD_MIRROR_REDUCE_WRITES}" ]; then
     write_image ${CLUSTER2} ${POOL} ${image} 100
   else