diff options
author | Julien Desprez <jdesprez@google.com> | 2017-06-16 19:51:27 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2017-06-16 19:51:27 +0000 |
commit | c87467bf1b7be7cd0e796412c8c06fa08f3ef779 (patch) | |
tree | 77a3fbbe4b584bce5d343ae1ce39bc92d2ae255f | |
parent | fac6fa0a072ec5d012dbb9286b163cf66b78d62d (diff) | |
parent | 9ed4cae0c1e8a78c564883f5f400dd5ffc51b642 (diff) | |
download | tradefederation-c87467bf1b7be7cd0e796412c8c06fa08f3ef779.tar.gz |
Merge "Carry filters in HostTest even for split()" into oc-dev
-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); + } } |