diff options
Diffstat (limited to 'packages/Shell/tests')
-rw-r--r-- | packages/Shell/tests/src/com/android/shell/BugreportReceiverTest.java | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/packages/Shell/tests/src/com/android/shell/BugreportReceiverTest.java b/packages/Shell/tests/src/com/android/shell/BugreportReceiverTest.java index c7c7fc5e7491..902c71d64ae9 100644 --- a/packages/Shell/tests/src/com/android/shell/BugreportReceiverTest.java +++ b/packages/Shell/tests/src/com/android/shell/BugreportReceiverTest.java @@ -588,6 +588,10 @@ public class BugreportReceiverTest extends InstrumentationTestCase { } private void cancelExistingNotifications() { + // Must kill service first, because notifications from a foreground service cannot be + // canceled. + killService(); + NotificationManager nm = NotificationManager.from(mContext); StatusBarNotification[] activeNotifications = nm.getActiveNotifications(); if (activeNotifications.length == 0) { @@ -899,6 +903,26 @@ public class BugreportReceiverTest extends InstrumentationTestCase { fail("Service status didn't change to " + expectRunning); } + private void killService() { + String service = BugreportProgressService.class.getName(); + + if (!isServiceRunning(service)) return; + + Log.w(TAG, "Service '" + service + "' is still running, killing it"); + silentlyExecuteShellCommand("am stopservice com.android.shell/.BugreportProgressService"); + + waitForService(false); + } + + private void silentlyExecuteShellCommand(String cmd) { + Log.w(TAG, "silentlyExecuteShellCommand: '" + cmd + "'"); + try { + UiDevice.getInstance(getInstrumentation()).executeShellCommand(cmd); + } catch (IOException e) { + Log.w(TAG, "error executing shell comamand '" + cmd + "'", e); + } + } + private void createTextFile(String path, String content) throws IOException { Log.v(TAG, "createFile(" + path + ")"); try (Writer writer = new BufferedWriter(new OutputStreamWriter( |