feat: introduce extended integration tests

- test both FLOSS and non-floss builds
- test on Synapse, Dendrite and Conduit
- remove Synapse-specific test
- add static Release mode app launch test

Signed-off-by: TheOneWithTheBraid <the-one@with-the-braid.cf>
This commit is contained in:
TheOneWithTheBraid 2022-07-12 18:29:54 +02:00
commit 5f5a08f729
13 changed files with 490 additions and 30 deletions

View file

@ -0,0 +1,26 @@
#!/usr/bin/env bash
# generate a temporary signing key adn apply its configuration
cd android
KEYFILE="$(pwd)/key.jks"
echo "Generating signing configuration with $KEYFILE..."
keytool -genkey -keyalg RSA -alias key -keysize 4096 -dname "cn=FluffyChat CI, ou=Head of bad integration tests, o=FluffyChat HQ, c=TLH" -keypass FLUFFYCHAT -storepass FLUFFYCHAT -validity 1 -keystore "$KEYFILE" -storetype "pkcs12"
echo "storePassword=FLUFFYCHAT" >> key.properties
echo "keyPassword=FLUFFYCHAT" >> key.properties
echo "keyAlias=key" >> key.properties
echo "storeFile=$KEYFILE" >> key.properties
ls | grep key
cd ..
# build release mode APK
flutter pub get
flutter build apk --release
# install and launch APK
flutter install
adb shell am start -n chat.fluffy.fluffychat/chat.fluffy.fluffychat.MainActivity
sleep 5
# check whether FluffyChat runs
adb shell ps | awk '{print $9}' | grep chat.fluffy.fluffychat

View file

@ -0,0 +1,2 @@
#!/usr/bin/env bash
apk update && apk add docker drill grep

View file

@ -0,0 +1,8 @@
#!/usr/bin/env bash
IP_ADDRESS="$(drill docker | grep -m 1 -P "\d+\.\d+\.\d+.\d+" | awk -F ' ' '{print $NF}')"
sed -i "s/10.0.2.2/$IP_ADDRESS/g" integration_test/users.dart
curl -XPOST -d '{"username":"alice", "password":"AliceInWonderland", "inhibit_login":true, "auth": {"type":"m.login.dummy"}}' "http://$IP_ADDRESS:8008/_matrix/client/r0/register"
curl -XPOST -d '{"username":"bob", "password":"JoWirSchaffenDas", "inhibit_login":true, "auth": {"type":"m.login.dummy"}}' "http://$IP_ADDRESS:8008/_matrix/client/r0/register"
curl -XPOST -d '{"username":"trudy", "password":"HaveIBeenPwned", "inhibit_login":true, "auth": {"type":"m.login.dummy"}}' "http://$IP_ADDRESS:8008/_matrix/client/r0/register"

View file

@ -0,0 +1,14 @@
#!/usr/bin/env bash
docker run -d \
-e CONDUIT_SERVER_NAME="localhost" \
-e CONDUIT_PORT="8008" \
-e CONDUIT_DATABASE_BACKEND="rocksdb" \
-e CONDUIT_ALLOW_REGISTRATION=true \
-e CONDUIT_ALLOW_FEDERATION=true \
-e CONDUIT_MAX_REQUEST_SIZE="20000000" \
-e CONDUIT_TRUSTED_SERVERS="[\"conduit.rs\"]" \
-e CONDUIT_MAX_CONCURRENT_REQUESTS="100" \
-e CONDUIT_LOG="info,rocket=off,_=off,sled=off" \
--name conduit -p 8008:8008 matrixconduit/matrix-conduit:latest
sleep 20

View file

@ -0,0 +1,16 @@
#!/usr/bin/env bash
chown -R 991:991 integration_test/dendrite
# creating integration test SSL certificates
docker run --rm --entrypoint="" \
--volume="$(pwd)/integration_test/dendrite/data":/mnt: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
docker run -d --volume="$(pwd)/integration_test/dendrite/data":/etc/dendrite:rw \
--name dendrite -p 8008:8008 matrixdotorg/dendrite-monolith:latest -really-enable-open-registration
sleep 20

View file

@ -0,0 +1,4 @@
#!/usr/bin/env bash
chown -R 991:991 integration_test/synapse
docker run -d --name synapse --user 991:991 --volume="$(pwd)/integration_test/synapse/data":/data:rw -p 8008:8008 matrixdotorg/synapse:latest
sleep 20

View file

@ -0,0 +1,4 @@
#!/usr/bin/env bash
chmod 777 -R /dev/kvm
adb start-server
emulator -avd test -no-audio -no-boot-anim -no-window -accel on -gpu swiftshader_indirect

View file

@ -1,5 +1,4 @@
#!/usr/bin/env bash
git apply ./scripts/enable-android-google-services.patch
cd android
echo $FDROID_KEY | base64 --decode --ignore-garbage > key.jks
echo "storePassword=${FDROID_KEY_PASS}" >> key.properties