Support Older XML Formats

Bug 5844154

Change-Id: I8f0daba15072aa0ef4169354eabfcbea85062148
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/TestPackageDef.java b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/TestPackageDef.java
index db95aba..d6e9ec6 100644
--- a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/TestPackageDef.java
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/TestPackageDef.java
@@ -41,6 +41,10 @@
  */
 class TestPackageDef implements ITestPackageDef {
 
+    public static final String HOST_SIDE_ONLY_TEST = "hostSideOnly";
+    public static final String NATIVE_TEST = "native";
+    public static final String VM_HOST_TEST = "vmHostTest";
+
     private static final String SIGNATURE_TEST_METHOD = "testSignature";
     private static final String SIGNATURE_TEST_CLASS = "android.tests.sigtest.SimpleSignatureTest";
 
@@ -108,19 +112,14 @@
         return mRunner;
     }
 
-    void setIsVMHostTest(boolean vmHostTest) {
-        mIsVMHostTest = vmHostTest;
-
-    }
-
-    boolean isVMHostTest() {
-        return mIsVMHostTest;
-    }
-
     void setTestType(String testType) {
         mTestType = testType;
     }
 
+    String getTestType() {
+        return mTestType;
+    }
+
     void setJarPath(String jarPath) {
         mJarPath = jarPath;
     }
@@ -190,7 +189,7 @@
         mExcludedTestFilter.setTestInclusion(mClassName, mMethodName);
         mTests = filterTests();
 
-        if ("hostSideOnly".equals(mTestType)) {
+        if (HOST_SIDE_ONLY_TEST.equals(mTestType)) {
             CLog.d("Creating host test for %s", mName);
             JarHostTest hostTest = new JarHostTest();
             hostTest.setRunName(getUri());
@@ -198,7 +197,7 @@
             hostTest.setTests(mTests);
             mDigest = generateDigest(testCaseDir, mJarPath);
             return hostTest;
-        } else if (mIsVMHostTest) {
+        } else if (VM_HOST_TEST.equals(mTestType)) {
             CLog.d("Creating vm host test for %s", mName);
             VMHostTest vmHostTest = new VMHostTest();
             vmHostTest.setRunName(getUri());
@@ -206,7 +205,7 @@
             vmHostTest.setTests(mTests);
             mDigest = generateDigest(testCaseDir, mJarPath);
             return vmHostTest;
-        } else if ("native".equals(mTestType)) {
+        } else if (NATIVE_TEST.equals(mTestType)) {
             return new GeeTest(mUri, mName);
         } else if (mIsSignatureTest) {
             // TODO: hardcode the runner/class/method for now, since current package xml points to
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/TestPackageXmlParser.java b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/TestPackageXmlParser.java
index 65fc87d..d24c5bf 100644
--- a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/TestPackageXmlParser.java
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/TestPackageXmlParser.java
@@ -64,8 +64,6 @@
                 final String testPackageNameSpace = attributes.getValue("appNameSpace");
                 final String packageName = attributes.getValue("name");
                 final String runnerName = attributes.getValue("runner");
-                final String vmHostTest = attributes.getValue("vmHostTest");
-                final String testType = attributes.getValue("testType");
                 final String jarPath = attributes.getValue("jarPath");
                 final String signatureCheck = attributes.getValue("signatureCheck");
                 final String javaPackageFilter = attributes.getValue("javaPackageFilter");
@@ -77,8 +75,7 @@
                 mPackageDef.setAppNameSpace(testPackageNameSpace);
                 mPackageDef.setName(packageName);
                 mPackageDef.setRunner(runnerName);
-                mPackageDef.setIsVMHostTest(parseBoolean(vmHostTest));
-                mPackageDef.setTestType(testType);
+                mPackageDef.setTestType(getTestType(attributes));
                 mPackageDef.setJarPath(jarPath);
                 mPackageDef.setIsSignatureCheck(parseBoolean(signatureCheck));
                 mPackageDef.setTestPackageName(javaPackageFilter);
@@ -129,6 +126,16 @@
 
         }
 
+        private String getTestType(Attributes attributes) {
+            if (parseBoolean(attributes.getValue("hostSideOnly"))) {
+                return TestPackageDef.HOST_SIDE_ONLY_TEST;
+            } else if (parseBoolean(attributes.getValue("vmHostTest"))) {
+                return TestPackageDef.VM_HOST_TEST;
+            } else {
+                return attributes.getValue("testType");
+            }
+        }
+
         @Override
         public void endElement (String uri, String localName, String qName) {
             if (TEST_SUITE_TAG.equals(localName) || TEST_CASE_TAG.equals(localName)) {
diff --git a/tools/tradefed-host/tests/src/com/android/cts/tradefed/testtype/TestPackageXmlParserTest.java b/tools/tradefed-host/tests/src/com/android/cts/tradefed/testtype/TestPackageXmlParserTest.java
index 482844c..7861449 100644
--- a/tools/tradefed-host/tests/src/com/android/cts/tradefed/testtype/TestPackageXmlParserTest.java
+++ b/tools/tradefed-host/tests/src/com/android/cts/tradefed/testtype/TestPackageXmlParserTest.java
@@ -57,6 +57,10 @@
         "<TestPackage hostSideOnly=\"blah\" >" +
         "</TestPackage>";
 
+    private static String VM_HOST_TEST_XML = "<TestPackage vmHostTest=\"true\"></TestPackage>";
+
+    private static String NATIVE_TEST_XML = "<TestPackage testType=\"native\"></TestPackage>";
+
     private static String NO_TEST_DATA =
         "<invalid />";
 
@@ -79,7 +83,7 @@
         TestPackageXmlParser parser = new TestPackageXmlParser();
         parser.parse(getStringAsStream(HOST_TEST_DATA));
         TestPackageDef def = parser.getTestPackageDef();
-        // assertTrue(def.isHostSideTest());
+        assertEquals(TestPackageDef.HOST_SIDE_ONLY_TEST, def.getTestType());
         assertEquals(3, def.getTests().size());
         Iterator<TestIdentifier> iterator = def.getTests().iterator();
 
@@ -103,7 +107,22 @@
         TestPackageXmlParser parser = new TestPackageXmlParser();
         parser.parse(getStringAsStream(BAD_HOST_TEST_DATA));
         TestPackageDef def = parser.getTestPackageDef();
-        // assertFalse(def.isHostSideTest());
+        assertFalse(TestPackageDef.HOST_SIDE_ONLY_TEST.equals(def.getTestType()));
+    }
+
+    public void testParse_vmHostTest() throws ParseException  {
+        assertTestType(TestPackageDef.VM_HOST_TEST, VM_HOST_TEST_XML);
+    }
+
+    public void testParse_nativeTest() throws ParseException  {
+        assertTestType(TestPackageDef.NATIVE_TEST, NATIVE_TEST_XML);
+    }
+
+    private void assertTestType(String expectedType, String xml) throws ParseException {
+        TestPackageXmlParser parser = new TestPackageXmlParser();
+        parser.parse(getStringAsStream(xml));
+        TestPackageDef def = parser.getTestPackageDef();
+        assertEquals(expectedType, def.getTestType());
     }
 
     /**