diff options
author | jdesprez <jdesprez@google.com> | 2017-06-15 11:38:08 -0700 |
---|---|---|
committer | jdesprez <jdesprez@google.com> | 2017-06-15 11:40:12 -0700 |
commit | 9ed4cae0c1e8a78c564883f5f400dd5ffc51b642 (patch) | |
tree | 53954b7b8084388ea50c46b18697b3fd12883b00 | |
parent | db4b4d2e01cca91d9b8d33d18fbd464410265055 (diff) | |
download | tradefederation-9ed4cae0c1e8a78c564883f5f400dd5ffc51b642.tar.gz |
Carry filters in HostTest even for split()
Ensure the filters are carried over with regular split
similiarly to strict sharding.
Test: unit tests
run cts-suite -m CtsSecurityHostTestCases -a arm64-v8a
--log-level-display verbose --shard-count 2
Bug: 62531988
Change-Id: I91d136ba28edaf0fb28569ddf70d61c4b61e973d
-rw-r--r-- | src/com/android/tradefed/testtype/HostTest.java | 3 | ||||
-rw-r--r-- | tests/src/com/android/tradefed/testtype/HostTestTest.java | 50 |
2 files changed, 53 insertions, 0 deletions
diff --git a/src/com/android/tradefed/testtype/HostTest.java b/src/com/android/tradefed/testtype/HostTest.java index 6f7273d13..249332ad1 100644 --- a/src/com/android/tradefed/testtype/HostTest.java +++ b/src/com/android/tradefed/testtype/HostTest.java @@ -661,6 +661,9 @@ public class HostTest for (Class<?> classObj : classes) { HostTest test = createHostTest(classObj); test.mRuntimeHint = mRuntimeHint / classes.size(); + // Carry over non-annotation filters to shards. + test.addAllExcludeFilters(mFilterHelper.getExcludeFilters()); + test.addAllIncludeFilters(mFilterHelper.getIncludeFilters()); listTests.add(test); } return listTests; diff --git a/tests/src/com/android/tradefed/testtype/HostTestTest.java b/tests/src/com/android/tradefed/testtype/HostTestTest.java index 845de5948..54059491e 100644 --- a/tests/src/com/android/tradefed/testtype/HostTestTest.java +++ b/tests/src/com/android/tradefed/testtype/HostTestTest.java @@ -39,6 +39,8 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.reflect.AnnotatedElement; import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -1363,4 +1365,52 @@ public class HostTestTest extends TestCase { assertEquals(0l, test.getRuntimeHint()); assertEquals(0, test.countTestCases()); } + + /** + * Test for {@link HostTest#split()} when the exclude-filter is set, it should be carried over + * to shards. + */ + public void testSplit_withExclude() throws Exception { + OptionSetter setter = new OptionSetter(mHostTest); + setter.setOptionValue("class", SuccessTestCase.class.getName()); + setter.setOptionValue("class", AnotherTestCase.class.getName()); + mHostTest.addExcludeFilter( + "com.android.tradefed.testtype.HostTestTest$SuccessTestCase#testPass"); + Collection<IRemoteTest> res = mHostTest.split(); + assertEquals(2, res.size()); + + // only one tests in the SuccessTestCase because it's been filtered out. + mListener.testRunStarted( + EasyMock.eq("com.android.tradefed.testtype.HostTestTest$SuccessTestCase"), + EasyMock.eq(1)); + TestIdentifier tid2 = + new TestIdentifier( + "com.android.tradefed.testtype.HostTestTest$SuccessTestCase", "testPass2"); + mListener.testStarted(tid2); + mListener.testEnded(tid2, Collections.emptyMap()); + mListener.testRunEnded(EasyMock.anyLong(), EasyMock.anyObject()); + + mListener.testRunStarted( + EasyMock.eq("com.android.tradefed.testtype.HostTestTest$AnotherTestCase"), + EasyMock.eq(2)); + TestIdentifier tid3 = + new TestIdentifier( + "com.android.tradefed.testtype.HostTestTest$AnotherTestCase", "testPass3"); + mListener.testStarted(tid3); + mListener.testEnded(tid3, Collections.emptyMap()); + TestIdentifier tid4 = + new TestIdentifier( + "com.android.tradefed.testtype.HostTestTest$AnotherTestCase", "testPass4"); + mListener.testStarted(tid4); + mListener.testEnded(tid4, Collections.emptyMap()); + mListener.testRunEnded(EasyMock.anyLong(), EasyMock.anyObject()); + + EasyMock.replay(mListener, mMockDevice); + for (IRemoteTest test : res) { + assertTrue(test instanceof HostTest); + ((HostTest) test).setDevice(mMockDevice); + test.run(mListener); + } + EasyMock.verify(mListener, mMockDevice); + } } |