Make suite runner final
We do not want new dependencies to be created
Test: unit tests
Bug: 174783663
Change-Id: I6850bb33c3221691ddfcee5cac29ed519b79c78e
diff --git a/common/host-side/tradefed/src/com/android/compatibility/common/tradefed/command/CompatibilityConsole.java b/common/host-side/tradefed/src/com/android/compatibility/common/tradefed/command/CompatibilityConsole.java
index 75b479a..69bfb30 100644
--- a/common/host-side/tradefed/src/com/android/compatibility/common/tradefed/command/CompatibilityConsole.java
+++ b/common/host-side/tradefed/src/com/android/compatibility/common/tradefed/command/CompatibilityConsole.java
@@ -29,14 +29,13 @@
import com.android.tradefed.config.ConfigurationFactory;
import com.android.tradefed.config.IConfiguration;
import com.android.tradefed.config.IConfigurationFactory;
-import com.android.tradefed.device.DeviceNotAvailableException;
-import com.android.tradefed.device.ITestDevice;
import com.android.tradefed.log.LogUtil.CLog;
import com.android.tradefed.result.suite.SuiteResultHolder;
import com.android.tradefed.testtype.Abi;
import com.android.tradefed.testtype.IAbi;
import com.android.tradefed.testtype.IRemoteTest;
import com.android.tradefed.testtype.IRuntimeHintProvider;
+import com.android.tradefed.testtype.suite.ITestSuite;
import com.android.tradefed.testtype.suite.SuiteModuleLoader;
import com.android.tradefed.testtype.suite.TestSuiteInfo;
import com.android.tradefed.testtype.suite.params.ModuleParameters;
@@ -280,19 +279,15 @@
* @param moduleParameter The parameter requested to be displayed. Null if all should be shown.
*/
private void listModules(String moduleParameter) {
- CompatibilityTestSuite test = new CompatibilityTestSuite() {
- @Override
- public Set<IAbi> getAbis(ITestDevice device) throws DeviceNotAvailableException {
- Set<String> abiStrings = getAbisForBuildTargetArch();
- Set<IAbi> abis = new LinkedHashSet<>();
- for (String abi : abiStrings) {
- if (AbiUtils.isAbiSupportedByCompatibility(abi)) {
- abis.add(new Abi(abi, AbiUtils.getBitness(abi)));
- }
- }
- return abis;
+ CompatibilityTestSuite test = new CompatibilityTestSuite();
+ Set<String> abiStrings = ITestSuite.getAbisForBuildTargetArchFromSuite();
+ Set<IAbi> abis = new LinkedHashSet<>();
+ for (String abi : abiStrings) {
+ if (AbiUtils.isAbiSupportedByCompatibility(abi)) {
+ abis.add(new Abi(abi, AbiUtils.getBitness(abi)));
}
- };
+ }
+ test.setAbis(abis);
if (getBuild() != null) {
test.setEnableParameterizedModules(true);
test.setEnableOptionalParameterizedModules(true);
diff --git a/common/host-side/tradefed/src/com/android/compatibility/common/tradefed/testtype/suite/CompatibilityTestSuite.java b/common/host-side/tradefed/src/com/android/compatibility/common/tradefed/testtype/suite/CompatibilityTestSuite.java
index 802980a..4737959 100644
--- a/common/host-side/tradefed/src/com/android/compatibility/common/tradefed/testtype/suite/CompatibilityTestSuite.java
+++ b/common/host-side/tradefed/src/com/android/compatibility/common/tradefed/testtype/suite/CompatibilityTestSuite.java
@@ -44,11 +44,9 @@
import java.util.Map;
import java.util.Set;
-/**
- * A Test for running Compatibility Test Suite with new suite system.
- */
+/** A Test for running Compatibility Test Suite with new suite system. */
@OptionClass(alias = "compatibility")
-public class CompatibilityTestSuite extends BaseTestSuite {
+public final class CompatibilityTestSuite extends BaseTestSuite {
public static final String SUBPLAN_OPTION = "subplan";
diff --git a/common/host-side/tradefed/tests/src/com/android/compatibility/common/tradefed/UnitTests.java b/common/host-side/tradefed/tests/src/com/android/compatibility/common/tradefed/UnitTests.java
index 45d1d66..1f25ba9 100644
--- a/common/host-side/tradefed/tests/src/com/android/compatibility/common/tradefed/UnitTests.java
+++ b/common/host-side/tradefed/tests/src/com/android/compatibility/common/tradefed/UnitTests.java
@@ -35,7 +35,6 @@
import com.android.compatibility.common.tradefed.targetprep.SettingsPreparerTest;
import com.android.compatibility.common.tradefed.targetprep.VtsDeviceInfoCollectorTest;
import com.android.compatibility.common.tradefed.testtype.SubPlanTest;
-import com.android.compatibility.common.tradefed.testtype.retry.RetryFactoryTestTest;
import com.android.compatibility.common.tradefed.util.CollectorUtilTest;
import com.android.compatibility.common.tradefed.util.DynamicConfigFileReaderTest;
import com.android.compatibility.common.tradefed.util.OptionHelperTest;
@@ -86,9 +85,6 @@
// testtype
SubPlanTest.class,
- // testtype.retry
- RetryFactoryTestTest.class,
-
// util
CollectorUtilTest.class,
DynamicConfigFileReaderTest.class,
diff --git a/common/host-side/tradefed/tests/src/com/android/compatibility/common/tradefed/testtype/retry/RetryFactoryTestTest.java b/common/host-side/tradefed/tests/src/com/android/compatibility/common/tradefed/testtype/retry/RetryFactoryTestTest.java
deleted file mode 100644
index f7bbb4b..0000000
--- a/common/host-side/tradefed/tests/src/com/android/compatibility/common/tradefed/testtype/retry/RetryFactoryTestTest.java
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.compatibility.common.tradefed.testtype.retry;
-
-import static org.junit.Assert.assertEquals;
-
-import com.android.compatibility.common.tradefed.build.CompatibilityBuildHelper;
-import com.android.compatibility.common.tradefed.testtype.suite.CompatibilityTestSuite;
-import com.android.compatibility.common.tradefed.util.RetryFilterHelper;
-import com.android.tradefed.build.IBuildInfo;
-import com.android.tradefed.build.IDeviceBuildInfo;
-import com.android.tradefed.config.Configuration;
-import com.android.tradefed.config.ConfigurationDef;
-import com.android.tradefed.config.IConfiguration;
-import com.android.tradefed.config.OptionClass;
-import com.android.tradefed.config.OptionSetter;
-import com.android.tradefed.device.DeviceNotAvailableException;
-import com.android.tradefed.device.ITestDevice;
-import com.android.tradefed.invoker.IInvocationContext;
-import com.android.tradefed.invoker.InvocationContext;
-import com.android.tradefed.invoker.TestInformation;
-import com.android.tradefed.metrics.proto.MetricMeasurement.Metric;
-import com.android.tradefed.result.ITestInvocationListener;
-import com.android.tradefed.suite.checker.ISystemStatusChecker;
-import com.android.tradefed.testtype.IRemoteTest;
-import com.android.tradefed.testtype.StubTest;
-
-import org.easymock.EasyMock;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.List;
-
-/**
- * Unit tests for {@link RetryFactoryTest}.
- */
-@RunWith(JUnit4.class)
-public class RetryFactoryTestTest {
-
- private RetryFactoryTest mFactory;
- private ITestInvocationListener mMockListener;
- private RetryFilterHelper mSpyFilter;
-
- private List<ISystemStatusChecker> mCheckers;
- private IBuildInfo mMockInfo;
- private ITestDevice mMockDevice;
- private IConfiguration mMockMainConfiguration;
- private IInvocationContext mMockContext;
- private TestInformation mTestInfo;
-
- /**
- * A {@link CompatibilityTestSuite} that does not run anything.
- */
- @OptionClass(alias = "compatibility")
- public static class VoidCompatibilityTest extends CompatibilityTestSuite {
- @Override
- public LinkedHashMap<String, IConfiguration> loadTests() {
- return new LinkedHashMap<>();
- }
-
- @Override
- public Collection<IRemoteTest> split(int shardCountHint) {
- List<IRemoteTest> tests = new ArrayList<>();
- for (int i = 0; i < shardCountHint; i++) {
- tests.add(new StubTest());
- }
- return tests;
- }
- }
-
- @OptionClass(alias = "compatibility")
- public static class TestCompatibilityTestSuite extends CompatibilityTestSuite {
- @Override
- public LinkedHashMap<String, IConfiguration> loadTests() {
- LinkedHashMap<String, IConfiguration> tests = new LinkedHashMap<>();
- IConfiguration config = new Configuration("test", "test");
- config.setTest(new StubTest());
- tests.put("module1", config);
- return tests;
- }
- }
-
- @Before
- public void setUp() {
- mMockMainConfiguration = new Configuration("mockMain", "mockMain");
- mCheckers = new ArrayList<>();
- mMockInfo = EasyMock.createMock(IDeviceBuildInfo.class);
- EasyMock.expect(mMockInfo.getRemoteFiles()).andStubReturn(null);
- mMockDevice = EasyMock.createMock(ITestDevice.class);
- mMockContext = new InvocationContext();
- mMockContext.addAllocatedDevice(ConfigurationDef.DEFAULT_DEVICE_NAME, mMockDevice);
- mMockContext.addDeviceBuildInfo(ConfigurationDef.DEFAULT_DEVICE_NAME, mMockInfo);
- mTestInfo = TestInformation.newBuilder().setInvocationContext(mMockContext).build();
-
- mSpyFilter = new RetryFilterHelper() {
- @Override
- public void validateBuildFingerprint(ITestDevice device)
- throws DeviceNotAvailableException {
- // do nothing
- }
- @Override
- public void setCommandLineOptionsFor(Object obj) {
- // do nothing
- }
- @Override
- public void setBuildInfoRetryCommand(IBuildInfo info) {
- // do nothing
- }
- @Override
- public void populateFiltersBySubPlan() {
- // do nothing
- }
- };
- mFactory = new RetryFactoryTest() {
- @Override
- protected RetryFilterHelper createFilterHelper(CompatibilityBuildHelper buildHelper) {
- return mSpyFilter;
- }
- @Override
- CompatibilityTestSuite createTest() {
- return new VoidCompatibilityTest();
- }
- };
- mMockListener = EasyMock.createMock(ITestInvocationListener.class);
- }
-
- /**
- * Tests that the CompatibilityTest created can receive all the options without throwing.
- */
- @Test
- public void testRetry_receiveOption() throws Exception {
- OptionSetter setter = new OptionSetter(mFactory);
- setter.setOptionValue("retry", "10599");
- setter.setOptionValue("test-arg", "abcd");
- EasyMock.replay(mMockListener);
- mFactory.run(mTestInfo, mMockListener);
- EasyMock.verify(mMockListener);
- }
-
- /**
- * Assert that the {@link RetryFactoryTest#split(int)} calls the
- * {@link CompatibilityTestSuite#split(int)} after applying all the filters.
- */
- @Test
- public void testRetry_split() throws Exception {
- EasyMock.replay(mMockListener);
- Collection<IRemoteTest> res = mFactory.split(2);
- assertEquals(2, res.size());
- EasyMock.verify(mMockListener);
- }
-
- /**
- * This test is meant to validate more end-to-end that the retry can create the runner, and
- * running it works properly for the main use case.
- */
- @Test
- public void testValidation() throws Exception {
- mFactory = new RetryFactoryTest() {
- @Override
- protected RetryFilterHelper createFilterHelper(CompatibilityBuildHelper buildHelper) {
- return mSpyFilter;
- }
- @Override
- CompatibilityTestSuite createTest() {
- return new TestCompatibilityTestSuite();
- }
- };
- mFactory.setBuild(mMockInfo);
- mFactory.setDevice(mMockDevice);
- mFactory.setSystemStatusChecker(mCheckers);
- mFactory.setConfiguration(mMockMainConfiguration);
- mFactory.setInvocationContext(mMockContext);
-
- mMockListener.testModuleStarted(EasyMock.anyObject());
- mMockListener.testRunStarted(
- EasyMock.eq("module1"), EasyMock.eq(0), EasyMock.eq(0), EasyMock.anyLong());
- mMockListener.testRunEnded(
- EasyMock.anyLong(), EasyMock.<HashMap<String, Metric>>anyObject());
- mMockListener.testModuleEnded();
-
- EasyMock.replay(mMockListener, mMockInfo, mMockDevice);
- mFactory.run(mTestInfo, mMockListener);
- EasyMock.verify(mMockListener, mMockInfo, mMockDevice);
- }
-}