]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
qa/cephfs: fallback to older way of get_op_read_count
authordparmar18 <dparmar@redhat.com>
Mon, 23 May 2022 09:15:40 +0000 (14:45 +0530)
committerdparmar18 <dparmar@redhat.com>
Mon, 13 Jun 2022 06:03:43 +0000 (11:33 +0530)
Fixes: https://tracker.ceph.com/issues/55538
Signed-off-by: Dhairya Parmar <dparmar@redhat.com>
qa/tasks/cephfs/kernel_mount.py
qa/tasks/cephfs/test_readahead.py

index 8d11b01028cd5597c465e252ea7a42f9ecff04d2..22eb8d951144f8854d74806da9170d2cc4205d73 100644 (file)
@@ -1,3 +1,4 @@
+import errno
 import json
 import logging
 import os
@@ -349,8 +350,23 @@ echo '{fdata}' | sudo tee /sys/kernel/debug/dynamic_debug/control
         return epoch, barrier
 
     def get_op_read_count(self):
-        buf = self.read_debug_file("metrics/size")
-        if buf is None:
-            return 0
-        else:
-            return int(re.findall(r'read.*', buf)[0].split()[1])
+        stdout = StringIO()
+        stderr = StringIO()
+        try:
+            path = os.path.join(self._get_debug_dir(), "metrics/size")
+            self.run_shell(f"sudo stat {path}", stdout=stdout,
+                           stderr=stderr, cwd=None)
+            buf = self.read_debug_file("metrics/size")
+        except CommandFailedError:
+            if 'no such file or directory' in stderr.getvalue().lower() \
+                    or 'not a directory' in stderr.getvalue().lower():
+                try:
+                    path = os.path.join(self._get_debug_dir(), "metrics")
+                    self.run_shell(f"sudo stat {path}", stdout=stdout,
+                                   stderr=stderr, cwd=None)
+                    buf = self.read_debug_file("metrics")
+                except CommandFailedError:
+                    return errno.ENOENT
+            else:
+                return 0
+        return int(re.findall(r'read.*', buf)[0].split()[1])
index b1484ab0713e5a8cb3197a865e6395f9be293400..7e6270f035d22b6d51d8afe358b714f05a63ede8 100644 (file)
@@ -16,8 +16,7 @@ class TestReadahead(CephFSTestCase):
         initial_op_read = self.mount_a.get_op_read_count()
         self.mount_a.run_shell(["dd", "if=foo", "of=/dev/null", "bs=128k", "count=32"])
         op_read = self.mount_a.get_op_read_count()
-
-        assert op_read >= initial_op_read
+        self.assertGreaterEqual(op_read, initial_op_read)
         op_read -= initial_op_read
         log.info("read operations: {0}".format(op_read))