confserver revamp #88

Merged
bmartin5692 merged 12 commits from wip-confserver-jinja2 into master 2020-01-05 02:46:34 +01:00
2 changed files with 120 additions and 86 deletions
Showing only changes of commit e4130e4626 - Show all commits

View file

@ -47,18 +47,19 @@ class ConfServer:
self.app = None self.app = None
self.site = None self.site = None
self.runner = None self.runner = None
self.excludelogging = ["base", "remove-bot", "remove-client", "restart-service"]
def get_milli_time(self, timetoconvert): def get_milli_time(self, timetoconvert):
return int(round(timetoconvert * 1000)) return int(round(timetoconvert * 1000))
def confserver_app(self): def confserver_app(self):
self.app = web.Application(loop=asyncio.get_event_loop())#, middlewares=[self.log_all_requests]) self.app = web.Application(loop=asyncio.get_event_loop(), middlewares=[self.log_all_requests])
aiohttp_jinja2.setup(self.app, loader=jinja2.FileSystemLoader(os.path.join(bumper.data_dir, "web","templates"))) aiohttp_jinja2.setup(self.app, loader=jinja2.FileSystemLoader(os.path.join(bumper.data_dir, "web","templates")))
self.app.add_routes( self.app.add_routes(
[ [
web.get("", self.handle_base), web.get("", self.handle_base, name="base"),
web.get("/bot/remove/{did}", self.handle_RemoveBot, name='remove-bot'), web.get("/bot/remove/{did}", self.handle_RemoveBot, name='remove-bot'),
web.get("/client/remove/{resource}", self.handle_RemoveClient, name='remove-client'), web.get("/client/remove/{resource}", self.handle_RemoveClient, name='remove-client'),
web.get("/restart_{service}", self.handle_RestartService, name='restart-service'), web.get("/restart_{service}", self.handle_RestartService, name='restart-service'),
@ -241,6 +242,8 @@ class ConfServer:
@web.middleware @web.middleware
async def log_all_requests(self, request, handler): async def log_all_requests(self, request, handler):
if request._match_info.route.name not in self.excludelogging:
try: try:
if request.content_length: if request.content_length:
if request.content_type == "application/x-www-form-urlencoded": if request.content_type == "application/x-www-form-urlencoded":
@ -329,6 +332,9 @@ class ConfServer:
confserverlog.debug(json.dumps(requestlog)) confserverlog.debug(json.dumps(requestlog))
return e return e
else:
return await handler(request)
async def restart_Helper(self): async def restart_Helper(self):
await bumper.mqtt_helperbot.Client.disconnect() await bumper.mqtt_helperbot.Client.disconnect()

View file

@ -9,6 +9,9 @@ import pytest_aiohttp
import pytest_asyncio import pytest_asyncio
import datetime, time import datetime, time
from aiohttp import web from aiohttp import web
import logging
from testfixtures import LogCapture
from unittest.mock import MagicMock
def create_confserver(): def create_confserver():
@ -37,6 +40,31 @@ async def test_confserver_ssl():
conf_server.confserver_app() conf_server.confserver_app()
asyncio.create_task(conf_server.start_server()) asyncio.create_task(conf_server.start_server())
async def test_confserver_exceptions():
with LogCapture() as l:
conf_server = bumper.ConfServer(("127.0.0.1", 8007), usessl=True)
conf_server.confserver_app()
conf_server.site = web.TCPSite
#bind permission
conf_server.site.start = mock.Mock(side_effect=OSError(1, "error while attempting to bind on address ('127.0.0.1', 8007): permission denied"))
await conf_server.start_server()
#asyncio Cancel
conf_server.site = web.TCPSite
conf_server.site.start = mock.Mock(side_effect=asyncio.CancelledError)
await conf_server.start_server()
#general exception
conf_server.site = web.TCPSite
conf_server.site.start = mock.Mock(side_effect=Exception(1, "general"))
await conf_server.start_server()
l.check_present(
("confserver", "ERROR", "error while attempting to bind on address ('127.0.0.1', 8007): permission denied")
)
async def test_confserver_no_ssl(): async def test_confserver_no_ssl():
conf_server = bumper.ConfServer(("127.0.0.1", 111111), usessl=False) conf_server = bumper.ConfServer(("127.0.0.1", 111111), usessl=False)