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()
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()
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()
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()
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()
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", ])
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()
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()
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()
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
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
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
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")
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
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()))
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()))
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()))
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()))