]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
tests: ceph-disk workunit increase verbosity
authorLoic Dachary <ldachary@redhat.com>
Wed, 16 Dec 2015 11:36:47 +0000 (12:36 +0100)
committerLoic Dachary <ldachary@redhat.com>
Wed, 6 Jan 2016 15:54:05 +0000 (16:54 +0100)
So that reading the teuthology log is enough in most cases to figure out
the cause of the error.

Signed-off-by: Loic Dachary <loic@dachary.org>
(cherry picked from commit fd7fe8c4977658f66651dad5efb0d816ae71b38b)

Conflicts:
qa/workunits/ceph-disk/ceph-disk-test.py:
          trivial, because destroy/deactivate are not implemented
          in infernalis. The existing destroy_osd function
          has to be modified so the id returned by sh() does
          not have a trailing newline.

qa/workunits/ceph-disk/ceph-disk-test.py
qa/workunits/ceph-disk/ceph-disk.sh
qa/workunits/ceph-helpers-root.sh

index a4cb5620a6ce3d767ee1d281afea28480d468da6..522f727610e95e12d251adcb215518e2b2c6bf44 100644 (file)
@@ -16,7 +16,7 @@
 # When debugging these tests (must be root), here are a few useful commands:
 #
 #  export PATH=..:$PATH
-#  ln -sf /home/ubuntu/ceph/src/ceph-disk /usr/sbin/ceph-disk
+#  ln -sf /home/ubuntu/ceph/src/ceph-disk $(which ceph-disk)
 #  ln -sf /home/ubuntu/ceph/udev/95-ceph-osd.rules /lib/udev/rules.d/95-ceph-osd.rules
 #  ln -sf /home/ubuntu/ceph/systemd/ceph-disk@.service /usr/lib/systemd/system/ceph-disk@.service
 #  ceph-disk.conf will be silently ignored if it is a symbolic link or a hard link /var/log/upstart for logs
@@ -59,9 +59,25 @@ class CephDisk:
 
     @staticmethod
     def sh(command):
-        output = subprocess.check_output(command, shell=True)
-        LOG.debug("sh: " + command + ": " + output)
-        return output.strip()
+        LOG.debug(":sh: " + command)
+        proc = subprocess.Popen(
+            args=command,
+            stdout=subprocess.PIPE,
+            stderr=subprocess.STDOUT,
+            shell=True,
+            bufsize=1)
+        lines = []
+        with proc.stdout:
+            for line in iter(proc.stdout.readline, b''):
+                line = line.decode('utf-8')
+                lines.append(line)
+                LOG.debug(str(line.strip()))
+        if proc.wait() != 0:
+            raise subprocess.CalledProcessError(
+                returncode=proc.returncode,
+                cmd=command
+            )
+        return "".join(lines)
 
     def unused_disks(self, pattern='[vs]d.'):
         names = filter(lambda x: re.match(pattern, x), os.listdir("/sys/block"))
@@ -111,7 +127,7 @@ class CephDisk:
         raise Exception("journal for uuid = " + uuid + " not found in " + str(disks))
 
     def destroy_osd(self, uuid):
-        id = self.sh("ceph osd create " + uuid)
+        id = self.sh("ceph osd create " + uuid).strip()
         self.helper("control_osd stop " + id + " || true")
         self.wait_for_osd_down(uuid)
         try:
@@ -181,7 +197,7 @@ class TestCephDisk(object):
     def setup_class(self):
         logging.basicConfig(level=logging.DEBUG)
         c = CephDisk()
-        if c.sh("lsb_release -si") == 'CentOS':
+        if c.sh("lsb_release -si").strip() == 'CentOS':
             c.helper("install multipath-tools device-mapper-multipath")
         c.conf['global']['osd journal size'] = 100
         c.save_conf()
@@ -197,13 +213,13 @@ class TestCephDisk(object):
         c = CephDisk()
         disk = c.unused_disks()[0]
         osd_uuid = str(uuid.uuid1())
