Signed-off-by: Jiří Župka <jzupka@xxxxxxxxxx> --- client/tests/kvm/tests/ksm_overcommit.py | 2 +- client/tests/kvm/tests/virtio_console.py | 2 +- client/virt/aexpect.py | 28 ++++++++++++++++++---------- client/virt/deps/test_cpu_flags/stress.c | 2 +- 4 files changed, 21 insertions(+), 13 deletions(-) diff --git a/client/tests/kvm/tests/ksm_overcommit.py b/client/tests/kvm/tests/ksm_overcommit.py index 3614aea..8511818 100644 --- a/client/tests/kvm/tests/ksm_overcommit.py +++ b/client/tests/kvm/tests/ksm_overcommit.py @@ -200,7 +200,7 @@ def run_ksm_overcommit(test, params, env): free_mem, (i - 1)) last_vm = i break - out = session.read_nonblocking(0.1) + out = session.read_nonblocking(0.1, 1) time.sleep(2) except OSError: logging.debug("Only %s host free memory, killing %d guests", diff --git a/client/tests/kvm/tests/virtio_console.py b/client/tests/kvm/tests/virtio_console.py index a52b9e1..c3395e8 100644 --- a/client/tests/kvm/tests/virtio_console.py +++ b/client/tests/kvm/tests/virtio_console.py @@ -598,7 +598,7 @@ def run_virtio_console(test, params, env): @return: Kernel crash log or None. """ - data = vm_port.read_nonblocking() + data = vm_port.read_nonblocking(0.1, timeout) match = re.search("BUG:", data, re.MULTILINE) if match is None: return None diff --git a/client/virt/aexpect.py b/client/virt/aexpect.py index d75bbe1..25ec62d 100755 --- a/client/virt/aexpect.py +++ b/client/virt/aexpect.py @@ -901,20 +901,25 @@ class Expect(Tail): return Tail.__getinitargs__(self) - def read_nonblocking(self, timeout=None): + def read_nonblocking(self, internal_timeout=None, timeout=None): """ Read from child until there is nothing to read for timeout seconds. - @param timeout: Time (seconds) to wait before we give up reading from - the child process, or None to use the default value. + @param internal_timeout: Time (seconds) to wait before we give up + reading from the child process, or None to + use the default value. + @param timeout: Timeout for reading child process output. """ - if timeout is None: - timeout = 0.1 + if internal_timeout is None: + internal_timeout = 0.1 + end_time = None + if timeout: + end_time = time.time() + timeout fd = self._get_fd("expect") data = "" while True: try: - r, w, x = select.select([fd], [], [], timeout) + r, w, x = select.select([fd], [], [], internal_timeout) except Exception: return data if fd in r: @@ -924,6 +929,8 @@ class Expect(Tail): data += new_data else: return data + if end_time and time.time() > end_time: + return data def match_patterns(self, str, patterns): @@ -980,7 +987,8 @@ class Expect(Tail): if not r: raise ExpectTimeoutError(patterns, o) # Read data from child - data = self.read_nonblocking(internal_timeout) + data = self.read_nonblocking(internal_timeout, + end_time - time.time()) if not data: break # Print it if necessary @@ -1157,14 +1165,14 @@ class ShellSession(Expect): """ # Read all output that's waiting to be read, to make sure the output # we read next is in response to the newline sent - self.read_nonblocking(timeout=0) + self.read_nonblocking(internal_timeout=0, timeout=timeout) # Send a newline self.sendline() # Wait up to timeout seconds for some output from the child end_time = time.time() + timeout while time.time() < end_time: time.sleep(0.5) - if self.read_nonblocking(timeout=0).strip(): + if self.read_nonblocking(0, end_time-time.time()).strip(): return True # No output -- report unresponsive return False @@ -1224,7 +1232,7 @@ class ShellSession(Expect): return "".join(str.rstrip().splitlines(True)[:-1]) logging.debug("Sending command: %s" % cmd) - self.read_nonblocking(timeout=0) + self.read_nonblocking(0, timeout) self.sendline(cmd) try: o = self.read_up_to_prompt(timeout, internal_timeout, print_func) diff --git a/client/virt/deps/test_cpu_flags/stress.c b/client/virt/deps/test_cpu_flags/stress.c index 3c35e59..ae424c2 100644 --- a/client/virt/deps/test_cpu_flags/stress.c +++ b/client/virt/deps/test_cpu_flags/stress.c @@ -45,7 +45,6 @@ void stress(inst in) { b[i] = rand(); } omp_set_num_threads(in.num_threads); - printf("Stress round.\n"); #pragma omp parallel while (1){ AddTwo(a, b, in.num_threads); // call AddTwo function} @@ -69,6 +68,7 @@ void stress(inst in) { xop(); if (in.sse4a) sse4a(); + printf("Stress round.\n"); } free(a); free(b); -- 1.7.7.6 -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html