From 3eef992c74c3de05461dacce12cbaaa210864093 Mon Sep 17 00:00:00 2001 From: Jacob Boddey Date: Tue, 2 Apr 2024 10:08:17 +0100 Subject: [PATCH 1/2] Bump version --- cmd/package | 6 +++++- framework/python/src/common/testreport.py | 2 +- make/DEBIAN/control | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/cmd/package b/cmd/package index 39e0fffb3..b60f492ec 100755 --- a/cmd/package +++ b/cmd/package @@ -17,6 +17,7 @@ # Creates a package for Testrun MAKE_SRC_DIR=make +TESTRUN_VER="1-2-1-alpha" # Delete existing make files rm -rf $MAKE_SRC_DIR/usr @@ -56,4 +57,7 @@ cp -r {framework,modules} $MAKE_SRC_DIR/usr/local/testrun dpkg-deb --build --root-owner-group make # Rename the .deb file -mv make.deb testrun_1-2_amd64.deb +mv make.deb testrun_${TESTRUN_VER}_amd64.deb + +# Echo package version +echo Created installation package at testrun_${TESTRUN_VER}_amd64.deb diff --git a/framework/python/src/common/testreport.py b/framework/python/src/common/testreport.py index 4c33f71af..4a1dbc629 100644 --- a/framework/python/src/common/testreport.py +++ b/framework/python/src/common/testreport.py @@ -57,7 +57,7 @@ def __init__(self, self._report_url = '' self._cur_page = 0 # Placeholder until available in json report - self._version = 'v1.2' + self._version = 'v1.2.1-alpha' def add_module_reports(self, module_reports): self._module_reports = module_reports diff --git a/make/DEBIAN/control b/make/DEBIAN/control index df5f6d9fb..996f6e9d2 100644 --- a/make/DEBIAN/control +++ b/make/DEBIAN/control @@ -1,5 +1,5 @@ Package: Testrun -Version: 1.2 +Version: 1.2.1-alpha Architecture: amd64 Maintainer: Google Homepage: https://github.com/google/testrun From 18b74ba9fa4b3255044ae0450c78d66e5e99ddbb Mon Sep 17 00:00:00 2001 From: J Boddey Date: Mon, 8 Apr 2024 19:32:06 +0100 Subject: [PATCH 2/2] Add shutdown endpoint (#363) * Bump version * Add shutdown endpoint --- framework/python/src/api/api.py | 24 ++++++++++++++++++++++++ framework/python/src/core/testrun.py | 8 ++++++-- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/framework/python/src/api/api.py b/framework/python/src/api/api.py index 0a00c19cd..fe76a40d0 100644 --- a/framework/python/src/api/api.py +++ b/framework/python/src/api/api.py @@ -21,6 +21,7 @@ import os import psutil import requests +import signal import threading import uvicorn from urllib.parse import urlparse @@ -66,6 +67,9 @@ def __init__(self, test_run): methods=["POST"]) self._router.add_api_route("/system/status", self.get_status) + self._router.add_api_route("/system/shutdown", + self.shutdown, + methods=["POST"]) self._router.add_api_route("/system/version", self.get_version) @@ -243,6 +247,26 @@ async def stop_test_run(self): async def get_status(self): return self._test_run.get_session().to_json() + def shutdown(self, response: Response): + + LOGGER.debug("Received request to shutdown Testrun") + + # Check that Testrun is not currently running + if (self._session.get_status() not in [ + "Cancelled", + "Compliant", + "Non-Compliant", + "Idle"]): + LOGGER.debug("Unable to shutdown Testrun as Testrun is in progress") + response.status_code = 400 + return self._generate_msg( + False, + "Unable to shutdown. A test is currently in progress." + ) + + self._test_run.shutdown() + os.kill(os.getpid(), signal.SIGTERM) + async def get_version(self, response: Response): json_response = {} diff --git a/framework/python/src/core/testrun.py b/framework/python/src/core/testrun.py index 4ca176a79..a25b57eef 100644 --- a/framework/python/src/core/testrun.py +++ b/framework/python/src/core/testrun.py @@ -343,12 +343,16 @@ def _register_exits(self): signal.signal(signal.SIGABRT, self._exit_handler) signal.signal(signal.SIGQUIT, self._exit_handler) + def shutdown(self): + LOGGER.info('Shutting down Testrun') + self.stop() + self._stop_ui() + def _exit_handler(self, signum, arg): # pylint: disable=unused-argument LOGGER.debug('Exit signal received: ' + str(signum)) if signum in (2, signal.SIGTERM): LOGGER.info('Exit signal received.') - self.stop() - self._stop_ui() + self.shutdown() sys.exit(1) def _get_config_abs(self, config_file=None):