From 19773e04fcce37d45e14be4b6e638c791abecb49 Mon Sep 17 00:00:00 2001 From: Mathieu Chartier Date: Mon, 10 Feb 2020 12:59:13 -0800 Subject: Set boot image profile properties in a loop for BootImageProfileTest Set the properties in a loop to attempt and prevent flakiness if properties aren't set by the time the tests starts. Bug: 148649139 Test: atest BootImageProfileTest Change-Id: I9a51770d687c93e0eb8829c277e1ec0a33d7c481 --- .../bootimageprofile/BootImageProfileTest.java | 34 +++++++++++++++++++--- 1 file changed, 30 insertions(+), 4 deletions(-) (limited to 'tests/BootImageProfileTest/src') diff --git a/tests/BootImageProfileTest/src/com/android/bootimageprofile/BootImageProfileTest.java b/tests/BootImageProfileTest/src/com/android/bootimageprofile/BootImageProfileTest.java index 59f0162bc901..6684515ec835 100644 --- a/tests/BootImageProfileTest/src/com/android/bootimageprofile/BootImageProfileTest.java +++ b/tests/BootImageProfileTest/src/com/android/bootimageprofile/BootImageProfileTest.java @@ -42,10 +42,9 @@ public class BootImageProfileTest implements IDeviceTest { } /** - * Test that the boot image profile properties are set. + * Validate that the boot image profile properties are set. */ - @Test - public void testProperties() throws Exception { + public void validateProperties() throws Exception { String res = mTestDevice.getProperty( "persist.device_config.runtime_native_boot.profilebootclasspath"); assertTrue("profile boot class path not enabled", res != null && res.equals("true")); @@ -67,13 +66,37 @@ public class BootImageProfileTest implements IDeviceTest { @Test public void testSystemServerProfile() throws Exception { + final int numIterations = 20; + for (int i = 1; i <= numIterations; ++i) { + String res; + res = mTestDevice.getProperty( + "persist.device_config.runtime_native_boot.profilebootclasspath"); + boolean profileBootClassPath = res != null && res.equals("true"); + res = mTestDevice.getProperty( + "persist.device_config.runtime_native_boot.profilesystemserver"); + boolean profileSystemServer = res != null && res.equals("true"); + if (profileBootClassPath && profileSystemServer) { + break; + } + if (i == numIterations) { + assertTrue("profile system server not enabled", profileSystemServer); + assertTrue("profile boot class path not enabled", profileSystemServer); + } + + res = mTestDevice.executeShellCommand( + "device_config put runtime_native_boot profilebootclasspath true"); + res = mTestDevice.executeShellCommand( + "device_config put runtime_native_boot profilesystemserver true"); + res = mTestDevice.executeShellCommand("stop"); + res = mTestDevice.executeShellCommand("start"); + Thread.sleep(5000); + } // Trunacte the profile before force it to be saved to prevent previous profiles // causing the test to pass. String res; res = mTestDevice.executeShellCommand("truncate -s 0 " + SYSTEM_SERVER_PROFILE).trim(); assertTrue(res, res.length() == 0); // Wait up to 20 seconds for the profile to be saved. - final int numIterations = 20; for (int i = 1; i <= numIterations; ++i) { // Force save the profile since we truncated it. if (forceSaveProfile("system_server")) { @@ -89,6 +112,9 @@ public class BootImageProfileTest implements IDeviceTest { // In case the profile is partially saved, wait an extra second. Thread.sleep(1000); + // Validate that properties are still set. + validateProperties(); + // Validate that the profile is non empty. res = mTestDevice.executeShellCommand("profman --dump-only --profile-file=" + SYSTEM_SERVER_PROFILE); -- cgit v1.2.3-59-g8ed1b