monitoring: build latest taler-android then same adb pay smoke
Add run-android-build-and-smoke.sh (assembleFdroidDebug from taler-android master) and wire APK_PATH/PKG into the existing smoke.
This commit is contained in:
parent
f79d6350c3
commit
b1c8e5ddb2
5 changed files with 143 additions and 9 deletions
|
|
@ -178,3 +178,16 @@ For reliable full UI confirm/pay use a physical phone or a host with **≥6–8
|
||||||
| `adb install` wallet | **Success** on emulator-5554 |
|
| `adb install` wallet | **Success** on emulator-5554 |
|
||||||
| Deep-link withdraw | **delivered**; wallet-core started `prepareBankIntegratedWithdrawal` for GOA |
|
| Deep-link withdraw | **delivered**; wallet-core started `prepareBankIntegratedWithdrawal` for GOA |
|
||||||
| Unattended UI confirm | flaky (ANR) on this host’s RAM |
|
| Unattended UI confirm | flaky (ANR) on this host’s RAM |
|
||||||
|
| Source build `assembleFdroidDebug` | **OK** (2026-07-17, `taler-android@f65a976c0d4a`, ~12 min, APK ~59 MiB) |
|
||||||
|
|
||||||
|
### From-source smoke (same tests as F-Droid)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# build latest master + adb smoke
|
||||||
|
./android-test/run-android-build-and-smoke.sh
|
||||||
|
STACK=goa ./android-test/run-android-build-and-smoke.sh
|
||||||
|
# already built:
|
||||||
|
APK_PATH=$HOME/taler/taler-android/wallet/build/outputs/apk/fdroid/debug/wallet-fdroid-debug.apk \
|
||||||
|
PKG=net.taler.wallet.fdroid.debug \
|
||||||
|
./android-test/run-android-pay-smoke.sh
|
||||||
|
```
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
apks/*.apk
|
apks/*.apk
|
||||||
out/
|
out/
|
||||||
*.png
|
*.png
|
||||||
|
out-source/
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
# Android pay smoke (published wallet)
|
# Android pay smoke
|
||||||
|
|
||||||
Installs the **F-Droid** GNU Taler Wallet APK and deep-links
|
## 1) Published F-Droid wallet
|
||||||
`taler://withdraw/…` + optional `taler://pay…` against GOA or stage.
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# needs adb device/emulator
|
# needs adb device/emulator
|
||||||
|
|
@ -10,4 +9,22 @@ STACK=goa ./run-android-pay-smoke.sh
|
||||||
STACK=stage ./run-android-pay-smoke.sh
|
STACK=stage ./run-android-pay-smoke.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
|
APK: F-Droid **1.6.1** (`net.taler.wallet.fdroid`).
|
||||||
|
|
||||||
|
## 2) Latest source build + same tests
|
||||||
|
|
||||||
|
Pulls/builds `taler-android` master (`:wallet:assembleFdroidDebug`), then
|
||||||
|
runs the **same** smoke (install + withdraw/pay deep-links).
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# default source: $HOME/taler/taler-android
|
||||||
|
./run-android-build-and-smoke.sh
|
||||||
|
STACK=goa ./run-android-build-and-smoke.sh
|
||||||
|
SKIP_PULL=1 ./run-android-build-and-smoke.sh # use tree as-is
|
||||||
|
TALER_ANDROID_SRC=/path/to/taler-android ./run-android-build-and-smoke.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
Built package id: `net.taler.wallet.fdroid.debug`.
|
||||||
|
Needs `ANDROID_HOME` (e.g. `$HOME/Android/Sdk`), Java 17+, network for Maven.
|
||||||
|
|
||||||
See parent [GIT-AUTOMATION-NOTES.md](../GIT-AUTOMATION-NOTES.md).
|
See parent [GIT-AUTOMATION-NOTES.md](../GIT-AUTOMATION-NOTES.md).
|
||||||
|
|
|
||||||
93
scripts/taler-monitoring/android-test/run-android-build-and-smoke.sh
Executable file
93
scripts/taler-monitoring/android-test/run-android-build-and-smoke.sh
Executable file
|
|
@ -0,0 +1,93 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
# Build the **latest** GNU Taler Android wallet from source, then run the same
|
||||||
|
# adb deep-link smoke as run-android-pay-smoke.sh.
|
||||||
|
#
|
||||||
|
# Source (default): $HOME/taler/taler-android (git@git.taler.net:taler-android.git)
|
||||||
|
# Build: ./gradlew :wallet:assembleFdroidDebug
|
||||||
|
# Package id: net.taler.wallet.fdroid.debug
|
||||||
|
#
|
||||||
|
# No root required if ANDROID_HOME points at a user SDK ($HOME/Android/Sdk).
|
||||||
|
#
|
||||||
|
# Usage:
|
||||||
|
# ./android-test/run-android-build-and-smoke.sh
|
||||||
|
# STACK=goa ./android-test/run-android-build-and-smoke.sh
|
||||||
|
# STACK=stage SKIP_PULL=1 ./android-test/run-android-build-and-smoke.sh
|
||||||
|
# TALER_ANDROID_SRC=/path/to/taler-android ./android-test/run-android-build-and-smoke.sh
|
||||||
|
#
|
||||||
|
set -euo pipefail
|
||||||
|
ROOT=$(cd "$(dirname "$0")" && pwd)
|
||||||
|
SMOKE="$ROOT/run-android-pay-smoke.sh"
|
||||||
|
SRC="${TALER_ANDROID_SRC:-$HOME/taler/taler-android}"
|
||||||
|
SKIP_PULL="${SKIP_PULL:-0}"
|
||||||
|
VARIANT="${VARIANT:-fdroidDebug}" # assemble task suffix: FdroidDebug / NightlyDebug / …
|
||||||
|
export ANDROID_HOME="${ANDROID_HOME:-$HOME/Android/Sdk}"
|
||||||
|
export ANDROID_SDK_ROOT="${ANDROID_SDK_ROOT:-$ANDROID_HOME}"
|
||||||
|
|
||||||
|
if [ ! -x "$SRC/gradlew" ]; then
|
||||||
|
echo "taler-android not found at $SRC (set TALER_ANDROID_SRC=…)" >&2
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
if [ ! -d "$ANDROID_HOME" ]; then
|
||||||
|
echo "ANDROID_HOME missing: $ANDROID_HOME" >&2
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf 'sdk.dir=%s\n' "$ANDROID_HOME" >"$SRC/local.properties"
|
||||||
|
|
||||||
|
cd "$SRC"
|
||||||
|
if [ "$SKIP_PULL" != "1" ] && [ -d .git ]; then
|
||||||
|
echo "git pull --ff-only origin $(git rev-parse --abbrev-ref HEAD)"
|
||||||
|
git pull --ff-only origin "$(git rev-parse --abbrev-ref HEAD)" || \
|
||||||
|
git fetch origin && git merge --ff-only "origin/$(git rev-parse --abbrev-ref HEAD)" || true
|
||||||
|
fi
|
||||||
|
COMMIT=$(git rev-parse --short=12 HEAD 2>/dev/null || echo unknown)
|
||||||
|
echo "source: $SRC @ $COMMIT"
|
||||||
|
echo "variant: assemble${VARIANT^}" 2>/dev/null || true
|
||||||
|
|
||||||
|
# Map VARIANT → gradle task (fdroidDebug → assembleFdroidDebug)
|
||||||
|
task="assemble$(printf '%s' "$VARIANT" | python3 -c 'import sys; s=sys.stdin.read().strip(); print(s[:1].upper()+s[1:] if s else "FdroidDebug")')"
|
||||||
|
# Prefer explicit known tasks
|
||||||
|
case "$VARIANT" in
|
||||||
|
fdroidDebug|FdroidDebug) task=assembleFdroidDebug ;;
|
||||||
|
fdroidRelease|FdroidRelease) task=assembleFdroidRelease ;;
|
||||||
|
nightlyDebug|NightlyDebug) task=assembleNightlyDebug ;;
|
||||||
|
googleDebug|GoogleDebug) task=assembleGoogleDebug ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Low-RAM hosts: cap JVM (override GRADLE_OPTS to raise)
|
||||||
|
export GRADLE_OPTS="${GRADLE_OPTS:--Xmx1280m -Dorg.gradle.daemon=false -Dorg.gradle.workers.max=1}"
|
||||||
|
echo "gradle :wallet:$task …"
|
||||||
|
./gradlew ":wallet:$task" --no-daemon --max-workers="${GRADLE_MAX_WORKERS:-1}" \
|
||||||
|
-Dorg.gradle.jvmargs="${GRADLE_JVMARGS:--Xmx1280m}"
|
||||||
|
|
||||||
|
# Locate APK
|
||||||
|
APK=$(find "$SRC/wallet/build/outputs/apk" -name '*.apk' -type f 2>/dev/null | sort | tail -1)
|
||||||
|
if [ -z "$APK" ] || [ ! -f "$APK" ]; then
|
||||||
|
echo "no APK under wallet/build/outputs/apk" >&2
|
||||||
|
exit 4
|
||||||
|
fi
|
||||||
|
echo "built apk: $APK ($(wc -c <"$APK") bytes)"
|
||||||
|
|
||||||
|
# Package id from aapt if available
|
||||||
|
PKG="${PKG:-}"
|
||||||
|
if [ -z "$PKG" ] && command -v aapt >/dev/null 2>&1; then
|
||||||
|
PKG=$(aapt dump badging "$APK" 2>/dev/null | sed -n "s/^package: name='\([^']*\)'.*/\1/p" | head -1)
|
||||||
|
fi
|
||||||
|
: "${PKG:=net.taler.wallet.fdroid.debug}"
|
||||||
|
|
||||||
|
mkdir -p "$ROOT/apks"
|
||||||
|
STAMP_APK="$ROOT/apks/wallet-from-source-${COMMIT}.apk"
|
||||||
|
cp -f "$APK" "$STAMP_APK"
|
||||||
|
echo "copied → $STAMP_APK"
|
||||||
|
echo "$COMMIT" >"$ROOT/out/build-commit.txt" 2>/dev/null || mkdir -p "$ROOT/out" && echo "$COMMIT" >"$ROOT/out/build-commit.txt"
|
||||||
|
echo "$APK" >"$ROOT/out/build-apk-path.txt"
|
||||||
|
|
||||||
|
# Same smoke as published F-Droid path
|
||||||
|
export APK_PATH="$STAMP_APK"
|
||||||
|
export APK_NAME="$(basename "$STAMP_APK")"
|
||||||
|
export PKG
|
||||||
|
export OUT_DIR="${OUT_DIR:-$ROOT/out-source}"
|
||||||
|
mkdir -p "$OUT_DIR"
|
||||||
|
echo "=== smoke with built APK (PKG=$PKG) ==="
|
||||||
|
exec env APK_DIR="$ROOT/apks" APK_NAME="$APK_NAME" PKG="$PKG" OUT_DIR="$OUT_DIR" \
|
||||||
|
"$SMOKE"
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# Android wallet smoke: install published F-Droid APK, open withdraw/pay URIs via adb.
|
# Android wallet smoke: install APK (published F-Droid **or** from-source), open
|
||||||
|
# withdraw/pay URIs via adb.
|
||||||
#
|
#
|
||||||
# No root required if:
|
# No root required if:
|
||||||
# - adb is available (package android-tools-adb / platform-tools)
|
# - adb is available (package android-tools-adb / platform-tools)
|
||||||
|
|
@ -7,10 +8,12 @@
|
||||||
# - optional user-local SDK under $HOME/Android/Sdk (emulator)
|
# - optional user-local SDK under $HOME/Android/Sdk (emulator)
|
||||||
#
|
#
|
||||||
# Usage:
|
# Usage:
|
||||||
# ./android-test/run-android-pay-smoke.sh # auto stack (GOA if local, else stage)
|
# ./android-test/run-android-pay-smoke.sh # published F-Droid APK
|
||||||
# STACK=goa ./android-test/run-android-pay-smoke.sh
|
# STACK=goa ./android-test/run-android-pay-smoke.sh
|
||||||
# STACK=stage ./android-test/run-android-pay-smoke.sh
|
# STACK=stage ./android-test/run-android-pay-smoke.sh
|
||||||
# SERIAL=emulator-5554 ./android-test/run-android-pay-smoke.sh
|
# # from-source (built first):
|
||||||
|
# ./android-test/run-android-build-and-smoke.sh
|
||||||
|
# APK_PATH=/path/to.apk PKG=net.taler.wallet.fdroid.debug ./run-android-pay-smoke.sh
|
||||||
#
|
#
|
||||||
# Published APK (default): F-Droid Taler Wallet 1.6.1 (854)
|
# Published APK (default): F-Droid Taler Wallet 1.6.1 (854)
|
||||||
# https://f-droid.org/packages/net.taler.wallet.fdroid/
|
# https://f-droid.org/packages/net.taler.wallet.fdroid/
|
||||||
|
|
@ -20,6 +23,8 @@ ROOT=$(cd "$(dirname "$0")" && pwd)
|
||||||
APK_DIR="${APK_DIR:-$ROOT/apks}"
|
APK_DIR="${APK_DIR:-$ROOT/apks}"
|
||||||
APK_URL="${APK_URL:-https://f-droid.org/repo/net.taler.wallet.fdroid_854.apk}"
|
APK_URL="${APK_URL:-https://f-droid.org/repo/net.taler.wallet.fdroid_854.apk}"
|
||||||
APK_NAME="${APK_NAME:-net.taler.wallet.fdroid_854.apk}"
|
APK_NAME="${APK_NAME:-net.taler.wallet.fdroid_854.apk}"
|
||||||
|
# Optional override: full path to an already-built APK (from-source)
|
||||||
|
APK_PATH="${APK_PATH:-}"
|
||||||
PKG="${PKG:-net.taler.wallet.fdroid}"
|
PKG="${PKG:-net.taler.wallet.fdroid}"
|
||||||
STACK="${STACK:-auto}" # auto | goa | stage
|
STACK="${STACK:-auto}" # auto | goa | stage
|
||||||
SERIAL="${SERIAL:-}"
|
SERIAL="${SERIAL:-}"
|
||||||
|
|
@ -77,13 +82,18 @@ case "$STACK" in
|
||||||
esac
|
esac
|
||||||
echo "stack: $STACK bank: $BANK"
|
echo "stack: $STACK bank: $BANK"
|
||||||
|
|
||||||
# APK
|
# APK: explicit path, or download published F-Droid into APK_DIR
|
||||||
APK_PATH="$APK_DIR/$APK_NAME"
|
if [ -n "$APK_PATH" ] && [ -f "$APK_PATH" ]; then
|
||||||
if [ ! -f "$APK_PATH" ]; then
|
:
|
||||||
|
elif [ -f "$APK_DIR/$APK_NAME" ]; then
|
||||||
|
APK_PATH="$APK_DIR/$APK_NAME"
|
||||||
|
else
|
||||||
|
APK_PATH="$APK_DIR/$APK_NAME"
|
||||||
echo "downloading published wallet APK…"
|
echo "downloading published wallet APK…"
|
||||||
curl -fL --retry 3 -o "$APK_PATH" "$APK_URL"
|
curl -fL --retry 3 -o "$APK_PATH" "$APK_URL"
|
||||||
fi
|
fi
|
||||||
echo "apk: $APK_PATH ($(wc -c <"$APK_PATH") bytes)"
|
echo "apk: $APK_PATH ($(wc -c <"$APK_PATH") bytes)"
|
||||||
|
echo "pkg: $PKG"
|
||||||
|
|
||||||
"${ADB[@]}" wait-for-device
|
"${ADB[@]}" wait-for-device
|
||||||
"${ADB[@]}" install -r "$APK_PATH"
|
"${ADB[@]}" install -r "$APK_PATH"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue