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