From a8e56074cc5f0fa6d832807fc245819399affa61 Mon Sep 17 00:00:00 2001 From: td Date: Mon, 1 Jul 2024 20:52:32 +0530 Subject: [PATCH] feat: move e2e test dind structure to use executor fix: bump flutter and dart webrtc versions for dart analyze json format output --- .github/workflows/app.yml | 28 +++++++++++------------ .github/workflows/versions.env | 4 ++-- scripts/integration-prepare-alpine.sh | 2 -- scripts/integration-prepare-homeserver.sh | 1 + scripts/integration-server-conduit.sh | 4 ++-- scripts/integration-server-dendrite.sh | 11 ++++----- scripts/integration-server-synapse.sh | 2 +- scripts/test_driver.sh | 2 +- test_driver/matrixsdk_test.dart | 5 ++-- 9 files changed, 28 insertions(+), 31 deletions(-) delete mode 100755 scripts/integration-prepare-alpine.sh diff --git a/.github/workflows/app.yml b/.github/workflows/app.yml index 6b79a383..360a8071 100644 --- a/.github/workflows/app.yml +++ b/.github/workflows/app.yml @@ -14,21 +14,19 @@ jobs: steps: - uses: actions/checkout@v4 - run: cat .github/workflows/versions.env >> $GITHUB_ENV + - uses: dart-lang/setup-dart@a57a6c04cf7d4840e88432aad6281d1e125f0d46 + with: + sdk: ${{ env.dart_version }} - name: Run tests run: | - export NETWORK='--network mynet' - docker network create mynet - # deploy homeserver instance - scripts/integration-server-${{matrix.homeserver}}.sh - docker run $NETWORK --env GITHUB_ACTIONS="${GITHUB_ACTIONS}" --env HOMESERVER_IMPLEMENTATION="${{matrix.homeserver}}" --env HOMESERVER="${{startsWith('dendrite', matrix.homeserver) && format('{0}:8008', matrix.homeserver) || matrix.homeserver }}" --volume="$(pwd):/workdir" --workdir /workdir ghcr.io/famedly/container-image-flutter/flutter:${{env.flutter_version}} /bin/bash -c "set -e - scripts/integration-prepare-alpine.sh - # create test user environment variables + export HOMESERVER_IMPLEMENTATION=${{matrix.homeserver}} + export HOMESERVER="localhost:80" + scripts/integration-server-${{matrix.homeserver}}.sh 2>&1 > /dev/null & + sudo apt-get update && sudo apt-get install --no-install-recommends --no-install-suggests -y libolm3 libssl3 source scripts/integration-create-environment-variables.sh - # properly set the homeserver IP and create test users - scripts/integration-prepare-homeserver.sh - # setup OLM + scripts/integration-prepare-homeserver.sh scripts/prepare.sh - scripts/test_driver.sh" + scripts/test_driver.sh coverage_without_olm: runs-on: ubuntu-latest @@ -42,7 +40,7 @@ jobs: sdk: ${{ env.dart_version }} - name: Run tests run: | - sudo apt-get update && sudo apt-get install --no-install-recommends --no-install-suggests -y curl lcov python3 python3-distutils libsqlite3-0 libsqlite3-dev + sudo apt-get update && sudo apt-get install --no-install-recommends --no-install-suggests -y lcov libsqlite3-0 libsqlite3-dev ./scripts/test.sh - uses: actions/upload-artifact@v4 if: ${{ !cancelled() }} @@ -53,16 +51,17 @@ jobs: coverage: - runs-on: ubuntu-latest + runs-on: arm-ubuntu-latest-16core steps: - uses: actions/checkout@v4 - run: cat .github/workflows/versions.env >> $GITHUB_ENV - uses: dart-lang/setup-dart@a57a6c04cf7d4840e88432aad6281d1e125f0d46 with: sdk: ${{ env.dart_version }} + architecture: "arm64" - name: Run tests run: | - sudo apt-get update && sudo apt-get install --no-install-recommends --no-install-suggests -y curl lcov python3 python3-distutils libsqlite3-0 libsqlite3-dev libolm3 libssl3 + sudo apt-get update && sudo apt-get install --no-install-recommends --no-install-suggests -y lcov libsqlite3-0 libsqlite3-dev libolm3 libssl3 ./scripts/test.sh - uses: actions/upload-artifact@v4 if: ${{ !cancelled() }} @@ -110,6 +109,7 @@ jobs: - uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa with: flutter-version: ${{ env.flutter_version }} + cache: true - name: Ensure SDK compiles on web run: | pushd web_test diff --git a/.github/workflows/versions.env b/.github/workflows/versions.env index 2ae227a1..a78fec4b 100644 --- a/.github/workflows/versions.env +++ b/.github/workflows/versions.env @@ -1,2 +1,2 @@ -flutter_version=3.16.9 -dart_version=3.2.6 +flutter_version=3.22.2 +dart_version=3.4.3 diff --git a/scripts/integration-prepare-alpine.sh b/scripts/integration-prepare-alpine.sh deleted file mode 100755 index 6c2fbde3..00000000 --- a/scripts/integration-prepare-alpine.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env bash -apk update && apk add docker drill grep olm cmake sqlite-dev \ No newline at end of file diff --git a/scripts/integration-prepare-homeserver.sh b/scripts/integration-prepare-homeserver.sh index 4f220591..d0e75cd5 100755 --- a/scripts/integration-prepare-homeserver.sh +++ b/scripts/integration-prepare-homeserver.sh @@ -34,6 +34,7 @@ echo "Waiting for homeserver to be available... (GET http://$HOMESERVER/_matrix/ sleep 5 while ! curl -XGET "http://$HOMESERVER/_matrix/client/v3/login" >/dev/null; do + docker ps -a docker logs "$HOMESERVER_IMPLEMENTATION" sleep 5 done diff --git a/scripts/integration-server-conduit.sh b/scripts/integration-server-conduit.sh index 0de7783e..846adafc 100755 --- a/scripts/integration-server-conduit.sh +++ b/scripts/integration-server-conduit.sh @@ -1,5 +1,6 @@ #!/usr/bin/env bash - docker run -d \ + +docker run -d --rm \ -e CONDUIT_CONFIG="" \ -e CONDUIT_SERVER_NAME="famedlysdk.test" \ -e CONDUIT_PORT="80" \ @@ -10,5 +11,4 @@ -e CONDUIT_TRUSTED_SERVERS="[\"conduit.rs\"]" \ -e CONDUIT_MAX_CONCURRENT_REQUESTS="100" \ -e CONDUIT_LOG="info,rocket=off,_=off,sled=off" \ - $NETWORK \ --name conduit -p 80:80 matrixconduit/matrix-conduit:v0.6.0 diff --git a/scripts/integration-server-dendrite.sh b/scripts/integration-server-dendrite.sh index 737433de..58282968 100755 --- a/scripts/integration-server-dendrite.sh +++ b/scripts/integration-server-dendrite.sh @@ -1,14 +1,13 @@ #!/usr/bin/env bash -chown -R 991:991 test_driver/dendrite # creating integration test SSL certificates docker run --rm --entrypoint="" \ - --volume="$(pwd)/test_driver/dendrite/data":/mnt:rw \ + --volume="$(pwd)/test_driver/dendrite/data":/etc/dendrite:rw \ matrixdotorg/dendrite-monolith:latest \ /usr/bin/generate-keys \ - -private-key /mnt/matrix_key.pem \ - -tls-cert /mnt/server.crt \ - -tls-key /mnt/server.key + -private-key /etc/dendrite/matrix_key.pem \ + -tls-cert /etc/dendrite/server.crt \ + -tls-key /etc/dendrite/server.key docker run -d --volume="$(pwd)/test_driver/dendrite/data":/etc/dendrite:rw \ - --name dendrite $NETWORK -p 80:8008 matrixdotorg/dendrite-monolith:latest -really-enable-open-registration + --name dendrite -p 80:8008 matrixdotorg/dendrite-monolith:latest -really-enable-open-registration diff --git a/scripts/integration-server-synapse.sh b/scripts/integration-server-synapse.sh index 8bf14dfe..0f60a531 100755 --- a/scripts/integration-server-synapse.sh +++ b/scripts/integration-server-synapse.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -docker run -d --name synapse --tmpfs /data $NETWORK \ +docker run -d --rm --name synapse --tmpfs /data \ --volume="$(pwd)/test_driver/synapse/data/homeserver.yaml":/data/homeserver.yaml:rw \ --volume="$(pwd)/test_driver/synapse/data/localhost.log.config":/data/localhost.log.config:rw \ -p 80:80 matrixdotorg/synapse:latest diff --git a/scripts/test_driver.sh b/scripts/test_driver.sh index efdab657..a11a4882 100755 --- a/scripts/test_driver.sh +++ b/scripts/test_driver.sh @@ -2,5 +2,5 @@ if which flutter >/dev/null; then flutter --no-version-check test test_driver/matrixsdk_test.dart --dart-define=HOMESERVER=$HOMESERVER --dart-define=USER1_NAME=$USER1_NAME --dart-define=USER2_NAME=$USER2_NAME --dart-define=USER3_NAME=$USER3_NAME --dart-define=USER1_PW=$USER1_PW --dart-define=USER2_PW=$USER2_PW --dart-define=USER3_PW=$USER3_PW else - dart -D HOMESERVER=$HOMESERVER -D USER1_NAME=$USER1_NAME -D USER2_NAME=$USER2_NAME -D USER3_NAME=$USER3_NAME -D USER1_PW=$USER1_PW -D USER2_PW=$USER2_PW -D USER3_PW=$USER3_PW test test_driver/matrixsdk_test.dart -p vm + dart --define=HOMESERVER=$HOMESERVER --define=USER1_NAME=$USER1_NAME --define=USER2_NAME=$USER2_NAME --define=USER3_NAME=$USER3_NAME --define=USER1_PW=$USER1_PW --define=USER2_PW=$USER2_PW --define=USER3_PW=$USER3_PW test test_driver/matrixsdk_test.dart -p vm fi diff --git a/test_driver/matrixsdk_test.dart b/test_driver/matrixsdk_test.dart index f510dc95..1ab27024 100644 --- a/test_driver/matrixsdk_test.dart +++ b/test_driver/matrixsdk_test.dart @@ -486,9 +486,8 @@ void main() => group('Integration tests', () { Logs().i('++++ (Alice) Create DM ++++'); final dmRoom = await testClientA.startDirectChat(testClientB.userID!); - // conduit returns the room on sync first, so we check if it has already been returned first. - if (testClientB.getRoomById(dmRoom)?.membership != - Membership.invite) { + + if (testClientB.getRoomById(dmRoom) == null) { await testClientB.waitForRoomInSync(dmRoom, invite: true); }