From 42f8619559b0622f35b255065d884f33203c0167 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= Date: Fri, 20 Oct 2017 03:19:18 +0200 Subject: [PATCH] tests: fix asyncio usage some more places gui_memory_pinning tests finally works. Also, fix DispVM and private volume resize tests. --- qubes/tests/integ/dispvm.py | 2 +- qubes/tests/integ/vm_qrexec_gui.py | 23 +++++++++++++---------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/qubes/tests/integ/dispvm.py b/qubes/tests/integ/dispvm.py index 67d8ed3e..7d1ac05c 100644 --- a/qubes/tests/integ/dispvm.py +++ b/qubes/tests/integ/dispvm.py @@ -150,6 +150,7 @@ class TC_20_DispVMMixin(object): p.stdin.write("xterm -e " "\"sh -c 'echo \\\"\033]0;{}\007\\\";read x;'\"\n". format(window_title).encode()) + self.loop.run_until_complete(p.stdin.drain()) self.wait_for_window(window_title) time.sleep(0.5) @@ -226,7 +227,6 @@ class TC_20_DispVMMixin(object): @unittest.skipUnless(spawn.find_executable('xdotool'), "xdotool not installed") - @unittest.expectedFailure def test_030_edit_file(self): self.testvm1 = self.app.add_new_vm(qubes.vm.appvm.AppVM, name=self.make_vm_name('vm1'), diff --git a/qubes/tests/integ/vm_qrexec_gui.py b/qubes/tests/integ/vm_qrexec_gui.py index 393ed435..8b88d2de 100644 --- a/qubes/tests/integ/vm_qrexec_gui.py +++ b/qubes/tests/integ/vm_qrexec_gui.py @@ -774,14 +774,14 @@ class TC_00_AppVMMixin(object): finally: self.app.clockvm = None - @unittest.expectedFailure def test_250_resize_private_img(self): """ Test private.img resize, both offline and online :return: """ # First offline test - self.testvm1.storage.resize('private', 4*1024**3) + self.loop.run_until_complete( + self.testvm1.storage.resize('private', 4*1024**3)) self.loop.run_until_complete(self.testvm1.start()) df_cmd = '( df --output=size /rw || df /rw | awk \'{print $2}\' )|' \ 'tail -n 1' @@ -797,7 +797,7 @@ class TC_00_AppVMMixin(object): new_size, _ = self.loop.run_until_complete( self.testvm1.run_for_stdio(df_cmd)) # some safety margin for FS metadata - self.assertGreater(int(new_size.strip()), 5.8*1024**2) + self.assertGreater(int(new_size.strip()), 5.7*1024**2) @unittest.skipUnless(spawn.find_executable('xdotool'), "xdotool not installed") @@ -902,8 +902,11 @@ int main(int argc, char **argv) { # passing is unreliable while the process is still running alloc1.stdin.write(b'\n') yield from alloc1.stdin.drain() - alloc_out = yield from alloc1.stdout.read( - len('Stage1\nStage2\nStage3\n')) + try: + alloc_out = yield from alloc1.stdout.readexactly( + len('Stage1\nStage2\nStage3\n')) + except asyncio.IncompleteReadError as e: + alloc_out = e.partial if b'Stage3' not in alloc_out: # read stderr only in case of failed assert (), but still have nice @@ -923,11 +926,11 @@ int main(int argc, char **argv) { # help xdotool a little... yield from asyncio.sleep(2) # get window ID - winid = yield from asyncio.get_event_loop().run_in_executor( + winid = (yield from asyncio.get_event_loop().run_in_executor(None, subprocess.check_output, ['xdotool', 'search', '--sync', '--onlyvisible', '--class', - self.testvm1.name + ':.*erminal']).decode() - xprop = yield from asyncio.get_event_loop().run_in_executor( + self.testvm1.name + ':.*erminal'])).decode() + xprop = yield from asyncio.get_event_loop().run_in_executor(None, subprocess.check_output, ['xprop', '-notype', '-id', winid, '_QUBES_VMWINDOWID']) vm_winid = xprop.decode().strip().split(' ')[4] @@ -943,7 +946,7 @@ int main(int argc, char **argv) { # some memory alloc2 = yield from self.testvm1.run( 'ulimit -l unlimited; /home/user/allocator {}'.format(memory_pages), - user='root') + user='root', stdout=subprocess.PIPE) yield from alloc2.stdout.read(len('Stage1\n')) # wait for damage notify - top updates every 3 sec by default @@ -955,7 +958,7 @@ int main(int argc, char **argv) { vm_image, _ = yield from self.testvm1.run_for_stdio( 'import -window {} pnm:-'.format(vm_winid)) - dom0_image = yield from asyncio.get_event_loop().run_in_executor( + dom0_image = yield from asyncio.get_event_loop().run_in_executor(None, subprocess.check_output, ['import', '-window', winid, 'pnm:-']) if vm_image != dom0_image: