]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
test_rbd: add tests for snap_set and more complicated resizing
authorJosh Durgin <josh.durgin@dreamhost.com>
Tue, 24 Apr 2012 15:35:43 +0000 (08:35 -0700)
committerJosh Durgin <josh.durgin@dreamhost.com>
Tue, 24 Apr 2012 15:57:31 +0000 (08:57 -0700)
* snap_set to a deleted (and recreated) snapshot
* resizing down (truncating) and back up
* resizing to non-object-aligned sizes

Signed-off-by: Josh Durgin <josh.durgin@dreamhost.com>
src/test/pybind/test_rbd.py

index eb8d6f5a3b226a6c2a35c9b1ed1a12e91a31a3eb..7edf8e97a26e3bc42f327f0ddfe4e19e380acd37 100644 (file)
@@ -4,8 +4,8 @@ import struct
 from nose import with_setup
 from nose.tools import eq_ as eq, assert_raises
 from rados import Rados
-from rbd import RBD, Image, ImageNotFound, InvalidArgument, ImageExists, \
-    ImageBusy
+from rbd import (RBD, Image, ImageNotFound, InvalidArgument, ImageExists,
+                 ImageBusy)
 
 
 rados = None
@@ -130,6 +130,26 @@ class TestImage(object):
         info = self.image.stat()
         check_stat(info, new_size, IMG_ORDER)
 
+    def test_resize_down(self):
+        new_size = IMG_SIZE / 2
+        data = rand_data(256)
+        self.image.write(data, IMG_SIZE / 2);
+        self.image.resize(new_size)
+        self.image.resize(IMG_SIZE)
+        read = self.image.read(IMG_SIZE / 2, 256)
+        eq('\0' * 256, read)
+
+    def test_resize_bytes(self):
+        new_size = IMG_SIZE / 2 - 5
+        data = rand_data(256)
+        self.image.write(data, IMG_SIZE / 2 - 10);
+        self.image.resize(new_size)
+        self.image.resize(IMG_SIZE)
+        read = self.image.read(IMG_SIZE / 2 - 10, 5)
+        eq(data[:5], read)
+        read = self.image.read(IMG_SIZE / 2 - 5, 251)
+        eq('\0' * 251, read)
+
     def test_copy(self):
         global ioctx
         data = rand_data(256)
@@ -286,3 +306,37 @@ class TestImage(object):
             eq(snap['name'], str(i))
         for i in xrange(num_snaps):
             self.image.remove_snap(str(i))
+
+    def test_set_snap_deleted(self):
+        self.image.write('\0' * 256, 0)
+        self.image.create_snap('snap1')
+        read = self.image.read(0, 256)
+        eq(read, '\0' * 256)
+        data = rand_data(256)
+        self.image.write(data, 0)
+        read = self.image.read(0, 256)
+        eq(read, data)
+        self.image.set_snap('snap1')
+        self.image.remove_snap('snap1')
+        assert_raises(ImageNotFound, self.image.read, 0, 256)
+        self.image.set_snap(None)
+        read = self.image.read(0, 256)
+        eq(read, data)
+
+    def test_set_snap_recreated(self):
+        self.image.write('\0' * 256, 0)
+        self.image.create_snap('snap1')
+        read = self.image.read(0, 256)
+        eq(read, '\0' * 256)
+        data = rand_data(256)
+        self.image.write(data, 0)
+        read = self.image.read(0, 256)
+        eq(read, data)
+        self.image.set_snap('snap1')
+        self.image.remove_snap('snap1')
+        self.image.create_snap('snap1')
+        assert_raises(ImageNotFound, self.image.read, 0, 256)
+        self.image.set_snap(None)
+        read = self.image.read(0, 256)
+        eq(read, data)
+        self.image.remove_snap('snap1')