def test_no_suspend_if_matching(suspension_file):
    autosuspend.main([
        '-c',
        os.path.join(ROOT, 'test_data', 'dont_suspend.conf'), '-r', '10', '-l'
    ])

    assert not suspension_file.exists()
def test_suspend(suspension_file):
    autosuspend.main([
        '-c',
        os.path.join(ROOT, 'test_data', 'would_suspend.conf'), '-r', '10', '-l'
    ])

    assert suspension_file.exists()
Exemplo n.º 3
0
def test_woke_up_file_removed(tmpdir, rapid_sleep):
    tmpdir.join(WOKE_UP_FILE).ensure()
    autosuspend.main([
        '-c',
        configure_config('dont_suspend.conf', tmpdir).strpath,
        '-r',
        '5',
        '-l'])
    assert not tmpdir.join(WOKE_UP_FILE).check()
Exemplo n.º 4
0
def test_suspend(tmpdir, rapid_sleep):
    autosuspend.main([
        '-c',
        configure_config('would_suspend.conf', tmpdir).strpath,
        '-r',
        '10',
        '-l'])

    assert tmpdir.join(SUSPENSION_FILE).check()
Exemplo n.º 5
0
def test_no_suspend_if_matching(tmpdir, rapid_sleep):
    autosuspend.main([
        '-c',
        configure_config('dont_suspend.conf', tmpdir).strpath,
        '-r',
        '10',
        '-l'])

    assert not tmpdir.join(SUSPENSION_FILE).check()
Exemplo n.º 6
0
def test_hook_success(tmpdir, datadir):
    autosuspend.main([
        "-c",
        configure_config("would_suspend.conf", datadir, tmpdir).strpath,
        "-d",
        "presuspend",
    ])

    assert tmpdir.join(WOKE_UP_FILE).check()
Exemplo n.º 7
0
def test_error_no_checks_configured(tmpdir, datadir) -> None:
    with pytest.raises(autosuspend.ConfigurationError):
        autosuspend.main([
            "-c",
            configure_config("no_checks.conf", datadir, tmpdir).strpath,
            "-d",
            "daemon",
            "-r",
            "10",
        ])
Exemplo n.º 8
0
def test_woke_up_file_removed(tmpdir, datadir, rapid_sleep) -> None:
    tmpdir.join(WOKE_UP_FILE).ensure()
    autosuspend.main([
        "-c",
        configure_config("dont_suspend.conf", datadir, tmpdir).strpath,
        "-d",
        "daemon",
        "-r",
        "5",
    ])
    assert not tmpdir.join(WOKE_UP_FILE).check()
Exemplo n.º 9
0
def test_no_suspend_if_matching(datadir, tmpdir, rapid_sleep) -> None:
    autosuspend.main([
        "-c",
        configure_config("dont_suspend.conf", datadir, tmpdir).strpath,
        "-d",
        "daemon",
        "-r",
        "10",
    ])

    assert not tmpdir.join(SUSPENSION_FILE).check()
Exemplo n.º 10
0
def test_suspend(tmpdir, datadir, rapid_sleep) -> None:
    autosuspend.main([
        "-c",
        configure_config("would_suspend.conf", datadir, tmpdir).strpath,
        "-d",
        "daemon",
        "-r",
        "10",
    ])

    assert tmpdir.join(SUSPENSION_FILE).check()
Exemplo n.º 11
0
def test_notify_call(tmpdir, rapid_sleep):
    autosuspend.main([
        '-c',
        configure_config('notify.conf', tmpdir).strpath,
        '-r',
        '10',
        '-l'])

    assert tmpdir.join(SUSPENSION_FILE).check()
    assert tmpdir.join(NOTIFY_FILE).check()
    assert len(tmpdir.join(NOTIFY_FILE).read()) == 0
Exemplo n.º 12
0
def test_notify_call(tmpdir, datadir, rapid_sleep) -> None:
    autosuspend.main([
        "-c",
        configure_config("notify.conf", datadir, tmpdir).strpath,
        "-d",
        "daemon",
        "-r",
        "10",
    ])

    assert tmpdir.join(SUSPENSION_FILE).check()
    assert tmpdir.join(NOTIFY_FILE).check()
    assert len(tmpdir.join(NOTIFY_FILE).read()) == 0
Exemplo n.º 13
0
def test_temporary_errors_logged(tmpdir, rapid_sleep, caplog):
    autosuspend.main([
        '-c',
        configure_config('temporary_error.conf', tmpdir).strpath,
        '-r',
        '10',
        '-l'])

    warnings = [r for r in caplog.record_tuples
                if r[1] == logging.WARNING and
                'XPath' in r[2] and
                'failed' in r[2]]

    assert len(warnings) > 0
