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

Batch TabUmaTest

Speedup: 14397ms -> 5191ms (64% improvement)

Bug: 1168647
Change-Id: Idbf3a3e10cd4e4b04e5f34d0d997ca4bd8b05f3b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2640919
Commit-Queue: David Maunder <davidjm@chromium.org>
Reviewed-by: default avatarMichael Thiessen <mthiesse@chromium.org>
Cr-Commit-Position: refs/heads/master@{#845745}
parent 8008bd8e
......@@ -4,13 +4,11 @@
package org.chromium.chrome.browser.tab;
import android.support.test.InstrumentationRegistry;
import androidx.test.filters.MediumTest;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.ClassRule;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
......@@ -19,6 +17,7 @@ import org.junit.runner.RunWith;
import org.chromium.base.StrictModeContext;
import org.chromium.base.metrics.RecordHistogram;
import org.chromium.base.supplier.ObservableSupplierImpl;
import org.chromium.base.test.util.Batch;
import org.chromium.base.test.util.CommandLineFlags;
import org.chromium.base.test.util.Feature;
import org.chromium.base.test.util.MetricsUtils.HistogramDelta;
......@@ -28,6 +27,7 @@ import org.chromium.chrome.browser.flags.ChromeSwitches;
import org.chromium.chrome.browser.share.ShareDelegate;
import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
import org.chromium.chrome.test.batch.BlankCTATabInitialStateRule;
import org.chromium.chrome.test.util.ChromeTabUtils;
import org.chromium.components.browser_ui.util.BrowserControlsVisibilityDelegate;
import org.chromium.content_public.browser.LoadUrlParams;
......@@ -46,9 +46,15 @@ import java.util.concurrent.ExecutionException;
*/
@RunWith(ChromeJUnit4ClassRunner.class)
@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE})
@Batch(Batch.PER_CLASS)
public class TabUmaTest {
@ClassRule
public static ChromeTabbedActivityTestRule sActivityTestRule =
new ChromeTabbedActivityTestRule();
@Rule
public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule();
public BlankCTATabInitialStateRule mInitialStateRule =
new BlankCTATabInitialStateRule(sActivityTestRule, false);
@Rule
public TemporaryFolder mTemporaryFolder = new TemporaryFolder();
......@@ -59,23 +65,17 @@ public class TabUmaTest {
@Before
public void setUp() throws Exception {
mActivityTestRule.startMainActivityOnBlankPage();
mTestServer = EmbeddedTestServer.createAndStartServer(InstrumentationRegistry.getContext());
mTestServer = sActivityTestRule.getTestServer();
mTestUrl = mTestServer.getURL(TEST_PATH);
}
@After
public void tearDown() {
mTestServer.stopAndDestroyServer();
}
private TabbedModeTabDelegateFactory createTabDelegateFactory() {
BrowserControlsVisibilityDelegate visibilityDelegate =
new BrowserControlsVisibilityDelegate(BrowserControlsState.BOTH) {};
// clang-format off
return new TabbedModeTabDelegateFactory(mActivityTestRule.getActivity(), visibilityDelegate,
return new TabbedModeTabDelegateFactory(sActivityTestRule.getActivity(), visibilityDelegate,
new ObservableSupplierImpl<ShareDelegate>(), null,
() -> {}, mActivityTestRule.getActivity()
() -> {}, sActivityTestRule.getActivity()
.getRootUiCoordinatorForTesting()
.getBottomSheetController());
// clang-format on
......@@ -84,7 +84,7 @@ public class TabUmaTest {
private Tab createLazilyLoadedTab(boolean show) throws ExecutionException {
return TestThreadUtils.runOnUiThreadBlocking(() -> {
Tab bgTab = TabBuilder.createForLazyLoad(new LoadUrlParams(mTestUrl))
.setWindow(mActivityTestRule.getActivity().getWindowAndroid())
.setWindow(sActivityTestRule.getActivity().getWindowAndroid())
.setLaunchType(TabLaunchType.FROM_LONGPRESS_BACKGROUND)
.setDelegateFactory(createTabDelegateFactory())
.setInitiallyHidden(true)
......@@ -97,7 +97,7 @@ public class TabUmaTest {
private Tab createLiveTab(boolean foreground, boolean kill) throws ExecutionException {
return TestThreadUtils.runOnUiThreadBlocking(() -> {
Tab tab = TabBuilder.createLiveTab(!foreground)
.setWindow(mActivityTestRule.getActivity().getWindowAndroid())
.setWindow(sActivityTestRule.getActivity().getWindowAndroid())
.setLaunchType(TabLaunchType.FROM_LONGPRESS_BACKGROUND)
.setDelegateFactory(createTabDelegateFactory())
.setInitiallyHidden(!foreground)
......@@ -124,15 +124,15 @@ public class TabUmaTest {
String histogram = "Tab.StatusWhenSwitchedBackToForeground";
HistogramDelta lazyLoadCount =
new HistogramDelta(histogram, TabUma.TAB_STATUS_LAZY_LOAD_FOR_BG_TAB);
Assert.assertEquals(0, lazyLoadCount.getDelta()); // Sanity check.
int offset = lazyLoadCount.getDelta();
// Show the tab and verify that one sample was recorded in the lazy load bucket.
TestThreadUtils.runOnUiThreadBlocking(() -> { tab.show(TabSelectionType.FROM_USER); });
Assert.assertEquals(1, lazyLoadCount.getDelta());
Assert.assertEquals(offset + 1, lazyLoadCount.getDelta());
// Show the tab again and verify that we didn't record another sample.
TestThreadUtils.runOnUiThreadBlocking(() -> { tab.show(TabSelectionType.FROM_USER); });
Assert.assertEquals(1, lazyLoadCount.getDelta());
Assert.assertEquals(offset + 1, lazyLoadCount.getDelta());
}
/**
......@@ -146,15 +146,14 @@ public class TabUmaTest {
String ageStartup = "Tabs.ForegroundTabAgeAtStartup";
String ageRestore = "Tab.AgeUponRestoreFromColdStart";
Assert.assertEquals(0, getHistogram(switchFgStatus));
Assert.assertEquals(1, getHistogram(ageStartup));
Assert.assertEquals(0, getHistogram(ageRestore));
int switchFgStatusOffset = getHistogram(switchFgStatus);
int ageStartupOffset = getHistogram(ageStartup);
int ageRestoreOffset = getHistogram(ageRestore);
// Test a normal tab without an explicit creation state. UMA task doesn't start.
Tab tab = TestThreadUtils.runOnUiThreadBlocking(() -> {
return new TabBuilder()
.setWindow(mActivityTestRule.getActivity().getWindowAndroid())
.setWindow(sActivityTestRule.getActivity().getWindowAndroid())
.setDelegateFactory(createTabDelegateFactory())
.setLaunchType(TabLaunchType.FROM_LONGPRESS_BACKGROUND)
.setTabState(createTabState())
......@@ -164,9 +163,9 @@ public class TabUmaTest {
TestThreadUtils.runOnUiThreadBlocking(() -> tab.show(TabSelectionType.FROM_USER));
// There should be no histogram changes.
Assert.assertEquals(0, getHistogram(switchFgStatus));
Assert.assertEquals(1, getHistogram(ageStartup));
Assert.assertEquals(0, getHistogram(ageRestore));
Assert.assertEquals(switchFgStatusOffset, getHistogram(switchFgStatus));
Assert.assertEquals(ageStartupOffset, getHistogram(ageStartup));
Assert.assertEquals(ageRestoreOffset, getHistogram(ageRestore));
}
/**
......@@ -215,7 +214,7 @@ public class TabUmaTest {
// at Tab#show(), so created anew.
TestThreadUtils.runOnUiThreadBlocking(() -> {
Tab tab = TabBuilder.createFromFrozenState()
.setWindow(mActivityTestRule.getActivity().getWindowAndroid())
.setWindow(sActivityTestRule.getActivity().getWindowAndroid())
.setDelegateFactory(createTabDelegateFactory())
.setTabState(createTabState())
.build();
......
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