-        c.sh("ceph-disk prepare --osd-uuid " + osd_uuid + " " + disk)
+        c.sh("ceph-disk --verbose prepare --osd-uuid " + osd_uuid + " " + disk)
         c.wait_for_osd_up(osd_uuid)
         partition = c.get_osd_partition(osd_uuid)
         assert partition['type'] == 'data'
         assert partition['state'] == 'active'
         c.destroy_osd(osd_uuid)
-        c.sh("ceph-disk zap " + disk)
+        c.sh("ceph-disk --verbose zap " + disk)
 
     def test_activate_dmcrypt_plain(self):
         c = CephDisk()
@@ -221,7 +237,7 @@ class TestCephDisk(object):
         disk = c.unused_disks()[0]
         osd_uuid = str(uuid.uuid1())
         journal_uuid = str(uuid.uuid1())
-        c.sh("ceph-disk zap " + disk)
+        c.sh("ceph-disk --verbose zap " + disk)
         c.sh("ceph-disk --verbose prepare " +
              " --osd-uuid " + osd_uuid +
              " --journal-uuid " + journal_uuid +
@@ -234,16 +250,16 @@ class TestCephDisk(object):
         journal_partition = c.get_journal_partition(osd_uuid)
         assert journal_partition
         c.destroy_osd(osd_uuid)
-        c.sh("ceph-disk zap " + disk)
+        c.sh("ceph-disk --verbose zap " + disk)
 
     def test_activate_no_journal(self):
         c = CephDisk()
         disk = c.unused_disks()[0]
         osd_uuid = str(uuid.uuid1())
-        c.sh("ceph-disk zap " + disk)
+        c.sh("ceph-disk --verbose zap " + disk)
         c.conf['global']['osd objectstore'] = 'memstore'
         c.save_conf()
-        c.sh("ceph-disk prepare --osd-uuid " + osd_uuid +
+        c.sh("ceph-disk --verbose prepare --osd-uuid " + osd_uuid +
              " " + disk)
         c.wait_for_osd_up(osd_uuid)
         device = json.loads(c.sh("ceph-disk list --format json " + disk))[0]
@@ -254,15 +270,15 @@ class TestCephDisk(object):
         assert 'journal_dev' not in partition
         c.helper("pool_read_write")
         c.destroy_osd(osd_uuid)
-        c.sh("ceph-disk zap " + disk)
+        c.sh("ceph-disk --verbose zap " + disk)
         c.save_conf()
 
     def test_activate_with_journal(self):
         c = CephDisk()
         disk = c.unused_disks()[0]
         osd_uuid = str(uuid.uuid1())
-        c.sh("ceph-disk zap " + disk)
-        c.sh("ceph-disk prepare --osd-uuid " + osd_uuid +
+        c.sh("ceph-disk --verbose zap " + disk)
+        c.sh("ceph-disk --verbose prepare --osd-uuid " + osd_uuid +
              " " + disk)
         c.wait_for_osd_up(osd_uuid)
         device = json.loads(c.sh("ceph-disk list --format json " + disk))[0]
@@ -274,7 +290,7 @@ class TestCephDisk(object):
         assert journal_partition
         c.helper("pool_read_write")
         c.destroy_osd(osd_uuid)
-        c.sh("ceph-disk zap " + disk)
+        c.sh("ceph-disk --verbose zap " + disk)
 
     def test_activate_separated_journal(self):
         c = CephDisk()
@@ -284,12 +300,12 @@ class TestCephDisk(object):
         osd_uuid = self.activate_separated_journal(data_disk, journal_disk)
         c.helper("pool_read_write 1") # 1 == pool size
         c.destroy_osd(osd_uuid)
-        c.sh("ceph-disk zap " + data_disk + " " + journal_disk)
+        c.sh("ceph-disk --verbose zap " + data_disk + " " + journal_disk)
 
     def activate_separated_journal(self, data_disk, journal_disk):
         c = CephDisk()
         osd_uuid = str(uuid.uuid1())
-        c.sh("ceph-disk prepare --osd-uuid " + osd_uuid +
+        c.sh("ceph-disk --verbose prepare --osd-uuid " + osd_uuid +
              " " + data_disk + " " + journal_disk)
         c.wait_for_osd_up(osd_uuid)
         device = json.loads(c.sh("ceph-disk list --format json " + data_disk))[0]
@@ -323,7 +339,8 @@ class TestCephDisk(object):
         c.helper("pool_read_write 2") # 2 == pool size
         c.destroy_osd(osd_uuid)
         c.destroy_osd(other_osd_uuid)
-        c.sh("ceph-disk zap " + data_disk + " " + journal_disk + " " + other_data_disk)
+        c.sh("ceph-disk --verbose zap " + data_disk + " " +
+             journal_disk + " " + other_data_disk)
 
     #
     # Create an OSD and reuse an existing journal partition
@@ -340,12 +357,12 @@ class TestCephDisk(object):
         journal_partition = c.get_journal_partition(osd_uuid)
         journal_path = journal_partition['path']
         c.destroy_osd(osd_uuid)
-        c.sh("ceph-disk zap " + data_disk)
+        c.sh("ceph-disk --verbose zap " + data_disk)
         osd_uuid = str(uuid.uuid1())
         #
         # Create another OSD with the journal partition of the previous OSD
         #
-        c.sh("ceph-disk prepare --osd-uuid " + osd_uuid +
+        c.sh("ceph-disk --verbose prepare --osd-uuid " + osd_uuid +
              " " + data_disk + " " + journal_path)
         c.helper("pool_read_write 1") # 1 == pool size
         c.wait_for_osd_up(osd_uuid)
@@ -360,12 +377,13 @@ class TestCephDisk(object):
         #
         assert journal_partition['path'] == journal_path
         c.destroy_osd(osd_uuid)
-        c.sh("ceph-disk zap " + data_disk + " " + journal_disk)
+        c.sh("ceph-disk --verbose zap " + data_disk + " " + journal_disk)
 
     def test_activate_multipath(self):
         c = CephDisk()
-        if c.sh("lsb_release -si") != 'CentOS':
-            pytest.skip("see issue https://bugs.launchpad.net/ubuntu/+source/multipath-tools/+bug/1488688")
+        if c.sh("lsb_release -si").strip() != 'CentOS':
+            pytest.skip(
+                "see issue https://bugs.launchpad.net/ubuntu/+source/multipath-tools/+bug/1488688")
         c.ensure_sd()
         #
         # Figure out the name of the multipath device
@@ -381,8 +399,8 @@ class TestCephDisk(object):
         # Prepare the multipath device
         #
         osd_uuid = str(uuid.uuid1())
-        c.sh("ceph-disk zap " + multipath)
-        c.sh("ceph-disk prepare --osd-uuid " + osd_uuid +
+        c.sh("ceph-disk --verbose zap " + multipath)
+        c.sh("ceph-disk --verbose prepare --osd-uuid " + osd_uuid +
              " " + multipath)
         c.wait_for_osd_up(osd_uuid)
         device = json.loads(c.sh("ceph-disk list --format json " + multipath))[0]
@@ -394,7 +412,7 @@ class TestCephDisk(object):
         assert journal_partition
         c.helper("pool_read_write")
         c.destroy_osd(osd_uuid)
-        c.sh("ceph-disk zap " + multipath)
+        c.sh("ceph-disk --verbose zap " + multipath)
         c.sh("udevadm settle")
         c.sh("multipath -F")
         c.unload_scsi_debug()
index 044517db8615d6ae73f04070221494bacb80e3ab..1406c9ee74752ef07a5e581de30bff250f50be9d 100755 (executable)
@@ -27,7 +27,7 @@ if ! which py.test > /dev/null; then
     exit 1
 fi
 
-sudo env PATH=$(dirname $0)/..:$PATH py.test -v $(dirname $0)/ceph-disk-test.py
+sudo env PATH=$(dirname $0)/..:$PATH py.test -s -v $(dirname $0)/ceph-disk-test.py
 result=$?
 
 # own whatever was created as a side effect of the py.test run
index 200452d9fe36b4544f8ecc991a4424fb1f4bd0e1..a622bd5ab96e26ffc63c9f4c1d401c6a7d91f0b8 100755 (executable)
@@ -86,4 +86,6 @@ function pool_read_write() {
 
 #######################################################################
 
+set -x
+
 "$@"