diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index b8b0531..224b2b9 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -16,7 +16,11 @@ jobs: - uses: actions/checkout@v2 - name: Build images run: docker-compose -f docker-compose.testing.yml build - - name: Run tests + - name: Run normal tests run: docker-compose -f docker-compose.testing.yml up --build --abort-on-container-exit --exit-code-from=sut env: DB: ${{ matrix.database-image }} + - name: Run one host tests + run: docker-compose -f docker-compose.testing-one-host.yml up --build --abort-on-container-exit --exit-code-from=sut + env: + DB: ${{ matrix.database-image }} \ No newline at end of file diff --git a/docker-compose.testing-one-host.yml b/docker-compose.testing-one-host.yml new file mode 100644 index 0000000..96dae1f --- /dev/null +++ b/docker-compose.testing-one-host.yml @@ -0,0 +1,69 @@ +version: "3.1" + +services: + db_server: + image: ${DB:-mariadb:10.3} + container_name: phpmyadmin_testing_db + environment: + MYSQL_ROOT_PASSWORD: "${TESTSUITE_PASSWORD:-my-secret-pw}" + healthcheck: + test: ["CMD", "mysqladmin", "ping", "-uroot", "-p${TESTSUITE_PASSWORD:-my-secret-pw}"] + start_period: 5s + interval: 5s + timeout: 60s + retries: 10 + networks: + testing: + volumes: + - ./testing/testing.cnf:/etc/mysql/conf.d/testing.cnf:ro + tmpfs: + - /var/lib/mysql:rw,noexec,nosuid,size=300m + + phpmyadmin: + build: + context: apache + container_name: phpmyadmin_testing_apache + environment: + PMA_HOST: db_server + UPLOAD_LIMIT: 123M + MAX_EXECUTION_TIME: 125 + HIDE_PHP_VERSION: 1 + volumes: + - ./testing/config.user.inc.php:/etc/phpmyadmin/config.user.inc.php + healthcheck: + test: ["CMD", "curl", "-Ss", "http://localhost/robots.txt"] + start_period: 5s + interval: 3s + timeout: 60s + retries: 10 + networks: + testing: + depends_on: + db_server: + condition: service_healthy + + sut: + depends_on: + phpmyadmin: + condition: service_healthy + db_server: + condition: service_healthy + build: + context: testing + command: "/tests/testing/test-docker.sh" + networks: + testing: + environment: + TESTSUITE_HOSTNAME: phpmyadmin_testing_apache + TESTSUITE_PORT: 80 + TESTSUITE_PASSWORD: "${TESTSUITE_PASSWORD:-my-secret-pw}" + PMA_HOST: phpmyadmin_testing_db + PMA_PORT: 3306 + volumes: + - ./:/tests:ro + - /var/run/docker.sock:/var/run/docker.sock + working_dir: /tests + +networks: + testing: + driver: bridge diff --git a/docker-compose.testing.yml b/docker-compose.testing.yml index 2753b1c..7526915 100644 --- a/docker-compose.testing.yml +++ b/docker-compose.testing.yml @@ -50,11 +50,13 @@ services: condition: service_healthy build: context: testing - command: "/tests/testing/test-docker.sh 80 phpmyadmin_testing_db" + command: "/tests/testing/test-docker.sh" networks: testing: environment: + TESTSUITE_HOSTNAME_ARBITRARY: 1 TESTSUITE_HOSTNAME: phpmyadmin_testing_apache + PMA_HOST: phpmyadmin_testing_db TESTSUITE_PORT: 80 TESTSUITE_PASSWORD: "${TESTSUITE_PASSWORD:-my-secret-pw}" volumes: diff --git a/testing/test-docker.sh b/testing/test-docker.sh index 95ccd25..f63511c 100755 --- a/testing/test-docker.sh +++ b/testing/test-docker.sh @@ -1,17 +1,6 @@ #!/bin/sh -if [ -n "$1" ] ; then - TESTSUITE_PORT=$1 -fi - -if [ -n "$2" ] ; then - SERVER="--server $2" - PMA_HOST=$2 -else - SERVER='' -fi - -# Set PHPMyAdmin environment +# Set phpMyAdmin environment PHPMYADMIN_HOSTNAME=${TESTSUITE_HOSTNAME:=localhost} PHPMYADMIN_PORT=${TESTSUITE_PORT:=80} PHPMYADMIN_URL=http://${PHPMYADMIN_HOSTNAME}:${PHPMYADMIN_PORT}/ @@ -20,6 +9,10 @@ PHPMYADMIN_URL=http://${PHPMYADMIN_HOSTNAME}:${PHPMYADMIN_PORT}/ PHPMYADMIN_DB_HOSTNAME=${PMA_HOST:=localhost} PHPMYADMIN_DB_PORT=${PMA_PORT:=3306} +if [ ! -z "${TESTSUITE_HOSTNAME_ARBITRARY}" ]; then + SERVER="--server ${PHPMYADMIN_DB_HOSTNAME}" +fi + # Find test script if [ -f ./phpmyadmin_test.py ] ; then FILENAME=./phpmyadmin_test.py @@ -31,7 +24,7 @@ mysql -h "${PHPMYADMIN_DB_HOSTNAME}" -P"${PHPMYADMIN_DB_PORT}" -u"${TESTSUITE_US ret=$? if [ $ret -ne 0 ] ; then - echo "Could not connect to ${PHPMYADMIN_DB_HOSTNAME}" + echo "Could not connect to ${PHPMYADMIN_DB_HOSTNAME} on port ${PHPMYADMIN_DB_PORT}" exit $ret fi