From 3bf77ec3cbe213d92140e0c7f49c7f750c5dc620 Mon Sep 17 00:00:00 2001 From: Robert Resch Date: Fri, 8 Apr 2022 22:57:24 +0200 Subject: [PATCH] improve start stop test --- bumper/__init__.py | 10 ++++------ tests/test_init.py | 46 ++++++++++++++++++---------------------------- 2 files changed, 22 insertions(+), 34 deletions(-) diff --git a/bumper/__init__.py b/bumper/__init__.py index 732f038..afdc0be 100644 --- a/bumper/__init__.py +++ b/bumper/__init__.py @@ -125,6 +125,7 @@ async def start(): # Start web servers await web_server.start() + bumperlog.info("Starting Bumper successful") # Start maintenance while not shutting_down: asyncio.create_task(maintenance()) @@ -140,15 +141,12 @@ async def shutdown(): try: bumperlog.info("Shutting down") + await mqtt_helperbot.disconnect() await web_server.shutdown() + while mqtt_server.state == "starting": + await asyncio.sleep(0.1) if mqtt_server.state == "started": await mqtt_server.shutdown() - elif mqtt_server.state == "starting": - while mqtt_server.state == "starting": - await asyncio.sleep(0.1) - if mqtt_server.state == "started": - await mqtt_server.shutdown() - await mqtt_helperbot.disconnect() if xmpp_server.server: if xmpp_server.server._serving: xmpp_server.server.close() diff --git a/tests/test_init.py b/tests/test_init.py index 1be7449..28bd7f0 100644 --- a/tests/test_init.py +++ b/tests/test_init.py @@ -1,6 +1,7 @@ import asyncio import os +import pytest from testfixtures import LogCapture import bumper @@ -8,46 +9,35 @@ from bumper import strtobool def test_strtobool(): - assert strtobool("t") == True - assert strtobool("f") == False - assert strtobool(0) == False + assert strtobool("t") is True + assert strtobool("f") is False + assert strtobool(0) is False -async def test_start_stop(): +@pytest.mark.parametrize("debug", [False, True]) +async def test_start_stop(debug: bool): with LogCapture() as l: if os.path.exists("tests/tmp.db"): os.remove("tests/tmp.db") # Remove existing db + if debug: + bumper.bumper_debug = True + asyncio.create_task(bumper.start()) await asyncio.sleep(0.1) l.check_present(("bumper", "INFO", "Starting Bumper")) + while True: + try: + l.check_present(("bumper", "INFO", "Starting Bumper successful")) + break + except AssertionError: + pass + await asyncio.sleep(0.1) + l.clear() await bumper.shutdown() l.check_present( ("bumper", "INFO", "Shutting down"), ("bumper", "INFO", "Shutdown complete") ) - assert bumper.shutting_down == True - - -async def test_start_stop_debug(): - with LogCapture() as l: - if os.path.exists("tests/tmp.db"): - os.remove("tests/tmp.db") # Remove existing db - - bumper.bumper_listen = "0.0.0.0" - bumper.bumper_debug = True - asyncio.create_task(bumper.start()) - - await asyncio.sleep(0.1) - while bumper.mqtt_server.state == "starting": - await asyncio.sleep(0.1) - l.check_present(("bumper", "INFO", "Starting Bumper")) - l.clear() - - asyncio.create_task(bumper.shutdown()) - await asyncio.sleep(0.1) - l.check_present( - ("bumper", "INFO", "Shutting down"), ("bumper", "INFO", "Shutdown complete") - ) - assert bumper.shutting_down == True + assert bumper.shutting_down is True