aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulien Desprez <jdesprez@google.com>2017-06-16 19:51:27 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2017-06-16 19:51:27 +0000
commitc87467bf1b7be7cd0e796412c8c06fa08f3ef779 (patch)
tree77a3fbbe4b584bce5d343ae1ce39bc92d2ae255f
parentfac6fa0a072ec5d012dbb9286b163cf66b78d62d (diff)
parent9ed4cae0c1e8a78c564883f5f400dd5ffc51b642 (diff)
downloadtradefederation-c87467bf1b7be7cd0e796412c8c06fa08f3ef779.tar.gz
Merge "Carry filters in HostTest even for split()" into oc-dev
-rw-r--r--src/com/android/tradefed/testtype/HostTest.java3
-rw-r--r--tests/src/com/android/tradefed/testtype/HostTestTest.java50
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);
+ }
}