improve start stop test

This commit is contained in:
Robert Resch 2022-04-08 22:57:24 +02:00
parent 3de058ba77
commit 3bf77ec3cb
2 changed files with 22 additions and 34 deletions

View file

@ -125,6 +125,7 @@ async def start():
# Start web servers # Start web servers
await web_server.start() await web_server.start()
bumperlog.info("Starting Bumper successful")
# Start maintenance # Start maintenance
while not shutting_down: while not shutting_down:
asyncio.create_task(maintenance()) asyncio.create_task(maintenance())
@ -140,15 +141,12 @@ async def shutdown():
try: try:
bumperlog.info("Shutting down") bumperlog.info("Shutting down")
await mqtt_helperbot.disconnect()
await web_server.shutdown() await web_server.shutdown()
if mqtt_server.state == "started":
await mqtt_server.shutdown()
elif mqtt_server.state == "starting":
while mqtt_server.state == "starting": while mqtt_server.state == "starting":
await asyncio.sleep(0.1) await asyncio.sleep(0.1)
if mqtt_server.state == "started": if mqtt_server.state == "started":
await mqtt_server.shutdown() await mqtt_server.shutdown()
await mqtt_helperbot.disconnect()
if xmpp_server.server: if xmpp_server.server:
if xmpp_server.server._serving: if xmpp_server.server._serving:
xmpp_server.server.close() xmpp_server.server.close()

View file

@ -1,6 +1,7 @@
import asyncio import asyncio
import os import os
import pytest
from testfixtures import LogCapture from testfixtures import LogCapture
import bumper import bumper
@ -8,46 +9,35 @@ from bumper import strtobool
def test_strtobool(): def test_strtobool():
assert strtobool("t") == True assert strtobool("t") is True
assert strtobool("f") == False assert strtobool("f") is False
assert strtobool(0) == 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: with LogCapture() as l:
if os.path.exists("tests/tmp.db"): if os.path.exists("tests/tmp.db"):
os.remove("tests/tmp.db") # Remove existing db os.remove("tests/tmp.db") # Remove existing db
if debug:
bumper.bumper_debug = True
asyncio.create_task(bumper.start()) asyncio.create_task(bumper.start())
await asyncio.sleep(0.1) await asyncio.sleep(0.1)
l.check_present(("bumper", "INFO", "Starting Bumper")) 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() l.clear()
await bumper.shutdown() await bumper.shutdown()
l.check_present( l.check_present(
("bumper", "INFO", "Shutting down"), ("bumper", "INFO", "Shutdown complete") ("bumper", "INFO", "Shutting down"), ("bumper", "INFO", "Shutdown complete")
) )
assert bumper.shutting_down == True assert bumper.shutting_down is 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