Home | History | Annotate | Download | only in cts
      1 /*
      2  * Copyright (C) 2008 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package com.android.cts;
     18 
     19 import java.io.BufferedReader;
     20 import java.io.File;
     21 import java.io.FileReader;
     22 import java.io.IOException;
     23 import java.security.NoSuchAlgorithmException;
     24 import java.util.ArrayList;
     25 import java.util.Collection;
     26 import java.util.HashMap;
     27 import java.util.Iterator;
     28 
     29 import javax.xml.parsers.ParserConfigurationException;
     30 import javax.xml.transform.TransformerException;
     31 import javax.xml.transform.TransformerFactoryConfigurationError;
     32 
     33 import org.w3c.dom.Document;
     34 import org.w3c.dom.Node;
     35 import org.xml.sax.SAXException;
     36 
     37 import android.annotation.cts.Profile;
     38 
     39 import com.android.cts.TestDevice.DeviceParameterCollector;
     40 
     41 /**
     42  * Test the session builder.
     43  */
     44 public class TestSessionBuilderTests extends CtsTestBase {
     45     private static final String mTmpPlanFileName = "plan";
     46 
     47     private static final String ATTRIBUTE_DEVICE_ID = "deviceID";
     48     private static final String ATTRIBUTE_BUILD_ID = "buildID";
     49     private static final String ATTRIBUTE_BUILD_VERSION = "buildVersion";
     50     private static final String ATTRIBUTE_BUILD_NAME = "buildName";
     51 
     52     private String mTestPackageBinaryName = "CtsTestPackage";
     53 
     54     /** {@inheritDoc} */
     55     @Override
     56     public void tearDown() {
     57         HostConfig.getInstance().removeTestPacakges();
     58         deleteTestPackage(mTestPackageBinaryName);
     59 
     60         super.tearDown();
     61     }
     62 
     63     /**
     64      * Test building simple test session.
     65      */
     66     public void testBuildSimpleSession() throws IOException,
     67             ParserConfigurationException, SAXException, TestPlanNotFoundException,
     68             TestNotFoundException, NoSuchAlgorithmException {
     69         final String appPackageName = "com.google.android.cts" + ".CtsTest";
     70         final String suiteName = appPackageName;
     71         final String caseName = "CtsTestHello";
     72         final String runner = "android.test.InstrumentationTestRunner";
     73 
     74         final String serialNum = "serialNum";
     75         final String buildID = "buildid";
     76         final String buildName = "buildname";
     77         final String buildVersion = "buildVersion";
     78         final String testPlanConfigStr = "<TestPlan version=\"1.0\">\n"
     79                 + "\t<Description>Demo test plan</Description>\n"
     80                 + "\t\t<PlanSettings>\n"
     81                 + "\t\t\t<RequiredDevice amount=\"" + 1 + "\"" + "/>\n"
     82                 + "\t\t</PlanSettings>\n"
     83                 + "\t<Entry uri=\""
     84                 + appPackageName
     85                 + "\"/>\n"
     86                 + "</TestPlan>";
     87 
     88         final String descriptionConfigStr = "<TestPackage name=\""
     89                 + mTestPackageBinaryName+ "\" "
     90                 + "appPackageName=\"" + appPackageName
     91                 + "\" version=\"1.0\" AndroidFramework=\"Android 1.0\""
     92                 + " runner=\"" + runner + "\">\n"
     93                 + " <Description>something extracted from java doc</Description>\n"
     94                 + " <TestSuite name=\"" + suiteName + "\"" + ">\n"
     95                 + "     <TestCase name=\"" + caseName + "\"" + " priority=\"mandatory\">\n"
     96                 + "         <Description>" + "something extracted from java doc"
     97                 + "         </Description>\n"
     98                 + "         <!-- Test Methods -->\n"
     99                 + "         <Test name=\"testHello\"" + " type=\"automatic\"" + "/>\n"
    100                 + "     </TestCase>\n"
    101                 + " </TestSuite>\n"
    102                 + "</TestPackage>\n";
    103 
    104         HostConfig.getInstance().removeTestPacakges();
    105         String planPath =
    106             HostConfig.getInstance().getPlanRepository().getPlanPath(mTmpPlanFileName);
    107         createFile(testPlanConfigStr, planPath);
    108 
    109         createTestPackage(descriptionConfigStr, mTestPackageBinaryName);
    110         HostConfig.getInstance().loadTestPackages();
    111 
    112         TestSession ts = TestSessionBuilder.getInstance().build(planPath, Profile.ALL);
    113         assertEquals(1, ts.getNumOfRequiredDevices());
    114 
    115         TestSessionLog tsl = ts.getSessionLog();
    116         assertEquals(1, tsl.getTestPackages().size());
    117 
    118         TestPackage testPackage = tsl.getTestPackages().iterator().next();
    119         assertEquals(1, testPackage.getTestSuites().size());
    120         assertEquals(mTestPackageBinaryName, testPackage.getAppBinaryName());
    121         assertEquals(appPackageName, testPackage.getAppPackageName());
    122         assertEquals("1.0", testPackage.getVersion());
    123         assertEquals("Android 1.0", testPackage.getAndroidVersion());
    124         assertEquals(runner, testPackage.getInstrumentationRunner());
    125 
    126         TestSuite testSuite = testPackage.getTestSuites().iterator().next();
    127         assertEquals(1, testSuite.getTestCases().size());
    128         assertEquals(suiteName, testSuite.getFullName());
    129 
    130         TestCase testCase = testSuite.getTestCases().iterator().next();
    131         assertEquals(caseName, testCase.getName());
    132         assertEquals("mandatory", testCase.getPriority());
    133 
    134         Test test = testCase.getTests().iterator().next();
    135         assertEquals("automatic", test.getType());
    136         assertEquals(CtsTestResult.CODE_NOT_EXECUTED, test.getResult().getResultCode());
    137         assertEquals(runner, test.getInstrumentationRunner());
    138 
    139         // test build information
    140         DeviceParameterCollector deviceParam = new DeviceParameterCollector();
    141         deviceParam.setSerialNumber(serialNum);
    142         deviceParam.setBuildId(buildID);
    143         deviceParam.setBuildVersion(buildVersion);
    144         deviceParam.setProductName(buildName);
    145         tsl.setDeviceInfo(deviceParam);
    146         Document doc = tsl.createResultDoc();
    147 
    148         Node buildInfoNode = doc.getElementsByTagName("BuildInfo").item(0);
    149         assertEquals(serialNum, buildInfoNode.getAttributes().getNamedItem(
    150                 ATTRIBUTE_DEVICE_ID).getNodeValue().trim());
    151         assertEquals(buildID, buildInfoNode.getAttributes().getNamedItem(
    152                 ATTRIBUTE_BUILD_ID).getNodeValue().trim());
    153         assertEquals(buildVersion, buildInfoNode.getAttributes().getNamedItem(
    154                 ATTRIBUTE_BUILD_VERSION).getNodeValue().trim());
    155         assertEquals(buildName, buildInfoNode.getAttributes().getNamedItem(
    156                 ATTRIBUTE_BUILD_NAME).getNodeValue().trim());
    157 
    158         deleteTestPackage(mTestPackageBinaryName);
    159     }
    160 
    161     /**
    162      * Test getting and removing entries from plan file.
    163      */
    164     public void testGetAndRemoveEntriesFromPlanFile() throws UnknownCommandException,
    165                     CommandNotFoundException, Exception {
    166 
    167         final String appPackageName = "com.google.android.cts";
    168         final String suiteName = appPackageName;
    169         final String caseName = "CtsTestHello";
    170         final String runner = "android.test.InstrumentationTestRunner";
    171 
    172         final String testPlanConfigStr = "<TestPlan version=\"1.0\">\n"
    173                 + "\t<Description>Demo test plan</Description>\n"
    174                 + "\t\t<PlanSettings>\n"
    175                 + "\t\t\t<RequiredDevice amount=\"" + 1 + "\"" + "/>\n"
    176                 + "\t\t</PlanSettings>\n"
    177                 + "\t<Entry uri=\""
    178                 + appPackageName
    179                 + "\"/>\n"
    180                 + "</TestPlan>";
    181 
    182         final String descriptionConfigStr = "<TestPackage name=\""
    183                 + mTestPackageBinaryName+ "\" "
    184                 + "appPackageName=\"" + appPackageName
    185                 + "\" version=\"1.0\" AndroidFramework=\"Android 1.0\""
    186                 + " runner=\"" + runner + "\">\n"
    187                 + " <Description>something extracted from java doc</Description>\n"
    188                 + " <TestSuite name=\"" + suiteName + "\"" + ">\n"
    189                 + "     <TestCase name=\"" + caseName + "\"" + " priority=\"mandatory\">\n"
    190                 + "         <Description>" + "something extracted from java doc"
    191                 + "         </Description>\n"
    192                 + "         <!-- Test Methods -->\n"
    193                 + "         <Test name=\"testHello\"" + " type=\"automatic\"" + "/>\n"
    194                 + "     </TestCase>\n"
    195                 + " </TestSuite>\n"
    196                 + "</TestPackage>\n";
    197 
    198         HostConfig.getInstance().removeTestPacakges();
    199         createTestPackage(descriptionConfigStr, mTestPackageBinaryName);
    200         HostConfig.getInstance().loadTestPackages();
    201 
    202         String planPath = HostConfig.getInstance().getPlanRepository()
    203                 .getPlanPath(mTmpPlanFileName);
    204         createFile(testPlanConfigStr, planPath);
    205 
    206         ArrayList<String> removedPkgList = new ArrayList<String>();
    207         Collection<String> entries = TestPlan.getEntries(planPath, removedPkgList);
    208         Iterator<String> it = entries.iterator();
    209 
    210         assertEquals(1, entries.size());
    211         assertEquals(appPackageName, it.next());
    212         ConsoleUi cui = new ConsoleUi(TestHost.getInstance());
    213         String cmdLine = CTSCommand.REMOVE + " " + "-p" + " "
    214                 + appPackageName;
    215         cui.processCommand(CommandParser.parse(cmdLine));
    216         entries = TestPlan.getEntries(planPath, removedPkgList);
    217         assertEquals(1, removedPkgList.size());
    218 
    219         deleteTestPackage(mTestPackageBinaryName);
    220     }
    221 
    222     /**
    223      * Test validating package name.
    224      */
    225     public void testValidatePackageName() throws IOException {
    226         final String packageName = "com.google.android.testname";
    227         String testPackageXmlFilePath =
    228             HostConfig.getInstance().getCaseRepository().getXmlPath(packageName);
    229         String testpackageAPKFilePath =
    230             HostConfig.getInstance().getCaseRepository().getApkPath(packageName);
    231 
    232         HostConfig.getInstance().removeTestPacakges();
    233         createTestPackage("", packageName);
    234 
    235         assertEquals(true, TestPlan.isValidPackageName(packageName));
    236 
    237         deleteFile(testPackageXmlFilePath);
    238         assertEquals(false, TestPlan.isValidPackageName(packageName));
    239 
    240         deleteFile(testpackageAPKFilePath);
    241         assertEquals(false, TestPlan.isValidPackageName(packageName));
    242     }
    243 
    244     /**
    245      * Test building test session with dependency.
    246      */
    247     public void testBuildSessionWithDependency() throws IOException,
    248             ParserConfigurationException, SAXException, TestPlanNotFoundException,
    249             TestNotFoundException, NoSuchAlgorithmException {
    250 
    251         final String targetNameSpace = "i don't want to be the target!";
    252         final String appPackageName = "com.google.android.cts";
    253         final String suiteName = appPackageName + ".CtsTest";
    254         final String caseName = "CtsTestHello";
    255         final String runner = "android.test.InstrumentationTestRunner";
    256 
    257         final String testPlanConfigStr = "<TestPlan version=\"1.0\">\n"
    258                 + "\t<Description>Demo test plan</Description>\n"
    259                 + "\t\t<PlanSettings>\n"
    260                 + "\t\t\t<RequiredDevice amount=\"" + 1 + "\"" + "/>\n"
    261                 + "\t\t</PlanSettings>\n"
    262                 + "\t<Entry uri=\""
    263                 + appPackageName
    264                 + "\"/>\n"
    265                 + "</TestPlan>";
    266 
    267         final String descriptionConfigStr = "<TestPackage name=\""
    268                 + mTestPackageBinaryName + "\" "
    269                 + "appPackageName=\"" + appPackageName
    270                 + "\" targetNameSpace=\"" + targetNameSpace
    271                 + "\" version=\"1.0\" AndroidFramework=\"Android 1.0\""
    272                 + " runner=\"" +runner + "\">\n"
    273                 + " <Description>something extracted from java doc</Description>\n"
    274                 + " <TestSuite name=\"" + suiteName + "\"" + ">\n"
    275                 + "     <TestCase name=\"" + caseName + "\"" + " priority=\"mandatory\">\n"
    276                 + "         <Description>" + "something extracted from java doc"
    277                 + "         </Description>\n"
    278                 + "         <!-- Test Methods -->\n"
    279                 + "         <Test name=\"testHello\"" + " type=\"automatic\"" + "/>\n"
    280                 + "     </TestCase>\n"
    281                 + " </TestSuite>\n"
    282                 + "</TestPackage>\n";
    283 
    284         HostConfig.getInstance().removeTestPacakges();
    285 
    286         String planPath =
    287             HostConfig.getInstance().getPlanRepository().getPlanPath(mTmpPlanFileName);
    288         createFile(testPlanConfigStr, planPath);
    289 
    290         createTestPackage(descriptionConfigStr, mTestPackageBinaryName);
    291         HostConfig.getInstance().loadTestPackages();
    292 
    293         TestSession ts = TestSessionBuilder.getInstance().build(planPath, Profile.ALL);
    294         assertEquals(1, ts.getNumOfRequiredDevices());
    295 
    296         TestSessionLog tsl = ts.getSessionLog();
    297         assertEquals(1, tsl.getTestPackages().size());
    298 
    299         TestPackage testPackage = tsl.getTestPackages().iterator().next();
    300         assertEquals(1, testPackage.getTestSuites().size());
    301         assertEquals(mTestPackageBinaryName, testPackage.getAppBinaryName());
    302         assertEquals(targetNameSpace, testPackage.getTargetNameSpace());
    303         assertEquals("1.0", testPackage.getVersion());
    304         assertEquals("Android 1.0", testPackage.getAndroidVersion());
    305         assertEquals(runner, testPackage.getInstrumentationRunner());
    306 
    307         TestSuite testSuite = testPackage.getTestSuites().iterator().next();
    308         assertEquals(1, testSuite.getTestCases().size());
    309         assertEquals(suiteName, testSuite.getFullName());
    310 
    311         TestCase testCase = testSuite.getTestCases().iterator().next();
    312         assertEquals(caseName, testCase.getName());
    313         assertEquals("mandatory", testCase.getPriority());
    314 
    315         Test test = testCase.getTests().iterator().next();
    316         assertEquals("automatic", test.getType());
    317         assertEquals(CtsTestResult.CODE_NOT_EXECUTED, test.getResult().getResultCode());
    318         assertEquals(runner, test.getInstrumentationRunner());
    319 
    320         deleteTestPackage(mTestPackageBinaryName);
    321     }
    322 
    323     /**
    324      * Test building test session from embedded suites.
    325      */
    326     public void testBuildSessionFromEmbeddedSuites() throws IOException,
    327             ParserConfigurationException, SAXException, TestPlanNotFoundException,
    328             TestNotFoundException, NoSuchAlgorithmException {
    329 
    330         final String appPackageName = "com.google.android.cts";
    331         final String caseName = "CtsTestHello";
    332         final String testName = "testHello";
    333 
    334         final String testPlanConfigStr = "<TestPlan version=\"1.0\">\n"
    335                 + "<Description>Demo test plan</Description>\n"
    336                 + "<PlanSettings>\n"
    337                 + "    <RequiredDevice amount=\"" + 1 + "\"" + "/>\n"
    338                 + "</PlanSettings>\n"
    339                 + "<Entry uri=\"" + appPackageName + "\"/>\n"
    340                 + "</TestPlan>";
    341 
    342         final String descriptionConfigStr = "<TestPackage name=\"" + mTestPackageBinaryName + "\""
    343                 + " appPackageName=\"" + appPackageName + "\""
    344                 + " version=\"1.0\" AndroidFramework=\"Android 1.0\""
    345                 + " runner=\"android.test.InstrumentationTestRunner\" >\n"
    346                 + "  <Description>something extracted from java doc</Description>\n"
    347                 + "  <TestSuite name=\"com.google\">\n"
    348                 + "     <TestCase name=\"CtsTestHello\" priority=\"mandatory\">\n"
    349                 + "         <Description>" + "something extracted from java doc"
    350                 + "         </Description>\n"
    351                 + "         <!-- Test Methods -->\n"
    352                 + "         <Test name=\"testHello\"" + " type=\"automatic\"" + "/>\n"
    353                 + "     </TestCase>\n"
    354                 + "     <TestSuite name=\"TestSuiteName\">\n"
    355                 + "         <TestCase name=\"TestCaseName\" priority=\"mandatory\">\n"
    356                 + "             <Description>" + "something extracted from java doc"
    357                 + "             </Description>\n"
    358                 + "             <!-- Test Methods -->\n"
    359                 + "             <Test name=\"testName\"" + " type=\"automatic\"" + "/>\n"
    360                 + "         </TestCase>\n"
    361                 + "     </TestSuite>\n"
    362                 + "  </TestSuite>\n"
    363                 + "</TestPackage>\n";
    364 
    365         HostConfig.getInstance().removeTestPacakges();
    366 
    367         String planPath =
    368             HostConfig.getInstance().getPlanRepository().getPlanPath(mTmpPlanFileName);
    369         createFile(testPlanConfigStr, planPath);
    370 
    371         createTestPackage(descriptionConfigStr, mTestPackageBinaryName);
    372         HostConfig.getInstance().loadTestPackages();
    373 
    374         TestSession ts = TestSessionBuilder.getInstance().build(planPath, Profile.ALL);
    375         assertEquals(1, ts.getNumOfRequiredDevices());
    376 
    377         TestSessionLog tsl = ts.getSessionLog();
    378         assertEquals(1, tsl.getTestPackages().size());
    379 
    380         TestPackage testPackage = tsl.getTestPackages().iterator().next();
    381         assertEquals(1, testPackage.getTestSuites().size());
    382         assertEquals(mTestPackageBinaryName, testPackage.getAppBinaryName());
    383         assertEquals("1.0", testPackage.getVersion());
    384         assertEquals("Android 1.0", testPackage.getAndroidVersion());
    385 
    386         TestSuite testSuite;
    387         testSuite = testPackage.getTestSuites().iterator().next();
    388         assertEquals(1, testSuite.getSubSuites().size());
    389         assertEquals(1, testSuite.getTestCases().size());
    390         assertEquals("com.google", testSuite.getFullName());
    391         assertEquals("com.google", testSuite.getName());
    392 
    393         TestCase testCase = testSuite.getTestCases().iterator().next();
    394         assertEquals(caseName, testCase.getName());
    395         assertEquals("mandatory", testCase.getPriority());
    396 
    397         Test test = testCase.getTests().iterator().next();
    398         assertEquals("com.google.CtsTestHello#testHello", test.getFullName());
    399         assertEquals("automatic", test.getType());
    400         assertEquals(testName, test.getName());
    401         assertEquals(CtsTestResult.CODE_NOT_EXECUTED, test.getResult().getResultCode());
    402 
    403         testSuite = testSuite.getSubSuites().iterator().next();
    404         assertEquals(0, testSuite.getSubSuites().size());
    405         assertEquals(1, testSuite.getTestCases().size());
    406         assertEquals("com.google.TestSuiteName", testSuite.getFullName());
    407         assertEquals("TestSuiteName", testSuite.getName());
    408 
    409         testCase = testSuite.getTestCases().iterator().next();
    410         assertEquals("TestCaseName", testCase.getName());
    411         assertEquals("mandatory", testCase.getPriority());
    412 
    413         test = testCase.getTests().iterator().next();
    414         assertEquals("com.google.TestSuiteName.TestCaseName#testName", test.getFullName());
    415         assertEquals("automatic", test.getType());
    416         assertEquals("testName", test.getName());
    417         assertEquals(CtsTestResult.CODE_NOT_EXECUTED, test.getResult().getResultCode());
    418 
    419         deleteTestPackage(mTestPackageBinaryName);
    420     }
    421 
    422     /**
    423      * Test loading plan with excluded list from the xml file.
    424      */
    425     public void testExcludingFromXmlFile() throws IOException,
    426                 ParserConfigurationException,
    427                 SAXException,
    428                 TestPlanNotFoundException,
    429                 TestNotFoundException, NoSuchAlgorithmException {
    430 
    431         final String appPackageName = "com.google.android.cts";
    432         final String caseName = "CtsTestHello";
    433         final String testName = "testHello";
    434         final String excludedList = "com.google.TestSuiteName";
    435 
    436         final String testPlanConfigStr = "<TestPlan version=\"1.0\">\n"
    437                 + "<Description>Demo test plan</Description>\n"
    438                 + "<PlanSettings>\n"
    439                 + "    <RequiredDevice amount=\"" + 1 + "\"" + "/>\n"
    440                 + "</PlanSettings>\n"
    441                 + "     <Entry uri=\"" + appPackageName
    442                 + "\" " + "exclude=\"" + excludedList + "\"/>\n"
    443                 + "</TestPlan>";
    444 
    445         final String descriptionConfigStr = "<TestPackage name=\"" + mTestPackageBinaryName + "\""
    446                 + " appPackageName=\"" + appPackageName + "\""
    447                 + " version=\"1.0\" AndroidFramework=\"Android 1.0\""
    448                 + " runner=\"android.test.InstrumentationTestRunner\" >\n"
    449                 + "  <Description>something extracted from java doc</Description>\n"
    450                 + "  <TestSuite name=\"com.google\">\n"
    451                 + "     <TestCase name=\"CtsTestHello\" priority=\"mandatory\">\n"
    452                 + "         <Description>" + "something extracted from java doc"
    453                 + "         </Description>\n"
    454                 + "         <!-- Test Methods -->\n"
    455                 + "         <Test name=\"testHello\"" + " type=\"automatic\"" + "/>\n"
    456                 + "         <Test name=\"testHello2\"" + " type=\"automatic\"" + "/>\n"
    457                 + "     </TestCase>\n"
    458                 + "     <TestSuite name=\"TestSuiteName\">\n"
    459                 + "         <TestCase name=\"TestCaseName\" priority=\"mandatory\">\n"
    460                 + "             <Description>" + "something extracted from java doc"
    461                 + "             </Description>\n"
    462                 + "             <!-- Test Methods -->\n"
    463                 + "             <Test name=\"testName1\"" + " type=\"automatic\"" + "/>\n"
    464                 + "             <Test name=\"testName2\"" + " type=\"automatic\"" + "/>\n"
    465                 + "         </TestCase>\n"
    466                 + "     </TestSuite>\n"
    467                 + "  </TestSuite>\n"
    468                 + "</TestPackage>\n";
    469 
    470         HostConfig.getInstance().removeTestPacakges();
    471 
    472         String planPath =
    473             HostConfig.getInstance().getPlanRepository().getPlanPath(mTmpPlanFileName);
    474         createFile(testPlanConfigStr, planPath);
    475 
    476         createTestPackage(descriptionConfigStr, mTestPackageBinaryName);
    477         HostConfig.getInstance().loadTestPackages();
    478 
    479         TestSession ts = TestSessionBuilder.getInstance().build(planPath, Profile.ALL);
    480         assertEquals(1, ts.getNumOfRequiredDevices());
    481 
    482         TestSessionLog tsl = ts.getSessionLog();
    483         assertEquals(1, tsl.getTestPackages().size());
    484 
    485         TestPackage testPackage = tsl.getTestPackages().iterator().next();
    486         assertEquals(1, testPackage.getTestSuites().size());
    487         assertEquals(mTestPackageBinaryName, testPackage.getAppBinaryName());
    488         assertEquals("1.0", testPackage.getVersion());
    489         assertEquals("Android 1.0", testPackage.getAndroidVersion());
    490 
    491         TestSuite testSuite;
    492         testSuite = testPackage.getTestSuites().iterator().next();
    493         assertEquals(0, testSuite.getSubSuites().size());
    494         assertEquals(1, testSuite.getTestCases().size());
    495         assertEquals("com.google", testSuite.getFullName());
    496 
    497         TestCase testCase = testSuite.getTestCases().iterator().next();
    498         assertEquals(caseName, testCase.getName());
    499         assertEquals("mandatory", testCase.getPriority());
    500 
    501         Test test = testCase.getTests().iterator().next();
    502         assertEquals("com.google.CtsTestHello#testHello", test.getFullName());
    503         assertEquals("automatic", test.getType());
    504         assertEquals(testName, test.getName());
    505         assertEquals(CtsTestResult.CODE_NOT_EXECUTED, test.getResult().getResultCode());
    506 
    507         deleteTestPackage(mTestPackageBinaryName);
    508     }
    509 
    510     /**
    511      * Test building and loading plan with excluding list of embedded suite.
    512      */
    513     public void testExcludingEmbeddedSuite() throws IOException,
    514             ParserConfigurationException, SAXException, TestPlanNotFoundException,
    515             TestNotFoundException,
    516             TransformerFactoryConfigurationError, TransformerException, NoSuchAlgorithmException {
    517 
    518         final String appPackageName = "com.google.android.cts";
    519         final String caseName = "CtsTestHello";
    520         final String testName = "testHello";
    521         final String excludedList = "com.google.TestSuiteName";
    522 
    523         final String descriptionConfigStr = "<TestPackage name=\"" + mTestPackageBinaryName + "\""
    524                 + " appPackageName=\"" + appPackageName + "\""
    525                 + " version=\"1.0\" AndroidFramework=\"Android 1.0\""
    526                 + " runner=\"android.test.InstrumentationTestRunner\" >\n"
    527                 + "  <Description>something extracted from java doc</Description>\n"
    528                 + "  <TestSuite name=\"com.google\">\n"
    529                 + "     <TestCase name=\"CtsTestHello\" priority=\"mandatory\">\n"
    530                 + "         <Description>" + "something extracted from java doc"
    531                 + "         </Description>\n"
    532                 + "         <!-- Test Methods -->\n"
    533                 + "         <Test name=\"testHello\"" + " type=\"automatic\"" + "/>\n"
    534                 + "         <Test name=\"testHello2\"" + " type=\"automatic\"" + "/>\n"
    535                 + "     </TestCase>\n"
    536                 + "     <TestSuite name=\"TestSuiteName\">\n"
    537                 + "         <TestCase name=\"TestCaseName\" priority=\"mandatory\">\n"
    538                 + "             <Description>" + "something extracted from java doc"
    539                 + "             </Description>\n"
    540                 + "             <!-- Test Methods -->\n"
    541                 + "             <Test name=\"testName1\"" + " type=\"automatic\"" + "/>\n"
    542                 + "             <Test name=\"testName2\"" + " type=\"automatic\"" + "/>\n"
    543                 + "         </TestCase>\n"
    544                 + "     </TestSuite>\n"
    545                 + "  </TestSuite>\n"
    546                 + "</TestPackage>\n";
    547 
    548         HostConfig.getInstance().removeTestPacakges();
    549         createTestPackage(descriptionConfigStr, mTestPackageBinaryName);
    550         HostConfig.getInstance().loadTestPackages();
    551 
    552         ArrayList<String> packageNames = new ArrayList<String>();
    553         packageNames.add(appPackageName);
    554 
    555         HashMap<String, ArrayList<String>> results = new HashMap<String, ArrayList<String>>();
    556         ArrayList<String> list = new ArrayList<String>();
    557         list.add(excludedList);
    558         results.put(appPackageName, list);
    559         String planName = "plan_test_excluding";
    560         String planPath = HostConfig.getInstance().getPlanRepository().getPlanPath(planName);
    561         TestSessionBuilder.getInstance().serialize(planName, packageNames, results);
    562 
    563         TestSession ts = TestSessionBuilder.getInstance().build(planPath, Profile.ALL);
    564         assertEquals(1, ts.getNumOfRequiredDevices());
    565 
    566         TestSessionLog tsl = ts.getSessionLog();
    567         assertEquals(1, tsl.getTestPackages().size());
    568 
    569         TestPackage testPackage = tsl.getTestPackages().iterator().next();
    570         assertEquals(1, testPackage.getTestSuites().size());
    571         assertEquals(mTestPackageBinaryName, testPackage.getAppBinaryName());
    572         assertEquals("1.0", testPackage.getVersion());
    573         assertEquals("Android 1.0", testPackage.getAndroidVersion());
    574 
    575         TestSuite testSuite;
    576         testSuite = testPackage.getTestSuites().iterator().next();
    577         assertEquals(0, testSuite.getSubSuites().size());
    578         assertEquals(1, testSuite.getTestCases().size());
    579         assertEquals("com.google", testSuite.getFullName());
    580 
    581         TestCase testCase = testSuite.getTestCases().iterator().next();
    582         assertEquals(caseName, testCase.getName());
    583         assertEquals("mandatory", testCase.getPriority());
    584 
    585         Test test = testCase.getTests().iterator().next();
    586         assertEquals("com.google.CtsTestHello#testHello", test.getFullName());
    587         assertEquals("automatic", test.getType());
    588         assertEquals(testName, test.getName());
    589         assertEquals(CtsTestResult.CODE_NOT_EXECUTED, test.getResult().getResultCode());
    590 
    591         deleteTestPackage(mTestPackageBinaryName);
    592     }
    593 
    594     /**
    595      * Test building and loading plan with excluding list of the top suite.
    596      */
    597     public void testExcludingTopSuite() throws IOException,
    598             ParserConfigurationException, SAXException, TestPlanNotFoundException,
    599             TestNotFoundException,
    600             TransformerFactoryConfigurationError, TransformerException, NoSuchAlgorithmException {
    601 
    602         final String appPackageName = "com.google.android.cts";
    603         final String excludedList = "com.google";
    604 
    605         final String descriptionConfigStr = "<TestPackage name=\"" + mTestPackageBinaryName + "\""
    606                 + " appPackageName=\"" + appPackageName + "\""
    607                 + " version=\"1.0\" AndroidFramework=\"Android 1.0\""
    608                 + " runner=\"android.test.InstrumentationTestRunner\" >\n"
    609                 + "  <Description>something extracted from java doc</Description>\n"
    610                 + "  <TestSuite name=\"com.google\">\n"
    611                 + "     <TestCase name=\"CtsTestHello\" priority=\"mandatory\">\n"
    612                 + "         <Description>" + "something extracted from java doc"
    613                 + "         </Description>\n"
    614                 + "         <!-- Test Methods -->\n"
    615                 + "         <Test name=\"testHello\"" + " type=\"automatic\"" + "/>\n"
    616                 + "         <Test name=\"testHello2\"" + " type=\"automatic\"" + "/>\n"
    617                 + "     </TestCase>\n"
    618                 + "     <TestSuite name=\"TestSuiteName\">\n"
    619                 + "         <TestCase name=\"TestCaseName\" priority=\"mandatory\">\n"
    620                 + "             <Description>" + "something extracted from java doc"
    621                 + "             </Description>\n"
    622                 + "             <!-- Test Methods -->\n"
    623                 + "             <Test name=\"testName1\"" + " type=\"automatic\"" + "/>\n"
    624                 + "             <Test name=\"testName2\"" + " type=\"automatic\"" + "/>\n"
    625                 + "         </TestCase>\n"
    626                 + "     </TestSuite>\n"
    627                 + "  </TestSuite>\n"
    628                 + "</TestPackage>\n";
    629 
    630         HostConfig.getInstance().removeTestPacakges();
    631         createTestPackage(descriptionConfigStr, mTestPackageBinaryName);
    632         HostConfig.getInstance().loadTestPackages();
    633 
    634         ArrayList<String> packageNames = new ArrayList<String>();
    635         packageNames.add(appPackageName);
    636 
    637         HashMap<String, ArrayList<String>> results = new HashMap<String, ArrayList<String>>();
    638         ArrayList<String> list = new ArrayList<String>();
    639         list.add(excludedList);
    640         results.put(appPackageName, list);
    641         String planName = "plan_test_excluding";
    642         String planPath = HostConfig.getInstance().getPlanRepository().getPlanPath(planName);
    643         TestSessionBuilder.getInstance().serialize(planName, packageNames, results);
    644 
    645         TestSession ts = TestSessionBuilder.getInstance().build(planPath, Profile.ALL);
    646         assertEquals(1, ts.getNumOfRequiredDevices());
    647 
    648         TestSessionLog tsl = ts.getSessionLog();
    649         assertEquals(1, tsl.getTestPackages().size());
    650 
    651         TestPackage testPackage = tsl.getTestPackages().iterator().next();
    652         assertEquals(0, testPackage.getTestSuites().size());
    653         assertEquals(mTestPackageBinaryName, testPackage.getAppBinaryName());
    654         assertEquals("1.0", testPackage.getVersion());
    655         assertEquals("Android 1.0", testPackage.getAndroidVersion());
    656 
    657         deleteTestPackage(mTestPackageBinaryName);
    658     }
    659 
    660     /**
    661      * Test building and loading plan with excluded list of test case.
    662      */
    663     public void testExcludingTestCase() throws IOException,
    664             ParserConfigurationException, SAXException, TestPlanNotFoundException,
    665             TestNotFoundException,
    666             TransformerFactoryConfigurationError, TransformerException, NoSuchAlgorithmException {
    667 
    668         final String appPackageName = "com.google.android.cts";
    669         final String caseName = "CtsTestHello";
    670         final String testName = "testHello";
    671         final String excludedList = "com.google.TestCaseName";
    672 
    673         final String descriptionConfigStr = "<TestPackage name=\"" + mTestPackageBinaryName + "\""
    674                 + " appPackageName=\"" + appPackageName + "\""
    675                 + " version=\"1.0\" AndroidFramework=\"Android 1.0\""
    676                 + " runner=\"android.test.InstrumentationTestRunner\" >\n"
    677                 + "  <Description>something extracted from java doc</Description>\n"
    678                 + "  <TestSuite name=\"com.google\">\n"
    679                 + "     <TestCase name=\"CtsTestHello\" priority=\"mandatory\">\n"
    680                 + "         <Description>" + "something extracted from java doc"
    681                 + "         </Description>\n"
    682                 + "         <!-- Test Methods -->\n"
    683                 + "         <Test name=\"testHello\"" + " type=\"automatic\"" + "/>\n"
    684                 + "         <Test name=\"testHello2\"" + " type=\"automatic\"" + "/>\n"
    685                 + "     </TestCase>\n"
    686                 + "     <TestCase name=\"TestCaseName\" priority=\"mandatory\">\n"
    687                 + "         <Description>" + "something extracted from java doc"
    688                 + "         </Description>\n"
    689                 + "         <!-- Test Methods -->\n"
    690                 + "         <Test name=\"testName1\"" + " type=\"automatic\"" + "/>\n"
    691                 + "         <Test name=\"testName2\"" + " type=\"automatic\"" + "/>\n"
    692                 + "     </TestCase>\n"
    693                 + "  </TestSuite>\n"
    694                 + "</TestPackage>\n";
    695 
    696         HostConfig.getInstance().removeTestPacakges();
    697         createTestPackage(descriptionConfigStr, mTestPackageBinaryName);
    698         HostConfig.getInstance().loadTestPackages();
    699 
    700         ArrayList<String> packageNames = new ArrayList<String>();
    701         packageNames.add(appPackageName);
    702 
    703         HashMap<String, ArrayList<String>> results = new HashMap<String, ArrayList<String>>();
    704         ArrayList<String> list = new ArrayList<String>();
    705         list.add(excludedList);
    706         results.put(appPackageName, list);
    707         String planName = "plan_test_excluding";
    708         String planPath = HostConfig.getInstance().getPlanRepository().getPlanPath(planName);
    709         TestSessionBuilder.getInstance().serialize(planName, packageNames, results);
    710 
    711         TestSession ts = TestSessionBuilder.getInstance().build(planPath, Profile.ALL);
    712         assertEquals(1, ts.getNumOfRequiredDevices());
    713 
    714         TestSessionLog tsl = ts.getSessionLog();
    715         assertEquals(1, tsl.getTestPackages().size());
    716 
    717         TestPackage testPackage = tsl.getTestPackages().iterator().next();
    718         assertEquals(1, testPackage.getTestSuites().size());
    719         assertEquals(mTestPackageBinaryName, testPackage.getAppBinaryName());
    720         assertEquals("1.0", testPackage.getVersion());
    721         assertEquals("Android 1.0", testPackage.getAndroidVersion());
    722 
    723         TestSuite testSuite;
    724         testSuite = testPackage.getTestSuites().iterator().next();
    725         assertEquals(1, testSuite.getTestCases().size());
    726         assertEquals("com.google", testSuite.getFullName());
    727 
    728         assertEquals(1, testSuite.getTestCases().size());
    729 
    730         TestCase testCase = testSuite.getTestCases().iterator().next();
    731         assertEquals(caseName, testCase.getName());
    732         assertEquals("mandatory", testCase.getPriority());
    733 
    734         Test test = testCase.getTests().iterator().next();
    735         assertEquals("com.google.CtsTestHello#testHello", test.getFullName());
    736         assertEquals("automatic", test.getType());
    737         assertEquals(testName, test.getName());
    738         assertEquals(CtsTestResult.CODE_NOT_EXECUTED, test.getResult().getResultCode());
    739 
    740         deleteTestPackage(mTestPackageBinaryName);
    741     }
    742 
    743     /**
    744      * Test building and loading plan with excluded list of all of the test cases.
    745      */
    746     public void testExcludingAllTestCases() throws IOException,
    747             ParserConfigurationException, SAXException, TestPlanNotFoundException,
    748             TestNotFoundException,
    749             TransformerFactoryConfigurationError, TransformerException, NoSuchAlgorithmException {
    750 
    751         final String appPackageName = "com.google.android.cts";
    752         final String excludedList = "com.google.TestCaseName;com.google.CtsTestHello";
    753 
    754         final String descriptionConfigStr = "<TestPackage name=\"" + mTestPackageBinaryName + "\""
    755                 + " appPackageName=\"" + appPackageName + "\""
    756                 + " version=\"1.0\" AndroidFramework=\"Android 1.0\""
    757                 + " runner=\"android.test.InstrumentationTestRunner\" >\n"
    758                 + "  <Description>something extracted from java doc</Description>\n"
    759                 + "  <TestSuite name=\"com.google\">\n"
    760                 + "     <TestCase name=\"CtsTestHello\" priority=\"mandatory\">\n"
    761                 + "         <Description>" + "something extracted from java doc"
    762                 + "         </Description>\n"
    763                 + "         <!-- Test Methods -->\n"
    764                 + "         <Test name=\"testHello\"" + " type=\"automatic\"" + "/>\n"
    765                 + "         <Test name=\"testHello2\"" + " type=\"automatic\"" + "/>\n"
    766                 + "     </TestCase>\n"
    767                 + "     <TestCase name=\"TestCaseName\" priority=\"mandatory\">\n"
    768                 + "         <Description>" + "something extracted from java doc"
    769                 + "         </Description>\n"
    770                 + "         <!-- Test Methods -->\n"
    771                 + "         <Test name=\"testName1\"" + " type=\"automatic\"" + "/>\n"
    772                 + "         <Test name=\"testName2\"" + " type=\"automatic\"" + "/>\n"
    773                 + "     </TestCase>\n"
    774                 + "  </TestSuite>\n"
    775                 + "</TestPackage>\n";
    776 
    777         HostConfig.getInstance().removeTestPacakges();
    778         createTestPackage(descriptionConfigStr, mTestPackageBinaryName);
    779         HostConfig.getInstance().loadTestPackages();
    780 
    781         ArrayList<String> packageNames = new ArrayList<String>();
    782         packageNames.add(appPackageName);
    783 
    784         HashMap<String, ArrayList<String>> results = new HashMap<String, ArrayList<String>>();
    785         ArrayList<String> list = new ArrayList<String>();
    786         list.add(excludedList);
    787         results.put(appPackageName, list);
    788         String planName = "plan_test_excluding";
    789         String planPath = HostConfig.getInstance().getPlanRepository().getPlanPath(planName);
    790         TestSessionBuilder.getInstance().serialize(planName, packageNames, results);
    791 
    792         TestSession ts = TestSessionBuilder.getInstance().build(planPath, Profile.ALL);
    793         assertEquals(1, ts.getNumOfRequiredDevices());
    794 
    795         TestSessionLog tsl = ts.getSessionLog();
    796         assertEquals(1, tsl.getTestPackages().size());
    797 
    798         TestPackage testPackage = tsl.getTestPackages().iterator().next();
    799         assertEquals(0, testPackage.getTestSuites().size());
    800         assertEquals(mTestPackageBinaryName, testPackage.getAppBinaryName());
    801         assertEquals("1.0", testPackage.getVersion());
    802         assertEquals("Android 1.0", testPackage.getAndroidVersion());
    803 
    804         assertEquals(0, testPackage.getTestSuites().size());
    805 
    806         deleteTestPackage(mTestPackageBinaryName);
    807     }
    808 
    809     /**
    810      * Test building and loading plan with excluded list of test.
    811      */
    812     public void testExcludingTest() throws IOException,
    813             ParserConfigurationException, SAXException, TestPlanNotFoundException,
    814             TestNotFoundException,
    815             TransformerFactoryConfigurationError, TransformerException, NoSuchAlgorithmException {
    816 
    817         final String appPackageName = "com.google.android.cts";
    818         final String caseName = "CtsTestHello";
    819         final String testName = "testHello";
    820         final String excludedList = "com.google.CtsTestHello#testHello2";
    821 
    822         final String descriptionConfigStr = "<TestPackage name=\"" + mTestPackageBinaryName + "\""
    823                 + " appPackageName=\"" + appPackageName + "\""
    824                 + " version=\"1.0\" AndroidFramework=\"Android 1.0\""
    825                 + " runner=\"android.test.InstrumentationTestRunner\" >\n"
    826                 + "  <Description>something extracted from java doc</Description>\n"
    827                 + "  <TestSuite name=\"com.google\">\n"
    828                 + "     <TestCase name=\"CtsTestHello\" priority=\"mandatory\">\n"
    829                 + "         <Description>" + "something extracted from java doc"
    830                 + "         </Description>\n"
    831                 + "         <!-- Test Methods -->\n"
    832                 + "         <Test name=\"testHello\"" + " type=\"automatic\"" + "/>\n"
    833                 + "         <Test name=\"testHello2\"" + " type=\"automatic\"" + "/>\n"
    834                 + "     </TestCase>\n"
    835                 + "  </TestSuite>\n"
    836                 + "</TestPackage>\n";
    837 
    838         HostConfig.getInstance().removeTestPacakges();
    839         createTestPackage(descriptionConfigStr, mTestPackageBinaryName);
    840         HostConfig.getInstance().loadTestPackages();
    841 
    842         ArrayList<String> packageNames = new ArrayList<String>();
    843         packageNames.add(appPackageName);
    844 
    845         HashMap<String, ArrayList<String>> results = new HashMap<String, ArrayList<String>>();
    846         ArrayList<String> list = new ArrayList<String>();
    847         list.add(excludedList);
    848         results.put(appPackageName, list);
    849         String planName = "plan_test_excluding";
    850         String planPath = HostConfig.getInstance().getPlanRepository().getPlanPath(planName);
    851         TestSessionBuilder.getInstance().serialize(planName, packageNames, results);
    852 
    853         TestSession ts = TestSessionBuilder.getInstance().build(planPath, Profile.ALL);
    854         assertEquals(1, ts.getNumOfRequiredDevices());
    855 
    856         TestSessionLog tsl = ts.getSessionLog();
    857         assertEquals(1, tsl.getTestPackages().size());
    858 
    859         TestPackage testPackage = tsl.getTestPackages().iterator().next();
    860         assertEquals(1, testPackage.getTestSuites().size());
    861         assertEquals(mTestPackageBinaryName, testPackage.getAppBinaryName());
    862         assertEquals("1.0", testPackage.getVersion());
    863         assertEquals("Android 1.0", testPackage.getAndroidVersion());
    864 
    865         TestSuite testSuite;
    866         testSuite = testPackage.getTestSuites().iterator().next();
    867         assertEquals(1, testSuite.getTestCases().size());
    868         assertEquals("com.google", testSuite.getFullName());
    869 
    870         assertEquals(1, testSuite.getTestCases().size());
    871 
    872         TestCase testCase = testSuite.getTestCases().iterator().next();
    873         assertEquals(caseName, testCase.getName());
    874         assertEquals("mandatory", testCase.getPriority());
    875 
    876         Test test = testCase.getTests().iterator().next();
    877         assertEquals("com.google.CtsTestHello#testHello", test.getFullName());
    878         assertEquals("automatic", test.getType());
    879         assertEquals(testName, test.getName());
    880         assertEquals(CtsTestResult.CODE_NOT_EXECUTED, test.getResult().getResultCode());
    881 
    882         deleteTestPackage(mTestPackageBinaryName);
    883     }
    884 
    885     /**
    886      * Test building and loading plan with excluded list of all of the tests.
    887      */
    888     public void testExcludingAllTests() throws IOException,
    889             ParserConfigurationException, SAXException, TestPlanNotFoundException,
    890             TestNotFoundException,
    891             TransformerFactoryConfigurationError, TransformerException, NoSuchAlgorithmException {
    892 
    893         final String appPackageName = "com.google.android.cts";
    894         final String excludedList =
    895             "com.google.CtsTestHello#testHello;com.google.CtsTestHello#testHello2;";
    896 
    897         final String descriptionConfigStr = "<TestPackage name=\"" + mTestPackageBinaryName + "\""
    898                 + " appPackageName=\"" + appPackageName + "\""
    899                 + " version=\"1.0\" AndroidFramework=\"Android 1.0\""
    900                 + " runner=\"android.test.InstrumentationTestRunner\" >\n"
    901                 + "  <Description>something extracted from java doc</Description>\n"
    902                 + "  <TestSuite name=\"com.google\">\n"
    903                 + "     <TestCase name=\"CtsTestHello\" priority=\"mandatory\">\n"
    904                 + "         <Description>" + "something extracted from java doc"
    905                 + "         </Description>\n"
    906                 + "         <!-- Test Methods -->\n"
    907                 + "         <Test name=\"testHello\"" + " type=\"automatic\"" + "/>\n"
    908                 + "         <Test name=\"testHello2\"" + " type=\"automatic\"" + "/>\n"
    909                 + "     </TestCase>\n"
    910                 + "  </TestSuite>\n"
    911                 + "</TestPackage>\n";
    912 
    913         HostConfig.getInstance().removeTestPacakges();
    914         createTestPackage(descriptionConfigStr, mTestPackageBinaryName);
    915         HostConfig.getInstance().loadTestPackages();
    916 
    917         ArrayList<String> packageNames = new ArrayList<String>();
    918         packageNames.add(appPackageName);
    919 
    920         HashMap<String, ArrayList<String>> results = new HashMap<String, ArrayList<String>>();
    921         ArrayList<String> list = new ArrayList<String>();
    922         list.add(excludedList);
    923         results.put(appPackageName, list);
    924         String planName = "plan_test_excluding";
    925         String planPath = HostConfig.getInstance().getPlanRepository().getPlanPath(planName);
    926         TestSessionBuilder.getInstance().serialize(planName, packageNames, results);
    927 
    928         TestSession ts = TestSessionBuilder.getInstance().build(planPath, Profile.ALL);
    929         assertEquals(1, ts.getNumOfRequiredDevices());
    930 
    931         TestSessionLog tsl = ts.getSessionLog();
    932         assertEquals(1, tsl.getTestPackages().size());
    933 
    934         TestPackage testPackage = tsl.getTestPackages().iterator().next();
    935         assertEquals(0, testPackage.getTestSuites().size());
    936         assertEquals(mTestPackageBinaryName, testPackage.getAppBinaryName());
    937         assertEquals("1.0", testPackage.getVersion());
    938         assertEquals("Android 1.0", testPackage.getAndroidVersion());
    939 
    940         deleteTestPackage(mTestPackageBinaryName);
    941     }
    942 
    943     /**
    944      * Test creating plan with excluded list.
    945      */
    946     public void testCreatePlanWithExcludedList() throws IOException,
    947           ParserConfigurationException, SAXException,
    948           TestPlanNotFoundException, TestNotFoundException,
    949           TransformerFactoryConfigurationError, TransformerException, NoSuchAlgorithmException{
    950 
    951         final String appPackageName = "com.google.android.cts";
    952         final String suiteName1 = appPackageName + "." + "SuiteName1";
    953         final String caseName1 = "CtsTestHello";
    954         final String testName1 = "testHello";
    955 
    956         final String caseName2 = "CtsTestHello2";
    957         final String testName2 = "testHello2";
    958         final String testName3 = "testHello3";
    959         final String suiteName2 = "com.google.android.cts.CtsTest.SuiteName2";
    960 
    961         final String descriptionConfigStr = "<TestPackage name=\""
    962               + mTestPackageBinaryName + "\""
    963               + " appPackageName=\"" + appPackageName + "\""
    964               + " version=\"1.0\" AndroidFramework=\"Android 1.0\""
    965               + " runner=\"android.test.InstrumentationTestRunner\" >\n"
    966               + " <Description>something extracted from java doc</Description>\n"
    967               + " <TestSuite name=\"" + suiteName1 + "\"" + ">\n"
    968               + "     <TestCase name=\"" + caseName1 + "\"" + " category=\"mandatory\">\n"
    969               + "         <Description>" + "something extracted from java doc"
    970               + "         </Description>\n"
    971               + "         <!-- Test Methods -->\n"
    972               + "         <Test name=\"" + testName1 + "\" type=\"automatic\"" + "/>\n"
    973               + "     </TestCase>\n"
    974               + " </TestSuite>\n"
    975               + " <TestSuite name=\"" + suiteName2 + "\"" + ">\n"
    976               + "     <TestCase name=\"" + caseName2 + "\"" + " priority=\"mandatory\">\n"
    977               + "         <Test name=\"" + testName2 +"\" type=\"automatic\" />\n"
    978               + "         <Test name=\"" + testName3 +"\" type=\"automatic\" />\n"
    979               + "     </TestCase>\n"
    980               + " </TestSuite>\n"
    981               + "</TestPackage>\n";
    982 
    983         HostConfig.getInstance().removeTestPacakges();
    984         createTestPackage(descriptionConfigStr, mTestPackageBinaryName);
    985         HostConfig.getInstance().loadTestPackages();
    986 
    987         ArrayList<String> packageNames = new ArrayList<String>();
    988         packageNames.add(appPackageName);
    989 
    990         HashMap<String, ArrayList<String>> results = new HashMap<String, ArrayList<String>>();
    991         ArrayList<String> list = new ArrayList<String>();
    992         String excludedList = suiteName1 + "." + caseName1 + TestPlan.EXCLUDE_SEPARATOR;
    993         excludedList += suiteName2 + "." + caseName2 + Test.METHOD_SEPARATOR + testName2;
    994         list.add(excludedList);
    995         results.put(appPackageName, list);
    996 
    997         String planName = "plan_test_excluding";
    998         String planPath = HostConfig.getInstance().getPlanRepository().getPlanPath(planName);
    999         TestSessionBuilder.getInstance().serialize(planName, packageNames, results);
   1000 
   1001         TestSession ts = TestSessionBuilder.getInstance().build(planPath, Profile.ALL);
   1002         assertEquals(1, ts.getNumOfRequiredDevices());
   1003 
   1004         TestSessionLog tsl = ts.getSessionLog();
   1005         assertEquals(1, tsl.getTestPackages().size());
   1006 
   1007         TestPackage testPackage = tsl.getTestPackages().iterator().next();
   1008         assertEquals(1, testPackage.getTestSuites().size());
   1009         assertEquals(mTestPackageBinaryName, testPackage.getAppBinaryName());
   1010         assertEquals("1.0", testPackage.getVersion());
   1011         assertEquals("Android 1.0", testPackage.getAndroidVersion());
   1012 
   1013         TestSuite testSuite;
   1014         testSuite = testPackage.getTestSuites().iterator().next();
   1015         assertEquals(1, testSuite.getTestCases().size());
   1016         assertEquals(suiteName2, testSuite.getFullName());
   1017 
   1018         assertEquals(1, testSuite.getTestCases().size());
   1019 
   1020         TestCase testCase = testSuite.getTestCases().iterator().next();
   1021         assertEquals(caseName2, testCase.getName());
   1022         assertEquals("mandatory", testCase.getPriority());
   1023         assertEquals(1, testCase.getTests().size());
   1024 
   1025         Test test = testCase.getTests().iterator().next();
   1026         String testName = suiteName2 + "." + caseName2 + Test.METHOD_SEPARATOR + testName3;
   1027         assertEquals(testName, test.getFullName());
   1028         assertEquals("automatic", test.getType());
   1029         assertEquals(CtsTestResult.CODE_NOT_EXECUTED, test.getResult().getResultCode());
   1030 
   1031         deleteTestPackage(mTestPackageBinaryName);
   1032     }
   1033 
   1034     /**
   1035      * Test creating plan with excluded list of nested suites.
   1036      */
   1037     public void testCreatePlanWithExcludedListForNestedSuite() throws IOException,
   1038           ParserConfigurationException, SAXException,
   1039           TestPlanNotFoundException, TestNotFoundException,
   1040           TransformerFactoryConfigurationError, TransformerException, NoSuchAlgorithmException{
   1041 
   1042         final String appPackageName = "com.google.android.cts";
   1043         final String fullName = mTestPackageBinaryName + ".CtsTest";
   1044         final String suiteName1 = fullName + "." + "SuiteName1";
   1045         final String caseName1 = "CtsTestHello";
   1046         final String testName1 = "testHello";
   1047 
   1048         final String caseName2 = "CtsTestHello2";
   1049         final String testName2 = "testHello2";
   1050         final String testName3 = "testHello3";
   1051         final String nestedSuiteName1 = "com.google";
   1052         final String nestedSuiteName2 = "android.cts.CtsTest.SuiteName2";
   1053 
   1054         final String descriptionConfigStr = "<TestPackage name=\""
   1055             + mTestPackageBinaryName + "\""
   1056             + " appPackageName=\"" + appPackageName + "\""
   1057             + " version=\"1.0\" AndroidFramework=\"Android 1.0\""
   1058               + " runner=\"android.test.InstrumentationTestRunner\" >\n"
   1059               + " <Description>something extracted from java doc</Description>\n"
   1060               + " <TestSuite name=\"" + suiteName1 + "\"" + ">\n"
   1061               + "     <TestCase name=\"" + caseName1 + "\"" + " category=\"mandatory\">\n"
   1062               + "         <Description>" + "something extracted from java doc" + "</Description>\n"
   1063               + "         <!-- Test Methods -->\n"
   1064               + "         <Test name=\"" + testName1 + "\" type=\"automatic\"" + "/>\n"
   1065               + "     </TestCase>\n"
   1066               + " </TestSuite>\n"
   1067               + " <TestSuite name=\"" + nestedSuiteName1 + "\"" + ">\n"
   1068               + "     <TestSuite name=\"" + nestedSuiteName2 + "\"" + ">\n"
   1069               + "         <TestCase name=\"" + caseName2 + "\"" + " priority=\"mandatory\">\n"
   1070               + "             <Test name=\"" + testName2 +"\" type=\"automatic\" />\n"
   1071               + "             <Test name=\"" + testName3 +"\" type=\"automatic\" />\n"
   1072               + "         </TestCase>\n"
   1073               + "     </TestSuite>\n"
   1074               + " </TestSuite>\n"
   1075               + "</TestPackage>\n";
   1076 
   1077         HostConfig.getInstance().removeTestPacakges();
   1078         createTestPackage(descriptionConfigStr, mTestPackageBinaryName);
   1079         HostConfig.getInstance().loadTestPackages();
   1080 
   1081         ArrayList<String> packageNames = new ArrayList<String>();
   1082         packageNames.add(appPackageName);
   1083 
   1084         HashMap<String, ArrayList<String>> results = new HashMap<String, ArrayList<String>>();
   1085         ArrayList<String> list = new ArrayList<String>();
   1086         String excludedList = suiteName1 + "." + caseName1 + TestPlan.EXCLUDE_SEPARATOR;
   1087         excludedList += nestedSuiteName1 + "." + nestedSuiteName2
   1088                         + "." + caseName2 + Test.METHOD_SEPARATOR + testName2;
   1089         list.add(excludedList);
   1090         results.put(appPackageName, list);
   1091 
   1092         String planName = "plan_test_excluding";
   1093         String planPath = HostConfig.getInstance().getPlanRepository().getPlanPath(planName);
   1094         TestSessionBuilder.getInstance().serialize(planName, packageNames, results);
   1095 
   1096         TestSession ts = TestSessionBuilder.getInstance().build(planPath, Profile.ALL);
   1097         assertEquals(1, ts.getNumOfRequiredDevices());
   1098 
   1099         TestSessionLog tsl = ts.getSessionLog();
   1100         assertEquals(1, tsl.getTestPackages().size());
   1101 
   1102         TestPackage testPackage = tsl.getTestPackages().iterator().next();
   1103         assertEquals(1, testPackage.getTestSuites().size());
   1104         assertEquals(mTestPackageBinaryName, testPackage.getAppBinaryName());
   1105         assertEquals("1.0", testPackage.getVersion());
   1106         assertEquals("Android 1.0", testPackage.getAndroidVersion());
   1107 
   1108         TestSuite testSuite;
   1109         testSuite = testPackage.getTestSuites().iterator().next();
   1110         assertEquals(0, testSuite.getTestCases().size());
   1111         assertEquals(nestedSuiteName1, testSuite.getFullName());
   1112 
   1113         assertEquals(1, testSuite.getSubSuites().size());
   1114         TestSuite testSubSuite = testSuite.getSubSuites().iterator().next();
   1115         assertEquals(1, testSubSuite.getTestCases().size());
   1116         String suiteName = nestedSuiteName1 + "." + nestedSuiteName2;
   1117         assertEquals(suiteName, testSubSuite.getFullName());
   1118 
   1119         assertEquals(1, testSubSuite.getTestCases().size());
   1120 
   1121         TestCase testCase = testSubSuite.getTestCases().iterator().next();
   1122         assertEquals(caseName2, testCase.getName());
   1123         assertEquals("mandatory", testCase.getPriority());
   1124         assertEquals(1, testCase.getTests().size());
   1125 
   1126         Test test = testCase.getTests().iterator().next();
   1127         String testName = nestedSuiteName1 + "." + nestedSuiteName2 + "." +caseName2
   1128                           + Test.METHOD_SEPARATOR + testName3;
   1129         assertEquals(testName, test.getFullName());
   1130         assertEquals("automatic", test.getType());
   1131         assertEquals(CtsTestResult.CODE_NOT_EXECUTED, test.getResult().getResultCode());
   1132 
   1133         deleteTestPackage(mTestPackageBinaryName);
   1134     }
   1135 
   1136     /**
   1137      * Test building plan of protocol type.
   1138      */
   1139     public void testBuildProtocolPlan() throws IOException,
   1140             ParserConfigurationException, SAXException, TestPlanNotFoundException,
   1141             TestNotFoundException, NoSuchAlgorithmException {
   1142 
   1143         final String appPackageName = "com.google.android.cts";
   1144 
   1145         final String testPlanConfigStr = "<TestPlan version=\"1.0\">\n"
   1146                 + "\t<Description>Demo test plan</Description>\n"
   1147                 + "\t\t<PlanSettings>\n"
   1148                 + "\t\t\t<RequiredDevice amount=\"" + 2 + "\"" + "/>\n"
   1149                 + "\t\t</PlanSettings>\n"
   1150                 + "\t<Entry uri=\""
   1151                 + appPackageName
   1152                 + "\"/>\n"
   1153                 + "</TestPlan>";
   1154 
   1155         final String descriptionConfigStr = "<TestPackage name=\"" + mTestPackageBinaryName +"\" "
   1156                 + " appPackageName=\"" + appPackageName + "\""
   1157                 + " version=\"1.0\" AndroidFramework=\"Android 1.0\""
   1158                 + " runner=\"android.test.InstrumentationTestRunner\" >\n"
   1159                 + " <Description>something extracted from java doc</Description>\n"
   1160                 + " <TestSuite name=\"com.google.android.cts\"" + ">\n"
   1161                 + "     <TestCase name=\"CtsTestHello\"" + " priority=\"mandatory\">\n"
   1162                 + "         <Description>" + "something extracted from java doc"
   1163                 + "         </Description>\n"
   1164                 + "         <Test name=\"testHello\"" + " type=\"automatic\"" + "/>\n"
   1165                 + "     </TestCase>\n"
   1166                 + " </TestSuite>\n"
   1167                 + "</TestPackage>\n";
   1168 
   1169         HostConfig.getInstance().removeTestPacakges();
   1170         String planPath = HostConfig.getInstance().getPlanRepository()
   1171                 .getPlanPath(mTmpPlanFileName);
   1172         createFile(testPlanConfigStr, planPath);
   1173 
   1174         createTestPackage(descriptionConfigStr, mTestPackageBinaryName);
   1175         HostConfig.getInstance().loadTestPackages();
   1176 
   1177         TestSession ts = TestSessionBuilder.getInstance().build(planPath, Profile.ALL);
   1178         assertEquals(2, ts.getNumOfRequiredDevices());
   1179 
   1180         TestSessionLog tsl = ts.getSessionLog();
   1181         assertEquals(1, tsl.getTestPackages().size());
   1182 
   1183         TestPackage testPackage = tsl.getTestPackages().iterator().next();
   1184         assertEquals(1, testPackage.getTestSuites().size());
   1185         assertEquals(mTestPackageBinaryName, testPackage.getAppBinaryName());
   1186         assertEquals("1.0", testPackage.getVersion());
   1187         assertEquals("Android 1.0", testPackage.getAndroidVersion());
   1188 
   1189         TestSuite testSuite = testPackage.getTestSuites().iterator().next();
   1190         assertEquals(1, testSuite.getTestCases().size());
   1191         assertEquals("com.google.android.cts", testSuite.getFullName());
   1192 
   1193         TestCase testCase = testSuite.getTestCases().iterator().next();
   1194         Test test = testCase.getTests().iterator().next();
   1195         assertEquals("testHello", test.getName());
   1196         assertEquals("automatic", test.getType());
   1197         assertEquals(CtsTestResult.CODE_NOT_EXECUTED, test.getResult().getResultCode());
   1198 
   1199         deleteTestPackage(mTestPackageBinaryName);
   1200     }
   1201 
   1202     /**
   1203      * Test serializing the test plan.
   1204      */
   1205     public void testSerialize() throws Exception {
   1206         final String srcStr = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n"
   1207             + "<TestPlan version=\"1.0\">\n"
   1208             + "<PlanSettings/>\n"
   1209             + "<Entry uri=\"com.google.android.cts.CtsTest\"/>\n"
   1210             + "</TestPlan>";
   1211 
   1212         final String package1 = "com.google.android.cts.CtsTest";
   1213         ArrayList<String> packageNames = new ArrayList<String>();
   1214         packageNames.add(package1);
   1215         HashMap<String, ArrayList<String>> selectedResult =
   1216                       new HashMap<String, ArrayList<String>>();
   1217         selectedResult.put(package1, null);
   1218 
   1219         HostConfig.getInstance().removeTestPacakges();
   1220         String planName = "plan_test";
   1221         String planPath = HostConfig.getInstance().getPlanRepository().getPlanPath(planName);
   1222         TestSessionBuilder.getInstance().serialize(planName, packageNames, selectedResult);
   1223 
   1224         File file = new File(planPath);
   1225         assertTrue(file.exists());
   1226         assertTrue(file.isFile());
   1227 
   1228         FileReader dstInput = new FileReader(file);
   1229         BufferedReader dstBufReader = new BufferedReader(dstInput);
   1230 
   1231         char[] resChars = new char[1024];
   1232         dstBufReader.read(resChars);
   1233         assertEquals(srcStr, new String(resChars).trim());
   1234 
   1235         dstBufReader.close();
   1236         deleteFile(planPath);
   1237 
   1238     }
   1239 
   1240     /**
   1241      * Test loading plan with sub suites.
   1242      */
   1243     public void testLoadPlanWithSubSuite() throws IOException,
   1244             ParserConfigurationException, SAXException, TestPlanNotFoundException,
   1245             TestNotFoundException,
   1246             TransformerFactoryConfigurationError, TransformerException, NoSuchAlgorithmException {
   1247 
   1248         final String appPackageName = "com.google.android.cts";
   1249         final String fullName = mTestPackageBinaryName + ".CtsTest";
   1250         final String caseName = "CtsTestHello";
   1251         final String testName = "testHello";
   1252 
   1253         final String descriptionConfigStr = "<TestPackage name=\"" + mTestPackageBinaryName + "\""
   1254                 + " appPackageName=\"" + appPackageName + "\""
   1255                 + " version=\"1.0\" AndroidFramework=\"Android 1.0\""
   1256                 + " runner=\"android.test.InstrumentationTestRunner\" >\n"
   1257                 + "  <Description>something extracted from java doc</Description>\n"
   1258                 + "  <TestSuite name=\"com.google\">\n"
   1259                 + "     <TestCase name=\"CtsTestHello\" priority=\"mandatory\">\n"
   1260                 + "         <Description>" + "something extracted from java doc"
   1261                 + "         </Description>\n"
   1262                 + "         <!-- Test Methods -->\n"
   1263                 + "         <Test name=\"testHello\"" + " type=\"automatic\"" + "/>\n"
   1264                 + "     </TestCase>\n"
   1265                 + "     <TestSuite name=\"TestSuiteName\">\n"
   1266                 + "         <TestCase name=\"TestCaseName\" priority=\"mandatory\">\n"
   1267                 + "             <Description>" + "something extracted from java doc"
   1268                 + "             </Description>\n"
   1269                 + "             <!-- Test Methods -->\n"
   1270                 + "             <Test name=\"testName1\"" + " type=\"automatic\"" + "/>\n"
   1271                 + "         </TestCase>\n"
   1272                 + "     </TestSuite>\n"
   1273                 + "  </TestSuite>\n"
   1274                 + "</TestPackage>\n";
   1275 
   1276         HostConfig.getInstance().removeTestPacakges();
   1277         createTestPackage(descriptionConfigStr, mTestPackageBinaryName);
   1278         HostConfig.getInstance().loadTestPackages();
   1279 
   1280         ArrayList<String> packageNames = new ArrayList<String>();
   1281         packageNames.add(appPackageName);
   1282 
   1283         HashMap<String, ArrayList<String>> results = new HashMap<String, ArrayList<String>>();
   1284         results.put(appPackageName, null);
   1285         String planName = "plan_test_excluding";
   1286         String planPath = HostConfig.getInstance().getPlanRepository().getPlanPath(planName);
   1287         TestSessionBuilder.getInstance().serialize(planName, packageNames, results);
   1288 
   1289         TestSession ts = TestSessionBuilder.getInstance().build(planPath, Profile.ALL);
   1290         assertEquals(1, ts.getNumOfRequiredDevices());
   1291 
   1292         ts.getSessionLog().setStartTime(System.currentTimeMillis());
   1293         TestSessionLog tsl = ts.getSessionLog();
   1294         tsl.createResultDoc();
   1295         assertEquals(1, tsl.getTestPackages().size());
   1296 
   1297         TestPackage testPackage = tsl.getTestPackages().iterator().next();
   1298         assertEquals(1, testPackage.getTestSuites().size());
   1299         assertEquals(mTestPackageBinaryName, testPackage.getAppBinaryName());
   1300         assertEquals("1.0", testPackage.getVersion());
   1301         assertEquals("Android 1.0", testPackage.getAndroidVersion());
   1302 
   1303         TestSuite testSuite;
   1304         testSuite = testPackage.getTestSuites().iterator().next();
   1305         assertEquals(1, testSuite.getSubSuites().size());
   1306         assertEquals(1, testSuite.getTestCases().size());
   1307         assertEquals("com.google", testSuite.getFullName());
   1308 
   1309         TestCase testCase = testSuite.getTestCases().iterator().next();
   1310         assertEquals(caseName, testCase.getName());
   1311         assertEquals("mandatory", testCase.getPriority());
   1312 
   1313         Test test = testCase.getTests().iterator().next();
   1314         assertEquals("com.google.CtsTestHello#testHello", test.getFullName());
   1315         assertEquals("automatic", test.getType());
   1316         assertEquals(testName, test.getName());
   1317         assertEquals(CtsTestResult.CODE_NOT_EXECUTED, test.getResult().getResultCode());
   1318 
   1319         TestSuite subTestSuite;
   1320         subTestSuite = testSuite.getSubSuites().iterator().next();
   1321         assertEquals(1, subTestSuite.getTestCases().size());
   1322         assertEquals("com.google.TestSuiteName", subTestSuite.getFullName());
   1323         assertEquals("TestSuiteName", subTestSuite.getName());
   1324 
   1325         testCase = subTestSuite.getTestCases().iterator().next();
   1326         assertEquals("TestCaseName", testCase.getName());
   1327         assertEquals("mandatory", testCase.getPriority());
   1328 
   1329         test = testCase.getTests().iterator().next();
   1330         assertEquals("com.google.TestSuiteName.TestCaseName#testName1", test.getFullName());
   1331         assertEquals("automatic", test.getType());
   1332         assertEquals("testName1", test.getName());
   1333         assertEquals(CtsTestResult.CODE_NOT_EXECUTED, test.getResult().getResultCode());
   1334 
   1335         deleteTestPackage(mTestPackageBinaryName);
   1336     }
   1337 
   1338     /**
   1339      * Test validating test controller.
   1340      */
   1341     public void testValidateTestController() {
   1342         String jarPath = "test.jar";
   1343         String packageName = "com.android.tests";
   1344         String className = "ConsoleTests";
   1345         String methodName = "testMethod";
   1346 
   1347         TestController controller = new TestController(null, null, null, null);
   1348         assertFalse(controller.isValid());
   1349 
   1350         controller = new TestController(jarPath, null, null, null);
   1351         assertFalse(controller.isValid());
   1352 
   1353         controller = new TestController(null, packageName, null, null);
   1354         assertFalse(controller.isValid());
   1355 
   1356         controller = new TestController(null, null, className, null);
   1357         assertFalse(controller.isValid());
   1358 
   1359         controller = new TestController(null, null, null, methodName);
   1360         assertFalse(controller.isValid());
   1361 
   1362         controller = new TestController("", "", "", "");
   1363         assertFalse(controller.isValid());
   1364 
   1365         controller = new TestController("", packageName, className, methodName);
   1366         assertFalse(controller.isValid());
   1367 
   1368         controller = new TestController(jarPath, "", className, methodName);
   1369         assertFalse(controller.isValid());
   1370 
   1371         controller = new TestController(jarPath, packageName, "", methodName);
   1372         assertFalse(controller.isValid());
   1373 
   1374         controller = new TestController(jarPath, packageName, className, "");
   1375         assertFalse(controller.isValid());
   1376 
   1377         controller = new TestController(jarPath, packageName, className, methodName);
   1378         assertTrue(controller.isValid());
   1379     }
   1380 
   1381     /**
   1382      * Test loading plan with test controller.
   1383      */
   1384     public void testLoadPlanWithTestController() throws IOException,
   1385             ParserConfigurationException, SAXException,
   1386             TestPlanNotFoundException, TestNotFoundException,
   1387             TransformerFactoryConfigurationError,
   1388             TransformerException, NoSuchAlgorithmException {
   1389 
   1390         final String appPackageName = "com.google.android.cts";
   1391         final String jarPath = "test.jar";
   1392         final String controllerPackageName = "com.android.tests";
   1393         final String className = "ConsoleTests";
   1394         final String methodName = "testMethod";
   1395         final String description = controllerPackageName + "." + className
   1396                 + Test.METHOD_SEPARATOR + methodName;
   1397 
   1398         final String descriptionConfigStr = "<TestPackage name=\""
   1399                 + mTestPackageBinaryName + "\" "
   1400                 + " appPackageName=\"" + appPackageName + "\""
   1401                 + " version=\"1.0\" AndroidFramework=\"Android 1.0\""
   1402                 + " runner=\"android.test.InstrumentationTestRunner\" jarPath=\"" + jarPath
   1403                 + "\">\n"
   1404                 + "  <Description>something extracted from java doc</Description>\n"
   1405                 + "  <TestSuite name=\"com.google\">\n"
   1406                 + "     <TestCase name=\"TestCaseName\" priority=\"mandatory\">\n"
   1407                 + "         <Description>"
   1408                 + "something extracted from java doc" + "</Description>\n"
   1409                 + "         <!-- Test Methods -->\n"
   1410                 + "         <Test name=\"testName1\""
   1411                 + " type=\"automatic\"" + " HostController=\""
   1412                 + description + "\"" + "/>\n" + "     </TestCase>\n"
   1413                 + "  </TestSuite>\n" + "</TestPackage>\n";
   1414 
   1415         createTestPackage(descriptionConfigStr, mTestPackageBinaryName);
   1416         HostConfig.getInstance().loadTestPackages();
   1417 
   1418         ArrayList<String> packageNames = new ArrayList<String>();
   1419         packageNames.add(appPackageName);
   1420 
   1421         HashMap<String, ArrayList<String>> results = new HashMap<String, ArrayList<String>>();
   1422         results.put(appPackageName, null);
   1423 
   1424         String planName = "plan_test";
   1425         String planPath = HostConfig.getInstance().getPlanRepository().getPlanPath(planName);
   1426         TestSessionBuilder.getInstance().serialize(planName, packageNames, results);
   1427 
   1428         TestSession ts = TestSessionBuilder.getInstance().build(planPath, Profile.ALL);
   1429         ts.getSessionLog().setStartTime(System.currentTimeMillis());
   1430         TestSessionLog tsl = ts.getSessionLog();
   1431         TestPackage testPackage = tsl.getTestPackages().iterator().next();
   1432 
   1433         assertEquals(jarPath, testPackage.getJarPath());
   1434 
   1435         TestSuite testSuite;
   1436         testSuite = testPackage.getTestSuites().iterator().next();
   1437         TestCase testCase = testSuite.getTestCases().iterator().next();
   1438         Test test = testCase.getTests().iterator().next();
   1439         assertEquals(controllerPackageName, test.getTestController().getPackageName());
   1440         assertEquals(className, test.getTestController().getClassName());
   1441         assertEquals(methodName, test.getTestController().getMethodName());
   1442 
   1443         deleteTestPackage(mTestPackageBinaryName);
   1444     }
   1445 }
   1446