def test_run_two_test_classes(self, *_):
        """Verifies that running more than one test class in one test run works
        properly.

        This requires using a built-in controller module. Using AndroidDevice
        module since it has all the mocks needed already.
        """
        mock_test_config = self.base_mock_test_config.copy()
        tb_key = keys.Config.key_testbed.value
        mock_ctrlr_config_name = mock_controller.MOBLY_CONTROLLER_CONFIG_NAME
        my_config = [{
            'serial': 'xxxx',
            'magic': 'Magic1'
        }, {
            'serial': 'xxxx',
            'magic': 'Magic2'
        }]
        mock_test_config.controller_configs[mock_ctrlr_config_name] = my_config
        mock_test_config.controller_configs['AndroidDevice'] = [{
            'serial':
            '1',
            'skip_sl4a':
            True
        }]
        tr = test_runner.TestRunner(mock_test_config,
                                    [('IntegrationTest', None),
                                     ('IntegrationTest', None)])
        tr.run()
        tr.stop()
        results = tr.results.summary_dict()
        self.assertEqual(results['Requested'], 2)
        self.assertEqual(results['Executed'], 2)
        self.assertEqual(results['Passed'], 2)
Пример #2
0
    def test_run_two_test_classes(self, mock_ensure_screen_on, mock_get_all,
                                  mock_list_adb, mock_fastboot, mock_adb):
        """Verifies that runing more than one test class in one test run works
        proerly.

        This requires using a built-in controller module. Using AndroidDevice
        module since it has all the mocks needed already.
        """
        mock_test_config = dict(self.base_mock_test_config)
        tb_key = keys.Config.key_testbed.value
        mock_ctrlr_config_name = mock_controller.ACTS_CONTROLLER_CONFIG_NAME
        my_config = [{
            "serial": "xxxx",
            "magic": "Magic1"
        }, {
            "serial": "xxxx",
            "magic": "Magic2"
        }]
        mock_test_config[tb_key][mock_ctrlr_config_name] = my_config
        mock_test_config[tb_key]["AndroidDevice"] = [{
            "serial": "1",
            "skip_sl4a": True
        }]
        tr = test_runner.TestRunner(mock_test_config,
                                    [('IntegrationTest', None),
                                     ('IntegrationTest', None)])
        tr.run()
        tr.stop()
        self.assertFalse(tr.controller_registry)
        self.assertFalse(tr.controller_destructors)
        results = tr.results.summary_dict()
        self.assertEqual(results["Requested"], 2)
        self.assertEqual(results["Executed"], 2)
        self.assertEqual(results["Passed"], 2)
 def test_run_twice(self):
     """Verifies that:
     1. Repeated run works properly.
     2. The original configuration is not altered if a test controller
        module modifies configuration.
     """
     mock_test_config = self.base_mock_test_config.copy()
     tb_key = keys.Config.key_testbed.value
     mock_ctrlr_config_name = mock_controller.MOBLY_CONTROLLER_CONFIG_NAME
     my_config = [{
         'serial': 'xxxx',
         'magic': 'Magic1'
     }, {
         'serial': 'xxxx',
         'magic': 'Magic2'
     }]
     mock_test_config.controller_configs[mock_ctrlr_config_name] = my_config
     tr = test_runner.TestRunner(mock_test_config,
                                 [('IntegrationTest', None)])
     tr.run()
     tr.run()
     tr.stop()
     results = tr.results.summary_dict()
     self.assertEqual(results['Requested'], 2)
     self.assertEqual(results['Executed'], 2)
     self.assertEqual(results['Passed'], 2)
