Example #1
0
    def get_options(cls):
        start_stop_signature = Or(None, validate_func("env"),
                                  validate_func("env", "result"))

        return {
            "name":
            And(str, lambda s: len(s) <= MAX_TEST_NAME_LENGTH),
            ConfigOption("description", default=None):
            Or(str, None),
            ConfigOption("environment", default=[]): [Resource],
            ConfigOption("before_start", default=None):
            start_stop_signature,
            ConfigOption("after_start", default=None):
            start_stop_signature,
            ConfigOption("before_stop", default=None):
            start_stop_signature,
            ConfigOption("after_stop", default=None):
            start_stop_signature,
            ConfigOption("test_filter"):
            filtering.BaseFilter,
            ConfigOption("test_sorter"):
            ordering.BaseSorter,
            ConfigOption("stdout_style"):
            test_styles.Style,
            ConfigOption("tags", default=None):
            Or(None, Use(tagging.validate_tag_value)),
        }
Example #2
0
    def configuration_schema(self):
        """
        Schema for options validation and assignment of default values.
        """
        def iterable_suites(obj):
            """Create an iterable suites object."""
            suites = [obj
                      ] if not isinstance(obj, collections.Iterable) else obj
            for suite in suites:
                set_testsuite_testcases(suite)
            return suites

        overrides = {
            'suites':
            Use(iterable_suites),
            ConfigOption('environment', default=[]): [Resource],
            ConfigOption('before_start', default=None):
            validate_func(['env']),
            ConfigOption('after_start', default=None):
            validate_func(['env']),
            ConfigOption('before_stop', default=None):
            validate_func(['env', 'result']),
            ConfigOption('after_stop', default=None):
            validate_func(['env', 'result']),
            ConfigOption('result', default=Result):
            lambda r: isinstance(r(), Result),
        }
        return self.inherit_schema(overrides, super(MultiTestConfig, self))
Example #3
0
    def get_options(cls):
        start_stop_signature = Or(
            None,
            validate_func('env'),
            validate_func('env', 'result'),
        )

        return {
            'suites':
            Use(iterable_suites),
            ConfigOption('result', default=Result):
            is_subclass(Result),
            ConfigOption('before_start', default=None):
            start_stop_signature,
            ConfigOption('after_start', default=None):
            start_stop_signature,
            ConfigOption('before_stop', default=None):
            start_stop_signature,
            ConfigOption('after_stop', default=None):
            start_stop_signature,
            ConfigOption('thread_pool_size', default=0):
            int,
            ConfigOption('max_thread_pool_size', default=10):
            int,
            ConfigOption('part', default=None):
            Or(
                None,
                And((int, ), lambda tp: len(tp) == 2 and 0 <= tp[0] < tp[1] and
                    tp[1] > 1))
        }
Example #4
0
    def set_reschedule_check(self, check_reschedule):
        """
        Sets callable with custom rules to determine if a task should be
        rescheduled. It must accept the pool object and the task result,
        and based on these it returns if the task should be rescheduled
        (i.e due to a known rare system error).

        :param check_reschedule: Custom callable for task reschedule.
        :type check_reschedule: ``callable`` that takes
          ``pool``, ``task_result`` arguments.
        :return: True if Task should be rescheduled else False.
        :rtype: ``bool``
        """
        validate_func('pool', 'task_result')(check_reschedule)
        self.should_reschedule = check_reschedule
Example #5
0
    def get_options(cls):
        start_stop_signature = Or(
            None,
            validate_func('env'),
            validate_func('env', 'result'),
        )

        return {
            'suites': Use(iterable_suites),
            ConfigOption('environment', default=[]): [Resource],
            ConfigOption('before_start', default=None): start_stop_signature,
            ConfigOption('after_start', default=None): start_stop_signature,
            ConfigOption('before_stop', default=None): start_stop_signature,
            ConfigOption('after_stop', default=None): start_stop_signature,
            ConfigOption('result', default=Result): is_subclass(Result)
        }
Example #6
0
def validate_custom_func(check_rerun):
    """
    Validate the callable which determines if a task should be rerun.
    It must accept pool object (``pool``) and task result (``task_result``).

    :param check_rerun: Custom callable for task rerun or reschedule.
    :type check_rerun: ``callable``
    """
    if validate_func("pool", "task_result")(check_rerun):
        return check_rerun
    else:
        raise ValueError("Not a valid function for checking rerun")
Example #7
0
    def get_options(cls):
        start_stop_signature = Or(
            None,
            validate_func('env'),
            validate_func('env', 'result'),
        )

        return {
            # 'name': And(str, lambda s: s.count(' ') == 0),
            'name':
            str,
            ConfigOption('description', default=None):
            str,
            ConfigOption('environment', default=[]): [Resource],
            ConfigOption('before_start', default=None):
            start_stop_signature,
            ConfigOption('after_start', default=None):
            start_stop_signature,
            ConfigOption('before_stop', default=None):
            start_stop_signature,
            ConfigOption('after_stop', default=None):
            start_stop_signature,
            ConfigOption('test_filter',
                         default=filtering.Filter(),
                         block_propagation=False):
            filtering.BaseFilter,
            ConfigOption('test_sorter',
                         default=ordering.NoopSorter(),
                         block_propagation=False):
            ordering.BaseSorter,
            ConfigOption('stdout_style',
                         default=defaults.STDOUT_STYLE,
                         block_propagation=False):
            test_styles.Style,
            ConfigOption('tags', default=None):
            Or(None, Use(tagging.validate_tag_value))
        }