Merge "sort xml and plan to guarantee the same execution order"
diff --git a/tools/cts-xml-generator/src/com/android/cts/xmlgenerator/Test.java b/tools/cts-xml-generator/src/com/android/cts/xmlgenerator/Test.java
index a9dd5e0..93b838b 100644
--- a/tools/cts-xml-generator/src/com/android/cts/xmlgenerator/Test.java
+++ b/tools/cts-xml-generator/src/com/android/cts/xmlgenerator/Test.java
@@ -16,7 +16,7 @@
package com.android.cts.xmlgenerator;
-public class Test {
+public class Test implements Comparable<Test> {
private String mName;
private int mTimeout;
@@ -32,4 +32,9 @@
public int getTimeout() {
return mTimeout;
}
+
+ @Override
+ public int compareTo(Test another) {
+ return getName().compareTo(another.getName());
+ }
}
diff --git a/tools/cts-xml-generator/src/com/android/cts/xmlgenerator/TestCase.java b/tools/cts-xml-generator/src/com/android/cts/xmlgenerator/TestCase.java
index a9ea6e1..ed09b8e 100644
--- a/tools/cts-xml-generator/src/com/android/cts/xmlgenerator/TestCase.java
+++ b/tools/cts-xml-generator/src/com/android/cts/xmlgenerator/TestCase.java
@@ -20,7 +20,7 @@
import java.util.Collections;
import java.util.List;
-class TestCase {
+class TestCase implements Comparable<TestCase> {
private final String mName;
@@ -41,4 +41,9 @@
public Collection<Test> getTests() {
return Collections.unmodifiableCollection(mTests);
}
+
+ @Override
+ public int compareTo(TestCase another) {
+ return getName().compareTo(another.getName());
+ }
}
diff --git a/tools/cts-xml-generator/src/com/android/cts/xmlgenerator/TestSuite.java b/tools/cts-xml-generator/src/com/android/cts/xmlgenerator/TestSuite.java
index 3c29603..466f8d7 100644
--- a/tools/cts-xml-generator/src/com/android/cts/xmlgenerator/TestSuite.java
+++ b/tools/cts-xml-generator/src/com/android/cts/xmlgenerator/TestSuite.java
@@ -22,7 +22,7 @@
import java.util.List;
import java.util.Map;
-class TestSuite {
+class TestSuite implements Comparable<TestSuite> {
private final String mName;
@@ -61,4 +61,9 @@
public Collection<TestCase> getCases() {
return Collections.unmodifiableCollection(mCases);
}
+
+ @Override
+ public int compareTo(TestSuite another) {
+ return getName().compareTo(another.getName());
+ }
}
diff --git a/tools/cts-xml-generator/src/com/android/cts/xmlgenerator/XmlGenerator.java b/tools/cts-xml-generator/src/com/android/cts/xmlgenerator/XmlGenerator.java
index 8a49cf3..7b1996d 100644
--- a/tools/cts-xml-generator/src/com/android/cts/xmlgenerator/XmlGenerator.java
+++ b/tools/cts-xml-generator/src/com/android/cts/xmlgenerator/XmlGenerator.java
@@ -24,7 +24,10 @@
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
+import java.util.ArrayList;
import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
/**
* Generator of TestPackage XML files for native tests.
@@ -141,7 +144,8 @@
private void writeTestSuites(PrintWriter writer, Collection<TestSuite> suites,
StringBuilder nameCollector) {
- for (TestSuite suite : suites) {
+ Collection<TestSuite> sorted = sortCollection(suites);
+ for (TestSuite suite : sorted) {
writer.append("<TestSuite name=\"").append(suite.getName()).println("\">");
String namePart = suite.getName();
@@ -161,7 +165,8 @@
private void writeTestCases(PrintWriter writer, Collection<TestCase> cases,
StringBuilder nameCollector) {
- for (TestCase testCase : cases) {
+ Collection<TestCase> sorted = sortCollection(cases);
+ for (TestCase testCase : sorted) {
String name = testCase.getName();
writer.append("<TestCase name=\"").append(name).println("\">");
nameCollector.append('.').append(name);
@@ -176,7 +181,8 @@
private void writeTests(PrintWriter writer, Collection<Test> tests,
StringBuilder nameCollector) {
- for (Test test : tests) {
+ Collection<Test> sorted = sortCollection(tests);
+ for (Test test : sorted) {
nameCollector.append('#').append(test.getName());
writer.append("<Test name=\"").append(test.getName()).append("\"");
if (isKnownFailure(mExpectations, nameCollector.toString())) {
@@ -192,6 +198,12 @@
}
}
+ private <E extends Comparable<E>> Collection<E> sortCollection(Collection<E> col) {
+ List<E> list = new ArrayList<E>(col);
+ Collections.sort(list);
+ return list;
+ }
+
public static boolean isKnownFailure(ExpectationStore expectationStore, String testName) {
return expectationStore != null && expectationStore.get(testName) != Expectation.SUCCESS;
}
diff --git a/tools/utils/buildCts.py b/tools/utils/buildCts.py
index 6dc1c70..2eda363 100755
--- a/tools/utils/buildCts.py
+++ b/tools/utils/buildCts.py
@@ -98,6 +98,8 @@
for description in descriptions:
doc = tools.XmlFile(description)
packages.append(doc.GetAttr('TestPackage', 'appPackageName'))
+ # sort the list to give the same sequence based on name
+ packages.sort()
ptsPattern = r'com\.android\.pts\..*'
plan = tools.TestPlan(packages)