Beispiel #1
0
    def loadTestsFromFile(self, filename):
        with open(filename) as stream:
            manifest = yaml.load(stream)
        pkg_directory = os.path.dirname(filename)

        base_cloader = simple_cloader.SimpleClassLoader(self._metadata_dir)
        cloader = ManifestClassLoader(base_cloader, pkg_directory)
        system_objects.register(cloader, pkg_directory)
        cloader.import_class(BaseTestCase)

        package_classes = manifest.get("Classes", {})
        for class_name, class_file in package_classes.iteritems():
            class_file = os.path.join(pkg_directory, class_file)
            with open(class_file) as stream:
                class_definition = yaml.load(stream)

            if not self._is_test_suite(class_definition):
                yield None

            test_object = self._get_test_object(class_name, class_file)

            test_cases = class_definition.get("Workflow", {})
            for case_name, _ in test_cases.iteritems():
                yield MUnitTestCase(cloader, test_object, case_name)

        yield None
Beispiel #2
0
    def loadTestsFromFile(self, filename):
        with open(filename) as stream:
            manifest = yaml.load(stream)
        pkg_directory = os.path.dirname(filename)

        base_cloader = simple_cloader.SimpleClassLoader(self._metadata_dir)
        cloader = ManifestClassLoader(base_cloader, pkg_directory)
        system_objects.register(cloader, pkg_directory)
        cloader.import_class(BaseTestCase)

        package_classes = manifest.get('Classes', {})
        for class_name, class_file in package_classes.iteritems():
            class_file = os.path.join(pkg_directory, class_file)
            with open(class_file) as stream:
                class_definition = yaml.load(stream)

            if not self._is_test_suite(class_definition):
                yield None

            test_object = self._get_test_object(class_name, class_file)

            test_cases = class_definition.get('Workflow', {})
            for case_name, _ in test_cases.iteritems():
                yield MUnitTestCase(cloader, test_object, case_name)

        yield None
Beispiel #3
0
    def handle_task(context, task):
        s_task = token_sanitizer.TokenSanitizer().sanitize(task)
        LOG.info(_('Starting processing task: {task_desc}').format(
            task_desc=anyjson.dumps(s_task)))

        env = environment.Environment()
        env.token = task['token']
        env.tenant_id = task['tenant_id']
        LOG.debug('Processing new task: {0}'.format(task))
        try:
            with package_loader.ApiPackageLoader(env.token, env.tenant_id) as \
                    pkg_loader:
                class_loader = package_class_loader.PackageClassLoader(
                    pkg_loader)
                system_objects.register(class_loader, pkg_loader)

                exc = executor.MuranoDslExecutor(class_loader, env)
                obj = exc.load(task['model'])

                try:
                    if obj is not None:
                        obj.type.invoke('deploy', exc, obj, {})
                except Exception as e:
                    reporter = status_reporter.StatusReporter()
                    reporter.initialize(obj)
                    reporter.report_error(obj, '{0}'.format(e))
                finally:
                    s_res = results_serializer.serialize(obj, exc)
                    rpc.api().process_result(s_res)
        except Exception as e:
            # TODO(gokrokve) report error here
            # TODO(slagun) code below needs complete rewrite and redesign
            msg_env = Environment(task['model']['Objects']['?']['id'])
            reporter = status_reporter.StatusReporter()
            reporter.initialize(msg_env)
            reporter.report_error(msg_env, '{0}'.format(e))
            rpc.api().process_result(task['model'])