Пример #4
0
 def test_register_controller_builtin_dup_register(self):
     """Same as test_register_controller_third_party_dup_register, except
     this is for a builtin controller module.
     """
     mock_test_config = dict(self.base_mock_test_config)
     tb_key = keys.Config.key_testbed.value
     mock_ctrlr_config_name = mock_controller.ACTS_CONTROLLER_CONFIG_NAME
     mock_ref_name = "haha"
     setattr(mock_controller, "ACTS_CONTROLLER_REFERENCE_NAME",
             mock_ref_name)
     try:
         mock_ctrlr_ref_name = mock_controller.ACTS_CONTROLLER_REFERENCE_NAME
         mock_test_config[tb_key][mock_ctrlr_config_name] = [
             "magic1", "magic2"
         ]
         tr = test_runner.TestRunner(mock_test_config, self.mock_run_list)
         tr.register_controller(mock_controller)
         self.assertTrue(mock_ref_name in tr.test_run_info)
         self.assertTrue(mock_ref_name in tr.controller_registry)
         mock_ctrlrs = tr.test_run_info[mock_ctrlr_ref_name]
         self.assertEqual(mock_ctrlrs[0].magic, "magic1")
         self.assertEqual(mock_ctrlrs[1].magic, "magic2")
         self.assertTrue(tr.controller_destructors[mock_ctrlr_ref_name])
         expected_msg = "Controller module .* has already been registered."
         with self.assertRaisesRegexp(signals.ControllerError,
                                      expected_msg):
             tr.register_controller(mock_controller)
     finally:
         delattr(mock_controller, "ACTS_CONTROLLER_REFERENCE_NAME")
 def test_run_twice(self):
     """Verifies that:
     1. Repeated run works properly.
     2. The original configuration is not altered if a test controller
        module modifies configuration.
     """
     mock_test_config = dict(self.base_mock_test_config)
     tb_key = keys.Config.key_testbed.value
     mock_ctrlr_config_name = mock_controller.ACTS_CONTROLLER_CONFIG_NAME
     my_config = [{"serial": "xxxx",
                   "magic": "Magic1"}, {"serial": "xxxx",
                                        "magic": "Magic2"}]
     mock_test_config[tb_key][mock_ctrlr_config_name] = my_config
     tr = test_runner.TestRunner(mock_test_config, [('IntegrationTest',
                                                     None)])
     tr.run()
     self.assertFalse(tr.controller_registry)
     self.assertFalse(tr.controller_destructors)
     self.assertTrue(mock_test_config[tb_key][mock_ctrlr_config_name][0])
     tr.run()
     tr.stop()
     self.assertFalse(tr.controller_registry)
     self.assertFalse(tr.controller_destructors)
     results = tr.results.summary_dict()
     self.assertEqual(results["Requested"], 2)
     self.assertEqual(results["Executed"], 2)
     self.assertEqual(results["Passed"], 2)
Пример #6
0
 def _run_with_test_logic(self, func):
     if hasattr(MockTest, MockTest.TEST_LOGIC_ATTR):
         delattr(MockTest, MockTest.TEST_LOGIC_ATTR)
     setattr(MockTest, MockTest.TEST_LOGIC_ATTR, func)
     self.test_runner = test_runner.TestRunner(self.MOCK_CONFIG,
                                               self.MOCK_TEST_RUN_LIST)
     self.test_runner.run(MockTest)
Пример #7
0
 def test_register_controller_return_value(self):
     mock_test_config = dict(self.base_mock_test_config)
     tb_key = keys.Config.key_testbed.value
     mock_ctrlr_config_name = mock_controller.ACTS_CONTROLLER_CONFIG_NAME
     mock_test_config[tb_key][mock_ctrlr_config_name] = ["magic1", "magic2"]
     tr = test_runner.TestRunner(mock_test_config, self.mock_run_list)
     magic_devices = tr.register_controller(mock_controller)
     self.assertEqual(magic_devices[0].magic, "magic1")
     self.assertEqual(magic_devices[1].magic, "magic2")
Пример #8
0
    def test_class_name_pattern_question_mark(self, *_):
        class_names = ['test_class_1', 'test_class_12']
        pattern = 'test_class_?'
        tr = test_runner.TestRunner(self.base_mock_test_config,
                                    [(pattern, None)])

        test_classes = self.create_test_classes(class_names)
        tr.import_test_modules = Mock(return_value=test_classes)
        tr.run()
        self.assertTrue(test_classes[class_names[0]].called)
        self.assertFalse(test_classes[class_names[1]].called)
Пример #9
0
    def test_class_name_pattern_char_seq(self):
        class_names = ['test_class_1', 'test_class_2', 'test_class_3']
        pattern = 'test_class_[1357]'
        tr = test_runner.TestRunner(self.base_mock_test_config,
                                    [(pattern, None)])

        test_classes = self.create_test_classes(class_names)
        tr.import_test_modules = Mock(return_value=test_classes)
        tr.run()
        self.assertTrue(test_classes[class_names[0]].called)
        self.assertFalse(test_classes[class_names[1]].called)
        self.assertTrue(test_classes[class_names[2]].called)
