Commit c83b6c78 authored by David Maunder's avatar David Maunder Committed by Chromium LUCI CQ

Batch ThumbnailProviderImplTest

Speedup: 20580ms -> 4586ms (78%)

Bug: 1169444
Change-Id: I5d4f4015e9ff30a588cb004b62a36be2b6cebd21
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2644240Reviewed-by: default avatarMichael Thiessen <mthiesse@chromium.org>
Commit-Queue: David Maunder <davidjm@chromium.org>
Cr-Commit-Position: refs/heads/master@{#846148}
parent b2a46c5a
...@@ -10,15 +10,17 @@ import androidx.annotation.NonNull; ...@@ -10,15 +10,17 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.test.filters.MediumTest; import androidx.test.filters.MediumTest;
import org.junit.After; import org.junit.AfterClass;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Before; import org.junit.BeforeClass;
import org.junit.ClassRule;
import org.junit.Rule; import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.chromium.base.DiscardableReferencePool; import org.chromium.base.DiscardableReferencePool;
import org.chromium.base.task.PostTask; import org.chromium.base.task.PostTask;
import org.chromium.base.test.util.Batch;
import org.chromium.base.test.util.CallbackHelper; import org.chromium.base.test.util.CallbackHelper;
import org.chromium.base.test.util.CommandLineFlags; import org.chromium.base.test.util.CommandLineFlags;
import org.chromium.base.test.util.Feature; import org.chromium.base.test.util.Feature;
...@@ -27,6 +29,7 @@ import org.chromium.chrome.browser.flags.ChromeSwitches; ...@@ -27,6 +29,7 @@ import org.chromium.chrome.browser.flags.ChromeSwitches;
import org.chromium.chrome.browser.thumbnail.generator.ThumbnailProvider.ThumbnailRequest; import org.chromium.chrome.browser.thumbnail.generator.ThumbnailProvider.ThumbnailRequest;
import org.chromium.chrome.test.ChromeJUnit4ClassRunner; import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
import org.chromium.chrome.test.ChromeTabbedActivityTestRule; import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
import org.chromium.chrome.test.batch.BlankCTATabInitialStateRule;
import org.chromium.content_public.browser.UiThreadTaskTraits; import org.chromium.content_public.browser.UiThreadTaskTraits;
/** /**
...@@ -34,28 +37,33 @@ import org.chromium.content_public.browser.UiThreadTaskTraits; ...@@ -34,28 +37,33 @@ import org.chromium.content_public.browser.UiThreadTaskTraits;
*/ */
@RunWith(ChromeJUnit4ClassRunner.class) @RunWith(ChromeJUnit4ClassRunner.class)
@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE}) @CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE})
@Batch(Batch.PER_CLASS)
public class ThumbnailProviderImplTest { public class ThumbnailProviderImplTest {
private static final String TEST_DIRECTORY = private static final String TEST_DIRECTORY =
"chrome/browser/thumbnail/generator/test/data/android/"; "chrome/browser/thumbnail/generator/test/data/android/";
@ClassRule
public static ChromeTabbedActivityTestRule sActivityTestRule =
new ChromeTabbedActivityTestRule();
@Rule @Rule
public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule(); public BlankCTATabInitialStateRule mInitialStateRule =
new BlankCTATabInitialStateRule(sActivityTestRule, false);
private ThumbnailProviderImpl mThumbnailProvider; private static ThumbnailProviderImpl sThumbnailProvider;
private DiscardableReferencePool mReferencePool; private static DiscardableReferencePool sReferencePool;
@Before @BeforeClass
public void setUp() throws Exception { public static void setUp() throws Exception {
mActivityTestRule.startMainActivityOnBlankPage();
PostTask.runOrPostTask(UiThreadTaskTraits.DEFAULT, () -> { PostTask.runOrPostTask(UiThreadTaskTraits.DEFAULT, () -> {
mReferencePool = new DiscardableReferencePool(); sReferencePool = new DiscardableReferencePool();
mThumbnailProvider = new ThumbnailProviderImpl( sThumbnailProvider = new ThumbnailProviderImpl(
mReferencePool, ThumbnailProviderImpl.ClientType.NTP_SUGGESTIONS); sReferencePool, ThumbnailProviderImpl.ClientType.NTP_SUGGESTIONS);
}); });
} }
@After @AfterClass
public void tearDown() { public static void tearDown() {
PostTask.runOrPostTask(UiThreadTaskTraits.DEFAULT, mThumbnailProvider::destroy); PostTask.runOrPostTask(UiThreadTaskTraits.DEFAULT, sThumbnailProvider::destroy);
} }
@Test @Test
...@@ -68,10 +76,10 @@ public class ThumbnailProviderImplTest { ...@@ -68,10 +76,10 @@ public class ThumbnailProviderImplTest {
CallbackHelper thumbnailRetrievedCallbackHelper = new CallbackHelper(); CallbackHelper thumbnailRetrievedCallbackHelper = new CallbackHelper();
final TestThumbnailRequest request = new TestThumbnailRequest( final TestThumbnailRequest request = new TestThumbnailRequest(
testFilePath, requiredSize, thumbnailRetrievedCallbackHelper); testFilePath, requiredSize, thumbnailRetrievedCallbackHelper, "a");
PostTask.runOrPostTask( PostTask.runOrPostTask(
UiThreadTaskTraits.DEFAULT, () -> { mThumbnailProvider.getThumbnail(request); }); UiThreadTaskTraits.DEFAULT, () -> { sThumbnailProvider.getThumbnail(request); });
thumbnailRetrievedCallbackHelper.waitForCallback( thumbnailRetrievedCallbackHelper.waitForCallback(
"Reached timeout when fetching a thumbnail for a downloaded image.", 0); "Reached timeout when fetching a thumbnail for a downloaded image.", 0);
...@@ -89,10 +97,10 @@ public class ThumbnailProviderImplTest { ...@@ -89,10 +97,10 @@ public class ThumbnailProviderImplTest {
CallbackHelper thumbnailRetrievedCallbackHelper = new CallbackHelper(); CallbackHelper thumbnailRetrievedCallbackHelper = new CallbackHelper();
final TestThumbnailRequest request = new TestThumbnailRequest( final TestThumbnailRequest request = new TestThumbnailRequest(
testFilePath, requiredSize, thumbnailRetrievedCallbackHelper); testFilePath, requiredSize, thumbnailRetrievedCallbackHelper, "b");
PostTask.runOrPostTask( PostTask.runOrPostTask(
UiThreadTaskTraits.DEFAULT, () -> { mThumbnailProvider.getThumbnail(request); }); UiThreadTaskTraits.DEFAULT, () -> { sThumbnailProvider.getThumbnail(request); });
thumbnailRetrievedCallbackHelper.waitForCallback( thumbnailRetrievedCallbackHelper.waitForCallback(
"Reached timeout when fetching a thumbnail for a downloaded image.", 0); "Reached timeout when fetching a thumbnail for a downloaded image.", 0);
...@@ -110,10 +118,10 @@ public class ThumbnailProviderImplTest { ...@@ -110,10 +118,10 @@ public class ThumbnailProviderImplTest {
CallbackHelper thumbnailRetrievedCallbackHelper = new CallbackHelper(); CallbackHelper thumbnailRetrievedCallbackHelper = new CallbackHelper();
final TestThumbnailRequest request = new TestThumbnailRequest( final TestThumbnailRequest request = new TestThumbnailRequest(
testFilePath, requiredSize, thumbnailRetrievedCallbackHelper); testFilePath, requiredSize, thumbnailRetrievedCallbackHelper, "c");
PostTask.runOrPostTask( PostTask.runOrPostTask(
UiThreadTaskTraits.DEFAULT, () -> { mThumbnailProvider.getThumbnail(request); }); UiThreadTaskTraits.DEFAULT, () -> { sThumbnailProvider.getThumbnail(request); });
thumbnailRetrievedCallbackHelper.waitForCallback( thumbnailRetrievedCallbackHelper.waitForCallback(
"Reached timeout when fetching a thumbnail for a downloaded image.", 0); "Reached timeout when fetching a thumbnail for a downloaded image.", 0);
...@@ -131,10 +139,10 @@ public class ThumbnailProviderImplTest { ...@@ -131,10 +139,10 @@ public class ThumbnailProviderImplTest {
CallbackHelper thumbnailRetrievedCallbackHelper = new CallbackHelper(); CallbackHelper thumbnailRetrievedCallbackHelper = new CallbackHelper();
final TestThumbnailRequest request = new TestThumbnailRequest( final TestThumbnailRequest request = new TestThumbnailRequest(
testFilePath, requiredSize, thumbnailRetrievedCallbackHelper); testFilePath, requiredSize, thumbnailRetrievedCallbackHelper, "d");
PostTask.runOrPostTask( PostTask.runOrPostTask(
UiThreadTaskTraits.DEFAULT, () -> { mThumbnailProvider.getThumbnail(request); }); UiThreadTaskTraits.DEFAULT, () -> { sThumbnailProvider.getThumbnail(request); });
thumbnailRetrievedCallbackHelper.waitForCallback( thumbnailRetrievedCallbackHelper.waitForCallback(
"Reached timeout when fetching a thumbnail for a downloaded image.", 0); "Reached timeout when fetching a thumbnail for a downloaded image.", 0);
...@@ -152,10 +160,10 @@ public class ThumbnailProviderImplTest { ...@@ -152,10 +160,10 @@ public class ThumbnailProviderImplTest {
CallbackHelper thumbnailRetrievedCallbackHelper = new CallbackHelper(); CallbackHelper thumbnailRetrievedCallbackHelper = new CallbackHelper();
final TestThumbnailRequest request = new TestThumbnailRequest( final TestThumbnailRequest request = new TestThumbnailRequest(
testFilePath, requiredSize, thumbnailRetrievedCallbackHelper); testFilePath, requiredSize, thumbnailRetrievedCallbackHelper, "e");
PostTask.runOrPostTask( PostTask.runOrPostTask(
UiThreadTaskTraits.DEFAULT, () -> { mThumbnailProvider.getThumbnail(request); }); UiThreadTaskTraits.DEFAULT, () -> { sThumbnailProvider.getThumbnail(request); });
thumbnailRetrievedCallbackHelper.waitForCallback( thumbnailRetrievedCallbackHelper.waitForCallback(
"Reached timeout when fetching a thumbnail for a downloaded image.", 0); "Reached timeout when fetching a thumbnail for a downloaded image.", 0);
...@@ -174,12 +182,14 @@ public class ThumbnailProviderImplTest { ...@@ -174,12 +182,14 @@ public class ThumbnailProviderImplTest {
private final int mRequiredSize; private final int mRequiredSize;
private Bitmap mRetrievedThumbnail; private Bitmap mRetrievedThumbnail;
private CallbackHelper mThumbnailRetrievedCallbackHelper; private CallbackHelper mThumbnailRetrievedCallbackHelper;
private String mContentId;
TestThumbnailRequest(String filepath, int requiredSize, TestThumbnailRequest(String filepath, int requiredSize,
CallbackHelper thumbnailRetrievedCallbackHelperHelper) { CallbackHelper thumbnailRetrievedCallbackHelperHelper, String contentId) {
mTestFilePath = filepath; mTestFilePath = filepath;
mRequiredSize = requiredSize; mRequiredSize = requiredSize;
mThumbnailRetrievedCallbackHelper = thumbnailRetrievedCallbackHelperHelper; mThumbnailRetrievedCallbackHelper = thumbnailRetrievedCallbackHelperHelper;
mContentId = contentId;
} }
@Override @Override
...@@ -194,7 +204,10 @@ public class ThumbnailProviderImplTest { ...@@ -194,7 +204,10 @@ public class ThumbnailProviderImplTest {
@Override @Override
public @Nullable String getContentId() { public @Nullable String getContentId() {
return "contentId"; // None-null value for ThumbnailProviderImpl to work // Non-null and unique value for ThumbnailProviderImpl to work to ensure
// results are not cached and reused across batched tests (which leads to erroneous
// results)
return mContentId;
} }
@Override @Override
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment