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

Commit de49e23a authored by Mathieu Chartier's avatar Mathieu Chartier
Browse files

Fix waiting for system server to be running for BootImageProfileTest

In the case where system server was not yet running, the invalid pid
would cause the test to fail instead of doing the 20 retry loop.
Fixed the logic to handle this case.

Presumably fixes test flakyness.

Bug: 143223380
Bug: 139883463
Test: atest ./tests/BootImageProfileTest/src/com/android/bootimageprofile/BootImageProfileTest.java

Change-Id: I4bac03e7f377058479f75daaa0d57608614bf329
parent 0ac7e561
Loading
Loading
Loading
Loading
+13 −6
Original line number Diff line number Diff line
@@ -54,11 +54,15 @@ public class BootImageProfileTest implements IDeviceTest {
        assertTrue("profile system server not enabled", res != null && res.equals("true"));
    }

    private void forceSaveProfile(String pkg) throws Exception {
    private boolean forceSaveProfile(String pkg) throws Exception {
        String pid = mTestDevice.executeShellCommand("pidof " + pkg).trim();
        assertTrue("Invalid pid " + pid, pid.length() > 0);
        if (pid.length() == 0) {
            // Not yet running.
            return false;
        }
        String res = mTestDevice.executeShellCommand("kill -s SIGUSR1 " + pid).trim();
        assertTrue("kill SIGUSR1: " + res, res.length() == 0);
        return true;
    }

    @Test
@@ -71,11 +75,14 @@ public class BootImageProfileTest implements IDeviceTest {
        // Wait up to 20 seconds for the profile to be saved.
        for (int i = 0; i < 20; ++i) {
            // Force save the profile since we truncated it.
            forceSaveProfile("system_server");
            String s = mTestDevice.executeShellCommand("wc -c <" + SYSTEM_SERVER_PROFILE).trim();
            if (forceSaveProfile("system_server")) {
                // Might fail if system server is not yet running.
                String s = mTestDevice.executeShellCommand(
                        "wc -c <" + SYSTEM_SERVER_PROFILE).trim();
                if (!"0".equals(s)) {
                    break;
                }
            }
            Thread.sleep(1000);
        }
        // In case the profile is partially saved, wait an extra second.