aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjdesprez <jdesprez@google.com>2017-06-15 11:38:08 -0700
committerjdesprez <jdesprez@google.com>2017-06-15 11:40:12 -0700
commit9ed4cae0c1e8a78c564883f5f400dd5ffc51b642 (patch)
tree53954b7b8084388ea50c46b18697b3fd12883b00
parentdb4b4d2e01cca91d9b8d33d18fbd464410265055 (diff)
downloadtradefederation-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.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);
+ }
}