<!--

    Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.

    This program and the accompanying materials are made available under the
    terms of the Eclipse Public License v. 2.0, which is available at
    http://www.eclipse.org/legal/epl-2.0.

    This Source Code may also be made available under the following Secondary
    Licenses when the conditions for such availability set forth in the
    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
    version 2 with the GNU Classpath Exception, which is available at
    https://www.gnu.org/software/classpath/license.html.

    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0

-->

<testsuite>
  <id> rmiiiop testID </id>
<name>rmiiiop</name>
<description><![CDATA[To test registration, resolution and remote invocation on a rmiiiop server]]></description>
<tests>
<test>
<id>rmiiiop testID</id>
<name>rmiiiop</name>
<testcases>
<testcase>
<id> testID</id>
<name> test</name>
<status value="pass"></status>
</testcase>
</testcases>
</test>
</tests>
</testsuite>
<testsuite>
  <id> Connector:cci Connector resource adapter Test status:ID </id>
<name>Connector:cci</name>
<description><![CDATA[Testing of Connector resource adapter, CCI]]></description>
<tests>
<test>
<id>Connector:cci Connector resource adapter Test status:ID</id>
<name>Connector:cci</name>
<testcases>
<testcase>
<id> Connector resource adapter Test status:ID</id>
<name> Connector resource adapter Test status:</name>
<status value="pass"></status>
</testcase>
</testcases>
</test>
</tests>
</testsuite>
<testsuite>
  <id> converter mainID </id>
<name>converter</name>
<description><![CDATA[This is to test the converter sample.]]></description>
<tests>
<test>
<id>converter mainID</id>
<name>converter</name>
<testcases>
<testcase>
<id> mainID</id>
<name> main</name>
<status value="pass"></status>
</testcase>
</testcases>
</test>
</tests>
</testsuite>
<testsuite>
  <id> enroller bmpID </id>
<name>enroller</name>
<description><![CDATA[Testing bmp enroller app.]]></description>
<tests>
<test>
<id>enroller bmpID</id>
<name>enroller</name>
<testcases>
<testcase>
<id> bmpID</id>
<name> bmp</name>
<status value="pass"></status>
</testcase>
</testcases>
</test>
</tests>
</testsuite>
<testsuite>
  <id> cmp roster:insertInfoID </id>
<name>cmp</name>
<description><![CDATA[Testing cmp roster app.]]></description>
<tests>
<test>
<id>cmp roster:insertInfoID</id>
<name>cmp</name>
<testcases>
<testcase>
<id> roster:insertInfoID</id>
<name> roster:insertInfo</name>
<status value="pass"></status>
</testcase>
<testcase>
<id> roster:getMoreInfoID</id>
<name> roster:getMoreInfo</name>
<status value="pass"></status>
</testcase>
<testcase>
<id> roster:getSomeInfoID</id>
<name> roster:getSomeInfo</name>
<status value="pass"></status>
</testcase>
</testcases>
</test>
</tests>
</testsuite>
<testsuite>
  <id> simple mdb mainID </id>
<name>simple</name>
<description><![CDATA[This is to test simple message driven bean sample.]]></description>
<tests>
<test>
<id>simple mdb mainID</id>
<name>simple</name>
<testcases>
<testcase>
<id> mdb mainID</id>
<name> mdb main</name>
<status value="pass"></status>
</testcase>
</testcases>
</test>
</tests>
</testsuite>
<testsuite>
  <id> HTMLReader TestID </id>
<name>HTMLReader</name>
<description><![CDATA[Testing HTMLReader]]></description>
<tests>
<test>
<id>HTMLReader TestID</id>
<name>HTMLReader</name>
<testcases>
<testcase>
<id> TestID</id>
<name> Test</name>
<status value="pass"></status>
</testcase>
</testcases>
</test>
</tests>
</testsuite>
<testsuite>
  <id> WEBCLIENT </id>
<name>J2EE Web Client</name>
<description><![CDATA[This test suite integrates web and ejb]]></description>
<tests>
<test>
<id>/subclassing/index.html</id>
<testcases>
<testcase>
<id> /subclassing/index.html</id>
<status value="pass"></status>
</testcase>
</testcases>
</test>
<test>
<id>/subclassing/servlet/SimpleBankServlet</id>
<testcases>
<testcase>
<id> /subclassing/servlet/SimpleBankServlet</id>
<status value="pass"></status>
</testcase>
</testcases>
</test>
<test>
<id>/subclassing/servlet/SimpleBankServlet</id>
<testcases>
<testcase>
<id> /subclassing/servlet/SimpleBankServlet</id>
<status value="pass"></status>
</testcase>
</testcases>
</test>
</tests>
</testsuite>
