Commit 9338998f authored by Ondřej Borýsek's avatar Ondřej Borýsek
Browse files

Speedup tests by skipping db init

parent ab483041
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -705,8 +705,8 @@ def show_finding(folder_name: str, finding_index: int):


def full_processing_background_wrapper(folder_name: str):
    from app import create_app
    with create_app().app_context():
    from app import get_pre_initialized_app
    with get_pre_initialized_app().app_context():
        full_processing_native(folder_name)


+9 −5
Original line number Diff line number Diff line
@@ -18,7 +18,11 @@ mimetypes.add_type('application/javascript', '.js')
mimetypes.add_type('text/css', '.css')


def create_app(skip_pwndoc: bool = False):
def get_pre_initialized_app(skip_pwndoc: bool = False):
    return create_app(skip_pwndoc=skip_pwndoc, is_pre_initialized=True)


def create_app(skip_pwndoc: bool = False, is_pre_initialized: bool = False):
    from helpers.db_models import db

    from api_process_findings import bp as process_findings_bp
@@ -52,7 +56,7 @@ def create_app(skip_pwndoc: bool = False):

    # db.create_all() need to happen single threaded (or staggered)

    main_thread = pwndoc_db_init.determine_main_thread()
    main_thread = is_pre_initialized or pwndoc_db_init.determine_main_thread()
    if main_thread:
        with app.app_context():
            db.create_all()
@@ -65,7 +69,7 @@ def create_app(skip_pwndoc: bool = False):
    Path(app.config['UPLOAD_FOLDER']).mkdir(parents=True, exist_ok=True)

    if main_thread:
        single_threaded_init(app, skip_pwndoc)
        single_threaded_init(app, skip_pwndoc, is_pre_initialized)

    app.register_blueprint(process_findings_bp, url_prefix=f'{config.IMPORTER_URL_PREFIX}/findings')
    app.register_blueprint(templates_bp, url_prefix=f'{config.IMPORTER_URL_PREFIX}/templates')
@@ -106,14 +110,14 @@ def create_app(skip_pwndoc: bool = False):
    return app


def single_threaded_init(app, skip_pwndoc: bool):
def single_threaded_init(app, skip_pwndoc: bool, is_pre_initialized: bool = False):
    from helpers.template_grouping import TemplateGrouping
    import pwndoc_db_init

    pwndoc_db_init.PwnDocUpdate.setup_scan2report_plugin_folder()  # This will fail if run second time.
    TemplateGrouping.add_new_gids()

    if skip_pwndoc:
    if skip_pwndoc or is_pre_initialized:
        return
    pwndoc_db_init.InitialData.setup_first_user()

+2 −2
Original line number Diff line number Diff line
@@ -6,7 +6,7 @@ import string
import pytest
from loguru import logger

from app import create_app
from app import create_app, get_pre_initialized_app
from helpers.time_helper import current_timestamp
import config

@@ -30,7 +30,7 @@ def app():

    config.PWNDOC_URL = 'https://localhost:8442' if PWNDOC_DANGER_OVERRIDE else config.PWNDOC_NO_CONNECTION_PLACEHOLDER

    app = create_app(skip_pwndoc=not PWNDOC_DANGER_OVERRIDE)
    app = get_pre_initialized_app(skip_pwndoc=not PWNDOC_DANGER_OVERRIDE)
    app.config.update({
        "TESTING": True,
    })
+2 −2
Original line number Diff line number Diff line
import api_process_findings
from app import create_app
from app import create_app, get_pre_initialized_app

with create_app().test_request_context('/make_report/2017', data={'format': 'short'}):
with get_pre_initialized_app().test_request_context('/make_report/2017', data={'format': 'short'}):
    api_process_findings.upload_scan_findings_to_pwndoc('2022-09-22T12-57-38_findings_import_4b7d008f')