Example #1
0
def test_config_default_report():
    jobs, _ = config.parse_config_string("""
defaults:
  onFailure:
    report:
      mail:
        from: [email protected]
        to: [email protected]
        smtpHost: 127.0.0.1
        smtpPort: 10025

jobs:
  - name: test-03
    command: foo
    schedule:
      minute: "*"
    captureStderr: true
                       """)
    assert len(jobs) == 1
    job = jobs[0]
    assert job.onFailure == ({
        "report": {
            "mail": {
                "from":
                "*****@*****.**",
                "smtpHost":
                "127.0.0.1",
                "smtpPort":
                10025,
                "to":
                "*****@*****.**",
                "body":
                (config.DEFAULT_CONFIG["onFailure"]["report"]["mail"]["body"]),
                "subject": (config.DEFAULT_CONFIG["onFailure"]["report"]
                            ["mail"]["subject"]),
                "username":
                None,
                "password": {
                    "fromEnvVar": None,
                    "fromFile": None,
                    "value": None,
                },
                "tls":
                False,
                "starttls":
                False,
            },
            "sentry": (config.DEFAULT_CONFIG["onFailure"]["report"]["sentry"]),
        },
        "retry": {
            "backoffMultiplier": 2,
            "initialDelay": 1,
            "maximumDelay": 300,
            "maximumRetries": 0,
        },
    })
Example #2
0
def test_config_default_report_override():
    # even if the default says send email on error, it should be possible for
    # specific jobs to override the default and disable sending email.
    jobs = config.parse_config_string('''
defaults:
  onFailure:
    report:
      mail:
        from: [email protected]
        to: [email protected]
        smtpHost: 127.0.0.1
        smtpPort: 10025

jobs:
  - name: test-03
    command: foo
    schedule:
      minute: "*"
    captureStderr: true
    onFailure:
      report:
        mail:
          to:
          from:
                       ''')
    assert len(jobs) == 1
    job = jobs[0]
    assert job.onFailure == ({
        'report': {
            'mail': {
                'from':
                None,
                'smtpHost':
                '127.0.0.1',
                'smtpPort':
                10025,
                'to':
                None,
                'body':
                (config.DEFAULT_CONFIG['onFailure']['report']['mail']['body']),
                'subject': (config.DEFAULT_CONFIG['onFailure']['report']
                            ['mail']['subject']),
            },
            'sentry': (config.DEFAULT_CONFIG['onFailure']['report']['sentry']),
        },
        'retry': {
            'backoffMultiplier': 2,
            'initialDelay': 1,
            'maximumDelay': 300,
            'maximumRetries': 0
        }
    })
Example #3
0
def test_config_default_report_override():
    # even if the default says send email on error, it should be possible for
    # specific jobs to override the default and disable sending email.
    jobs, _ = config.parse_config_string("""
defaults:
  onFailure:
    report:
      mail:
        from: [email protected]
        to: [email protected]
        smtpHost: 127.0.0.1
        smtpPort: 10025

jobs:
  - name: test-03
    command: foo
    schedule:
      minute: "*"
    captureStderr: true
    onFailure:
      report:
        mail:
          to:
          from:
                       """)
    assert len(jobs) == 1
    job = jobs[0]
    assert job.onFailure == ({
        "report": {
            "mail": {
                "from":
                None,
                "smtpHost":
                "127.0.0.1",
                "smtpPort":
                10025,
                "to":
                None,
                "body":
                (config.DEFAULT_CONFIG["onFailure"]["report"]["mail"]["body"]),
                "subject": (config.DEFAULT_CONFIG["onFailure"]["report"]
                            ["mail"]["subject"]),
            },
            "sentry": (config.DEFAULT_CONFIG["onFailure"]["report"]["sentry"]),
        },
        "retry": {
            "backoffMultiplier": 2,
            "initialDelay": 1,
            "maximumDelay": 300,
            "maximumRetries": 0,
        },
    })
Example #4
0
def test_config_default_report():
    jobs = config.parse_config_string('''
defaults:
  onFailure:
    report:
      mail:
        from: [email protected]
        to: [email protected]
        smtpHost: 127.0.0.1
        smtpPort: 10025

jobs:
  - name: test-03
    command: foo
    schedule:
      minute: "*"
    captureStderr: true
                       ''')
    assert len(jobs) == 1
    job = jobs[0]
    assert job.onFailure == ({
        'report': {
            'mail': {
                'from':
                '*****@*****.**',
                'smtpHost':
                '127.0.0.1',
                'smtpPort':
                10025,
                'to':
                '*****@*****.**',
                'body':
                (config.DEFAULT_CONFIG['onFailure']['report']['mail']['body']),
                'subject': (config.DEFAULT_CONFIG['onFailure']['report']
                            ['mail']['subject']),
            },
            'sentry': (config.DEFAULT_CONFIG['onFailure']['report']['sentry']),
        },
        'retry': {
            'backoffMultiplier': 2,
            'initialDelay': 1,
            'maximumDelay': 300,
            'maximumRetries': 0
        }
    })
Example #5
0
def test_config_default_report():
    jobs = config.parse_config_string('''
defaults:
  onFailure:
    report:
      mail:
        from: [email protected]
        to: [email protected]
        smtpHost: 127.0.0.1
        smtpPort: 10025

jobs:
  - name: test-03
    command: foo
    schedule:
      minute: "*"
    captureStderr: true
                       ''')
    assert len(jobs) == 1
    job = jobs[0]
    assert job.onFailure == ({
        'report': {
            'mail': {
                'from': '*****@*****.**',
                'smtpHost': '127.0.0.1',
                'smtpPort': 10025,
                'smtp_host': None,
                'smtp_port': 25,
                'to': '*****@*****.**'
            },
            'sentry': {
                'dsn': {
                    'fromEnvVar': None,
                    'fromFile': None,
                    'value': None
                }
            }
        },
        'retry': {
            'backoffMultiplier': 2,
            'initialDelay': 1,
            'maximumDelay': 300,
            'maximumRetries': 0
        }
    })
Example #6
0
    def __init__(self, config_arg: Optional[str], *,
                 config_yaml: Optional[str]=None
                 ) -> None:
        # list of cron jobs we /want/ to run
        self.cron_jobs = OrderedDict()  # type: Dict[str, JobConfig]
        # list of cron jobs already running
        # name -> list of RunningJob
        self.running_jobs = \
            defaultdict(list)  # type: Dict[str, List[RunningJob]]
        self.config_arg = config_arg
        if config_arg is not None:
            self.update_config()
        if config_yaml is not None:
            # config_yaml is for unit testing
            config = parse_config_string(config_yaml)
            self.cron_jobs = OrderedDict((job.name, job) for job in config)

        self._wait_for_running_jobs_task = None  # type: Optional[asyncio.Task]
        self._stop_event = asyncio.Event()
        self._jobs_running = asyncio.Event()
        self.retry_state = {}  # type: Dict[str, JobRetryState]
Example #7
0
def test_empty_config1():
    jobs = config.parse_config_string('')
    assert len(jobs) == 0
Example #8
0
def test_empty_config1():
    jobs, web_config = config.parse_config_string("")
    assert len(jobs) == 0
    assert web_config is None