]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
qa/tasks/vstart_runner.py: be python3 compatible 35809/head
authorKefu Chai <kchai@redhat.com>
Mon, 20 Apr 2020 10:27:58 +0000 (18:27 +0800)
committerKefu Chai <kchai@redhat.com>
Sat, 27 Jun 2020 04:17:26 +0000 (12:17 +0800)
differentiate `str` and `bytes` instances, and drop python2 support from
vstart_runner.py, as we've moved to python3 already

Signed-off-by: Kefu Chai <kchai@redhat.com>
(cherry picked from commit bedea85019076999a205c421bbf593ab8ab0641b)

qa/tasks/vstart_runner.py

index a248db9e4797acc888ad57fde50c19f698023d70..7519562bafebd5f9ce1818f09d449d167ebce27f 100644 (file)
@@ -30,8 +30,8 @@ Alternative usage:
 
 """
 
-from six import StringIO
 from io import BytesIO
+from io import StringIO
 from collections import defaultdict
 import getpass
 import signal
@@ -152,8 +152,8 @@ else:
 
 
 def rm_nonascii_chars(var):
-    var = var.replace('\xe2\x80\x98', '\'')
-    var = var.replace('\xe2\x80\x99', '\'')
+    var = var.replace(b'\xe2\x80\x98', b'\'')
+    var = var.replace(b'\xe2\x80\x99', b'\'')
     return var
 
 class LocalRemoteProcess(object):
@@ -177,8 +177,14 @@ class LocalRemoteProcess(object):
 
         out, err = self.subproc.communicate()
         out, err = rm_nonascii_chars(out), rm_nonascii_chars(err)
-        self.stdout.write(out)
-        self.stderr.write(err)
+        if isinstance(self.stdout, StringIO):
+            self.stdout.write(out.decode(errors='ignore'))
+        else:
+            self.stdout.write(out)
+        if isinstance(self.stderr, StringIO):
+            self.stderr.write(err.decode(errors='ignore'))
+        else:
+            self.stderr.write(err)
 
         self.exitstatus = self.returncode = self.subproc.returncode
 
@@ -379,12 +385,12 @@ class LocalRemote(object):
                                        env=env)
 
         if stdin:
-            if not isinstance(stdin, six.string_types):
+            if not isinstance(stdin, str):
                 raise RuntimeError("Can't handle non-string stdins on a vstart cluster")
 
             # Hack: writing to stdin is not deadlock-safe, but it "always" works
             # as long as the input buffer is "small"
-            subproc.stdin.write(stdin)
+            subproc.stdin.write(stdin.encode())
 
         proc = LocalRemoteProcess(
             args, subproc, check_status,
@@ -1330,7 +1336,8 @@ def exec_test():
 
     # Tolerate no MDSs or clients running at start
     ps_txt = six.ensure_str(remote.run(
-        args=["ps", "-u"+str(os.getuid())]
+        args=["ps", "-u"+str(os.getuid())],
+        stdout=StringIO()
     ).stdout.getvalue().strip())
     lines = ps_txt.split("\n")[1:]
     for line in lines:
@@ -1390,7 +1397,7 @@ def exec_test():
                                  "mds", "allow",
                                  "mon", "allow r"])
 
-            open("./keyring", "a").write(p.stdout.getvalue())
+            open("./keyring", "ab").write(p.stdout.getvalue())
 
         if use_kernel_client:
             mount = LocalKernelMount(ctx, test_dir, client_id)