Signed-off-by: Jiří Župka <[email protected]>
---
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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html