示例#1
0
 def _parse_arguments():
     """
     Static method for paring arguments
     """
     parser = get_base_arguments(get_parser())
     parser = get_tc_arguments(parser)
     args, unknown = parser.parse_known_args()
     return args, unknown
示例#2
0
 def test_args_from_file_with_file_infinite_recursion(self):  # pylint: disable=invalid-name
     sys.argv = ["filename.py", "--cfg_file",
                 os.path.abspath(os.path.join(os.path.dirname(__file__),
                                              "data/conf_file_3.txt"))]
     parser = get_parser()  # pylint: disable=unused-variable
     args, unknown = _parse_arguments()  # pylint: disable=unused-variable
     for arg in ["tcdir", "baudrate", "suitedir"]:
         self.assertTrue(hasattr(args, arg))
     self.assertEqual(args.tcdir, "shouldoverwrite")
示例#3
0
 def test_args_from_file(self):
     sys.argv = ["filename.py", "--tc", "test_case_1", "--tcdir", "test_directory",
                 "--cfg_file",
                 os.path.abspath(os.path.join(os.path.dirname(__file__),
                                              "data/conf_file.txt")),
                 "--suitedir",
                 "shouldoverwrite"]
     parser = get_parser()  # pylint: disable=unused-variable
     args, unknown = _parse_arguments()  # pylint: disable=unused-variable
     for arg in ["tc", "tcdir", "cfg_file", "baudrate", "suitedir"]:
         self.assertTrue(hasattr(args, arg))
     self.assertEqual(args.tc, "test_case_1")
     self.assertEqual(args.tcdir, "shouldoverwrite")
     self.assertEqual(args.baudrate, 9600)
     self.assertEqual(args.suitedir, "shouldoverwrite")
示例#4
0
    def check_args(self):
        """
        Validates that a valid number of arguments were received and that all arguments were
        recognised.

        :return: True or False.
        """
        parser = get_base_arguments(get_parser())
        parser = get_tc_arguments(parser)
        # Disable "Do not use len(SEQ) as condition value"
        # pylint: disable=C1801
        if len(sys.argv) < 2:
            self.logger.error("Icetea called with no arguments! ")
            parser.print_help()
            return False
        elif not self.args.ignore_invalid_params and self.unknown:
            self.logger.error(
                "Unknown parameters received, exiting. "
                "To ignore this add --ignore_invalid_params flag.")
            self.logger.error("Following parameters were unknown: {}".format(
                self.unknown))
            parser.print_help()
            return False
        return True
示例#5
0
def _parse_arguments():
    parser = get_base_arguments(get_parser())
    parser = get_tc_arguments(parser)
    args, unknown = parser.parse_known_args()
    return args, unknown
示例#6
0
    def run(self, forceflash=False):
        """
        Runs the testcase associated with this container.

        :param forceflash: boolean, True if forceflash should be used
        :return: Result
        """
        if self.status == TestStatus.FINISHED:
            self.logger.debug("Creating new bench instance for repeat.")
            self._instance = self._create_new_bench_instance(self._modulename)
            self.set_final_config()
        self.status = TestStatus.RUNNING
        self.logger.debug("Starting test case {}".format(self.tcname))
        tc_instance = self.get_instance()

        result = self._check_skip(tc_instance)
        if result:
            self.logger.debug("Skipping test case {}".format(self.tcname))
            self._result = result
            self.status = TestStatus.FINISHED
            return result

        # Check if version checking is enabled in cli
        # and if the bench has the compatible key in it's config.
        result = self._check_version(tc_instance)
        if result is not None:
            self.logger.debug(
                "Version check triggered, skipping test case {}.".format(
                    self.tcname))
            self._result = result
            self.status = TestStatus.FINISHED
            return result

        parser = get_tc_arguments(get_base_arguments(get_parser()))
        args, unknown = parser.parse_known_args()
        if len(unknown) > 0:
            for para in unknown:
                self.logger.warning(
                    "Icetea received unknown parameter {}".format(para))
            if not args.ignore_invalid_params:
                self.logger.error(
                    "Unknown parameters received, exiting. To ignore this add --ignore_invalid_params flag."
                )
                parser.print_help()
                result = tc_instance.get_result()
                result.set_verdict(verdict="inconclusive",
                                   retcode=-1,
                                   duration=0)
                self.status = TestStatus.FINISHED
                return result

        args.forceflash = forceflash
        self.status = TestStatus.RUNNING
        tc_instance.set_args(args)
        self.logger.info("")
        self.logger.info("START TEST CASE EXECUTION: '%s'" %
                         tc_instance.get_test_name())
        self.logger.info("")

        a = datetime.datetime.now()
        try:
            retcode = tc_instance.run()
            self.logger.debug(
                "Test bench returned return code {}".format(retcode))
        except:
            traceback.print_exc()
            retcode = -9999

        b = datetime.datetime.now()

        result = tc_instance.get_result(tc_file=self._filepath)
        # Force garbage collection
        gc.collect()
        # cleanup Testcase
        tc_instance = None
        LogManager.finish_testcase_logging()
        self.status = TestStatus.FINISHED

        if isinstance(result, ResultList):
            self.logger.debug("Received a list of results from test bench.")
            return result

        if result.retcode == ReturnCodes.RETCODE_FAIL_ABORTED_BY_USER:
            print("Press CTRL + C again if you want to abort test run")
            try:
                time.sleep(5)
            except KeyboardInterrupt:
                self.status = TestStatus.FINISHED
                raise

        c = b - a
        duration = c.total_seconds()
        self.logger.debug("Duration: {} seconds".format(duration))

        verdict = None
        if retcode == 0:
            verdict = "pass"
        elif retcode in ReturnCodes.INCONCLUSIVE_RETCODES:
            verdict = "inconclusive"
        elif retcode == ReturnCodes.RETCODE_SKIP:
            verdict = "skip"
        else:
            verdict = "fail"
        result.set_verdict(verdict=verdict, retcode=retcode, duration=duration)
        self._result = result

        return result
示例#7
0
 def __init__(self, **kwargs):
     super(ArgsHandler, self).__init__(**kwargs)
     parser = get_tc_arguments(get_base_arguments(get_parser()))
     self.__args, self.__unknown = parser.parse_known_args()