Message ID | 20191017165239.30159-5-f4bug@amsat.org |
---|---|
State | New |
Headers | show |
Series | tests/acceptance: Add tests for the PReP/40p machine | expand |
On Thu, Oct 17, 2019 at 06:52:34PM +0200, Philippe Mathieu-Daudé wrote: > From: Philippe Mathieu-Daudé <philmd@redhat.com> > > The same utility method is already present in two different test > files, This patch only appears to remove it from one, though. > so let's consolidate it into a single utility function. > > Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> > --- > tests/acceptance/avocado_qemu/__init__.py | 19 +++++++++++++++++++ > tests/acceptance/boot_linux_console.py | 12 ++++-------- > 2 files changed, 23 insertions(+), 8 deletions(-) > > diff --git a/tests/acceptance/avocado_qemu/__init__.py b/tests/acceptance/avocado_qemu/__init__.py > index 39f72945cd..4d7d6b640a 100644 > --- a/tests/acceptance/avocado_qemu/__init__.py > +++ b/tests/acceptance/avocado_qemu/__init__.py > @@ -80,6 +80,25 @@ def wait_for_console_pattern(test, success_message, > test.fail(fail) > > > +def exec_command_and_wait_for_pattern(test, command, > + success_message, failure_message): > + """ > + Send a command to a console (appending CRLF characters), then wait > + for success_message to appear on the console, while logging the. > + content. Mark the test as failed if failure_message is found instead. > + > + :param test: an Avocado test containing a VM that will have its console > + read and probed for a success or failure message > + :type test: :class:`avocado_qemu.Test` > + :param command: the command to send > + :param success_message: if this message appears, test succeeds > + :param failure_message: if this message appears, test fails > + """ > + command += '\r\n' > + self.vm.console_socket.sendall(command.encode()) > + wait_for_console_pattern(self, success_message) > + > + > class Test(avocado.Test): > def setUp(self): > self._vms = {} > diff --git a/tests/acceptance/boot_linux_console.py b/tests/acceptance/boot_linux_console.py > index bf9861296a..cc4d9be625 100644 > --- a/tests/acceptance/boot_linux_console.py > +++ b/tests/acceptance/boot_linux_console.py > @@ -14,6 +14,7 @@ import gzip > import shutil > > from avocado_qemu import Test > +from avocado_qemu import exec_command_and_wait_for_pattern > from avocado_qemu import wait_for_console_pattern > from avocado.utils import process > from avocado.utils import archive > @@ -29,11 +30,6 @@ class BootLinuxConsole(Test): > > KERNEL_COMMON_COMMAND_LINE = 'printk.time=0 ' > > - def exec_command_and_wait_for_pattern(self, command, success_message): > - command += '\r\n' > - self.vm.console_socket.sendall(command.encode()) > - wait_for_console_pattern(self, success_message) > - > def extract_from_deb(self, deb, path): > """ > Extracts a file from a deb package into the test workdir > @@ -162,11 +158,11 @@ class BootLinuxConsole(Test): > self.vm.launch() > wait_for_console_pattern(self, 'Boot successful.') > > - self.exec_command_and_wait_for_pattern('cat /proc/cpuinfo', > + exec_command_and_wait_for_pattern(self, 'cat /proc/cpuinfo', > 'BogoMIPS') > - self.exec_command_and_wait_for_pattern('uname -a', > + exec_command_and_wait_for_pattern(self, 'uname -a', > 'Debian') > - self.exec_command_and_wait_for_pattern('reboot', > + exec_command_and_wait_for_pattern(self, 'reboot', > 'reboot: Restarting system') > > def do_test_mips_malta32el_nanomips(self, kernel_url, kernel_hash):
On 10/20/19 12:10 PM, David Gibson wrote: > On Thu, Oct 17, 2019 at 06:52:34PM +0200, Philippe Mathieu-Daudé wrote: >> From: Philippe Mathieu-Daudé <philmd@redhat.com> >> >> The same utility method is already present in two different test >> files, > > This patch only appears to remove it from one, though. > >> so let's consolidate it into a single utility function. Indeed, I reordered while rebasing and didn't notice the change, thanks. >> >> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> >> --- >> tests/acceptance/avocado_qemu/__init__.py | 19 +++++++++++++++++++ >> tests/acceptance/boot_linux_console.py | 12 ++++-------- >> 2 files changed, 23 insertions(+), 8 deletions(-) >> >> diff --git a/tests/acceptance/avocado_qemu/__init__.py b/tests/acceptance/avocado_qemu/__init__.py >> index 39f72945cd..4d7d6b640a 100644 >> --- a/tests/acceptance/avocado_qemu/__init__.py >> +++ b/tests/acceptance/avocado_qemu/__init__.py >> @@ -80,6 +80,25 @@ def wait_for_console_pattern(test, success_message, >> test.fail(fail) >> >> >> +def exec_command_and_wait_for_pattern(test, command, >> + success_message, failure_message): >> + """ >> + Send a command to a console (appending CRLF characters), then wait >> + for success_message to appear on the console, while logging the. >> + content. Mark the test as failed if failure_message is found instead. >> + >> + :param test: an Avocado test containing a VM that will have its console >> + read and probed for a success or failure message >> + :type test: :class:`avocado_qemu.Test` >> + :param command: the command to send >> + :param success_message: if this message appears, test succeeds >> + :param failure_message: if this message appears, test fails >> + """ >> + command += '\r\n' >> + self.vm.console_socket.sendall(command.encode()) >> + wait_for_console_pattern(self, success_message) >> + >> + >> class Test(avocado.Test): >> def setUp(self): >> self._vms = {} >> diff --git a/tests/acceptance/boot_linux_console.py b/tests/acceptance/boot_linux_console.py >> index bf9861296a..cc4d9be625 100644 >> --- a/tests/acceptance/boot_linux_console.py >> +++ b/tests/acceptance/boot_linux_console.py >> @@ -14,6 +14,7 @@ import gzip >> import shutil >> >> from avocado_qemu import Test >> +from avocado_qemu import exec_command_and_wait_for_pattern >> from avocado_qemu import wait_for_console_pattern >> from avocado.utils import process >> from avocado.utils import archive >> @@ -29,11 +30,6 @@ class BootLinuxConsole(Test): >> >> KERNEL_COMMON_COMMAND_LINE = 'printk.time=0 ' >> >> - def exec_command_and_wait_for_pattern(self, command, success_message): >> - command += '\r\n' >> - self.vm.console_socket.sendall(command.encode()) >> - wait_for_console_pattern(self, success_message) >> - >> def extract_from_deb(self, deb, path): >> """ >> Extracts a file from a deb package into the test workdir >> @@ -162,11 +158,11 @@ class BootLinuxConsole(Test): >> self.vm.launch() >> wait_for_console_pattern(self, 'Boot successful.') >> >> - self.exec_command_and_wait_for_pattern('cat /proc/cpuinfo', >> + exec_command_and_wait_for_pattern(self, 'cat /proc/cpuinfo', >> 'BogoMIPS') >> - self.exec_command_and_wait_for_pattern('uname -a', >> + exec_command_and_wait_for_pattern(self, 'uname -a', >> 'Debian') >> - self.exec_command_and_wait_for_pattern('reboot', >> + exec_command_and_wait_for_pattern(self, 'reboot', >> 'reboot: Restarting system') >> >> def do_test_mips_malta32el_nanomips(self, kernel_url, kernel_hash): >
diff --git a/tests/acceptance/avocado_qemu/__init__.py b/tests/acceptance/avocado_qemu/__init__.py index 39f72945cd..4d7d6b640a 100644 --- a/tests/acceptance/avocado_qemu/__init__.py +++ b/tests/acceptance/avocado_qemu/__init__.py @@ -80,6 +80,25 @@ def wait_for_console_pattern(test, success_message, test.fail(fail) +def exec_command_and_wait_for_pattern(test, command, + success_message, failure_message): + """ + Send a command to a console (appending CRLF characters), then wait + for success_message to appear on the console, while logging the. + content. Mark the test as failed if failure_message is found instead. + + :param test: an Avocado test containing a VM that will have its console + read and probed for a success or failure message + :type test: :class:`avocado_qemu.Test` + :param command: the command to send + :param success_message: if this message appears, test succeeds + :param failure_message: if this message appears, test fails + """ + command += '\r\n' + self.vm.console_socket.sendall(command.encode()) + wait_for_console_pattern(self, success_message) + + class Test(avocado.Test): def setUp(self): self._vms = {} diff --git a/tests/acceptance/boot_linux_console.py b/tests/acceptance/boot_linux_console.py index bf9861296a..cc4d9be625 100644 --- a/tests/acceptance/boot_linux_console.py +++ b/tests/acceptance/boot_linux_console.py @@ -14,6 +14,7 @@ import gzip import shutil from avocado_qemu import Test +from avocado_qemu import exec_command_and_wait_for_pattern from avocado_qemu import wait_for_console_pattern from avocado.utils import process from avocado.utils import archive @@ -29,11 +30,6 @@ class BootLinuxConsole(Test): KERNEL_COMMON_COMMAND_LINE = 'printk.time=0 ' - def exec_command_and_wait_for_pattern(self, command, success_message): - command += '\r\n' - self.vm.console_socket.sendall(command.encode()) - wait_for_console_pattern(self, success_message) - def extract_from_deb(self, deb, path): """ Extracts a file from a deb package into the test workdir @@ -162,11 +158,11 @@ class BootLinuxConsole(Test): self.vm.launch() wait_for_console_pattern(self, 'Boot successful.') - self.exec_command_and_wait_for_pattern('cat /proc/cpuinfo', + exec_command_and_wait_for_pattern(self, 'cat /proc/cpuinfo', 'BogoMIPS') - self.exec_command_and_wait_for_pattern('uname -a', + exec_command_and_wait_for_pattern(self, 'uname -a', 'Debian') - self.exec_command_and_wait_for_pattern('reboot', + exec_command_and_wait_for_pattern(self, 'reboot', 'reboot: Restarting system') def do_test_mips_malta32el_nanomips(self, kernel_url, kernel_hash):