Exemplo n.º 14
0
def test_loop_defaults(tmpdir, datadir, mocker) -> None:
    loop = mocker.patch("autosuspend.loop")
    loop.side_effect = StopIteration
    with pytest.raises(StopIteration):
        autosuspend.main([
            "-c",
            configure_config("minimal.conf", datadir, tmpdir).strpath,
            "-d",
            "daemon",
            "-r",
            "10",
        ])
    args, kwargs = loop.call_args
    assert args[1] == 60
    assert kwargs["run_for"] == 10
    assert kwargs["woke_up_file"] == ("/var/run/autosuspend-just-woke-up")
Exemplo n.º 15
0
def test_temporary_errors_logged(tmpdir, datadir, rapid_sleep, caplog) -> None:
    autosuspend.main([
        "-c",
        configure_config("temporary_error.conf", datadir, tmpdir).strpath,
        "-d",
        "daemon",
        "-r",
        "10",
    ])

    warnings = [
        r for r in caplog.record_tuples
        if r[1] == logging.WARNING and "XPath" in r[2] and "failed" in r[2]
    ]

    assert len(warnings) > 0
Exemplo n.º 16
0
def test_hook_call_wakeup(tmpdir, datadir):
    # configure when to wake up
    now = datetime.datetime.now(datetime.timezone.utc)
    wakeup_at = now + datetime.timedelta(hours=4)
    with tmpdir.join("wakeup_time").open("w") as out:
        out.write(str(wakeup_at.timestamp()))

    autosuspend.main([
        "-c",
        configure_config("would_schedule.conf", datadir, tmpdir).strpath,
        "-d",
        "presuspend",
    ])

    assert tmpdir.join(SCHEDULED_FILE).check()
    assert int(tmpdir.join(SCHEDULED_FILE).read()) == int(
        round((wakeup_at - datetime.timedelta(seconds=30)).timestamp()))
Exemplo n.º 17
0
def test_notify_call_wakeup(tmpdir):
    # configure when to wake up
    now = datetime.datetime.now(datetime.timezone.utc)
    wakeup_at = now + datetime.timedelta(hours=4)
    with tmpdir.join('wakeup_time').open('w') as out:
        out.write(str(wakeup_at.timestamp()))

    autosuspend.main([
        '-c',
        configure_config('notify_wakeup.conf', tmpdir).strpath,
        '-r',
        '10',
        '-l'])

    assert tmpdir.join(SUSPENSION_FILE).check()
    assert tmpdir.join(NOTIFY_FILE).check()
    assert int(tmpdir.join(NOTIFY_FILE).read()) == int(
        round((wakeup_at - datetime.timedelta(seconds=10)).timestamp()))
Exemplo n.º 18
0
def test_wakeup_scheduled(tmpdir, rapid_sleep):
    # configure when to wake up
    now = datetime.datetime.now(datetime.timezone.utc)
    wakeup_at = now + datetime.timedelta(hours=4)
    with tmpdir.join('wakeup_time').open('w') as out:
        out.write(str(wakeup_at.timestamp()))

    autosuspend.main([
        '-c',
        configure_config('would_schedule.conf', tmpdir).strpath,
        '-r',
        '10',
        '-l'])

    assert tmpdir.join(SUSPENSION_FILE).check()
    assert tmpdir.join(SCHEDULED_FILE).check()
    assert int(tmpdir.join(SCHEDULED_FILE).read()) == int(
        round((wakeup_at - datetime.timedelta(seconds=30)).timestamp()))
Exemplo n.º 19
0
def test_notify_call_wakeup(tmpdir, datadir, rapid_sleep) -> None:
    # configure when to wake up
    now = datetime.datetime.now(datetime.timezone.utc)
    wakeup_at = now + datetime.timedelta(hours=4)
    with tmpdir.join("wakeup_time").open("w") as out:
        out.write(str(wakeup_at.timestamp()))

    autosuspend.main([
        "-c",
        configure_config("notify_wakeup.conf", datadir, tmpdir).strpath,
        "-d",
        "daemon",
        "-r",
        "10",
    ])

    assert tmpdir.join(SUSPENSION_FILE).check()
    assert tmpdir.join(NOTIFY_FILE).check()
    assert int(tmpdir.join(NOTIFY_FILE).read()) == int(
        round((wakeup_at - datetime.timedelta(seconds=10)).timestamp()))