<?xml version="1.0" encoding="UTF-8"?>
<!--
/*   Copyright 2004 The Apache Software Foundation
 *
 *   Licensed under the Apache License, Version 2.0 (the "License");
 *   you may not use this file except in compliance with the License.
 *   You may obtain a copy of the License at
 *
 *       http://www.apache.org/licenses/LICENSE-2.0
 *
 *   Unless required by applicable law or agreed to in writing, software
 *   distributed under the License is distributed on an "AS IS" BASIS,
 *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *   See the License for the specific language governing permissions and
 *  limitations under the License.
 */
 -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
    <xs:complexType name="environmentType">
        <xs:sequence>
            <xs:element name="env-attribute" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:attribute name="name" type="xs:string" use="required"/>
                    <xs:attribute name="value" type="xs:string" use="required"/>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
        <xs:attribute name="hosttype" type="xs:string"/>
        <xs:attribute name="primary" default="TRUE">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="TRUE"/>
                    <xs:enumeration value="FALSE"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:element name="test-result-container">
        <xs:complexType>
            <xs:sequence maxOccurs="unbounded">
                <xs:element name="test-result" type="test-result-type"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="test-log">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="environment" type="environmentType" minOccurs="0"/>
                <xs:element name="header-info">
                    <xs:complexType>
                        <xs:attribute name="checksum" type="xs:string"/>
                        <xs:attribute name="resultcount" type="xs:string"/>
                        <xs:attribute name="execaccount" type="xs:string" use="required"/>
                        <xs:attribute name="execdate" type="xs:string" use="required"/>
                        <xs:attribute name="harnesstype" type="xs:string" use="required"/>
                        <xs:attribute name="testruntype" type="xs:string"/>
                    </xs:complexType>
                </xs:element>
                <xs:element name="harness-info" minOccurs="0">
                    <xs:complexType>
                        <xs:attribute name="processconfig" type="xs:string"/>
                    </xs:complexType>
                </xs:element>
                <xs:element name="test-result" type="test-result-type" maxOccurs="unbounded"/>
            </xs:sequence>
            <xs:attribute name="runid" type="xs:string" use="required"/>
            <xs:attribute name="testtype" use="required">
                <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                        <xs:enumeration value="AUTOMATED"/>
                        <xs:enumeration value="MANUAL"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:attribute>
            <xs:attribute name="release" type="xs:string" use="required"/>
            <xs:attribute name="branch" type="xs:string"/>
            <xs:attribute name="hostname" type="xs:string"/>
        </xs:complexType>
    </xs:element>
    <xs:complexType name="test-result-type">
        <xs:sequence>
            <xs:element name="test-case">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="description" type="xs:string" minOccurs="0"/>
                    </xs:sequence>
                    <xs:attribute name="testcasename" type="xs:string" use="required"/>
                    <xs:attribute name="testunit" type="xs:string"/>
                    <xs:attribute name="testpath" type="xs:string"/>
                    <xs:attribute name="testowner" type="xs:string"/>
                </xs:complexType>
            </xs:element>
            <xs:element name="environment" type="environmentType" minOccurs="0" maxOccurs="unbounded"/>
            <xs:element name="test-parameters" type="xs:string" minOccurs="0"/>
            <xs:element name="execution-output" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="output-details" type="xs:string" minOccurs="0"/>
                    </xs:sequence>
                    <xs:attribute name="errorname" type="xs:string"/>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
        <xs:attribute name="exectime" type="xs:string" use="required"/>
        <xs:attribute name="duration" type="xs:string"/>
        <xs:attribute name="result" use="required">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="TIMEOUT"/>
                    <xs:enumeration value="ABORT"/>
                    <xs:enumeration value="FRAMEABORT"/>
                    <xs:enumeration value="SKIP"/>
                    <xs:enumeration value="FAILURE"/>
                    <xs:enumeration value="SUCCESS"/>
                    <xs:enumeration value="TEST_NOT_FOUND"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="isdone" default="TRUE">
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="TRUE"/>
                    <xs:enumeration value="FALSE"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="logicalname" type="xs:string"/>
    </xs:complexType>
</xs:schema>
