3n-tsh timeout, testbed tags and ansible update
[csit.git] / resources / libraries / python / PapiExecutor.py
index 0a009b3..a3f2479 100644 (file)
@@ -193,7 +193,7 @@ class PapiSocketExecutor(object):
             # We need to create instance before removing from sys.path.
             cls.cached_vpp_instance = vpp_class(
                 use_socket=True, server_address="TBD", async_thread=False,
-                read_timeout=6, logger=FilteredLogger(logger, "INFO"))
+                read_timeout=14, logger=FilteredLogger(logger, "INFO"))
             # Cannot use loglevel parameter, robot.api.logger lacks support.
             # TODO: Stop overriding read_timeout when VPP-1722 is fixed.
         finally:
@@ -468,16 +468,20 @@ class PapiSocketExecutor(object):
             api_name = command["api_name"]
             papi_fn = getattr(vpp_instance.api, api_name)
             try:
-                reply = papi_fn(**command["api_args"])
-            except IOError as err:
-                # Ocassionally an error happens, try reconnect.
-                logger.warn("Reconnect after error: {err!r}".format(err=err))
-                self.vpp_instance.disconnect()
-                # Testing showes immediate reconnect fails.
-                time.sleep(1)
-                self.vpp_instance.connect_sync("csit_socket")
-                logger.trace("Reconnected.")
-                reply = papi_fn(**command["api_args"])
+                try:
+                    reply = papi_fn(**command["api_args"])
+                except IOError as err:
+                    # Ocassionally an error happens, try reconnect.
+                    logger.warn("Reconnect after error: {err!r}".format(
+                        err=err))
+                    self.vpp_instance.disconnect()
+                    # Testing showes immediate reconnect fails.
+                    time.sleep(1)
+                    self.vpp_instance.connect_sync("csit_socket")
+                    logger.trace("Reconnected.")
+                    reply = papi_fn(**command["api_args"])
+            except (AttributeError, IOError) as err:
+                raise_from(AssertionError(err_msg), err, level="INFO")
             # *_dump commands return list of objects, convert, ordinary reply.
             if not isinstance(reply, list):
                 reply = [reply]