Exemple #1
0
    def test_create_type_context(self):
        mock_manager = mock_context_manager.MockContextManager()
        mock_murano_class = mock.MagicMock(spec=murano_type.MuranoClass)
        mock_murano_class.name = FIXTURE_CLASS
        original_function = mock.MagicMock(spec=specs.FunctionDefinition)
        original_function.is_method = True
        original_function.name = FIXTURE_FUNC
        original_context = contexts.Context()
        p = mock.patch("inspect.getargspec", new=mock.MagicMock())
        p.start()
        original_context.register_function(original_function)
        mock_murano_class.context = original_context
        p.stop()

        mock_function = mock.MagicMock(spec=specs.FunctionDefinition)
        mock_function.is_method = True
        mock_function.name = FIXTURE_FUNC

        mock_manager.class_mock_ctx[FIXTURE_CLASS] = [mock_function]

        result_context = mock_manager.create_type_context(mock_murano_class)
        all_functions = result_context.collect_functions(FIXTURE_FUNC)

        # Mock function should go first, but result context should contain both
        self.assertIs(mock_function, _get_fd(all_functions[0]))
        self.assertIs(original_function, _get_fd(all_functions[1]))
Exemple #2
0
    def setUp(self):
        super(TestStaticActionEndpoint, self).setUp()

        self.action = {
            'method': 'TestAction',
            'args': {
                'name': 'foo'
            },
            'class_name': 'TestClass',
            'pkg_name': 'TestPackage',
            'class_version': '=0',
            'object_id': 'test_object_id'
        }
        self.task = {
            'action': self.action,
            'model': {
                'SystemData': {
                    'TrustId': 'test_trust_id'
                }
            },
            'token': 'test_token',
            'project_id': 'test_tenant',
            'user_id': 'test_user',
            'id': 'test_task_id'
        }
        context_manager = mock_context_manager.MockContextManager()
        self.context = context_manager.create_root_context(
            constants.RUNTIME_VERSION_1_5)
Exemple #3
0
    def test_create_root_context(self):
        mock_manager = mock_context_manager.MockContextManager()
        ctx_to_check = mock_manager.create_root_context(
            constants.RUNTIME_VERSION_1_1)
        inject_count = ctx_to_check.collect_functions('inject')
        with_original_count = ctx_to_check.collect_functions('withOriginal')

        self.assertEqual(2, len(inject_count[0]))
        self.assertEqual(1, len(with_original_count[0]))
    def run_tests(self):
        exit_code = 0
        provided_pkg_name = self.args.package
        load_packages_from = self.args.load_packages_from
        tests_to_run = self.args.tests

        ks_opts = self._validate_keystone_opts(self.args)

        client = ks_client.Client(**ks_opts)
        test_session = execution_session.ExecutionSession()
        test_session.token = client.auth_token
        test_session.project_id = client.project_id

        # Replace location of loading packages with provided from command line.
        if load_packages_from:
            cfg.CONF.packages_opts.load_packages_from = load_packages_from
        with package_loader.CombinedPackageLoader(test_session) as pkg_loader:
            engine.get_plugin_loader().register_in_loader(pkg_loader)

            package = self._load_package(pkg_loader, provided_pkg_name)
            class_to_methods = self._get_test_cases_by_classes(package)
            run_set = self._get_methods_to_run(package, tests_to_run,
                                               class_to_methods)
            if run_set:
                LOG.debug('Starting test execution.')
            else:
                msg = _('No tests found for execution.')
                LOG.error(msg)
                self.error(msg)

            for pkg_class, test_cases in six.iteritems(run_set):
                for m in test_cases:
                    # Create new executor for each test case to provide
                    # pure test environment
                    dsl_executor = executor.MuranoDslExecutor(
                        pkg_loader, mock_context_manager.MockContextManager(),
                        test_session)
                    obj = package.find_class(pkg_class, False).new(
                        None, dsl_executor.object_store, dsl_executor)(None)
                    self._call_service_method('setUp', dsl_executor, obj)
                    obj.type.methods[m].usage = 'Action'

                    test_session.start()
                    try:
                        obj.type.invoke(m, dsl_executor, obj, (), {})
                        LOG.debug('\n.....{0}.{1}.....OK'.format(
                            obj.type.name, m))
                        self._call_service_method('tearDown', dsl_executor,
                                                  obj)
                    except Exception:
                        LOG.exception('\n.....{0}.{1}.....FAILURE\n'
                                      ''.format(obj.type.name, m))
                        exit_code = 1
                    finally:
                        test_session.finish()
        return exit_code
