switch_general.py 文件源码

python
阅读 34 收藏 0 点赞 0 评论 0

项目:taf 作者: taf3 项目源码 文件源码
def get(self, init_start=False, retry_count=7):
        """Get or start switch instance.

        Args:
            init_start(bool):  Perform switch start operation or not
            retry_count(int):  Number of retries to start(restart) switch

        Returns:
            None or raise an exception.

        Notes:
            Also self.opts.fail_ctrl attribute affects logic of this method.
            fail_ctrl is set in py.test command line options (read py.test --help for more information).

        """
        # If fail_ctrl != "restart", restart retries won't be performed
        if self.opts.fail_ctrl != "restart":
            retry_count = 1

        for retry in range(retry_count):
            try:
                if retry == 0:
                    if init_start:
                        self.start()
                    else:
                        self.waiton()
                else:
                    self.restart(mode=self.default_restart_type)
                break
            except KeyboardInterrupt:
                message = "KeyboardInterrupt while checking switch %s(%s)..." % (self.name, self.ipaddr)
                self.class_logger.info(message)
                self.sanitize()
                pytest.exit(message)
            except Exception:
                self.class_logger.warning("Error while checking switch %s(%s)..." % (self.name, self.ipaddr))
                retry += 1
                exc_type, exc_value, exc_traceback = sys.exc_info()
                traceback_message = traceback.format_exception(exc_type, exc_value, exc_traceback)
                message = "Error while checking switch %s(%s):\n%s" % (self.name, self.ipaddr, "".join(traceback_message))
                sys.stderr.write(message)
                sys.stderr.flush()
                self.class_logger.error(message)
                if retry > 4:
                    self.class_logger.warning(
                        "Could not complete switch start method for the fourth time. Trying to "
                        "reset the DB...")
                    self.db_corruption = True
                if retry >= retry_count + 1:
                    message = "Could not complete start switch method after {0} retries. Something " \
                              "went wrong...\n".format(retry_count)
                    sys.stderr.write(message)
                    sys.stderr.flush()
                    self.class_logger.error(message)
                    if self.opts.fail_ctrl != "ignore":
                        pytest.exit(message)
                    else:
                        pytest.fail(message)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号