[PATCH v2 6/7] tests/acceptance: Add set_vm_arg() to the Test class

Wainer dos Santos Moschetta posted 7 patches 4 years, 10 months ago
Maintainers: "Alex Bennée" <alex.bennee@linaro.org>, Aurelien Jarno <aurelien@aurel32.net>, Paolo Bonzini <pbonzini@redhat.com>, Wainer dos Santos Moschetta <wainersm@redhat.com>, Eduardo Habkost <ehabkost@redhat.com>, John Snow <jsnow@redhat.com>, Pavel Dovgalyuk <pavel.dovgaluk@ispras.ru>, "Philippe Mathieu-Daudé" <philmd@redhat.com>, Cleber Rosa <crosa@redhat.com>, "Philippe Mathieu-Daudé" <f4bug@amsat.org>
There is a newer version of this series
[PATCH v2 6/7] tests/acceptance: Add set_vm_arg() to the Test class
Posted by Wainer dos Santos Moschetta 4 years, 10 months ago
The set_vm_arg method is added to avocado_qemu.Test class on this
change. Use that method to set (or replace) an argument to the list of
arguments given to the QEMU binary.

Suggested-by: Cleber Rosa <crosa@redhat.com>
Signed-off-by: Wainer dos Santos Moschetta <wainersm@redhat.com>
---
 tests/acceptance/avocado_qemu/__init__.py | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/tests/acceptance/avocado_qemu/__init__.py b/tests/acceptance/avocado_qemu/__init__.py
index 7f8e703757..5314ce70eb 100644
--- a/tests/acceptance/avocado_qemu/__init__.py
+++ b/tests/acceptance/avocado_qemu/__init__.py
@@ -240,6 +240,22 @@ def get_vm(self, *args, name=None):
                 self._vms[name].set_machine(self.machine)
         return self._vms[name]
 
+    def set_vm_arg(self, arg, value):
+        """
+        Set an argument to list of extra arguments to be given to the QEMU
+        binary. If the argument already exists then its value is replaced.
+
+        :param arg: the QEMU argument, such as "-cpu" in "-cpu host"
+        :type arg: str
+        :param value: the argument value, such as "host" in "-cpu host"
+        :type value: str
+        """
+        if arg not in self.vm.args:
+            self.vm.args.extend([arg, value])
+        else:
+            idx = self.vm.args.index(arg)
+            self.vm.args[idx + 1] = value
+
     def tearDown(self):
         for vm in self._vms.values():
             vm.shutdown()
-- 
2.29.2


Re: [PATCH v2 6/7] tests/acceptance: Add set_vm_arg() to the Test class
Posted by Cleber Rosa 4 years, 9 months ago
On Thu, Apr 08, 2021 at 04:52:36PM -0300, Wainer dos Santos Moschetta wrote:
> The set_vm_arg method is added to avocado_qemu.Test class on this
> change. Use that method to set (or replace) an argument to the list of
> arguments given to the QEMU binary.
> 
> Suggested-by: Cleber Rosa <crosa@redhat.com>
> Signed-off-by: Wainer dos Santos Moschetta <wainersm@redhat.com>
> ---
>  tests/acceptance/avocado_qemu/__init__.py | 16 ++++++++++++++++
>  1 file changed, 16 insertions(+)
> 
> diff --git a/tests/acceptance/avocado_qemu/__init__.py b/tests/acceptance/avocado_qemu/__init__.py
> index 7f8e703757..5314ce70eb 100644
> --- a/tests/acceptance/avocado_qemu/__init__.py
> +++ b/tests/acceptance/avocado_qemu/__init__.py
> @@ -240,6 +240,22 @@ def get_vm(self, *args, name=None):
>                  self._vms[name].set_machine(self.machine)
>          return self._vms[name]
>  
> +    def set_vm_arg(self, arg, value):
> +        """
> +        Set an argument to list of extra arguments to be given to the QEMU
> +        binary. If the argument already exists then its value is replaced.
> +
> +        :param arg: the QEMU argument, such as "-cpu" in "-cpu host"
> +        :type arg: str
> +        :param value: the argument value, such as "host" in "-cpu host"
> +        :type value: str
> +        """
> +        if arg not in self.vm.args:
> +            self.vm.args.extend([arg, value])
> +        else:
> +            idx = self.vm.args.index(arg)
> +            self.vm.args[idx + 1] = value
> +

This assumes that the arg will have a value, but that's not always the
case.  And, even if you were to pass an empty string, the logic would
overwrite the next (unrelated) arg.

Regards,
- Cleber.