+import errno
import json
import logging
import os
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])
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))