avocado.core.runner: Fix problems with exceptions that can't be pickled
I've noticed this when writing tests using the boto3 (Amazon AWS) API - for some exceptions, not all the arguments of the exception can be pickled, leading to the following crash: (1/2) scylla_longevity.py:LongevityTest.test_20_minutes: - Avocado crashed: TypeError: ('__init__() takes exactly 3 arguments (2 given)', <class 'botocore.exceptions.ClientError'>, ("An error occurred (InvalidAMIID.NotFound) when calling the RunInstances operation: The image id 'ami-20776841' does not exist",)) Traceback (most recent call last): File "/home/lmr/Code/avocado.lmr/avocado/core/job.py", line 451, in _run timeout=self.timeout) File "/home/lmr/Code/avocado.lmr/avocado/core/runner.py", line 368, in run_suite deadline) File "/home/lmr/Code/avocado.lmr/avocado/core/runner.py", line 284, in run_test if test_status.interrupt: File "/home/lmr/Code/avocado.lmr/avocado/core/runner.py", line 82, in __getattribute__ self._tick() File "/home/lmr/Code/avocado.lmr/avocado/core/runner.py", line 111, in _tick msg = self.queue.get() File "/usr/lib/python2.7/multiprocessing/queues.py", line 378, in get return recv() TypeError: ('__init__() takes exactly 3 arguments (2 given)', <class 'botocore.exceptions.ClientError'>, ("An error occurred (InvalidAMIID.NotFound) when calling the RunInstances operation: The image id 'ami-20776841' does not exist",)) Please include the traceback info and command line used on your bug report Report bugs visiting https://github.com/avocado-framework/avocado/issues/new Since we can't restore all the arguments of this exception upon recv, we have to handle any exception that happens here and break out from the _tick() loop. Signed-off-by: NLucas Meneghel Rodrigues <lookkas@gmail.com>
Showing
想要评论请 注册 或 登录