Exemple #5
0
    def run_tests(self):
        exit_code = 0
        provided_pkg_name = self.args.package
        load_packages_from = self.args.load_packages_from
        tests_to_run = self.args.tests

        ks_opts = self._validate_keystone_opts(self.args)

        client = ks_client.Client(**ks_opts)
        test_session = execution_session.ExecutionSession()
        test_session.token = client.auth_token
        test_session.project_id = client.project_id

        # Replace location of loading packages with provided from command line.
        if load_packages_from:
            cfg.CONF.engine.load_packages_from = load_packages_from
        with package_loader.CombinedPackageLoader(test_session) as pkg_loader:
            engine.get_plugin_loader().register_in_loader(pkg_loader)

            package = self._load_package(pkg_loader, provided_pkg_name)
            class_to_methods = self._get_test_cases_by_classes(package)
            run_set = self._get_methods_to_run(package, tests_to_run,
                                               class_to_methods)
            max_length = 0
            num_tests = 0
            for pkg_class, test_cases in six.iteritems(run_set):
                for m in test_cases:
                    max_length = max(max_length, len(pkg_class) + len(m) + 1)
                num_tests += len(test_cases)
            max_length += 3

            if run_set:
                LOG.debug('Starting test execution.')
                self.message('About to execute {0} tests(s)'.format(num_tests))
            else:
                msg = _('No tests found for execution.')
                LOG.error(msg)
                self.error(msg)

            run_count = 0
            error_count = 0
            started = timeutils.utcnow()
            for pkg_class, test_cases in six.iteritems(run_set):
                for m in test_cases:
                    # Create new executor for each test case to provide
                    # pure test environment
                    dsl_executor = executor.MuranoDslExecutor(
                        pkg_loader, mock_context_manager.MockContextManager(),
                        test_session)
                    obj = dsl_executor.object_store.load(
                        {},
                        None,
                        default_type=package.find_class(pkg_class, False))

                    test_name = "{0}.{1}".format(obj.type.name, m)
                    dots_number = max_length - len(test_name)
                    msg = "{0} {1} ".format(test_name, '.' * dots_number)
                    sys.stdout.write(msg)
                    sys.stdout.flush()
                    self._call_service_method('setUp', dsl_executor, obj)
                    obj.type.methods[m].usage = 'Action'
                    test_session.start()
                    try:
                        run_count += 1
                        dsl_executor.run(obj.type, m, obj, (), {})
                        self._call_service_method('tearDown', dsl_executor,
                                                  obj)
                        msg = '{0}{1}{2}\n'.format(OK_COLOR, 'OK', END_COLOR)
                        LOG.debug('Test {0} successful'.format(test_name))
                        sys.stdout.write(msg)
                        sys.stdout.flush()
                    except Exception as e:
                        error_count += 1
                        msg = ''.join((FAIL_COLOR, 'FAIL!', END_COLOR, '\n'))
                        sys.stdout.write(msg)
                        if isinstance(e, dsl_exception.MuranoPlException):
                            tb = e.format()
                        else:
                            tb = traceback.format_exc()

                        sys.stdout.write(''.join(
                            (FAIL_COLOR, tb, END_COLOR, '\n')))
                        sys.stdout.flush()

                        LOG.exception('Test {0} failed'.format(test_name))
                        exit_code = 1
                    finally:
                        test_session.finish()
            completed = timeutils.utcnow()
            self.message('Executed {0} tests in {1} seconds: '
                         '{2} passed, '
                         '{3} failed'.format(
                             run_count,
                             timeutils.delta_seconds(started, completed),
                             run_count - error_count, error_count))
        return exit_code
Exemple #6
0
 def setUp(self):
     super(TestSchemaEndpoint, self).setUp()
     context_manager = mock_context_manager.MockContextManager()
     self.context = context_manager.create_root_context(
         constants.RUNTIME_VERSION_1_5)