diff --git a/.github/workflows/integration-test-cluster-neo4j-4.yml b/.github/workflows/integration-test-cluster-neo4j-4.yml index e2a164f8..46764ddc 100644 --- a/.github/workflows/integration-test-cluster-neo4j-4.yml +++ b/.github/workflows/integration-test-cluster-neo4j-4.yml @@ -5,8 +5,6 @@ on: branches: - main pull_request: - branches: - - main jobs: tests: @@ -29,5 +27,5 @@ jobs: up-flags: '--build --remove-orphans' - name: Test run: | - docker compose run client composer install - docker compose run client ./vendor/bin/phpunit -c phpunit.xml.dist --testsuite Integration + docker compose run --rm client composer install + docker compose run --rm client ./vendor/bin/phpunit -c phpunit.xml.dist --testsuite Integration diff --git a/.github/workflows/integration-test-cluster-neo4j-5.yml b/.github/workflows/integration-test-cluster-neo4j-5.yml index 8fe9402c..39913cb5 100644 --- a/.github/workflows/integration-test-cluster-neo4j-5.yml +++ b/.github/workflows/integration-test-cluster-neo4j-5.yml @@ -5,8 +5,6 @@ on: branches: - main pull_request: - branches: - - main jobs: tests: @@ -29,5 +27,5 @@ jobs: up-flags: '--build --remove-orphans' - name: Test run: | - docker compose run client composer install - docker compose run client ./vendor/bin/phpunit -c phpunit.xml.dist --testsuite Integration + docker compose run --rm client composer install + docker compose run --rm client ./vendor/bin/phpunit -c phpunit.xml.dist --testsuite Integration diff --git a/.github/workflows/integration-test-single-server.yml b/.github/workflows/integration-test-single-server.yml index 81b00d29..f664f943 100644 --- a/.github/workflows/integration-test-single-server.yml +++ b/.github/workflows/integration-test-single-server.yml @@ -5,8 +5,6 @@ on: branches: - main pull_request: - branches: - - main jobs: tests-v4: @@ -62,16 +60,16 @@ jobs: up-flags: '--build' - name: Composer install run: | - docker compose run client composer install + docker compose run --rm client composer install - name: Test neo4j:// run: | - docker compose run \ + docker compose run --rm \ -e PHP_VERSION=${{ matrix.php }} \ -e CONNECTION=neo4j://neo4j:testtest@neo4j \ client ./vendor/bin/phpunit -c phpunit.xml.dist --testsuite Integration - name: Test bolt:// run: | - docker compose run \ + docker compose run --rm \ -e PHP_VERSION=${{ matrix.php }} \ -e CONNECTION=bolt://neo4j:testtest@neo4j \ client ./vendor/bin/phpunit -c phpunit.xml.dist --testsuite Integration diff --git a/.github/workflows/static-analysis.yml b/.github/workflows/static-analysis.yml index 18098c35..ffb978cf 100644 --- a/.github/workflows/static-analysis.yml +++ b/.github/workflows/static-analysis.yml @@ -5,8 +5,7 @@ on: branches: - main pull_request: - branches: - - main + jobs: php-cs-fixer: name: "Lint & Analyse" diff --git a/.github/workflows/testkit.yml b/.github/workflows/testkit.yml new file mode 100644 index 00000000..0f56f2bf --- /dev/null +++ b/.github/workflows/testkit.yml @@ -0,0 +1,31 @@ +name: Testkit + +on: + push: + branches: + - main + pull_request: + +jobs: + tests: + runs-on: ubuntu-latest + name: "Testkit" + + steps: + - uses: actions/checkout@v4 + - name: Populate .env + run: | + echo "PHP_VERSION=8.3.17" > .env + echo "CONNECTION=neo4j://neo4j:testtest@server1" >> .env + - uses: hoverkraft-tech/compose-action@v2.0.2 + name: Start services + with: + compose-file: './docker-compose.yml' + up-flags: '--build --remove-orphans' + - name: Test + run: | + docker compose run --rm client composer install + # We need to restart the testkit_backend service since it relies on the previous step (composer install) to work + docker compose restart testkit_backend + docker compose logs testkit_backend + docker compose run --rm testkit ./testkit.sh diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml index 569ad585..2657af41 100644 --- a/.github/workflows/unit-test.yml +++ b/.github/workflows/unit-test.yml @@ -5,8 +5,6 @@ on: branches: - main pull_request: - branches: - - main jobs: tests: @@ -33,7 +31,7 @@ jobs: - name: Install dependencies run: composer install - + - uses: php-actions/phpunit@v4 with: configuration: phpunit.xml.dist diff --git a/docker-compose.yml b/docker-compose.yml index eebdad5c..7176158f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -118,6 +118,21 @@ services: NEO4J_server_bolt_advertised__address: server4:7687 NEO4J_server_http_advertised__address: server4:7474 + testkit: + image: python:3.13 + volumes: + - .:/opt/project + working_dir: /opt/project/testkit-backend + networks: + - neo4j + environment: + TEST_NEO4J_HOST: neo4j + TEST_NEO4J_USER: neo4j + TEST_NEO4J_PASS: testtest + TEST_DRIVER_NAME: php + TEST_DRIVER_REPO: /opt/project + TEST_BACKEND_HOST: testkit_backend + testkit_backend: <<: *common-php environment: diff --git a/src/Databags/ServerInfo.php b/src/Databags/ServerInfo.php index ce8fa011..18ed9283 100644 --- a/src/Databags/ServerInfo.php +++ b/src/Databags/ServerInfo.php @@ -61,7 +61,7 @@ public function toArray(): array { return [ 'address' => $this->address, - 'protocol' => $this->protocol, + 'protocolVersion' => $this->protocol, 'agent' => $this->agent, ]; } diff --git a/testkit-backend/testkit.sh b/testkit-backend/testkit.sh index 3515b596..7c8dca87 100755 --- a/testkit-backend/testkit.sh +++ b/testkit-backend/testkit.sh @@ -2,14 +2,12 @@ TESTKIT_VERSION=5.0 -export TEST_NEO4J_HOST=neo4j -export TEST_NEO4J_USER=neo4j -export TEST_NEO4J_PASS=testtest -export TEST_DRIVER_NAME=php +[ -z "$TEST_NEO4J_HOST" ] && export TEST_NEO4J_HOST=neo4j +[ -z "$TEST_NEO4J_USER" ] && export TEST_NEO4J_USER=neo4j +[ -z "$TEST_NEO4J_PASS" ] && export TEST_NEO4J_PASS=testtest +[ -z "$TEST_DRIVER_NAME" ] && export TEST_DRIVER_NAME=php - -TEST_DRIVER_REPO=$(realpath ..) -export TEST_DRIVER_REPO +[ -z "$TEST_DRIVER_REPO" ] && TEST_DRIVER_REPO=$(realpath ..) && export TEST_DRIVER_REPO if [ "$1" == "--clean" ]; then if [ -d testkit ]; then @@ -18,7 +16,7 @@ if [ "$1" == "--clean" ]; then fi if [ ! -d testkit ]; then - git clone git@github.com:neo4j-drivers/testkit.git + git clone https://github.com/neo4j-drivers/testkit.git if [ "$(cd testkit && git branch --show-current)" != "${TESTKIT_VERSION}" ]; then (cd testkit && git checkout ${TESTKIT_VERSION}) fi @@ -31,12 +29,20 @@ python3 -m venv venv source venv/bin/activate pip install -r requirements.txt +# python3 main.py --tests UNIT_TESTS + echo "Starting tests..." -# exec python3 main.py --tests UNIT_TESTS -(exec python3 -m unittest tests.neo4j.test_authentication.TestAuthenticationBasic) || true -#echo "TestAuthenticationBasic Done" -python3 -m unittest tests.neo4j.test_bookmarks.TestBookmarks || true -echo "TestBookmarks Done" -#python3 -m unittest tests.neo4j.test_session_run.TestSessionRun.test_recover_from_fail_on_streaming|| true -#echo "TestSessionRun Done" + +EXIT_CODE=0 + +python3 -m unittest tests.neo4j.test_authentication.TestAuthenticationBasic || EXIT_CODE=1 + +python3 -m unittest tests.neo4j.test_bookmarks.TestBookmarks || EXIT_CODE=1 + +python3 -m unittest tests.neo4j.test_session_run.TestSessionRun.test_iteration_nested || EXIT_CODE=1 + +# Uncomment to run this test as well +# python3 -m unittest tests.neo4j.test_session_run.TestSessionRun.test_recover_from_fail_on_streaming || EXIT_CODE=1 + +exit $EXIT_CODE