diff --git a/tests/hostside/java/android/virt/test/MicrodroidTestCase.java b/tests/hostside/java/android/virt/test/MicrodroidTestCase.java
index 56829fc..afccef6 100644
--- a/tests/hostside/java/android/virt/test/MicrodroidTestCase.java
+++ b/tests/hostside/java/android/virt/test/MicrodroidTestCase.java
@@ -25,6 +25,7 @@
 
 import static org.hamcrest.CoreMatchers.containsString;
 import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.nullValue;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotEquals;
 import static org.junit.Assert.assertThat;
@@ -384,9 +385,8 @@
                         Optional.of(CPU_AFFINITY));
         adbConnectToMicrodroid(getDevice(), cid);
         waitForBootComplete();
-        runOnMicrodroidRetryingOnFailure(MICRODROID_COMMAND_TIMEOUT_MILLIS,
-                        MICRODROID_ADB_CONNECT_MAX_ATTEMPTS,
-                        "logcat -c");
+        runOnMicrodroidRetryingOnFailure(
+                MICRODROID_COMMAND_TIMEOUT_MILLIS, MICRODROID_ADB_CONNECT_MAX_ATTEMPTS, "true");
         // We need root permission to write to /data/tombstones/
         rootMicrodroid();
         // Write a test tombstone file in /data/tombstones
@@ -394,9 +394,15 @@
                     + "> /data/tombstones/transmit.txt");
         // check if the tombstone have been tranferred from VM. This is a bit flaky - increasing
         // timeout to 30s can result in SIGKILL inside microdroid due to logcat memory issue
-        assertNotEquals(runOnMicrodroid("timeout 15s logcat | grep -m 1 "
-                            + "'tombstone_transmit.microdroid:.*data/tombstones/transmit.txt'"),
-                "");
+        CommandRunner android = new CommandRunner(getDevice());
+        android.runWithTimeout(
+                15000,
+                "grep",
+                "-m",
+                "1",
+                "'tombstone_transmit.microdroid:.*data/tombstones/transmit.txt'",
+                LOG_PATH);
+
         // Confirm that tombstone is received (from host logcat)
         assertNotEquals(runOnHost("adb", "-s", getDevice().getSerialNumber(),
                             "logcat", "-d", "-e",
@@ -441,7 +447,9 @@
         assertThat(runOnMicrodroid("ls", "-Z", testLib), is(label + " " + testLib));
 
         // Check that no denials have happened so far
-        assertThat(runOnMicrodroid("logcat -d -e 'avc:[[:space:]]{1,2}denied'"), is(""));
+        CommandRunner android = new CommandRunner(getDevice());
+        assertThat(android.tryRun("egrep", "'avc:[[:space:]]{1,2}denied'", LOG_PATH),
+                is(nullValue()));
 
         assertThat(runOnMicrodroid("cat /proc/cpuinfo | grep processor | wc -l"),
                 is(Integer.toString(NUM_VCPUS)));
