On 15/06/2021 09:57, Vladimir Sementsov-Ogievskiy wrote:
> 14.06.2021 13:36, Emanuele Giuseppe Esposito wrote:
>>
>>
>> On 04/06/2021 11:17, Emanuele Giuseppe Esposito wrote:
>>> Attaching gdbserver implies that the qmp socket
>>> should wait indefinitely for an answer from QEMU.
>>>
>>> For Timeout class, create a @contextmanager that
>>> switches Timeout with NoTimeout (empty context manager)
>>> so that if --gdb is set, no timeout will be triggered.
>>>
>>> Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com>
>>> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
>>> ---
>>> tests/qemu-iotests/iotests.py | 9 ++++++++-
>>> 1 file changed, 8 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/tests/qemu-iotests/iotests.py
>>> b/tests/qemu-iotests/iotests.py
>>> index c86f239d81..d4bfd8f1d6 100644
>>> --- a/tests/qemu-iotests/iotests.py
>>> +++ b/tests/qemu-iotests/iotests.py
>>> @@ -486,6 +486,13 @@ def __exit__(self, exc_type, value, traceback):
>>> def timeout(self, signum, frame):
>>> raise Exception(self.errmsg)
>>> +@contextmanager
>>> +def NoTimeout():
>>> + yield
>>> +
>>> +if qemu_gdb:
>>> + Timeout = NoTimeout
>>> +
>>
>> @Vladimir or anyone expert enough in python:
>> This fix above works, but I just noticed that makes pylint (test 297)
>> fail. My bad, I should have tried it before.
>
> I think, just make mypy ignore it, like:
>
> Timeout = NoTimeout # type: ignore
>
>
I think I am going to drop this change.
This series already has patch 2 to ignore another pylint warning, plus
another separate patch was sent to silence a warning that pops out with
newer versions of pylint.
So once this gets in, feel free to add a patch with this change.
Emanuele
>>
>> The reason for that is
>>>> + Timeout = NoTimeout
>>
>> They obviously have different types.
>>
>>> +iotests.py:507: error: Cannot assign to a type
>>> +iotests.py:507: error: Incompatible types in assignment (expression
>>> has type "Callable[[], _GeneratorContextManager[Any]]", variable has
>>> type "Type[Timeout]")
>>> +Found 2 errors in 1 file (checked 1 source file)
>>
>> Any ideas on how to fix this? Otherwise I will get rid of it.
>>
>> Thank you,
>> Emanuele
>>
>>> def file_pattern(name):
>>> return "{0}-{1}".format(os.getpid(), name)
>>> @@ -575,7 +582,7 @@ class VM(qtest.QEMUQtestMachine):
>>> def __init__(self, path_suffix=''):
>>> name = "qemu%s-%d" % (path_suffix, os.getpid())
>>> - timer = 15.0
>>> + timer = 15.0 if not qemu_gdb else None
>>> super().__init__(qemu_prog, qemu_opts, name=name,
>>> base_temp_dir=test_dir,
>>> socket_scm_helper=socket_scm_helper,
>>>
>>
>
>