diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000000000000000000000000000000000000..1eb05f7dc4f1afcbb989b9bb305719fbef902d61 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,8 @@ +include: + - project: oceanids/c2/infrastructure/ci-scripts + ref: master + file: python-microservice/all.yml + +variables: + DOCKER_IMAGE_NAME: backbone-message-format + TEST_DOCKER_COMPOSE: 1 \ No newline at end of file diff --git a/docker/Dev.Dockerfile b/docker/Dev.Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..eab5243300d39a68b4219a2b1e6eadeeba8b7e72 --- /dev/null +++ b/docker/Dev.Dockerfile @@ -0,0 +1,7 @@ +FROM python:3.9.16-alpine + +WORKDIR /app + +COPY requirements-dev.txt requirements-dev.txt + +RUN pip install -r requirements-dev.txt \ No newline at end of file diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..a14c3e19e685cdbf912d6c174a9dde84d0a2b3cf --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,7 @@ +FROM python:3.9.16-alpine + +WORKDIR /app + +COPY . . + +RUN pip install -r requirements.txt \ No newline at end of file diff --git a/docker/docker-compose-test.yaml b/docker/docker-compose-test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..2461af3b7c397f7214875be0dfdd23fc8e4589ac --- /dev/null +++ b/docker/docker-compose-test.yaml @@ -0,0 +1,15 @@ +version: '3.8' +services: + soar_flasgger_test: + build: + context: .. + dockerfile: docker/Dev.Dockerfile + restart: unless-stopped + ports: + - "5000:5000" + container_name: soar_flasgger_test + environment: + - PYTHONDONTWRITEBYTECODE=1 + volumes: + - ../:/app + command: "python3 -m unittest tests/test_schemas.py" \ No newline at end of file diff --git a/docker/docker-compose.yaml b/docker/docker-compose.yaml new file mode 100644 index 0000000000000000000000000000000000000000..23c80c73fc6356d8183dbc8c72d36b6f8f16aa54 --- /dev/null +++ b/docker/docker-compose.yaml @@ -0,0 +1,15 @@ +version: '3.8' +services: + soar_flasgger: + build: + context: .. + dockerfile: docker/Dockerfile + restart: unless-stopped + ports: + - "5000:5000" + container_name: soar_flasgger + environment: + - FLASK_HOST=0.0.0.0 + volumes: + - ../:/app + command: "python generate_schema_config.py" \ No newline at end of file diff --git a/generate_schema_config.py b/generate_schema_config.py index 2c1c8389073f2364f0ce62ecdf7e195a52e4702a..29b7f4d9707e20588e7b3b3dce18c58247669b12 100644 --- a/generate_schema_config.py +++ b/generate_schema_config.py @@ -8,6 +8,8 @@ from formats.acknowledgement import acknowledgement_schema from flasgger import Swagger from flask import Flask +import os + app = Flask(__name__) @@ -74,6 +76,9 @@ swagger_config = { swag = Swagger(app, config=swagger_config, merge=True) +flask_host = os.getenv( + "FLASK_HOST", "localhost" +) # Sets to whatever MQ_HOST is, or defaults to localhost if __name__ == "__main__": - app.run(debug=True) + app.run(debug=False, host=flask_host) diff --git a/run-compose.sh b/run-compose.sh new file mode 100755 index 0000000000000000000000000000000000000000..4df4f2af8dff8b6bcac1da229b59f4b03dac5c00 --- /dev/null +++ b/run-compose.sh @@ -0,0 +1,30 @@ +#! /usr/bin/env bash + +usage() { + echo "usage: ./run-compose.sh [<rebuild>]" + echo " rebuild - will force docker-compose to rebuild the images before spinning them up." + echo " tests - run the test suite rather than the application." +} + +if [[ -z "${DATA_DIR}" ]]; then + DATA_DIR=$(pwd) +fi + +while [ -n "$1" ]; do + case $1 in + rebuild) + EXTRA_ARGS="--build" + ;; + tests) + docker-compose -f docker/docker-compose-test.yaml up --build + exit 0 + ;; + *) + usage + exit 0 + ;; + esac + shift +done + +docker-compose -f docker/docker-compose.yaml up $EXTRA_ARGS \ No newline at end of file diff --git a/tests/test_schemas.py b/tests/test_schemas.py index bf8478d87d7c804f6a719a021f3d0908f874853b..e763f47fb41183b269c2257d421aeb25305a4b44 100644 --- a/tests/test_schemas.py +++ b/tests/test_schemas.py @@ -66,6 +66,8 @@ class TestSchema(unittest.TestCase): ) ) + f.close() + def test_sample_gui_messages(self): """ Test schema - GUI Messages @@ -92,6 +94,8 @@ class TestSchema(unittest.TestCase): ) ) + f.close() + def test_sample_ecosub_messages(self): """ Test schema - Ecosub Messages @@ -146,6 +150,8 @@ class TestSchema(unittest.TestCase): format_checker=FormatChecker(), ) ) + + f.close() def test_sample_autonomy_engine_messages(self): """ @@ -237,6 +243,8 @@ class TestSchema(unittest.TestCase): ) ) + f.close() + if __name__ == "__main__": unittest.main()