Пример #10
0
    def test_class_logpath_contains_proper_directory(self, logger_mock, *_):
        expected_timestamp = '1970-01-01_00-00-00-00-000000'
        logger_mock.get_log_file_timestamp.return_value = expected_timestamp
        tr = test_runner.TestRunner(self.base_mock_test_config,
                                    [('MockTest', None)])
        mock_class = Mock()
        tr.import_test_modules = Mock(return_value={'MockTest': mock_class})
        tr.run()

        self.assertEqual(
            mock_class.call_args_list[0][0][0].log_path,
            os.path.join(self.tmp_dir, self.base_mock_test_config.testbed_name,
                         expected_timestamp))
Пример #11
0
 def test_register_optional_controller_third_party_dup_register(self):
     """Verifies correctness of registration, internal tally of controllers
     objects, and the right error happen when an optional controller module
     is registered twice.
     """
     mock_test_config = dict(self.base_mock_test_config)
     tb_key = keys.Config.key_testbed.value
     mock_ctrlr_config_name = mock_controller.ACTS_CONTROLLER_CONFIG_NAME
     mock_test_config[tb_key][mock_ctrlr_config_name] = ["magic1", "magic2"]
     tr = test_runner.TestRunner(mock_test_config, self.mock_run_list)
     tr.register_controller(mock_controller, required=False)
     expected_msg = "Controller module .* has already been registered."
     with self.assertRaisesRegexp(signals.ControllerError, expected_msg):
         tr.register_controller(mock_controller, required=False)
Пример #12
0
 def test_register_controller_no_get_info(self):
     mock_test_config = dict(self.base_mock_test_config)
     tb_key = keys.Config.key_testbed.value
     mock_ctrlr_config_name = mock_controller.ACTS_CONTROLLER_CONFIG_NAME
     mock_ref_name = "haha"
     get_info = getattr(mock_controller, "get_info")
     delattr(mock_controller, "get_info")
     try:
         mock_test_config[tb_key][mock_ctrlr_config_name] = [
             "magic1", "magic2"
         ]
         tr = test_runner.TestRunner(mock_test_config, self.mock_run_list)
         tr.register_controller(mock_controller)
         self.assertEqual(tr.results.controller_info, {})
     finally:
         setattr(mock_controller, "get_info", get_info)
Пример #13
0
 def test_register_controller_third_party_dup_register(self):
     """Verifies correctness of registration, internal tally of controllers
     objects, and the right error happen when a controller module is
     registered twice.
     """
     mock_test_config = dict(self.base_mock_test_config)
     tb_key = keys.Config.key_testbed.value
     mock_ctrlr_config_name = mock_controller.ACTS_CONTROLLER_CONFIG_NAME
     mock_test_config[tb_key][mock_ctrlr_config_name] = ["magic1", "magic2"]
     tr = test_runner.TestRunner(mock_test_config, self.mock_run_list)
     tr.register_controller(mock_controller)
     registered_name = "mock_controller"
     self.assertTrue(registered_name in tr.controller_registry)
     mock_ctrlrs = tr.controller_registry[registered_name]
     self.assertEqual(mock_ctrlrs[0].magic, "magic1")
     self.assertEqual(mock_ctrlrs[1].magic, "magic2")
     self.assertTrue(tr.controller_destructors[registered_name])
     expected_msg = "Controller module .* has already been registered."
     with self.assertRaisesRegexp(signals.ControllerError, expected_msg):
         tr.register_controller(mock_controller)
def _create_test_runner(parsed_config, test_identifiers):
    """Instantiates one test_runner.TestRunner object and register termination
    signal handlers that properly shut down the test_runner.TestRunner run.

    Args:
        parsed_config: A dict that is a set of configs for one
                       test_runner.TestRunner.
        test_identifiers: A list of tuples, each identifies what test case to
                          run on what test class.

    Returns:
        A test_runner.TestRunner object.
    """
    try:
        t = test_runner.TestRunner(parsed_config, test_identifiers)
    except:
        print("Failed to instantiate test runner, abort.")
        print(traceback.format_exc())
        sys.exit(1)
    # Register handler for termination signals.
    handler = config_parser.gen_term_signal_handler([t])
    signal.signal(signal.SIGTERM, handler)
    signal.signal(signal.SIGINT, handler)
    return t
Пример #15
0
 def test_register_optional_controller_no_config(self):
     tr = test_runner.TestRunner(self.base_mock_test_config,
                                 self.mock_run_list)
     self.assertIsNone(
         tr.register_controller(mock_controller, required=False))
Пример #16
0
 def test_register_controller_no_config(self):
     tr = test_runner.TestRunner(self.base_mock_test_config,
                                 self.mock_run_list)
     with self.assertRaisesRegexp(signals.ControllerError,
                                  "No corresponding config found for"):
         tr.register_controller(mock_controller)