diff --git a/stack_orchestrator/data/compose/docker-compose-test-database.yml b/stack_orchestrator/data/compose/docker-compose-test-database.yml index 7de4712b..6b99cdab 100644 --- a/stack_orchestrator/data/compose/docker-compose-test-database.yml +++ b/stack_orchestrator/data/compose/docker-compose-test-database.yml @@ -1,4 +1,5 @@ services: + database: image: cerc/test-database-container:local restart: always @@ -11,6 +12,9 @@ services: POSTGRES_INITDB_ARGS: "-E UTF8 --locale=C" ports: - "5432" + + test-client: + image: cerc/test-database-client:local volumes: db-data: diff --git a/stack_orchestrator/data/container-build/cerc-test-database-client/Dockerfile b/stack_orchestrator/data/container-build/cerc-test-database-client/Dockerfile new file mode 100644 index 00000000..e2b3f7ad --- /dev/null +++ b/stack_orchestrator/data/container-build/cerc-test-database-client/Dockerfile @@ -0,0 +1,12 @@ +FROM ubuntu:latest + +RUN apt-get update && export DEBIAN_FRONTEND=noninteractive && export DEBCONF_NOWARNINGS="yes" && \ + apt-get install -y software-properties-common && \ + apt-get install -y postgresql-client && \ + apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* + +EXPOSE 80 + +COPY run.sh /app/run.sh + +ENTRYPOINT ["/app/run.sh"] diff --git a/stack_orchestrator/data/container-build/cerc-test-database-client/build.sh b/stack_orchestrator/data/container-build/cerc-test-database-client/build.sh new file mode 100755 index 00000000..f9a9051f --- /dev/null +++ b/stack_orchestrator/data/container-build/cerc-test-database-client/build.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash +# Build cerc/test-container +source ${CERC_CONTAINER_BASE_DIR}/build-base.sh +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +docker build -t cerc/test-database-client:local -f ${SCRIPT_DIR}/Dockerfile ${build_command_args} $SCRIPT_DIR \ No newline at end of file diff --git a/stack_orchestrator/data/container-build/cerc-test-database-client/run.sh b/stack_orchestrator/data/container-build/cerc-test-database-client/run.sh new file mode 100755 index 00000000..611a8968 --- /dev/null +++ b/stack_orchestrator/data/container-build/cerc-test-database-client/run.sh @@ -0,0 +1,42 @@ +#!/usr/bin/env bash +set -e +if [ -n "$CERC_SCRIPT_DEBUG" ]; then + set -x +fi + +# TODO derive this from config +database_url="postgresql://test-user:password@localhost:5432/test-db" +psql_command="psql ${database_url}" + +does_test_data_exist () { + query_result=$(${psql_command} -t -c "select count(*) from test_table_1 where key_column = 'test_key_1';" | head -1 | tr -d ' ') + if [[ "${query_result}" == "1" ]]; then + return 0 + else + return 1 + fi +} + +create_test_data () { + ${psql_command} -c "create table test_table_1 (key_column text, value_column text, primary key(key_column));" + ${psql_command} -c "insert into test_table_1 values ('test_key_1', 'test_value_1');" +} + +wait_forever() { + # Loop to keep docker/k8s happy since this is the container entrypoint + while :; do sleep 600; done +} + +# Check if the test database content exists already +if does_test_data_exist; then + # If so, log saying so. Test harness will look for this log output + echo "Database test client: test data already exists" +else + # Otherwise log saying the content was not present + echo "Database test client: test data does not exist" + echo "Database test client: creating test data" + # then create it + create_test_data +fi + +wait_forever diff --git a/stack_orchestrator/data/stacks/test-database/stack.yml b/stack_orchestrator/data/stacks/test-database/stack.yml index 6fac54e0..46fef720 100644 --- a/stack_orchestrator/data/stacks/test-database/stack.yml +++ b/stack_orchestrator/data/stacks/test-database/stack.yml @@ -4,5 +4,6 @@ description: "A test database stack" repos: containers: - cerc/test-database-container + - cerc/test-database-client pods: - test-database