Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 324a5d89 authored by JW Wang's avatar JW Wang
Browse files

Add a Subject to simplify WatchdogEventLogger assertion (2/n)

It also gives more descriptive messages when assertion fails.

Bug: 177861067
Test: atest StagedRollbackTest
Change-Id: Id1340420f7e1f9f263ae3873a22339a0f9971d70
parent e71690f6
Loading
Loading
Loading
Loading
+14 −20
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package com.android.tests.rollback.host;

import static com.android.tests.rollback.host.WatchdogEventLogger.Subject.assertThat;

import static com.google.common.truth.Truth.assertThat;
import static com.google.common.truth.Truth.assertWithMessage;

@@ -154,11 +156,9 @@ public class StagedRollbackTest extends BaseHostJUnit4Test {

        runPhase("testBadApkOnly_Phase4");

        assertThat(mLogger.watchdogEventOccurred(ROLLBACK_INITIATE, null,
                REASON_APP_CRASH, TESTAPP_A)).isTrue();
        assertThat(mLogger.watchdogEventOccurred(ROLLBACK_BOOT_TRIGGERED, null,
                null, null)).isTrue();
        assertThat(mLogger.watchdogEventOccurred(ROLLBACK_SUCCESS, null, null, null)).isTrue();
        assertThat(mLogger).eventOccurred(ROLLBACK_INITIATE, null, REASON_APP_CRASH, TESTAPP_A);
        assertThat(mLogger).eventOccurred(ROLLBACK_BOOT_TRIGGERED, null, null, null);
        assertThat(mLogger).eventOccurred(ROLLBACK_SUCCESS, null, null, null);
    }

    @Test
@@ -187,11 +187,9 @@ public class StagedRollbackTest extends BaseHostJUnit4Test {
        // verify rollback committed
        runPhase("testNativeWatchdogTriggersRollback_Phase3");

        assertThat(mLogger.watchdogEventOccurred(ROLLBACK_INITIATE, null,
                        REASON_NATIVE_CRASH, null)).isTrue();
        assertThat(mLogger.watchdogEventOccurred(ROLLBACK_BOOT_TRIGGERED, null,
                null, null)).isTrue();
        assertThat(mLogger.watchdogEventOccurred(ROLLBACK_SUCCESS, null, null, null)).isTrue();
        assertThat(mLogger).eventOccurred(ROLLBACK_INITIATE, null, REASON_NATIVE_CRASH, null);
        assertThat(mLogger).eventOccurred(ROLLBACK_BOOT_TRIGGERED, null, null, null);
        assertThat(mLogger).eventOccurred(ROLLBACK_SUCCESS, null, null, null);
    }

    @Test
@@ -227,11 +225,9 @@ public class StagedRollbackTest extends BaseHostJUnit4Test {
        // verify all available rollbacks have been committed
        runPhase("testNativeWatchdogTriggersRollbackForAll_Phase4");

        assertThat(mLogger.watchdogEventOccurred(ROLLBACK_INITIATE, null,
                        REASON_NATIVE_CRASH, null)).isTrue();
        assertThat(mLogger.watchdogEventOccurred(ROLLBACK_BOOT_TRIGGERED, null,
                null, null)).isTrue();
        assertThat(mLogger.watchdogEventOccurred(ROLLBACK_SUCCESS, null, null, null)).isTrue();
        assertThat(mLogger).eventOccurred(ROLLBACK_INITIATE, null, REASON_NATIVE_CRASH, null);
        assertThat(mLogger).eventOccurred(ROLLBACK_BOOT_TRIGGERED, null, null, null);
        assertThat(mLogger).eventOccurred(ROLLBACK_SUCCESS, null, null, null);
    }

    /**
@@ -309,11 +305,9 @@ public class StagedRollbackTest extends BaseHostJUnit4Test {
        // Verify rollback occurred due to crash of apk-in-apex
        runPhase("testRollbackApexWithApkCrashing_Phase3");

        assertThat(mLogger.watchdogEventOccurred(ROLLBACK_INITIATE, null,
                REASON_APP_CRASH, TESTAPP_A)).isTrue();
        assertThat(mLogger.watchdogEventOccurred(ROLLBACK_BOOT_TRIGGERED, null,
                null, null)).isTrue();
        assertThat(mLogger.watchdogEventOccurred(ROLLBACK_SUCCESS, null, null, null)).isTrue();
        assertThat(mLogger).eventOccurred(ROLLBACK_INITIATE, null, REASON_APP_CRASH, TESTAPP_A);
        assertThat(mLogger).eventOccurred(ROLLBACK_BOOT_TRIGGERED, null, null, null);
        assertThat(mLogger).eventOccurred(ROLLBACK_SUCCESS, null, null, null);
    }

    /**
+28 −0
Original line number Diff line number Diff line
@@ -17,6 +17,8 @@
package com.android.tests.rollback.host;

import com.android.tradefed.device.ITestDevice;
import com.google.common.truth.FailureMetadata;
import com.google.common.truth.Truth;

import static com.google.common.truth.Truth.assertThat;

@@ -76,4 +78,30 @@ public class WatchdogEventLogger {
                && matchProperty(type, "rollbackReason", rollbackReason)
                && matchProperty(type, "failedPackageName", failedPackageName);
    }

    static class Subject extends com.google.common.truth.Subject {
        private final WatchdogEventLogger mActual;

        private Subject(FailureMetadata failureMetadata, WatchdogEventLogger subject) {
            super(failureMetadata, subject);
            mActual = subject;
        }

        private static com.google.common.truth.Subject.Factory<Subject,
                WatchdogEventLogger> loggers() {
            return Subject::new;
        }

        static Subject assertThat(WatchdogEventLogger actual) {
            return Truth.assertAbout(loggers()).that(actual);
        }

        void eventOccurred(String type, String logPackage, String rollbackReason,
                String failedPackageName) throws Exception {
            check("watchdogEventOccurred(type=%s, logPackage=%s, rollbackReason=%s, "
                    + "failedPackageName=%s)", type, logPackage, rollbackReason, failedPackageName)
                    .that(mActual.watchdogEventOccurred(type, logPackage, rollbackReason,
                            failedPackageName)).isTrue();
        }
    }
}