Chromium Code Reviews| 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); |
| + } |
| + } |
| +} |