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);
-    }
-}