steromano87/Woodpecker

View on GitHub
woodpecker/settings/coresettings.py

Summary

Maintainability
A
0 mins
Test Coverage
from configobj import ConfigObj

from woodpecker.misc.contrib.validate import Validator


class CoreSettings(ConfigObj):
    def __init__(self, **kwargs):
        super(CoreSettings, self).__init__(
            {
                'timing': {
                    'skip_think_time': False,
                    'max_think_time': 5.0,
                    'think_time_after_setup': 0.0,
                    'think_time_between_sequences': 0.0,
                    'think_time_before_teardown': 0.0,
                    'think_time_between_iterations': 0.0
                },
                'network': {
                    'controller_port': 7877,
                    'max_pending_connections': 4
                },
                'logging': {
                    'max_entries_before_flush': 10,
                    'max_interval_before_flush': 30.0,
                    'results_file': 'results.sqlite',
                    'sysmonitor_polling_interval': 5.0,
                    'use_compressed_logs': True,
                    'inline_log_format':
                        '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
                },
                'spawning': {
                    'spawning_mode': 'threads',
                    'pecker_handling_mode': 'passive',
                    'pecker_status_active_polling_interval': 0.1,
                    'spawners': [
                        'localhost'
                    ]
                }
            },
            interpolation=False,
            configspec=CoreSettings.default_settings_validator(),
            **kwargs
        )

        self.validator = Validator()

    @staticmethod
    def default_settings_validator():
        return ConfigObj({
            'timing': {
                'skip_think_time': 'boolean(default=False)',
                'max_think_time': 'float(min=0.0, default=5.0)',
                'think_time_after_setup': 'float(min=0.0, default=0.0)',
                'think_time_between_sequences': 'float(min=0.0, default=0.0)',
                'think_time_before_teardown': 'float(min=0.0, default=0.0)',
                'think_time_between_iterations': 'float(min=0.0, default=0.0)'
            },
            'network': {
                'controller_port': 'integer(min=1, max=65535 default=7878)',
                'max_pending_connections': 'integer(min=1, default=4)'
            },
            'logging': {
                'max_entries_before_flush': 'integer(min=0, default=30)',
                'max_interval_before_flush': 'float(min=0.0, default=30.0)',
                'results_file': "string(default='results.sqlite')",
                'sysmonitor_polling_interval': 'float(min=0.0, default=5.0)',
                'use_compressed_logs': 'boolean(default=True)',
                'inline_log_format':
                    "string(default='%(asctime)s - %(name)s - "
                    "%(levelname)s - %(message)s')"
            },
            'spawning': {
                'spawning_mode': "option('threads', 'processes', "
                                 "'greenlets', default='threads')",
                'pecker_handling_mode': "option('passive', 'active', "
                                        "default='passive')",
                'pecker_status_active_polling_interval':
                    'float(min=0.0, default=0.1)',
                'spawners': "string_list(min=1, default=['localhost'])"
            }
        }, interpolation=False)