Fix MetadataReporter tests
Test: unit tests
Change-Id: Ifeef98b722cfc3d90e4127dbf927d8b22288ad93
diff --git a/common/host-side/tradefed/src/com/android/compatibility/common/tradefed/build/CompatibilityBuildHelper.java b/common/host-side/tradefed/src/com/android/compatibility/common/tradefed/build/CompatibilityBuildHelper.java
index 235d71b..73f8638 100644
--- a/common/host-side/tradefed/src/com/android/compatibility/common/tradefed/build/CompatibilityBuildHelper.java
+++ b/common/host-side/tradefed/src/com/android/compatibility/common/tradefed/build/CompatibilityBuildHelper.java
@@ -33,15 +33,16 @@
public static final String MODULE_IDS = "MODULE_IDS";
- private static final String ROOT_DIR = "ROOT_DIR";
+ public static final String ROOT_DIR = "ROOT_DIR";
+ public static final String SUITE_NAME = "SUITE_NAME";
+ public static final String START_TIME_MS = "START_TIME_MS";
+
private static final String ROOT_DIR2 = "ROOT_DIR2";
private static final String SUITE_BUILD = "SUITE_BUILD";
- private static final String SUITE_NAME = "SUITE_NAME";
private static final String SUITE_FULL_NAME = "SUITE_FULL_NAME";
private static final String SUITE_VERSION = "SUITE_VERSION";
private static final String SUITE_PLAN = "SUITE_PLAN";
private static final String RESULT_DIR = "RESULT_DIR";
- private static final String START_TIME_MS = "START_TIME_MS";
private static final String CONFIG_PATH_PREFIX = "DYNAMIC_CONFIG_FILE:";
private static final String DYNAMIC_CONFIG_OVERRIDE_URL = "DYNAMIC_CONFIG_OVERRIDE_URL";
private static final String COMMAND_LINE_ARGS = "command_line_args";
diff --git a/common/host-side/tradefed/src/com/android/compatibility/common/tradefed/result/MetadataReporter.java b/common/host-side/tradefed/src/com/android/compatibility/common/tradefed/result/MetadataReporter.java
index ef04fed..5f94a88 100644
--- a/common/host-side/tradefed/src/com/android/compatibility/common/tradefed/result/MetadataReporter.java
+++ b/common/host-side/tradefed/src/com/android/compatibility/common/tradefed/result/MetadataReporter.java
@@ -16,23 +16,15 @@
package com.android.compatibility.common.tradefed.result;
-import com.android.json.stream.JsonWriter;
-
import com.android.compatibility.common.tradefed.build.CompatibilityBuildHelper;
-import com.android.compatibility.common.tradefed.testtype.CompatibilityTest;
-import com.android.compatibility.common.tradefed.testtype.CompatibilityTest.RetryType;
-import com.android.compatibility.common.util.ResultHandler;
import com.android.ddmlib.testrunner.TestIdentifier;
+import com.android.json.stream.JsonWriter;
import com.android.tradefed.build.IBuildInfo;
import com.android.tradefed.config.Option;
-import com.android.tradefed.config.Option.Importance;
-import com.android.tradefed.config.OptionClass;
import com.android.tradefed.config.OptionCopier;
import com.android.tradefed.log.LogUtil.CLog;
import com.android.tradefed.result.IShardableListener;
import com.android.tradefed.result.StubTestInvocationListener;
-import com.android.tradefed.util.FileUtil;
-import com.android.tradefed.util.TimeUtil;
import java.io.File;
import java.io.FileNotFoundException;
@@ -51,14 +43,9 @@
@Option(name = "include-failure-time", description = "Include timing about tests that failed.")
private boolean mIncludeFailures = false;
- @Option(name = "min-test-duration-sec", description = "Ignore test durations less than this.")
- private int mMinTestDurationSec = 2;
-
- @Option(name = CompatibilityTest.RETRY_OPTION,
- shortName = 'r',
- description = "retry a previous session.",
- importance = Importance.IF_UNSET)
- private Integer mRetrySessionId = null;
+ @Option(name = "min-test-duration", description = "Ignore test durations less than this.",
+ isTimeVal = true)
+ private long mMinTestDuration = 2 * 1000;
private static final String METADATA_DIR = "metadata";
private CompatibilityBuildHelper mBuildHelper;
@@ -145,17 +132,17 @@
*/
@Override
public void testEnded(TestIdentifier test, Map<String, String> testMetrics) {
- long duration = (System.currentTimeMillis() - mStartTime) / 1000;
+ long duration = System.currentTimeMillis() - mStartTime;
if (mTestFailed && !mIncludeFailures) {
return;
}
- if (duration < mMinTestDurationSec) {
+ if (duration < mMinTestDuration) {
return;
}
TestMetadata metadata = new TestMetadata();
metadata.testId = buildTestId(test);
- metadata.seconds = duration;
+ metadata.seconds = duration / 1000; // convert to second for reporting
mTestMetadata.add(metadata);
}
diff --git a/common/host-side/tradefed/tests/src/com/android/compatibility/common/tradefed/result/MetadataReporterTest.java b/common/host-side/tradefed/tests/src/com/android/compatibility/common/tradefed/result/MetadataReporterTest.java
index 65e1837..dba3128 100644
--- a/common/host-side/tradefed/tests/src/com/android/compatibility/common/tradefed/result/MetadataReporterTest.java
+++ b/common/host-side/tradefed/tests/src/com/android/compatibility/common/tradefed/result/MetadataReporterTest.java
@@ -18,29 +18,25 @@
import com.android.compatibility.common.tradefed.build.CompatibilityBuildHelper;
import com.android.compatibility.common.util.AbiUtils;
-import com.android.compatibility.common.util.ICaseResult;
-import com.android.compatibility.common.util.IInvocationResult;
-import com.android.compatibility.common.util.IModuleResult;
-import com.android.compatibility.common.util.ITestResult;
-import com.android.compatibility.common.util.TestStatus;
import com.android.ddmlib.testrunner.TestIdentifier;
import com.android.tradefed.build.BuildInfo;
import com.android.tradefed.build.IBuildInfo;
import com.android.tradefed.config.OptionSetter;
import com.android.tradefed.util.FileUtil;
+import com.android.tradefed.util.RunUtil;
import junit.framework.TestCase;
import java.io.File;
-import java.io.FileFilter;
import java.util.Collection;
import java.util.HashMap;
-import java.util.List;
+/**
+ * Unit Tests for {@link MetadataReporter}
+ */
public class MetadataReporterTest extends TestCase {
- private static final String MIN_TEST_DURATION = "2";
- private static final String ROOT_PROPERTY = "TESTS_ROOT";
+ private static final String MIN_TEST_DURATION = "10";
private static final String BUILD_NUMBER = "2";
private static final String SUITE_PLAN = "cts";
private static final String DYNAMIC_CONFIG_URL = "";
@@ -54,17 +50,8 @@
private static final String METHOD_1 = "testBlah1";
private static final String METHOD_2 = "testBlah2";
private static final String METHOD_3 = "testBlah3";
- private static final String TEST_1 = String.format("%s#%s", CLASS, METHOD_1);
- private static final String TEST_2 = String.format("%s#%s", CLASS, METHOD_2);
- private static final String TEST_3 = String.format("%s#%s", CLASS, METHOD_3);
private static final String STACK_TRACE = "Something small is not alright\n " +
"at four.big.insects.Marley.sing(Marley.java:10)";
- private static final String RESULT_DIR = "result123";
- private static final String[] FORMATTING_FILES = {
- "compatibility_result.css",
- "compatibility_result.xsd",
- "compatibility_result.xsl",
- "logo.png"};
private static final long START_TIME = 123456L;
private MetadataReporter mReporter;
@@ -77,16 +64,15 @@
@Override
public void setUp() throws Exception {
-
mReporter = new MetadataReporter();
OptionSetter setter = new OptionSetter(mReporter);
- setter.setOptionValue("min-test-duration-sec", MIN_TEST_DURATION);
+ setter.setOptionValue("min-test-duration", MIN_TEST_DURATION);
mRoot = FileUtil.createTempDir(ROOT_DIR_NAME);
mBase = new File(mRoot, BASE_DIR_NAME);
mBase.mkdirs();
mTests = new File(mBase, TESTCASES);
mTests.mkdirs();
- System.setProperty(ROOT_PROPERTY, mRoot.getAbsolutePath());
+ System.setProperty(CompatibilityBuildHelper.ROOT_DIR, mRoot.getAbsolutePath());
mBuildInfo = new BuildInfo(BUILD_NUMBER, "", "");
mBuildHelper = new CompatibilityBuildHelper(mBuildInfo);
mBuildHelper.init(SUITE_PLAN, DYNAMIC_CONFIG_URL, START_TIME);
@@ -98,22 +84,26 @@
FileUtil.recursiveDelete(mRoot);
}
+ /**
+ * Test that when tests execute faster than the threshold we do not report then.
+ */
public void testResultReportingFastTests() throws Exception {
mReporter.invocationStarted(mBuildInfo);
mReporter.testRunStarted(ID, 3);
- runFastTests();
-
+ runTests(0l);
Collection<MetadataReporter.TestMetadata> metadata = mReporter.getTestMetadata();
assertTrue(metadata.isEmpty());
-
mReporter.testRunEnded(10, new HashMap<String, String>());
mReporter.invocationEnded(10);
}
+ /**
+ * Test that when tests execute slower than the limit we report them if they passed.
+ */
public void testResultReportingSlowTests() throws Exception {
mReporter.invocationStarted(mBuildInfo);
mReporter.testRunStarted(ID, 3);
- runSlowTests();
+ runTests(50l);
Collection<MetadataReporter.TestMetadata> metadata = mReporter.getTestMetadata();
assertEquals(metadata.size(), 2); // Two passing slow tests.
@@ -122,46 +112,28 @@
mReporter.invocationEnded(10);
}
-
/** Run 4 test. */
- private void runFastTests() {
+ private void runTests(long waitTime) {
TestIdentifier test1 = new TestIdentifier(CLASS, METHOD_1);
mReporter.testStarted(test1);
+ RunUtil.getDefault().sleep(waitTime);
mReporter.testEnded(test1, new HashMap<String, String>());
TestIdentifier test2 = new TestIdentifier(CLASS, METHOD_2);
mReporter.testStarted(test2);
+ RunUtil.getDefault().sleep(waitTime);
mReporter.testEnded(test1, new HashMap<String, String>());
TestIdentifier test3 = new TestIdentifier(CLASS, METHOD_3);
mReporter.testStarted(test3);
+ RunUtil.getDefault().sleep(waitTime);
mReporter.testFailed(test3, STACK_TRACE);
+ mReporter.testEnded(test3, new HashMap<String, String>());
TestIdentifier test4 = new TestIdentifier(CLASS, METHOD_3);
mReporter.testStarted(test4);
+ RunUtil.getDefault().sleep(waitTime);
mReporter.testIgnored(test4);
- }
-
- /** Run 4 tests with delays. 2 passing, 1 failed, 1 ignored. */
- private void runSlowTests() throws InterruptedException {
- TestIdentifier test1 = new TestIdentifier(CLASS, METHOD_1);
- mReporter.testStarted(test1);
- Thread.sleep(3000);
- mReporter.testEnded(test1, new HashMap<String, String>());
-
- TestIdentifier test2 = new TestIdentifier(CLASS, METHOD_2);
- mReporter.testStarted(test2);
- Thread.sleep(3000);
- mReporter.testEnded(test1, new HashMap<String, String>());
-
- TestIdentifier test3 = new TestIdentifier(CLASS, METHOD_3);
- mReporter.testStarted(test3);
- Thread.sleep(3000);
- mReporter.testFailed(test3, STACK_TRACE);
-
- TestIdentifier test4 = new TestIdentifier(CLASS, METHOD_3);
- mReporter.testStarted(test4);
- Thread.sleep(3000);
- mReporter.testIgnored(test4);
+ mReporter.testEnded(test4, new HashMap<String, String>());
}
}