Compare commits

...

2 Commits

Author SHA1 Message Date
forest 56b00934be trying to do CaptureLogOutputDuringTestsFilter (but no worky yet)
continuous-integration/drone/pr Build is failing Details
continuous-integration/drone/push Build is passing Details
2021-07-27 13:56:58 -05:00
forest aa67a1e1b2 blah failed attempts at getting tests to log 2021-07-27 13:28:49 -05:00
4 changed files with 47 additions and 11 deletions

View File

@ -96,21 +96,28 @@ def create_app():
app.config['HUB_URL'] = config.get("HUB_URL", app.config['BASE_URL'])
log_filters = {
'setLogLevelToDebugForHeartbeatRelatedMessages': {
'()': SetLogLevelToDebugForHeartbeatRelatedMessagesFilter,
}
}
if app.config['TESTING'] != False:
log_filters['captureLogOutputDuringTests'] = {
'()': CaptureLogOutputDuringTestsFilter,
}
logging_dict_config({
'version': 1,
'formatters': {'default': {
'format': '[%(asctime)s] %(levelname)s in %(module)s: %(message)s',
}},
'filters': {
'setLogLevelToDebugForHeartbeatRelatedMessages': {
'()': SetLogLevelToDebugForHeartbeatRelatedMessagesFilter,
}
},
'filters': log_filters,
'handlers': {'wsgi': {
'class': 'logging.StreamHandler',
'stream': 'ext://flask.logging.wsgi_errors_stream',
'formatter': 'default',
'filters': ['setLogLevelToDebugForHeartbeatRelatedMessages']
'filters': list(log_filters.keys())
}},
'root': {
'level': app.config['LOG_LEVEL'],
@ -270,3 +277,15 @@ class SetLogLevelToDebugForHeartbeatRelatedMessagesFilter(logging.Filter):
return False
return True
class CaptureLogOutputDuringTestsFilter(logging.Filter):
def filter(self, record):
file_object = open('unittest-output.log', 'a')
file_object.write("%s" % record.msg)
for arg in record.args:
file_object.write("%s" % arg)
file_object.write("\n")
file_object.close()
return True

View File

@ -192,7 +192,10 @@ def detail(id):
@bp.route("/create", methods=("GET", "POST"))
@account_required
def create():
current_app.logger.debug(f"console.create()!")
raise "console.create()!"
current_app.logger.error("console.create()!")
vm_sizes = get_model().vm_sizes_dict()
operating_systems = get_model().operating_systems_dict()

View File

@ -1,3 +1,5 @@
import logging
from copy import deepcopy
from unittest.mock import patch
@ -80,6 +82,10 @@ class ConsoleTests(BaseTestCase):
len(get_model().list_vms_for_account('test@example.com')),
0
)
file_object = open('unittest-output.log', 'a')
file_object.write(f"{self.id()} captured output:\n{self.logs_from_test.getvalue()}\n")
file_object.close()
def test_create_fails_invalid(self):
with self.client as client:
@ -129,7 +135,7 @@ class ConsoleTests(BaseTestCase):
)
vm_id = vms[0]['id']
self.assertRedirects(
response,
url_for("console.index") + f'?created={vm_id}'
@ -190,10 +196,12 @@ class ConsoleTests(BaseTestCase):
)
def setUp(self):
super().setUp()
self._login('test@example.com')
get_model().create_ssh_public_key('test@example.com', 'key', 'foo')
def tearDown(self):
super().tearDown()
get_model().cursor.execute("DELETE FROM ssh_public_keys")
get_model().cursor.execute("DELETE FROM login_tokens")
get_model().cursor.execute("DELETE FROM vms")

View File

@ -1,7 +1,11 @@
from io import StringIO
import logging
import unittest
import os
from nanoid import generate
from flask_testing import TestCase
from flask import current_app
from capsulflask import create_app
from capsulflask.db import get_model
@ -14,16 +18,18 @@ class BaseTestCase(TestCase):
os.environ['LOG_LEVEL'] = 'DEBUG'
os.environ['SPOKE_MODEL'] = 'mock'
os.environ['HUB_MODEL'] = 'capsul-flask'
return create_app()
self.app = create_app()
return self.app
def setUp(self):
pass
pass
def tearDown(self):
pass
pass
def _login(self, user_email):
get_model().login(user_email)
with self.client.session_transaction() as session:
session['account'] = user_email
session['csrf-token'] = generate()