Skip to content

Commit

Permalink
Run tests in Cirrus CI again
Browse files Browse the repository at this point in the history
  • Loading branch information
stevesoltys committed Sep 25, 2024
1 parent c5870e0 commit 2afb842
Show file tree
Hide file tree
Showing 5 changed files with 70 additions and 20 deletions.
72 changes: 60 additions & 12 deletions .cirrus.yml
Original file line number Diff line number Diff line change
@@ -1,13 +1,61 @@
task:
name: Build with AOSP
only_if: $CIRRUS_PR_LABELS =~ ".*aosp-build.*"
timeout_in: 70m
container:
image: ubuntu:23.04
cpu: 8
memory: 32G
build_script:
- ./.github/scripts/build_aosp.sh aosp_arm64 ap1a userdebug android-14.0.0_r29
container:
image: ghcr.io/cirruslabs/android-sdk:34
kvm: true
cpu: 8
memory: 16G

instrumentation_tests_task:
name: "Cirrus CI Instrumentation Tests"
start_avd_background_script:
sdkmanager --install "system-images;android-34;default;x86_64" "emulator";
echo no | avdmanager create avd -n seedvault -k "system-images;android-34;default;x86_64";
$ANDROID_HOME/emulator/emulator
-avd seedvault
-no-audio
-no-boot-anim
-gpu swiftshader_indirect
-no-snapshot
-no-window
-writable-system;
provision_avd_background_script:
wget https://github.com/seedvault-app/seedvault-test-data/releases/download/3/backup.tar.gz;

adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed) ]]; do sleep 1; done;';
adb root;
sleep 5;
adb remount;
adb reboot;
adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed) ]]; do sleep 1; done;';
adb root;
sleep 5;
adb remount;
sleep 5;
assemble_script:
./gradlew :app:assembleRelease :app:assembleAndroidTest
install_app_script:
timeout 180s bash -c 'while [[ -z $(adb shell mount | grep "/system " | grep "(rw,") ]]; do sleep 1; done;';
adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed) ]]; do sleep 1; done;';

adb shell mkdir -p /sdcard/seedvault_baseline;
adb push backup.tar.gz /sdcard/seedvault_baseline/backup.tar.gz;
adb shell tar xzf /sdcard/seedvault_baseline/backup.tar.gz --directory=/sdcard/seedvault_baseline;

adb shell mkdir -p /system/priv-app/Seedvault;
adb push app/build/outputs/apk/release/app-release.apk /system/priv-app/Seedvault/Seedvault.apk;
adb push permissions_com.stevesoltys.seedvault.xml /system/etc/permissions/privapp-permissions-seedvault.xml;
adb push allowlist_com.stevesoltys.seedvault.xml /system/etc/sysconfig/allowlist-seedvault.xml;
adb shell bmgr enable true;
adb reboot;
adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed) ]]; do sleep 1; done;';
adb shell bmgr transport com.stevesoltys.seedvault.transport.ConfigurableBackupTransport;
adb reboot;
adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed) ]]; do sleep 1; done;';
run_large_tests_script: ./gradlew -Pinstrumented_test_size=large :app:connectedAndroidTest
run_medium_tests_script: ./gradlew -Pinstrumented_test_size=medium :app:connectedAndroidTest
always:
seedvault_artifacts:
path: Seedvault.apk
pull_screenshots_script:
adb pull /sdcard/seedvault_test_results
screenshots_artifacts:
path: "seedvault_test_results/**/*.mp4"
logcat_artifacts:
path: "seedvault_test_results/**/*.log"
Original file line number Diff line number Diff line change
Expand Up @@ -49,14 +49,14 @@ internal interface LargeTestBase : KoinComponent {

companion object {
private const val TEST_STORAGE_FOLDER = "seedvault_test"
private const val TEST_VIDEO_FOLDER = "seedvault_test_results"
private const val TEST_RESULT_FOLDER = "seedvault_test_results"
}

val externalStorageDir: String get() = Environment.getExternalStorageDirectory().absolutePath

val testStoragePath get() = "$externalStorageDir/$TEST_STORAGE_FOLDER"

val testVideoPath get() = "$externalStorageDir/$TEST_VIDEO_FOLDER"
val testResultPath get() = "$externalStorageDir/$TEST_RESULT_FOLDER"

val targetContext: Context
get() = InstrumentationRegistry.getInstrumentation().targetContext
Expand Down Expand Up @@ -123,7 +123,7 @@ internal interface LargeTestBase : KoinComponent {
keepRecordingScreen: AtomicBoolean,
testName: String,
) {
val folder = testVideoPath
val folder = testResultPath
runCommand("mkdir -p $folder")

val fileName = testResultFilename(testName)
Expand All @@ -149,7 +149,7 @@ internal interface LargeTestBase : KoinComponent {

// write logcat to file
val fileName = testResultFilename(testName)
runCommand("logcat -d -f $testVideoPath/$fileName.log")
runCommand("logcat -d -f $testResultPath/$fileName.log")
}

fun uninstallPackages(packages: Collection<PackageInfo>) {
Expand All @@ -162,7 +162,7 @@ internal interface LargeTestBase : KoinComponent {

fun clearTestBackups() {
File(testStoragePath).deleteRecursively()
File(testVideoPath).deleteRecursively()
File(testResultPath).deleteRecursively()
}

fun changeBackupLocation(
Expand Down Expand Up @@ -225,6 +225,7 @@ internal interface LargeTestBase : KoinComponent {

fun confirmCode() {
RecoveryCodeScreen {
startNewBackupButton.click()
confirmCodeButton.click()

verifyCodeButton.scrollTo().click()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,8 @@ internal abstract class SeedvaultLargeTest :
clearTestBackups()

runCommand("bmgr enable true")
sleep(60_000)
runCommand("bmgr transport com.stevesoltys.seedvault.transport.ConfigurableBackupTransport")
sleep(60_000)
sleep(5000)

startRecordingTest(keepRecordingScreen, name.methodName)
restoreBaselineBackup()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ object BackupScreen : UiDeviceScreen<BackupScreen>() {

val internalStorageButton = findObject { textContains(Build.MODEL) }

val useAnywayButton = findObject { text("USE ANYWAY") }
val useAnywayButton = findObject { text("Use anyway") }

val initializingText: BySelector = By.textContains("Initializing backup location")
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ import com.stevesoltys.seedvault.e2e.screen.UiDeviceScreen

object RecoveryCodeScreen : UiDeviceScreen<RecoveryCodeScreen>() {

val startNewBackupButton = findObject { text("Start new") }

val confirmCodeButton = findObject { text("Confirm code") }

val verifyCodeButton = findObject { text("Verify") }
Expand Down

0 comments on commit 2afb842

Please sign in to comment.