Index: components/minidump_uploader/android/javatests/src/org/chromium/components/minidump_uploader/MinidumpUploadTestUtility.java |
diff --git a/components/minidump_uploader/android/javatests/src/org/chromium/components/minidump_uploader/MinidumpUploadTestUtility.java b/components/minidump_uploader/android/javatests/src/org/chromium/components/minidump_uploader/MinidumpUploadTestUtility.java |
new file mode 100644 |
index 0000000000000000000000000000000000000000..29d5a675de306af8e2025f0500cb89f0843364b7 |
--- /dev/null |
+++ b/components/minidump_uploader/android/javatests/src/org/chromium/components/minidump_uploader/MinidumpUploadTestUtility.java |
@@ -0,0 +1,71 @@ |
+// Copyright 2017 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+package org.chromium.components.minidump_uploader; |
+ |
+import static org.junit.Assert.assertEquals; |
+import static org.junit.Assert.assertTrue; |
+ |
+import static org.chromium.base.test.util.ScalableTimeout.scaleTimeout; |
+ |
+import org.chromium.base.ThreadUtils; |
+ |
+import java.util.concurrent.CountDownLatch; |
+import java.util.concurrent.TimeUnit; |
+ |
+/** |
+ * Utility class for testing the minidump-uploading mechanism. |
+ */ |
+public class MinidumpUploadTestUtility { |
+ private static final long TIME_OUT_MILLIS = 3000; |
+ |
+ /** |
+ * Utility method for running {@param minidumpUploader}.uploadAllMinidumps on the UI thread to |
+ * avoid breaking any assertions about running on the UI thread. |
+ */ |
+ public static void uploadAllMinidumpsOnUiThread(final MinidumpUploader minidumpUploader, |
+ final MinidumpUploader.UploadsFinishedCallback uploadsFinishedCallback) { |
+ uploadAllMinidumpsOnUiThread( |
+ minidumpUploader, uploadsFinishedCallback, false /* blockUntilJobPosted */); |
+ } |
+ |
+ public static void uploadAllMinidumpsOnUiThread(final MinidumpUploader minidumpUploader, |
Ilya Sherman
2017/04/14 16:35:45
nit: Please document.
gsennton
2017/04/17 11:38:57
Done.
|
+ final MinidumpUploader.UploadsFinishedCallback uploadsFinishedCallback, |
+ boolean blockUntilJobPosted) { |
+ final CountDownLatch jobPostedLatch = new CountDownLatch(1); |
+ ThreadUtils.runOnUiThread(new Runnable() { |
+ @Override |
+ public void run() { |
+ minidumpUploader.uploadAllMinidumps(uploadsFinishedCallback); |
+ jobPostedLatch.countDown(); |
+ } |
+ }); |
+ if (blockUntilJobPosted) { |
+ try { |
+ jobPostedLatch.await(); |
Ilya Sherman
2017/04/14 16:35:45
Should this also have a timeout specified? Or is
gsennton
2017/04/17 11:38:57
Yep, I added a timeout here in PS2. Normally it is
|
+ } catch (InterruptedException e) { |
+ throw new RuntimeException(e); |
+ } |
+ } |
+ } |
+ |
+ public static void uploadMinidumpsSync( |
Ilya Sherman
2017/04/14 16:35:45
nit: Please document.
gsennton
2017/04/17 11:38:57
Done.
|
+ MinidumpUploader minidumpUploader, final boolean expectReschedule) { |
+ final CountDownLatch uploadsFinishedLatch = new CountDownLatch(1); |
+ uploadAllMinidumpsOnUiThread( |
+ minidumpUploader, new MinidumpUploader.UploadsFinishedCallback() { |
+ @Override |
+ public void uploadsFinished(boolean reschedule) { |
+ assertEquals(expectReschedule, reschedule); |
+ uploadsFinishedLatch.countDown(); |
+ } |
+ }); |
+ try { |
+ assertTrue(uploadsFinishedLatch.await( |
+ scaleTimeout(TIME_OUT_MILLIS), TimeUnit.MILLISECONDS)); |
+ } catch (InterruptedException e) { |
+ throw new RuntimeException(e); |
+ } |
+ } |
+} |