Author: jsong
Date: Thu Aug  5 11:50:20 2004
New Revision: 35751

Added:
   incubator/beehive/trunk/controls/test/common/
   incubator/beehive/trunk/controls/test/common/path.properties
   incubator/beehive/trunk/controls/test/infra/
   incubator/beehive/trunk/controls/test/infra/milton/
   incubator/beehive/trunk/controls/test/infra/milton/milton.jar   (contents, 
props changed)
   incubator/beehive/trunk/controls/test/infra/tch/
   incubator/beehive/trunk/controls/test/infra/tch/build.xml
   incubator/beehive/trunk/controls/test/infra/tch/messages/
   incubator/beehive/trunk/controls/test/infra/tch/messages/end.txt
   incubator/beehive/trunk/controls/test/infra/tch/messages/start.txt
   incubator/beehive/trunk/controls/test/infra/tch/schema/
   incubator/beehive/trunk/controls/test/infra/tch/schema/config.xsd
   incubator/beehive/trunk/controls/test/infra/tch/schema/everything-suite.xsd
   incubator/beehive/trunk/controls/test/infra/tch/setenv.sh
   incubator/beehive/trunk/controls/test/infra/tch/tch
   incubator/beehive/trunk/controls/test/infra/tch/tch-base-process-config.xml
   incubator/beehive/trunk/controls/test/infra/tch/tch-dd
   incubator/beehive/trunk/controls/test/infra/tch/tch-error-messages.xml
   incubator/beehive/trunk/controls/test/infra/tch/tch-logger-conf.xml
   incubator/beehive/trunk/controls/test/infra/tch/tch-props.xml
   incubator/beehive/trunk/controls/test/infra/tch/tch-root-template.xml
   incubator/beehive/trunk/controls/test/infra/tch/tch-root.xml
   incubator/beehive/trunk/controls/test/infra/tch/tch-update-conf.xml
   incubator/beehive/trunk/controls/test/infra/tch/tch.cmd
   incubator/beehive/trunk/controls/test/infra/tch/tch.sh
   incubator/beehive/trunk/controls/test/infra/tch/tchcmd.cmd
   incubator/beehive/trunk/controls/test/infra/tch/tchx.jar   (contents, props 
changed)
Modified:
   incubator/beehive/trunk/controls/test/build.xml
   
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/context/test.xml
   
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/contextevent/test.xml
   
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/event/test.xml
   
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/extension/test.xml
   
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/instantiate/test.xml
   
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/property/test.xml
   
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/root.xml
Log:
Add compiled artifacts of tch and milton into controls/test/infra, update 
test.xml for controls tests.
Update controls/test/build.xml and switch running tests using tch.


Modified: incubator/beehive/trunk/controls/test/build.xml
==============================================================================
--- incubator/beehive/trunk/controls/test/build.xml     (original)
+++ incubator/beehive/trunk/controls/test/build.xml     Thu Aug  5 11:50:20 2004
@@ -4,6 +4,7 @@
 
     <property environment="os"/>
     <property file="${os.BEEHIVE_HOME}/beehive.properties"/>
+    <property file="common/path.properties"/>
 
     <property name="dev.root" value="${os.DEV_ROOT}"/>
 
@@ -30,6 +31,29 @@
        <os family="unix" />
     </condition>
 
+
+    <path id="tch.run.classpath">
+       <pathelement location="${tch.jar}"/>
+       <pathelement location="${milton.jar}"/>
+        <pathelement location="${ant.jar}"/>
+        <pathelement path="${os.ANT_HOME}/lib/ant-launcher.jar"/>
+       
+        <pathelement location="${junit.jar}"/>
+        <pathelement location="${tools.jar}"/>
+        <pathelement location="${velocity14.jar}"/>
+        <pathelement location="${velocitydep14.jar}"/>
+        <pathelement location="${servlet24.jar}"/>
+        <pathelement location="../build/jars/controls.jar"/>
+        <pathelement path="${build.beans}"/>
+       
+        <pathelement path="${build.tests.driver}"/>
+       <pathelement location="${build.tests}" />
+
+       <pathelement location="${jakarta.jar}"/>
+       <pathelement location="${xerces.jar}"/>
+    </path>
+
+    
     <!-- =================================================================== 
-->
     <!-- Usage - print the usage -->
     <!-- ==================================================================== 
-->
@@ -145,27 +169,37 @@
     <!-- =============================================== -->
 
     <property name="junit.src.dir" value="${basedir}/src/units"/>
-    <property name="peanut.home" location="tools/peanut"/>
   
-      
+    <taskdef name="tch"
+             classname="org.apache.beehive.test.tools.tch.TchVMTask"
+             classpathref="tch.run.classpath"/>
 
-    
-    <!-- TODO: relative pathname (should be based on ${beehive.home}, or 
${tools.home, or something similar -->
-    <property name="peanut.jar" location="${peanut.home}/peanut.jar"/>
-  
-    
-    <taskdef name="peanut"
-           classname="org.apache.beehive.peanut.PeanutTask"
-           classpath="${peanut.jar}"/>
-    
-    
+    <echo message="milton.jar: ${milton.jar}"/>
     
     <target name="run">
         <property name="test-suite" value="${junit.src.dir}/root.xml"/>
-       <peanut peanutHome="${peanut.home}" testfile="${test-suite}" 
fork="true">  
+
+
+       <tch tchHome="${tch.home}"
+            testfile="${test-suite}"
+            fork="true"
+            classpathref="tch.run.classpath"
+            failureproperty="run.failed">
+
+
+
+        <arg value="-emacs"/>
+       <property name="tch.replication.entry-point" value="ant -f 
${controls.test.dir}/build.xml run"/>
+
+
+            
+       </tch>
+
+       
+        <!--
+       <peanut peanutHome="${peanut.home}" testfile="${test-suite}" 
fork="true">  
 
         <classpath>
-          <!--pathelement path="${os.ANT_CLASSPATH}"/-->
           <pathelement path="${ant.jar}"/>
           <pathelement path="${os.ANT_HOME}/lib/ant-launcher.jar"/>
           <pathelement path="${tools.jar}"/>
@@ -182,5 +216,6 @@
         </classpath>
        
       </peanut>
+        -->
     </target>  
 </project>

Added: incubator/beehive/trunk/controls/test/common/path.properties
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/controls/test/common/path.properties        Thu Aug 
 5 11:50:20 2004
@@ -0,0 +1,22 @@
+#need to do <property environment="os"/> before loading this property file
+
+
+#directories
+beehive.home=${os.BEEHIVE_HOME}
+controls.dir=${beehive.home}/controls
+controls.test.dir=${controls.dir}/test
+controls.test.infra.dir=${controls.test.dir}/infra
+
+external.dir=${beehive.home}/external
+
+
+#locations of built tools
+tch.home=${controls.test.infra.dir}/tch
+tch.jar=${tch.home}/tchx.jar
+
+milton.jar=${controls.test.infra.dir}/milton/milton.jar
+
+crimson.jar=${external.dir}/crimson/crimson-1.1.jar
+jakarta.jar=${external.dir}/jakarta/jakarta-regexp-1.2.jar
+jaxp.jar=${external.dir}/jaxp/jaxp.jar
+xerces.jar=${external.dir}/xerces/xerces-1.4.4.jar

Added: incubator/beehive/trunk/controls/test/infra/milton/milton.jar
==============================================================================
Binary file. No diff available.

Added: incubator/beehive/trunk/controls/test/infra/tch/build.xml
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/controls/test/infra/tch/build.xml   Thu Aug  5 
11:50:20 2004
@@ -0,0 +1,42 @@
+<project name="tch-project" default="usage">
+  <taskdef name="tch" classname="org.apache.beehive.test.tools.tch.TchVMTask"/>
+  <property name="tch.verbose" value="false"/>
+  <property name="test-suite" value="test/regression.xml"/>
+  <property file="../buildenv.properties"/>
+  
+  <property name="tch.home" value="${basedir}"/>
+  <target name="usage" depends="version">
+    <loadfile property="helpfile" srcfile="help/helpfile"/>
+    <echo message="${helpfile}"/>
+  </target>
+
+  <target name="version">
+    <java classname="org.apache.beehive.test.tools.tch.core.version"/>
+  </target>    
+
+  <target name="run" depends="set-java-opts">
+    <tch 
+      testfile="${test-suite}"
+      tchHome="${tch.home}"
+      failOnError="true"
+      verbose="${tch.verbose}"
+    >
+      <arg value="-emacs"/>
+    </tch>
+  </target>
+
+  <target name="set-java-opts">
+     <condition property="javaopts" value="">
+       <not>
+         <isset property="javaopts"/>
+       </not>
+     </condition>    
+     <condition property="tch.javaopts" value="">
+       <not>
+         <isset property="tch.javaopts"/>
+       </not>
+     </condition>    
+  </target>
+
+</project>
+

Added: incubator/beehive/trunk/controls/test/infra/tch/messages/end.txt
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/controls/test/infra/tch/messages/end.txt    Thu Aug 
 5 11:50:20 2004
@@ -0,0 +1,21 @@
+
+
+
+
+*****************************************************************
+*****************************************************************
+**                                                             **
+**                                                             **
+**                                                             **
+**                TCH TEST RUN HAS COMPLETED.                  **
+**                                                             **
+**        (please see log files to view results in detail,     **
+**               e.g. tch.debug, tch.log)                      **
+**                                                             **
+**                                                             **
+**                                                             **
+*****************************************************************
+*****************************************************************
+
+
+

Added: incubator/beehive/trunk/controls/test/infra/tch/messages/start.txt
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/controls/test/infra/tch/messages/start.txt  Thu Aug 
 5 11:50:20 2004
@@ -0,0 +1,20 @@
+
+
+
+
+*****************************************************************
+*****************************************************************
+**                                                             **
+**                                                             **
+**                                                             **
+**                 TCH TEST RUN HAS BEGUN.                     **
+**                                                             **
+**          INITIALIZATION AND VALIDATION COMMENCING ...       **
+**                                                             **
+**                                                             **
+**                                                             **
+*****************************************************************
+*****************************************************************
+
+
+

Added: incubator/beehive/trunk/controls/test/infra/tch/schema/config.xsd
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/controls/test/infra/tch/schema/config.xsd   Thu Aug 
 5 11:50:20 2004
@@ -0,0 +1,336 @@
+<xs:schema elementFormDefault="qualified" 
xmlns:xs="http://www.w3.org/2001/XMLSchema";>
+  <xs:element name="config-root">
+    <xs:complexType>
+      <xs:all>
+        <xs:element
+          maxOccurs="1"
+          minOccurs="0"
+          name="environment-config"
+          type="environment-configType"
+        />
+        <xs:element
+          maxOccurs="1"
+          minOccurs="0"
+          name="machine-config"
+          type="machine-configType"
+        />
+        <xs:element
+          maxOccurs="1"
+          minOccurs="0"
+          name="process-config"
+          type="process-configType"
+        />
+      </xs:all>
+    </xs:complexType>
+  </xs:element>
+
+  <!-- FIXME: the attribute values here should be checked as existant. Easier 
to do this programatically -->
+  <xs:complexType name="configured-process-typeType">
+    <xs:attribute
+      name="name"
+      type="xs:string"
+      use="required"
+    />
+    <xs:attribute
+      name="process-type"
+      type="xs:string"
+      use="required"
+    />
+    <xs:attribute
+      name="env"
+      type="xs:string"
+      use="required"
+    />
+    <xs:attribute
+      name="configuration"
+      type="xs:string"
+      use="required"
+    />
+  </xs:complexType>
+  <xs:complexType name="envType">
+    <xs:sequence>
+      <xs:element
+        maxOccurs="unbounded"
+        minOccurs="0"
+        name="var"
+        type="varType"
+      />
+    </xs:sequence>
+    <xs:attribute
+      name="name"
+      type="xs:string"
+      use="required"
+    />
+  </xs:complexType>
+  <xs:complexType name="environment-configType">
+    <xs:sequence>
+      <xs:element
+        maxOccurs="unbounded"
+        name="env"
+        type="envType"
+      />
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="exec-process-configType">
+    <xs:sequence>
+      <xs:element name="cmd" type="xs:string"/>
+    </xs:sequence>
+    <xs:attribute
+      name="name"
+      type="xs:string"
+      use="required"
+    />
+  </xs:complexType>
+  <xs:complexType name="tch-agent-process-configType">
+    <xs:sequence>
+      <xs:element
+        maxOccurs="unbounded"
+        minOccurs="0"
+        name="property"
+        type="propertyType"
+    />
+    </xs:sequence>
+    <xs:attribute
+      name="name"
+      type="xs:string"
+      use="required"
+    />
+    <xs:attribute
+      name="port"
+      type="xs:string"
+      use="optional"
+    />
+    <xs:attribute
+      name="bindname"
+      type="xs:string"
+      use="optional"
+    />
+    <xs:attribute
+      name="javaopts"
+      type="xs:string"
+      use="optional"
+    />
+    <xs:attribute
+      name="startup-timeout"
+      type="xs:string"
+      use="optional"
+    />
+  </xs:complexType>
+  <xs:complexType name="machineType">
+    <xs:attribute
+      name="name"
+      type="xs:string"
+      use="required"
+    />
+    <xs:attribute
+      name="host"
+      type="xs:string"
+      use="optional"
+    />
+    <xs:attribute
+      name="externalhost"
+      type="xs:string"
+      use="optional"
+    />
+    <xs:attribute name="ip" use="optional"/>
+    <xs:attribute
+      name="login"
+      type="xs:string"
+      use="optional"
+    />
+  </xs:complexType>
+  <xs:complexType name="machine-configType">
+    <xs:sequence>
+      <xs:element
+        maxOccurs="unbounded"
+        name="machine"
+        type="machineType"
+      />
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="processType">
+    <xs:choice maxOccurs="unbounded">
+      <xs:element
+        maxOccurs="unbounded"
+        minOccurs="0"
+        name="nested-process"
+        type="nested-processType"
+      />
+    </xs:choice>
+    <xs:attribute
+      name="name"
+      type="xs:string"
+      use="required"
+    />
+    <xs:attribute
+      name="machine"
+      type="xs:string"
+      use="optional"
+    />
+    <xs:attribute
+      name="requires-started"
+      type="xs:string"
+      use="optional"
+    />    
+    <xs:attribute
+      name="implicit"
+      type="xs:boolean"
+      use="optional"
+    />
+    <xs:attribute
+      name="auto-start"
+      type="xs:string"
+      use="optional"
+    />
+    <xs:attribute
+      name="sleep-seconds-after-started"
+      type="xs:string"
+      use="optional"
+    />
+    <xs:attribute
+      name="window"
+      type="xs:boolean"
+      use="optional"
+    />
+    <xs:attribute
+      name="home"
+      type="xs:string"
+      use="optional"
+    />
+    <xs:attribute
+      name="java-home"
+      type="xs:string"
+      use="optional"
+    />
+    <xs:attribute
+      name="configured-process-type"
+      type="xs:string"
+      use="optional"
+    />
+    <xs:attribute
+      name="configuration"
+      type="xs:string"
+      use="optional"
+    />
+    <xs:attribute
+      name="abstract"
+      type="xs:string"
+      use="optional"
+    />
+    <xs:attribute
+      name="inherit"
+      type="xs:string"
+      use="optional"
+    />
+    <xs:attribute
+      name="process-type"
+      type="xs:string"
+      use="optional"
+    />
+  </xs:complexType>
+  <xs:complexType name="nested-processType">
+    <xs:attribute
+      name="name"
+      type="xs:string"
+      use="required"
+    />
+  </xs:complexType>
+  <xs:complexType name="process-configType">
+    <xs:choice maxOccurs="unbounded">
+      <xs:element
+        maxOccurs="unbounded"
+        minOccurs="0"
+        name="process-type"
+        type="process-typeType"
+      />
+      <xs:element
+        maxOccurs="unbounded"
+        minOccurs="0"
+        name="configured-process-type"
+        type="configured-process-typeType"
+      />
+      <xs:element
+        maxOccurs="unbounded"
+        minOccurs="0"
+        name="exec-process-config"
+        type="exec-process-configType"
+      />
+      <xs:element
+        maxOccurs="unbounded"
+        minOccurs="0"
+        name="listener-process-config"
+        type="tch-agent-process-configType"
+      />
+      <xs:element
+        maxOccurs="unbounded"
+        minOccurs="0"
+        name="tch-agent"
+        type="tch-agent-process-configType"
+      />
+      <xs:element
+        maxOccurs="unbounded"
+        minOccurs="0"
+        name="tch-agent-process-config"
+        type="tch-agent-process-configType"
+      />
+      <xs:element
+        maxOccurs="unbounded"
+        minOccurs="0"
+        name="process"
+        type="processType"
+      />
+    </xs:choice>
+  </xs:complexType>
+  <xs:complexType name="process-typeType">
+    <xs:attribute
+      name="name"
+      type="xs:string"
+      use="required"
+    />
+    <xs:attribute
+      name="default-process-manager"
+      type="xs:string"
+      use="required"
+    />
+    <xs:attribute name="process-handler" use="required"/>
+    <xs:attribute
+      name="configuration-manager"
+      type="xs:string"
+      use="required"
+    />
+    <xs:attribute
+      name="xml-handler"
+      type="xs:string"
+      use="required"
+    />
+    <xs:attribute
+      name="root-config-tagname"
+      type="xs:string"
+      use="required"
+    />
+  </xs:complexType>
+  <xs:complexType name="varType">
+    <xs:attribute
+      name="name"
+      type="xs:string"
+      use="required"
+    />
+    <xs:attribute
+      name="value"
+      type="xs:string"
+      use="required"
+    />
+  </xs:complexType>
+  <xs:complexType name="propertyType">
+    <xs:attribute
+      name="name"
+      type="xs:string"
+      use="required"
+    />
+    <xs:attribute
+      name="value"
+      type="xs:string"
+      use="required"
+    />
+  </xs:complexType>
+</xs:schema>

Added: 
incubator/beehive/trunk/controls/test/infra/tch/schema/everything-suite.xsd
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/controls/test/infra/tch/schema/everything-suite.xsd 
Thu Aug  5 11:50:20 2004
@@ -0,0 +1,1870 @@
+<xs:schema elementFormDefault="qualified" 
xmlns:xs="http://www.w3.org/2001/XMLSchema";>
+  <xs:complexType name="configuration-dependencyType">
+    <xs:simpleContent>
+      <xs:extension base="xs:string">
+        <xs:attribute
+          name="file"
+          type="xs:string"
+          use="optional"
+        />
+      </xs:extension>
+    </xs:simpleContent>
+  </xs:complexType>
+  <xs:complexType name="jvmargType">
+    <xs:attribute
+      name="value"
+      type="xs:string"
+      use="optional"
+    />
+    <xs:attribute
+      name="line"
+      type="xs:string"
+      use="optional"
+    />
+  </xs:complexType>
+  <xs:complexType name="javatestType">
+    <xs:attribute
+      name="testclass"
+      type="xs:string"
+      use="required"
+    />
+    <xs:attribute
+      name="methodnames"
+      type="xs:string"
+      use="optional"
+    />
+  </xs:complexType>
+
+  <xs:complexType name="roctestType">
+    <xs:attribute
+      name="scripts"
+      type="xs:string"
+      use="required"
+    />
+    <xs:attribute
+      name="consoleconfig"
+      type="xs:string"
+      use="optional"
+    />
+    <xs:attribute
+      name="wrconfig"
+      type="xs:string"
+      use="optional"
+    />
+  </xs:complexType>
+
+  <xs:complexType name="webServerType">
+    <xs:attribute
+      name="testclass"
+      type="xs:string"
+      use="required"
+    />
+    <xs:attribute
+      name="methodnames"
+      type="xs:string"
+      use="optional"
+    />
+    <xs:attribute
+      name="webservers"
+      type="xs:string"
+      use="optional"
+    />
+    <xs:attribute
+      name="webserverstoexclude"
+      type="xs:string"
+      use="optional"
+    />
+  </xs:complexType>
+  
+  <xs:complexType name="tchtestType">
+    <xs:attribute
+      name="propsfile"
+      type="xs:string"
+      use="optional"
+    />
+    <xs:attribute
+      name="basefile"
+      type="xs:string"
+      use="optional"
+    />
+    <xs:attribute
+      name="baselogname"
+      type="xs:string"
+      use="optional"
+    />
+  </xs:complexType>
+  <xs:complexType name="ant-exec-taskType">
+    <xs:sequence>
+      <xs:any
+        maxOccurs="unbounded"
+        minOccurs="0"
+        processContents="skip"
+      />
+    </xs:sequence>
+    <xs:attribute
+      name="successMessage"
+      type="xs:string"
+      use="optional"
+    />
+  </xs:complexType>
+  <xs:complexType name="stfType">
+    <xs:simpleContent>
+      <xs:extension base="xs:string">
+        <xs:attribute
+          name="file"
+          type="xs:string"
+          use="optional"
+        />
+      </xs:extension>
+    </xs:simpleContent>
+  </xs:complexType>
+  <xs:complexType name="processType">
+    <xs:choice>
+      <xs:element
+        maxOccurs="unbounded"
+        minOccurs="0"
+        name="configuration-dependency"
+        type="configuration-dependencyType"
+      />
+    </xs:choice>
+    <xs:attribute
+      name="name"
+      type="xs:string"
+      use="optional"
+    />
+    <xs:attribute name="default" use="optional">
+      <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="project">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element
+          maxOccurs="unbounded"
+          minOccurs="0"
+          name="taskdef"
+          type="taskdefType"
+        />
+        <xs:element
+          maxOccurs="unbounded"
+          minOccurs="0"
+          name="property"
+          type="propertyType"
+        />
+        <xs:element
+          maxOccurs="unbounded"
+          minOccurs="1"
+          name="target"
+          type="targetType"
+        />
+      </xs:sequence>
+      <xs:attribute
+        name="name"
+        type="xs:string"
+        use="required"
+      />
+      <xs:attribute
+        name="default"
+        type="xs:string"
+        use="optional"
+      />
+    </xs:complexType>
+  </xs:element>
+  <xs:complexType name="propertyType">
+    <xs:attribute name="name" use="optional"/>
+    <xs:attribute name="value" use="optional"/>
+    <xs:attribute name="file" use="optional"/>
+    <xs:attribute name="environment" use="optional"/>
+  </xs:complexType>
+  <xs:element name="property" type="propertyType"/>
+  <xs:complexType name="targetType">
+    <xs:sequence>
+      <xs:element
+        maxOccurs="unbounded"
+        minOccurs="0"
+        name="property"
+        type="propertyType"
+      />
+      <xs:element
+        minOccurs="0"
+        name="custom-task"
+        type="anythingType"
+      />
+      <xs:element name="test-suite" type="test-suiteType"/>
+    </xs:sequence>
+    <xs:attribute
+      name="name"
+      type="xs:string"
+      use="required"
+    />
+  </xs:complexType>
+
+  <xs:complexType name="taskdefType">
+    <xs:choice maxOccurs="unbounded" minOccurs="0">
+      <xs:element
+        maxOccurs="1"
+        name="classpath"
+        type="classpathType"
+      />
+    </xs:choice>
+    <xs:attribute
+      name="name"
+      type="xs:string"
+      use="optional"
+    />
+    <xs:attribute
+      name="classname"
+      type="xs:string"
+      use="optional"
+    />
+    <xs:attribute
+      name="resource"
+      type="xs:string"
+      use="optional"
+    />
+    <xs:attribute
+      name="classpath"
+      type="xs:string"
+      use="optional"
+    />
+    <xs:attribute
+      name="pathelement"
+      type="xs:string"
+      use="optional"
+    />
+    <xs:attribute
+      name="file"
+      type="xs:string"
+      use="optional"
+    />
+  </xs:complexType>
+
+  <!-- Leave classpath open since it's the native ant construct -->
+  <xs:complexType name="classpathType">
+    <xs:sequence>
+      <xs:any
+        maxOccurs="unbounded"
+        minOccurs="0"
+        processContents="skip"
+      />
+    </xs:sequence>
+  </xs:complexType>
+
+  <!--  FIXME jbaker: Within a given buildfile, each "name" attribute of a 
test tag must be
+             unique  -->
+  <xs:complexType name="testType">
+    <xs:sequence>
+      <xs:choice maxOccurs="unbounded">
+        <xs:element
+          minOccurs="0"
+          name="custom-task"
+          type="anythingType"
+        />
+        <xs:element
+          minOccurs="0"
+          name="test-metadata"
+          type="test-metadataType"
+        />
+        <xs:element
+          maxOccurs="unbounded"
+          minOccurs="0"
+          name="process"
+          type="processType"
+        />
+        <xs:element
+          maxOccurs="unbounded"
+          minOccurs="0"
+          name="test-parameter"
+          type="test-parameterType"
+        />
+        <xs:element
+          maxOccurs="unbounded"
+          minOccurs="0"
+          name="utility"
+          type="utilityType"
+        />
+      </xs:choice>
+      <xs:choice maxOccurs="1">
+        <xs:element
+          maxOccurs="1"
+          name="javatest"
+          type="javatestType"
+        />
+        <xs:element
+          maxOccurs="1"
+          name="roctest"
+          type="roctestType"
+        />
+        <xs:element
+          maxOccurs="1"
+          name="junit"
+          type="javatestType"
+        />
+        <xs:element name="wstest" type="webServerType"/>
+        <xs:element name="tch-diff-test" type="tchtestType"/>
+        <xs:element name="test-vehicle" type="test-vehicleType"/>
+        <xs:element name="http-url-connection" type="http-url-connectionType"/>
+        <xs:element name="servlettask" type="servlettaskType"/>
+        <xs:element name="servletwritabletask" type="servletwritabletaskType"/>
+        <xs:element name="webappstandardtask" type="webappstandardtaskType"/>
+        <xs:element name="cmdline" type="cmdlineType"/>
+        <xs:element name="stf" type="stfType"/>
+        <xs:element name="ant-task" type="ant-exec-taskType"/>
+      </xs:choice>
+      <xs:choice maxOccurs="unbounded">
+        <xs:element
+          minOccurs="0"
+          name="custom-task"
+          type="anythingType"
+        />
+        <xs:element
+          maxOccurs="unbounded"
+          minOccurs="0"
+          name="utility"
+          type="utilityType"
+        />
+      </xs:choice>
+    </xs:sequence>
+    <xs:attribute
+      name="name"
+      type="xs:string"
+      use="required"
+    />
+    <xs:attribute
+      name="requiresRun"
+      type="xs:string"
+      use="optional"
+    />
+    <xs:attribute
+      name="requiresSuccess"
+      type="xs:string"
+      use="optional"
+    />
+    <xs:attribute
+      name="testunit"
+      type="xs:string"
+      use="optional"
+    />
+    <xs:attribute
+      name="timeoutSeconds"
+      type="xs:string"
+      use="optional"
+    />
+  </xs:complexType>
+
+  <!--  FIXME: it is not possible to require a choice of attributes, so value 
+       and valueProp are made optional. 
+            In order to fix this, the data model would have to be changed  -->
+
+  <!--  FIXME: For test-parameter tag, make sure that the value/valueProp 
+        attributes, if set, do not start with "$"  -->
+  <xs:complexType name="test-parameterType">
+    <xs:choice maxOccurs="unbounded" minOccurs="0">
+      <xs:element name="element" type="elementType"/>
+      <xs:element name="value" type="xs:string"/>
+    </xs:choice>
+    <xs:attribute name="name" use="required"/>
+    <xs:attribute
+      name="value"
+      type="xs:string"
+      use="optional"
+    />
+    <xs:attribute
+      name="valueProp"
+      type="xs:string"
+      use="optional"
+    />
+    <xs:attribute
+      name="valueprop"
+      type="xs:string"
+      use="optional"
+    />
+  </xs:complexType>
+  <xs:complexType name="elementType">
+    <xs:attribute
+      name="valueprop"
+      type="xs:string"
+      use="optional"
+    />
+    <xs:attribute
+      name="value"
+      type="xs:string"
+      use="optional"
+    />
+  </xs:complexType>
+  <xs:complexType name="test-unit-modifierType">
+    <xs:sequence>
+      <xs:element
+        maxOccurs="unbounded"
+        name="test-suite-call"
+        type="test-suite-callType"
+      />
+    </xs:sequence>
+    <xs:attribute name="value" use="required"/>
+  </xs:complexType>
+  <xs:complexType name="testUnitChangeType">
+    <xs:attribute name="value" use="required"/>
+  </xs:complexType>
+  <xs:complexType name="test-sequentialType">
+    <xs:choice maxOccurs="unbounded">
+      <xs:element name="test-unit-modifier" type="test-unit-modifierType"/>
+      <xs:element
+        maxOccurs="unbounded"
+        minOccurs="0"
+        name="test"
+        type="testType"
+      />
+      <xs:element
+        maxOccurs="unbounded"
+        minOccurs="0"
+        name="if"
+        type="ifType"
+      />
+      <xs:element
+        maxOccurs="unbounded"
+        minOccurs="0"
+        name="requires-dependent"
+        type="requiresDependentType"
+      />
+      <xs:element
+        maxOccurs="unbounded"
+        minOccurs="0"
+        name="test-block"
+        type="test-blockType"
+      />
+      <xs:element name="test-parallel" type="test-parallelType"/>
+      <xs:element
+        maxOccurs="unbounded"
+        minOccurs="0"
+        name="test-suite-call"
+        type="test-suite-callType"
+      />
+    </xs:choice>
+  </xs:complexType>
+  <xs:complexType name="test-parallelType">
+    <xs:choice maxOccurs="unbounded">
+      <xs:element name="test-unit-modifier" type="test-unit-modifierType"/>
+      <xs:element
+        maxOccurs="unbounded"
+        minOccurs="0"
+        name="test"
+        type="testType"
+      />
+      <xs:element
+        maxOccurs="unbounded"
+        minOccurs="0"
+        name="if"
+        type="ifType"
+      />
+      <xs:element
+        minOccurs="0"
+        name="custom-task"
+        type="anythingType"
+      />
+      <xs:element
+        maxOccurs="unbounded"
+        minOccurs="0"
+        name="requires-dependent"
+        type="requiresDependentType"
+      />
+      <xs:element
+        maxOccurs="unbounded"
+        minOccurs="0"
+        name="test-block"
+        type="test-blockType"
+      />
+      <xs:element name="test-sequential" type="test-sequentialType"/>
+      <xs:element
+        maxOccurs="unbounded"
+        minOccurs="0"
+        name="test-suite-call"
+        type="test-suite-callType"
+      />
+    </xs:choice>
+  </xs:complexType>
+  <xs:complexType name="test-suite-callType">
+    <xs:choice maxOccurs="unbounded">
+      <xs:element
+        maxOccurs="unbounded"
+        minOccurs="0"
+        name="property"
+        type="propertyType"
+      />
+      <xs:element
+        maxOccurs="1"
+        minOccurs="0"
+        name="test-unit-override"
+        type="testUnitChangeType"
+      />
+      <xs:element
+        maxOccurs="1"
+        minOccurs="0"
+        name="test-unit-modifier"
+        type="testUnitChangeType"
+      />
+      <xs:element
+        maxOccurs="1"
+        minOccurs="0"
+        name="test-name-modifier"
+        type="testUnitChangeType"
+      />
+      <xs:element
+        maxOccurs="1"
+        minOccurs="0"
+        name="append-to-test-unit"
+        type="testUnitChangeType"
+      />
+      <xs:element
+        maxOccurs="1"
+        minOccurs="0"
+        name="append-to-test-name"
+        type="testUnitChangeType"
+      />
+    </xs:choice>
+    <xs:attribute name="antfile" use="optional"/>
+    <xs:attribute name="testfile" use="optional"/>
+    <xs:attribute name="target" use="optional"/>
+  </xs:complexType>
+  <xs:complexType name="test-metadataType">
+    <xs:all>
+      <xs:element
+        minOccurs="0"
+        name="usage"
+        type="xs:string"
+      />
+      <xs:element
+        minOccurs="0"
+        name="description"
+        type="xs:string"
+      />
+      <xs:element
+        minOccurs="0"
+        name="testLevel"
+        type="testLevelType"
+      />
+      <!--
+      REMOVED
+      <xs:element
+        minOccurs="0"
+        name="owner"
+        type="ownerType"
+      />
+      -->
+      <xs:element
+        minOccurs="0"
+        name="freq"
+        type="frequencyType"
+      />
+      <xs:element
+        minOccurs="0"
+        name="misc"
+        type="miscType"
+      />
+      <!--
+      REMOVED
+      <xs:element
+        minOccurs="0"
+        name="serverMode"
+        type="serverModeType"
+      />
+      <xs:element
+        minOccurs="0"
+        name="db"
+        type="dbType"
+      />
+      -->
+      <xs:element
+        minOccurs="0"
+        name="status"
+        type="statusType"
+      />
+      <!--
+      REMOVED
+      <xs:element
+        minOccurs="0"
+        name="conversation"
+        type="conversationType"
+      />
+      <xs:element
+        minOccurs="0"
+        name="domain"
+        type="domainType"
+      />
+      
+      <xs:element
+        minOccurs="0"
+        name="scenario"
+        type="scenarioType"
+      />
+      <xs:element
+        minOccurs="0"
+        name="knownFailure"
+        type="knownFailureType"
+      />
+      <xs:element
+        minOccurs="0"
+        name="CRList"
+        type="CRListType"
+      />
+      <xs:element
+        minOccurs="0"
+        name="SSLRestriction"
+        type="SSLRestrictionType"
+      />
+      <xs:element
+        minOccurs="0"
+        name="condition"
+        type="conditionalType"
+      />
+      <xs:element
+        minOccurs="0"
+        name="OSRestriction"
+        type="OSRestrictionType"
+      />
+   
+      <xs:element
+        minOccurs="0"
+        name="os"
+        type="osType"
+      />
+
+      <xs:element
+        minOccurs="0"
+        name="JavaRestriction"
+        type="JavaRestrictionType"
+      />
+      <xs:element
+        minOccurs="0"
+        name="clientTypes"
+        type="clientTypesType"
+      />
+      <xs:element
+        minOccurs="0"
+        name="securityType"
+        type="securityTypeType"
+      />
+      -->
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="testLevelType">
+    <xs:attribute name="level" use="optional">
+      <xs:simpleType>
+        <xs:restriction base="xs:integer">
+          <xs:minInclusive value="1"/>
+          <xs:maxInclusive value="4"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attribute name="levels" use="optional"/>
+  </xs:complexType>
+  <xs:complexType name="knownFailureType">
+    <xs:attribute name="value" use="required">
+      <xs:simpleType>
+        <xs:restriction base="xs:NMTOKEN">
+          <xs:enumeration value="false"/>
+          <xs:enumeration value="true"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+  </xs:complexType>
+  <xs:complexType name="scenarioType">
+    <xs:attribute
+      name="ssl"
+      type="xs:boolean"
+      use="optional"
+    />
+    <xs:attribute
+      name="thinclient"
+      type="xs:boolean"
+      use="optional"
+    />
+    <xs:attribute
+      name="thinclientStrict"
+      type="xs:boolean"
+      use="optional"
+    />
+    <xs:attribute
+      name="jdkClient"
+      type="xs:boolean"
+      use="optional"
+    />
+  </xs:complexType>
+
+  <!--  FIXME: not doing full validation on the contents of the "ids" tag 
+             this would only be possble if we followed the convention for list 
type, which
+             is whitespace, not comma, separated items -->
+  <xs:complexType name="CRListType">
+    <xs:attribute
+      name="ids"
+      type="xs:string"
+      use="required"
+    />
+  </xs:complexType>
+
+  <xs:simpleType name="ownerType">
+    <xs:restriction base="xs:string"/>
+  </xs:simpleType>
+
+  <xs:simpleType name="miscType">
+    <xs:restriction base="xs:string"/>
+  </xs:simpleType>
+
+  <!-- all this just to create a list type?-->
+  <!-- how can i make sure there are no duplicates in the enum? -->
+  <xs:simpleType name="frequencyOptions">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="drt"/>
+      <xs:enumeration value="bvt"/>
+      <xs:enumeration value="daily"/>
+      <xs:enumeration value="weekly"/>
+      <!-- the following values are used for xbean tests -->
+      <xs:enumeration value="checkin"/>
+      <xs:enumeration value="detailed"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="frequencyList">
+    <xs:list itemType="frequencyOptions"/>
+  </xs:simpleType>
+  <xs:simpleType name="frequencyType">
+    <xs:restriction base="frequencyList">
+      <xs:minLength value="0"/>
+      <xs:maxLength value="4"/>
+    </xs:restriction>
+  </xs:simpleType>
+   <!-- end frequency definition -->
+
+  <xs:simpleType name="serverModeOptions">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="prod"/>
+      <xs:enumeration value="dev"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="serverModeList">
+    <xs:list itemType="serverModeOptions"/>
+  </xs:simpleType>
+  <xs:simpleType name="serverModeType">
+    <xs:restriction base="serverModeList">
+      <xs:minLength value="0"/>
+      <xs:maxLength value="2"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="dbOptions">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="all"/>
+      <xs:enumeration value="none"/>
+      <xs:enumeration value="oracle8"/>
+      <xs:enumeration value="oracle9"/>
+      <xs:enumeration value="db2"/>
+      <xs:enumeration value="mssql"/>
+      <xs:enumeration value="pointbase"/>
+      <xs:enumeration value="sybase"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="dbList">
+    <xs:list itemType="dbOptions"/>
+  </xs:simpleType>
+  <xs:simpleType name="dbType">
+    <xs:restriction base="dbList">
+      <xs:minLength value="0"/>
+      <xs:maxLength value="7"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="statusOptions">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="active"/>
+      <xs:enumeration value="inactive"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="statusList">
+    <xs:list itemType="statusOptions"/>
+  </xs:simpleType>
+  <xs:simpleType name="statusType">
+    <xs:restriction base="statusList">
+      <xs:minLength value="0"/>
+      <xs:maxLength value="2"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="conversationOptions">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="db"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="conversationList">
+    <xs:list itemType="conversationOptions"/>
+  </xs:simpleType>
+  <xs:simpleType name="conversationType">
+    <xs:restriction base="conversationList">
+      <xs:minLength value="0"/>
+      <xs:maxLength value="1"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <!--
+  REMOVED
+  <xs:simpleType name="domainOptions">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="knexbvt"/>
+      <xs:enumeration value="securitybvt"/>
+      <xs:enumeration value="transecuritybvt"/>
+      <xs:enumeration value="runtime9QADomain"/> 
+      <xs:enumeration value="samplesDomain"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="domainList">
+    <xs:list itemType="domainOptions"/>
+  </xs:simpleType>
+  <xs:simpleType name="domainType">
+    <xs:restriction base="domainList">
+      <xs:minLength value="0"/>
+      <xs:maxLength value="4"/>
+    </xs:restriction>
+  </xs:simpleType>
+  -->
+
+  <xs:simpleType name="osOptions">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="win"/>
+      <xs:enumeration value="sol"/>
+      <xs:enumeration value="lin"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="osList">
+    <xs:list itemType="osOptions"/>
+  </xs:simpleType>
+  <xs:simpleType name="osType">
+    <xs:restriction base="osList">
+      <xs:minLength value="0"/>
+      <xs:maxLength value="3"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:complexType name="clientTypesType">
+    <xs:attribute
+      name="jdkclient"
+      type="xs:boolean"
+      use="optional"
+    />
+    <xs:attribute
+      name="thinclient"
+      type="xs:boolean"
+      use="optional"
+    />
+    <xs:attribute
+      name="thinclientstrict"
+      type="xs:boolean"
+      use="optional"
+    />
+  </xs:complexType>
+  <xs:complexType name="securityTypeType">
+    <xs:attribute
+      name="security61"
+      type="xs:boolean"
+      use="optional"
+    />
+    <xs:attribute
+      name="security70"
+      type="xs:boolean"
+      use="optional"
+    />
+  </xs:complexType>
+  <xs:complexType name="SSLRestrictionType">
+    <xs:attribute
+      name="value"
+      type="xs:boolean"
+      use="required"
+    />
+  </xs:complexType>
+  <xs:complexType name="OSRestrictionType">
+    <xs:attribute
+      name="names"
+      type="xs:string"
+      use="required"
+    />
+    <xs:attribute
+      name="excluded"
+      type="xs:boolean"
+      use="optional"
+    />
+  </xs:complexType>
+  <xs:complexType name="JavaRestrictionType">
+    <xs:attribute
+      name="versions"
+      type="xs:string"
+      use="required"
+    />
+    <xs:attribute
+      name="excluded"
+      type="xs:boolean"
+      use="optional"
+    />
+  </xs:complexType>
+  <xs:complexType name="test-vehicleType">
+    <xs:sequence>
+      <xs:element name="javatest" type="javatestType"/>
+    </xs:sequence>
+    <xs:attribute
+      name="type"
+      type="xs:string"
+      use="optional"
+    />
+    <xs:attribute
+      name="name"
+      type="xs:string"
+      use="optional"
+    />
+    <xs:attribute
+      name="process"
+      type="xs:string"
+      use="optional"
+    />
+  </xs:complexType>
+  <xs:complexType name="test-blockType">
+    <xs:sequence>
+      <xs:choice maxOccurs="unbounded">
+        <xs:element
+          maxOccurs="unbounded"
+          minOccurs="0"
+          name="process"
+          type="processType"
+        />
+        <xs:element
+          maxOccurs="unbounded"
+          minOccurs="0"
+          name="test-parameter"
+          type="test-parameterType"
+        />
+        <xs:element
+          minOccurs="0"
+          name="test-metadata"
+          type="test-metadataType"
+        />
+      </xs:choice>
+      <xs:choice maxOccurs="unbounded">
+        <xs:element
+          minOccurs="0"
+          name="test-parallel"
+          type="test-parallelType"
+        />
+        <xs:element
+          minOccurs="0"
+          name="test-sequential"
+          type="test-sequentialType"
+        />
+        <xs:element
+          maxOccurs="unbounded"
+          minOccurs="0"
+          name="test-unit-modifier"
+          type="test-unit-modifierType"
+        />
+        <xs:element
+          maxOccurs="unbounded"
+          minOccurs="0"
+          name="test-suite-call"
+          type="test-suite-callType"
+        />
+        <xs:element
+          maxOccurs="unbounded"
+          minOccurs="0"
+          name="test-block"
+          type="test-blockType"
+        />
+        <xs:element
+          maxOccurs="unbounded"
+          name="test"
+          type="testType"
+        />
+        <xs:element
+          maxOccurs="unbounded"
+          name="if"
+          type="ifType"
+        />
+        <xs:element
+          maxOccurs="unbounded"
+          name="requires-dependent"
+          type="requiresDependentType"
+        />
+        <xs:element
+          minOccurs="0"
+          name="custom-task"
+          type="anythingType"
+        />
+      </xs:choice>
+    </xs:sequence>
+    <xs:attribute
+      name="name"
+      type="xs:string"
+      use="required"
+    />
+    <xs:attribute
+      name="count"
+      type="xs:string"
+      use="optional"
+    />
+    <xs:attribute
+      name="requiresRun"
+      type="xs:string"
+      use="optional"
+    />
+    <xs:attribute
+      name="requiresSuccess"
+      type="xs:string"
+      use="optional"
+    />
+  </xs:complexType>
+  <xs:complexType name="independent-test-groupType">
+    <xs:sequence>
+      <xs:choice maxOccurs="unbounded">
+        <xs:element
+          maxOccurs="unbounded"
+          minOccurs="0"
+          name="process"
+          type="processType"
+        />
+        <xs:element
+          maxOccurs="unbounded"
+          minOccurs="0"
+          name="test-parameter"
+          type="test-parameterType"
+        />
+        <xs:element
+          minOccurs="0"
+          name="test-metadata"
+          type="test-metadataType"
+        />
+      </xs:choice>
+      <xs:choice maxOccurs="unbounded">
+        <xs:element
+          minOccurs="0"
+          name="test-parallel"
+          type="test-parallelType"
+        />
+        <xs:element
+          minOccurs="0"
+          name="test-sequential"
+          type="test-sequentialType"
+        />
+        <xs:element
+          maxOccurs="unbounded"
+          minOccurs="0"
+          name="test-unit-modifier"
+          type="test-unit-modifierType"
+        />
+        <xs:element
+          maxOccurs="unbounded"
+          minOccurs="0"
+          name="test-suite-call"
+          type="test-suite-callType"
+        />
+        <xs:element
+          maxOccurs="unbounded"
+          minOccurs="0"
+          name="test-block"
+          type="test-blockType"
+        />
+        <xs:element
+          maxOccurs="unbounded"
+          minOccurs="0"
+          name="independent-test-group"
+          type="independent-test-groupType"
+        />
+        <xs:element
+          maxOccurs="unbounded"
+          name="test"
+          type="testType"
+        />
+        <xs:element
+          maxOccurs="unbounded"
+          name="if"
+          type="ifType"
+        />
+        <xs:element
+          maxOccurs="unbounded"
+          name="requires-dependent"
+          type="requiresDependentType"
+        />
+        <xs:element
+          minOccurs="0"
+          name="custom-task"
+          type="anythingType"
+        />
+      </xs:choice>
+    </xs:sequence>
+    <xs:attribute
+      name="name"
+      type="xs:string"
+      use="optional"
+    />
+    <xs:attribute
+      name="rerunFailedTestOnly"
+      type="xs:boolean"
+      use="optional"
+    />
+  </xs:complexType>
+  <xs:complexType name="utilityType">
+    <xs:sequence>
+      <xs:choice maxOccurs="unbounded">
+        <xs:element
+          maxOccurs="unbounded"
+          minOccurs="0"
+          name="arg"
+          type="argType"
+        />
+      </xs:choice>
+    </xs:sequence>
+    <xs:attribute
+      name="classname"
+      type="xs:string"
+      use="required"
+    />
+    <xs:attribute
+      name="methodname"
+      type="xs:string"
+      use="required"
+    />
+  </xs:complexType>
+  <xs:complexType name="argType">
+    <xs:attribute
+      name="name"
+      type="xs:string"
+      use="required"
+    />
+    <xs:attribute
+      name="value"
+      type="xs:string"
+      use="required"
+    />
+  </xs:complexType>
+  <xs:complexType name="http-url-connectionType">
+    <xs:choice maxOccurs="unbounded">
+      <xs:element
+        maxOccurs="unbounded"
+        minOccurs="0"
+        name="requestheader"
+        type="requestheaderType"
+      />
+      <xs:element
+        maxOccurs="unbounded"
+        minOccurs="0"
+        name="miscrequestheader"
+        type="miscrequestheaderType"
+      />
+      <xs:element
+        maxOccurs="unbounded"
+        minOccurs="0"
+        name="requestparam"
+        type="requestparamType"
+      />
+      <xs:element
+        maxOccurs="1"
+        minOccurs="0"
+        name="expectedstring"
+        type="expectedstringType"
+      />
+      <xs:element
+        maxOccurs="1"
+        minOccurs="0"
+        name="expectedresponsecode"
+        type="expectedresponsecodeType"
+      />
+      <xs:element
+        maxOccurs="unbounded"
+        minOccurs="0"
+        name="expectedheader"
+        type="expectedheaderType"
+      />
+      <xs:element
+        minOccurs="0"
+        name="authenticate"
+        type="authenticateType"
+      />
+    </xs:choice>
+    <xs:attribute
+      name="target"
+      type="xs:string"
+      use="required"
+    />
+    <xs:attribute
+      name="checkmode"
+      type="xs:string"
+      use="required"
+    />
+    <xs:attribute name="connectionmode" type="xs:string"/>
+    <xs:attribute name="followredirect" type="xs:string"/>
+    <xs:attribute name="sendcookie" type="xs:string"/>
+    <xs:attribute name="secure" type="xs:string"/>
+    <xs:attribute name="sendSSLCookie" type="xs:string"/>
+    <xs:attribute name="protocol" type="xs:string"/>
+    <xs:attribute name="clearcookies" type="xs:string"/>
+  </xs:complexType>
+  <xs:complexType name="servlettaskType">
+    <xs:choice maxOccurs="unbounded">
+      <xs:element
+        maxOccurs="unbounded"
+        minOccurs="0"
+        name="requestheader"
+        type="requestheaderType"
+      />
+      <xs:element
+        maxOccurs="unbounded"
+        minOccurs="0"
+        name="requestparam"
+        type="requestparamType"
+      />
+      <xs:element
+        minOccurs="0"
+        name="authenticate"
+        type="authenticateType"
+      />
+    </xs:choice>
+    <xs:attribute
+      name="target"
+      type="xs:string"
+      use="required"
+    />
+    <xs:attribute
+      name="testclass"
+      type="xs:string"
+      use="required"
+    />
+    <xs:attribute
+      name="testmethod"
+      type="xs:string"
+      use="required"
+    />
+    <xs:attribute name="connectionmode" type="xs:string"/>
+    <xs:attribute name="followredirect" type="xs:string"/>
+    <xs:attribute name="sendcookie">
+      <xs:simpleType>
+        <xs:restriction base="xs:NMTOKEN">
+          <xs:enumeration value="false"/>
+          <xs:enumeration value="true"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attribute name="secure">
+      <xs:simpleType>
+        <xs:restriction base="xs:NMTOKEN">
+          <xs:enumeration value="false"/>
+          <xs:enumeration value="true"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attribute name="sendSSLCookie">
+      <xs:simpleType>
+        <xs:restriction base="xs:NMTOKEN">
+          <xs:enumeration value="false"/>
+          <xs:enumeration value="true"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attribute name="protocol" type="xs:string"/>
+    <xs:attribute name="clearcookies">
+      <xs:simpleType>
+        <xs:restriction base="xs:NMTOKEN">
+          <xs:enumeration value="false"/>
+          <xs:enumeration value="true"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+  </xs:complexType>
+  <xs:complexType name="servletwritabletaskType">
+    <xs:choice maxOccurs="unbounded">
+      <xs:element
+        maxOccurs="unbounded"
+        minOccurs="0"
+        name="requestheader"
+        type="requestheaderType"
+      />
+      <xs:element
+        maxOccurs="unbounded"
+        minOccurs="0"
+        name="miscrequestheader"
+        type="miscrequestheaderType"
+      />
+      <xs:element
+        maxOccurs="unbounded"
+        minOccurs="0"
+        name="requestparam"
+        type="requestparamType"
+      />
+      <xs:element
+        maxOccurs="1"
+        minOccurs="0"
+        name="expectedstring"
+        type="expectedstringType"
+      />
+      <xs:element
+        maxOccurs="1"
+        minOccurs="0"
+        name="expectedresponsecode"
+        type="xs:integer"
+      />
+      <xs:element
+        maxOccurs="unbounded"
+        minOccurs="0"
+        name="expectedheader"
+        type="expectedheaderType"
+      />
+      <xs:element
+        minOccurs="0"
+        name="authenticate"
+        type="authenticateType"
+      />
+    </xs:choice>
+    <xs:attribute
+      name="target"
+      type="xs:string"
+      use="required"
+    />
+    <xs:attribute
+      name="testclass"
+      type="xs:string"
+      use="required"
+    />
+    <xs:attribute
+      name="testmethod"
+      type="xs:string"
+      use="required"
+    />
+    <xs:attribute
+      name="checkmode"
+      type="xs:string"
+      use="required"
+    />
+    <xs:attribute name="connectionmode" type="xs:string"/>
+    <xs:attribute name="followredirect" type="xs:string"/>
+    <xs:attribute name="sendcookie">
+      <xs:simpleType>
+        <xs:restriction base="xs:NMTOKEN">
+          <xs:enumeration value="false"/>
+          <xs:enumeration value="true"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attribute name="secure">
+      <xs:simpleType>
+        <xs:restriction base="xs:NMTOKEN">
+          <xs:enumeration value="false"/>
+          <xs:enumeration value="true"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attribute name="sendSSLCookie">
+      <xs:simpleType>
+        <xs:restriction base="xs:NMTOKEN">
+          <xs:enumeration value="false"/>
+          <xs:enumeration value="true"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+    <xs:attribute name="protocol" type="xs:double"/>
+    <xs:attribute name="clearcookies">
+      <xs:simpleType>
+        <xs:restriction base="xs:NMTOKEN">
+          <xs:enumeration value="false"/>
+          <xs:enumeration value="true"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+  </xs:complexType>
+  <xs:complexType name="webappstandardtaskType">
+    <xs:choice maxOccurs="unbounded">
+      <xs:element
+        maxOccurs="unbounded"
+        minOccurs="1"
+        name="testmethod"
+        type="testmethodType"
+      />
+    </xs:choice>
+    <xs:attribute
+      name="testclass"
+      type="xs:string"
+      use="required"
+    />
+  </xs:complexType>
+  <xs:complexType name="cmdlineType">
+    <xs:choice maxOccurs="unbounded">
+      <xs:element
+        maxOccurs="1"
+        minOccurs="1"
+        name="cmd"
+        type="cmdType"
+      />
+      <xs:element
+        maxOccurs="unbounded"
+        minOccurs="0"
+        name="cmdtoken"
+        type="cmdtokenType"
+      />
+      <xs:element
+        maxOccurs="unbounded"
+        minOccurs="0"
+        name="enventry"
+        type="enventryType"
+      />
+      <xs:element
+        maxOccurs="1"
+        minOccurs="0"
+        name="expectedexitcode"
+        type="expectedexitcodeType"
+      />
+      <xs:element
+        maxOccurs="1"
+        minOccurs="0"
+        name="expectedoutputstring"
+        type="expectedoutputstringType"
+      />
+      <xs:element
+        maxOccurs="1"
+        minOccurs="0"
+        name="expectederrorstring"
+        type="expectederrorstringType"
+      />
+      <xs:element
+        maxOccurs="1"
+        minOccurs="0"
+        name="expectedoutputerrorstring"
+        type="expectedoutputerrorstringType"
+      />
+      <xs:element
+        maxOccurs="1"
+        minOccurs="0"
+        name="timeout"
+        type="xs:integer"
+      />
+      <xs:element
+        maxOccurs="1"
+        minOccurs="0"
+        name="workingdir"
+        type="workingdirType"
+      />
+    </xs:choice>
+    <xs:attribute
+      name="checkmode"
+      type="xs:string"
+      use="required"
+    />
+    <xs:attribute
+      name="echo"
+      type="xs:boolean"
+      use="optional"
+    />
+  </xs:complexType>
+  <xs:complexType name="cmdType">
+    <xs:simpleContent>
+      <xs:extension base="xs:string"/>
+    </xs:simpleContent>
+  </xs:complexType>
+  <xs:complexType name="cmdtokenType">
+    <xs:simpleContent>
+      <xs:extension base="xs:string"/>
+    </xs:simpleContent>
+  </xs:complexType>
+  <xs:complexType name="enventryType">
+    <xs:attribute
+      name="name"
+      type="xs:string"
+      use="required"
+    />
+    <xs:attribute
+      name="value"
+      type="xs:string"
+      use="required"
+    />
+  </xs:complexType>
+  <xs:complexType name="expectedexitcodeType">
+    <xs:simpleContent>
+      <xs:extension base="xs:string"/>
+    </xs:simpleContent>
+  </xs:complexType>
+  <xs:complexType name="expectedoutputstringType">
+    <xs:simpleContent>
+      <xs:extension base="xs:string">
+        <xs:attribute
+          name="regexp"
+          type="xs:string"
+          use="optional"
+        />
+      </xs:extension>
+    </xs:simpleContent>
+  </xs:complexType>
+  <xs:complexType name="expectederrorstringType">
+    <xs:simpleContent>
+      <xs:extension base="xs:string">
+        <xs:attribute
+          name="regexp"
+          type="xs:string"
+          use="optional"
+        />
+      </xs:extension>
+    </xs:simpleContent>
+  </xs:complexType>
+  <xs:complexType name="expectedoutputerrorstringType">
+    <xs:simpleContent>
+      <xs:extension base="xs:string">
+        <xs:attribute
+          name="regexp"
+          type="xs:string"
+          use="optional"
+        />
+      </xs:extension>
+    </xs:simpleContent>
+  </xs:complexType>
+  <xs:complexType name="timeoutType">
+    <xs:simpleContent>
+      <xs:extension base="xs:string"/>
+    </xs:simpleContent>
+  </xs:complexType>
+  <xs:complexType name="workingdirType">
+    <xs:simpleContent>
+      <xs:extension base="xs:string"/>
+    </xs:simpleContent>
+  </xs:complexType>
+  <xs:complexType name="expectedstringType">
+    <xs:simpleContent>
+      <xs:extension base="xs:string">
+        <xs:attribute
+          name="regexp"
+          type="xs:string"
+          use="optional"
+        />
+      </xs:extension>
+    </xs:simpleContent>
+  </xs:complexType>
+  <xs:complexType name="requestheaderType">
+    <xs:attribute
+      name="name"
+      type="xs:string"
+      use="required"
+    />
+    <xs:attribute
+      name="value"
+      type="xs:string"
+      use="required"
+    />
+  </xs:complexType>
+  <xs:complexType name="miscrequestheaderType">
+    <xs:attribute
+      name="value"
+      type="xs:string"
+      use="required"
+    />
+  </xs:complexType>
+  <xs:complexType name="requestparamType">
+    <xs:attribute
+      name="name"
+      type="xs:string"
+      use="required"
+    />
+    <xs:attribute
+      name="value"
+      type="xs:string"
+      use="required"
+    />
+  </xs:complexType>
+  <xs:complexType name="expectedresponsecodeType">
+    <xs:simpleContent>
+      <xs:extension base="xs:string"/>
+    </xs:simpleContent>
+  </xs:complexType>
+  <xs:complexType name="expectedheaderType">
+    <xs:attribute
+      name="regexp"
+      type="xs:string"
+      use="optional"
+    />
+    <xs:attribute
+      name="name"
+      type="xs:string"
+      use="required"
+    />
+    <xs:attribute
+      name="value"
+      type="xs:string"
+      use="required"
+    />
+  </xs:complexType>
+  <xs:complexType name="authenticateType">
+    <xs:attribute
+      name="user"
+      type="xs:string"
+      use="required"
+    />
+    <xs:attribute
+      name="password"
+      type="xs:string"
+      use="required"
+    />
+  </xs:complexType>
+  <xs:complexType name="testmethodType">
+    <xs:attribute
+      name="value"
+      type="xs:string"
+      use="required"
+    />
+  </xs:complexType>
+  <xs:complexType name="test-suiteType">
+    <xs:sequence>
+      <xs:choice maxOccurs="unbounded">
+        <xs:element
+          maxOccurs="unbounded"
+          minOccurs="0"
+          name="process"
+          type="processType"
+        />
+        <xs:element
+          maxOccurs="unbounded"
+          minOccurs="0"
+          name="test-parameter"
+          type="test-parameterType"
+        />
+        <xs:element
+          minOccurs="0"
+          name="test-metadata"
+          type="test-metadataType"
+        />
+      </xs:choice>
+      <xs:choice maxOccurs="unbounded">
+        <xs:element
+          minOccurs="0"
+          name="test-parallel"
+          type="test-parallelType"
+        />
+        <xs:element
+          maxOccurs="unbounded"
+          minOccurs="0"
+          name="test-unit-modifier"
+          type="test-unit-modifierType"
+        />
+        <xs:element
+          maxOccurs="unbounded"
+          minOccurs="0"
+          name="test-suite-call"
+          type="test-suite-callType"
+        />
+        <xs:element
+          maxOccurs="unbounded"
+          minOccurs="0"
+          name="test-block"
+          type="test-blockType"
+        />
+        <xs:element
+          maxOccurs="unbounded"
+          minOccurs="0"
+          name="independent-test-group"
+          type="independent-test-groupType"
+        />
+        <xs:element
+          maxOccurs="unbounded"
+          name="test"
+          type="testType"
+        />
+        <xs:element
+          maxOccurs="unbounded"
+          name="if"
+          type="ifType"
+        />
+        <xs:element
+          maxOccurs="unbounded"
+          minOccurs="0"
+          name="requires-dependent"
+          type="requiresDependentType"
+        />
+        <xs:element
+          minOccurs="0"
+          name="init-hook"
+          type="anythingType"
+        />
+        <xs:element
+          minOccurs="0"
+          name="cleanup-hook"
+          type="anythingType"
+        />
+        <xs:element
+          minOccurs="0"
+          name="custom-task"
+          type="anythingType"
+        />
+      </xs:choice>
+    </xs:sequence>
+    <xs:attribute
+      name="testunit"
+      type="xs:string"
+      use="required"
+    />
+    <xs:attribute
+      name="timeoutSeconds"
+      type="xs:string"
+      use="optional"
+    />
+  </xs:complexType>
+  <xs:complexType mixed="true" name="anythingType">
+    <xs:sequence>
+      <xs:any
+        maxOccurs="unbounded"
+        minOccurs="0"
+        processContents="skip"
+      />
+    </xs:sequence>
+    <xs:attribute
+      name="name"
+      type="xs:string"
+      use="optional"
+    />
+    <xs:attribute
+      name="group"
+      type="xs:string"
+      use="optional"
+    />
+    <xs:attribute
+      name="requiredForTest"
+      type="xs:string"
+      use="optional"
+    />
+  </xs:complexType>
+  <xs:complexType name="ifType">
+    <xs:sequence>
+      <xs:choice maxOccurs="unbounded">
+        <xs:element
+          maxOccurs="unbounded"
+          minOccurs="1"
+          name="conditional"
+          type="conditionalType"
+        />
+      </xs:choice>
+      <xs:choice maxOccurs="unbounded">
+        <xs:element
+          minOccurs="0"
+          name="test-parallel"
+          type="test-parallelType"
+        />
+        <xs:element
+          maxOccurs="unbounded"
+          minOccurs="0"
+          name="independent-test-group"
+          type="independent-test-groupType"
+        />
+        <xs:element
+          maxOccurs="unbounded"
+          minOccurs="0"
+          name="test-unit-modifier"
+          type="test-unit-modifierType"
+        />
+        <xs:element
+          maxOccurs="unbounded"
+          minOccurs="0"
+          name="test-suite-call"
+          type="test-suite-callType"
+        />
+        <xs:element
+          maxOccurs="unbounded"
+          minOccurs="0"
+          name="test-block"
+          type="test-blockType"
+        />
+        <xs:element
+          maxOccurs="unbounded"
+          name="test"
+          type="testType"
+        />
+        <xs:element
+          maxOccurs="unbounded"
+          name="if"
+          type="ifType"
+        />
+        <xs:element
+          maxOccurs="unbounded"
+          minOccurs="0"
+          name="requires-dependent"
+          type="requiresDependentType"
+        />
+        <xs:element
+          minOccurs="0"
+          name="custom-task"
+          type="anythingType"
+        />
+      </xs:choice>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="conditionalType">
+    <xs:simpleContent>
+      <xs:extension base="xs:string"/>
+    </xs:simpleContent>
+  </xs:complexType>
+  <xs:complexType name="requiresType">
+    <xs:sequence>
+      <xs:choice maxOccurs="unbounded">
+        <xs:element
+          minOccurs="0"
+          name="test-parallel"
+          type="test-parallelType"
+        />
+        <xs:element
+          maxOccurs="unbounded"
+          minOccurs="0"
+          name="test-unit-modifier"
+          type="test-unit-modifierType"
+        />
+        <xs:element
+          maxOccurs="unbounded"
+          minOccurs="0"
+          name="test-suite-call"
+          type="test-suite-callType"
+        />
+        <xs:element
+          maxOccurs="unbounded"
+          minOccurs="0"
+          name="test-block"
+          type="test-blockType"
+        />
+        <xs:element
+          maxOccurs="unbounded"
+          name="test"
+          type="testType"
+        />
+        <xs:element
+          maxOccurs="unbounded"
+          name="if"
+          type="ifType"
+        />
+        <xs:element
+          minOccurs="0"
+          name="custom-task"
+          type="anythingType"
+        />
+        <xs:element
+          minOccurs="0"
+          name="requires-dependent"
+          type="requiresDependentType"
+        />
+      </xs:choice>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="requiresDependentType">
+    <xs:sequence>
+      <xs:choice maxOccurs="1" minOccurs="1">
+        <xs:element
+          maxOccurs="1"
+          minOccurs="1"
+          name="requires"
+          type="requiresType"
+        />
+      </xs:choice>
+      <xs:choice maxOccurs="1" minOccurs="1">
+        <xs:element
+          maxOccurs="1"
+          minOccurs="1"
+          name="dependent"
+          type="requiresType"
+        />
+      </xs:choice>
+    </xs:sequence>
+  </xs:complexType>
+</xs:schema>

Added: incubator/beehive/trunk/controls/test/infra/tch/setenv.sh
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/controls/test/infra/tch/setenv.sh   Thu Aug  5 
11:50:20 2004
@@ -0,0 +1,51 @@
+#!/bin/sh
+
+PATHSEP=":"
+myos=`uname`
+case "$myos" in
+  Window*)
+  PATHSEP=";"
+  ;;
+esac
+
+echo ""
+
+TCH_HOME=`pwd`
+cd ${TCH_HOME}/..
+TCH_LIB=`pwd`
+cd ${TCH_HOME}
+ANT_HOME=${ANT_HOME:-${BEEHIVE_HOME}/installed/apache-ant-1.6.1}
+EXTERNAL_DIR=${BEEHIVE_HOME}/external
+
+echo Adding $TCH_HOME to PATH
+PATH="${TCH_HOME}${PATHSEP}$PATH"
+export PATH
+
+echo Adding $TCH_LIB to PATH
+PATH="${TCH_LIB}${PATHSEP}$PATH"
+export PATH
+
+TCH_JAR=${TCH_HOME}/tchx.jar
+echo Adding $TCH_JAR to CLASSPATH
+CLASSPATH="${TCH_JAR}${PATHSEP}$CLASSPATH"
+
+ANT_JAR=${ANT_JAR:-$ANT_HOME/lib/ant.jar}
+echo Adding ${ANT_JAR} to CLASSPATH
+CLASSPATH="${ANT_JAR}${PATHSEP}${CLASSPATH}"
+
+XERCES_JAR=${EXTERNAL_DIR}/xerces/xerces-1.4.4.jar
+echo Adding ${XERCES_JAR} to CLASSPATH 
+CLASSPATH="${XERCES_JAR}${PATHSEP}${CLASSPATH}"
+
+
+export CLASSPATH
+export TCH_HOME
+export BUILDDIR
+
+unset TCH_JAR
+unset XERCES_JAR
+unset ANT_JAR
+unset TCH_LIB
+
+echo ""
+

Added: incubator/beehive/trunk/controls/test/infra/tch/tch
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/controls/test/infra/tch/tch Thu Aug  5 11:50:20 2004
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+java org.apache.tools.ant.Main -emacs -verbose -f ${TCH_HOME}/build.xml 
-Dtch.home=${TCH_HOME} "$@"

Added: 
incubator/beehive/trunk/controls/test/infra/tch/tch-base-process-config.xml
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/controls/test/infra/tch/tch-base-process-config.xml 
Thu Aug  5 11:50:20 2004
@@ -0,0 +1,44 @@
+<config-root>
+  <machine-config>
+    <machine host="localhost" name="localhost"/>
+  </machine-config>
+
+  <process-config>
+
+    <!-- Core Process Types -->
+
+    <!-- Deprecated, see tch-agent-process-type below -->
+    <process-type
+      name="listener-process-type"
+      
process-handler="org.apache.beehive.test.tools.tch.extension.process.listener.RemoteListenerProcessHandler"
+      
default-process-manager="org.apache.beehive.test.tools.tch.extension.process.listener.RemoteListenerProcessManager"
+      root-config-tagname="listener-process-config"
+      
xml-handler="org.apache.beehive.test.tools.tch.extension.process.listener.RemoteListenerXMLHandler"
+      
configuration-manager="org.apache.beehive.test.tools.tch.extension.process.listener.RemoteListenerConfigurationManager"
+    />
+    <!-- Same as above, different logical name and configuration-tag name -->
+    <process-type
+      name="tch-agent"
+      
process-handler="org.apache.beehive.test.tools.tch.extension.process.listener.RemoteListenerProcessHandler"
+      
default-process-manager="org.apache.beehive.test.tools.tch.extension.process.listener.RemoteListenerProcessManager"
+      root-config-tagname="tch-agent-process-config"
+      
xml-handler="org.apache.beehive.test.tools.tch.extension.process.listener.RemoteListenerXMLHandler"
+      
configuration-manager="org.apache.beehive.test.tools.tch.extension.process.listener.RemoteListenerConfigurationManager"
+    />
+    <process-type
+      name="exec-process-type"
+      
process-handler="org.apache.beehive.test.tools.tch.extension.process.exec.ExecProcessHandler"
+      
default-process-manager="org.apache.beehive.test.tools.tch.extension.process.exec.ExecProcessManager"
+      root-config-tagname="exec-process-config"
+      
xml-handler="org.apache.beehive.test.tools.tch.extension.process.exec.ExecProcessXMLHandler"
+      
configuration-manager="org.apache.beehive.test.tools.tch.extension.process.exec.ExecProcessConfigurationManager"
+    />
+
+  </process-config>
+</config-root>
+
+
+
+
+
+

Added: incubator/beehive/trunk/controls/test/infra/tch/tch-dd
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/controls/test/infra/tch/tch-dd      Thu Aug  5 
11:50:20 2004
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+java org.apache.beehive.test.tools.tch.util.CmdDashDEmulator -f 
${TCH_HOME}/build.xml -Dtch.home=${TCH_HOME} -mainclass 
org.apache.tools.ant.Main "$@"
+

Added: incubator/beehive/trunk/controls/test/infra/tch/tch-error-messages.xml
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/controls/test/infra/tch/tch-error-messages.xml      
Thu Aug  5 11:50:20 2004
@@ -0,0 +1,205 @@
+<!-- About local, fatal and global error messages:
+     By default, the error messages are "local". This means they only prevent 
+     the entity (test) that is associated with them (that caused them) from 
+     running (if failfast-validation disabled). 
+     
+     If designated as "fatal", these errors will prevent the entire run from 
+     starting, even with failfast-validation disabled. 
+     
+     If a message is "global", all errors with the same id will be aggregated. 
+     For many errors, it is enough to print the error message only once, and 
+     then list all locations/calling chains. This is what will happen 
+     when setting global to "true". Note that the global switch only affects 
+     formatting behavior, not behavior.
+-->
+<error-messages>
+
+  <error id="100">
+    <short-message>Could not resolve property: 
&quot;%{propname}&quot;</short-message>
+  </error>
+  <error id="110" fatal="true">
+    <short-message>&quot;%{propname}&quot; is not a valid Tch system property 
(tch.*). See %{propfilename}.</short-message>
+  </error>
+  <error id="150" fatal="true">
+    <short-message>&quot;%{propname}&quot; is no longer a valid Tch system 
property. %{alternative}.</short-message>
+  </error>
+  <error id="120" fatal="true">
+    <short-message>The values for the &quot;%{propname}&quot; property must be 
either &quot;on&quot; or &quot;off&quot;.</short-message>
+  </error>
+  <error id="130">
+    <short-message>Expecting an integer, but got 
&quot;%{broken-int-val}&quot;</short-message>
+  </error>
+  <error id="140" fatal="true">
+    <short-message>Found no tests to run.</short-message>
+  </error>
+  
+  <error id="200">
+    <short-message>Name: &quot;%{name}&quot; contains the following illegal 
characters: %{illegalchars}</short-message>
+  </error>
+  <error id="201">
+    <short-message>Testunit: &quot;%{testunit}&quot; is not allowed to exceed 
%{maxchars} characters. It is %{numchars} chars long.</short-message>
+  </error>
+  <error id="202">
+    <short-message>No Testunit Defined: This testfile does not have a testunit 
defined (meaning it cannot be run by itself) and does have a testunit set by a 
calling testfile. </short-message>
+  </error>
+  <error id="210">
+    <short-message>A test named &quot;%{testname}&quot; is already 
registered.%{sep}These are the respective calling paths:%{sep}Already 
registered: %{otherchain}%{sep}and%{sep}Trying to register: 
%{chain}</short-message>
+  </error>
+  <error id="212">
+    <short-message>The test-name &quot;%{testname}&quot; is not unique. 
Possible resolutions: %{resolutions}</short-message>
+  </error>
+  <error id="213">
+    <short-message>Could not resolve this test name: 
&quot;%{testname}&quot;</short-message>
+  </error>
+  <error id="214">
+       <short-message>Could not find test with name: &quot;%{test}&quot;. Make 
sure you have specified the fully qualified test name 
(testunit.testname.[subtestname]) and also make sure the test class 
exists.</short-message>
+  </error>
+  <error id="215">
+       <short-message>Test name: &quot;%{test}&quot; is not allowed to exceed 
%{maxchars} characters. It is %{numchars} chars long.</short-message>
+  </error>
+  <error id="220">
+    <short-message>A testunit may only be set in a test or test-block directly 
within a test-suite.</short-message>
+  </error>
+
+  <error id="230" fatal="false">
+    <short-message>The test specified in the requires clause does not exist: 
%{reference}</short-message>
+  </error>
+  <error id="231" fatal="false">
+    <short-message>The test specified in the requires clause does not refer to 
a test in the same test-suite: %{reference}</short-message>
+  </error>
+  <error id="232" fatal="false">
+    <short-message>The requires clause is part of a cyclical reference: 
%{reference}</short-message>
+  </error>
+
+  <error id="300" global="true">
+    <short-message>No implicit process registered for this run.  Have you 
forgotten to set your tch.wls.* properties, or to supply your process-config 
file, using -Dconfig-file ?</short-message>
+  </error>
+  <error id="310">
+    <short-message>More than one ProcessTask (at least &quot;%{process}&quot; 
and &quot;%{process2}&quot;) is set as default.</short-message>
+  </error>
+  <error id="311">
+    <short-message>No default process defined for test vehicle</short-message>
+  </error>
+  <error id="320" global="false">
+    <short-message>No process registered with name 
&quot;%{process}&quot;.%{sep}If name is "null", make sure you have set the 
implicit process (in your process-config file), or use the anonymous 
process.</short-message>
+  </error>
+  <error id="321">
+    <short-message>No process &quot;%{process}&quot; declared for test 
&quot;%{test}&quot;, ambiguous as to which process to associate with Test 
Vehicle.</short-message>
+  </error>
+  
+  <error id="330" fatal="true">
+    <short-message>Already a process registered with name 
&quot;%{process}&quot;.</short-message>
+  </error>
+  
+  <error id="340" fatal="true">
+    <short-message>
+      Cannot find %{reftype} element with name &quot;%{refname}&quot; 
referenced by %{type} element with name &quot;%{name}&quot;. XML dump of the 
referencing tag: %{sep} %{dump}
+    </short-message>
+  </error>
+  
+  <error id="341" fatal="true">
+    <short-message>
+      Detected circular inheritance path for element type &quot;%{type}&quot;. 
%{sep}Inheritance path is: %{inheritance-path}
+    </short-message>
+  </error>
+  
+  <error id="342" fatal="true">
+    <short-message>
+      This &lt;process&gt; element must reference a configured-process-type, 
or point to a configuration:%{sep} %{dump}
+    </short-message>
+  </error>
+  
+   <error id="343" fatal="true">
+    <short-message>
+      Could not resolve property: &quot;%{propname}&quot;, in process-config 
at %{process-config-file}.%{sep}Global dynamic process-config props need to be 
prefixed with %{prefix}.%{sep}If you want to reference an environment variable 
directly, prefix the property name with &quot;env.&quot;.
+    </short-message>
+  </error>
+  
+  <error id="344" fatal="true">
+       <short-message>
+         Could not construct a process management class, check your classpath.
+       </short-message>
+  </error>
+  
+  <error id="345" fatal="true">
+       <short-message>
+         Only one process can be configured as &quot;implicit&quot;. Check 
your process-config file and make sure you only have one &lt;process&gt; tag 
that has &quot;implicit&quot; set to &quot;true&quot;.
+       </short-message>
+  </error>
+  
+  <error id="346" fatal="true">
+    <short-message>
+      Cannot find nested process &quot;%{nested-process-name}&quot; for 
process &quot;%{process-name}&quot;.
+    </short-message>
+  </error>
+  
+  <error id="347" fatal="true">
+    <short-message>
+      Duplicate element in process-config file 
%{file}.%{sep}%{dup-element-name}.
+    </short-message>
+  </error>
+  
+  <error id="350" fatal="true">
+       <short-message>
+         Error validating process-config %{file}.%{sep}Error is:%{sep} 
%{error-message}
+       </short-message>
+  </error>
+  
+  <error id="360" fatal="true">
+    <short-message>
+      Could not resolve this processinfo property: %{propname} 
+    </short-message>
+  </error>
+
+  <error id="400">
+    <short-message>Invalid testfile &quot;%{file}&quot;: 
%{message}</short-message>
+  </error>
+
+  <error id="401">
+    <short-message>Invalid test-suite-call &quot;%{file}&quot;</short-message>
+  </error>
+
+  <error id="500">
+    <short-message>Unknown test-vehicle: %{test-vehicle}</short-message>
+  </error>
+
+  <error id="501" fatal="true">
+    <short-message>The property &quot;tch.global-test-vehicle-process&quot; 
can only be used in conjunction with the property 
&quot;tch.global-test-vehicle&quot;.</short-message>
+  </error>
+
+  <error id="502" fatal="true">
+    <short-message>The property &quot;tch.global-test-vehicle&quot; can only 
be used in conjunction with the property 
&quot;tch.global-test-vehicle-process&quot;.</short-message>
+  </error>
+  
+  <error id="503" fatal="true">
+    <short-message>The global-test-vehicle-process &quot;%{process}&quot; has 
not been registered.</short-message>
+  </error>
+
+  <error id="600">
+    <short-message>File attribute not set, and no embedded CDATA for this 
task; one of the two is required.</short-message>
+  </error>
+  <error id="601">
+    <short-message>Could not find configuration dependency file:  
%{file}</short-message>
+  </error>
+
+  <error id="700">
+    <short-message>Invalid execution task: %{message}</short-message>
+  </error>
+  <error id="701">
+    <short-message>Validation failed for this execution task:</short-message>
+  </error>
+
+  <error id="751">
+    <short-message>Validation failed for this custom task: 
%{message}</short-message>
+  </error>
+
+  <error id="800">
+    <short-message>Validation failed for ProcessManagement extension: 
%{message}</short-message>
+  </error>
+
+  <error id="801" fatal="true">
+    <short-message>Fatal error for ProcessManagement extension: 
%{message}</short-message>
+  </error>
+  
+</error-messages>
+

Added: incubator/beehive/trunk/controls/test/infra/tch/tch-logger-conf.xml
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/controls/test/infra/tch/tch-logger-conf.xml Thu Aug 
 5 11:50:20 2004
@@ -0,0 +1,67 @@
+<loggers>
+  <!-- some standard properties for file loggers -->
+  <!-- tch.file-name: the full log filename -->
+  <!-- tch.file-prefix: controls the filename excluding the extension -->
+  <!-- tch.file-postfix: controls the filename extension -->
+
+  <!-- logging to stdout -->
+  <logger classname="org.apache.beehive.test.tools.tch.logger.StandardLogger" 
dest="console"/>
+
+  <!-- file loggers --> 
+
+  <!-- standard .log (same as stdout) -->
+  <logger classname="org.apache.beehive.test.tools.tch.logger.StandardLogger" 
dest="file">
+    <property name="tch.file-postfix" value="log"/>
+  </logger>
+
+  <!-- .debug -->
+  <logger classname="org.apache.beehive.test.tools.tch.logger.DebugLogger" 
dest="file">
+    <property name="tch.file-postfix" value="debug"/>
+  </logger>
+
+  <!-- verbose .debug -->
+  <logger 
+    classname="org.apache.beehive.test.tools.tch.logger.VerboseDebugLogger" 
+    type="verbose-debug" 
+    dest="file"
+  >
+    <property name="tch.file-postfix" value="debug-all"/>
+  </logger>
+
+  <!-- GTLF logger -->
+  <logger 
+    classname="org.apache.beehive.test.tools.tch.logger.GTLFLogger" 
type="gtlf" dest="file"
+  >
+    <property name="tch.file-postfix" value="xml"/>
+  </logger>
+
+  <!-- Composite Execution Output (linked to from Sapphire) -->
+  <logger 
+    classname="org.apache.beehive.test.tools.tch.logger.ExecutionOutputLogger" 
+    type="composite-output"
+    dest="file"
+  >
+    <property name="tch.file-postfix" value="cout"/>
+
+    <!-- Controls what kind of results will be logged into the composite log 
-->
+    <!-- If true, only log FAILURE|SCRATCH|ABORT -->
+    <!-- (where result.isProblem() == true) -->
+    <!-- If false, log all outcome results -->
+    <property name="log-only-problems" value="true"/>
+
+  </logger>
+
+
+  <!-- internal Tch self-testing logger -->
+  <logger 
+    classname="org.apache.beehive.test.tools.tch.logger.ComparisonLogger" 
+    type="clf" 
+    dest="file"
+  >
+    <property name="tch.file-postfix" value="clf"/>
+  </logger>
+
+</loggers>
+
+
+

Added: incubator/beehive/trunk/controls/test/infra/tch/tch-props.xml
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/controls/test/infra/tch/tch-props.xml       Thu Aug 
 5 11:50:20 2004
@@ -0,0 +1,189 @@
+<root>
+
+  <!-- Use %{env.[name]} syntax to access environment variables -->
+
+  <!-- Other special properties that can be referenced: -->
+    <!-- %{tch.home} -->
+
+  <property name="ant-file-gen" default="false" excluded="true"/>
+  <property name="baseDir" excluded="true"/>
+  <property name="base-logfile-name" default="tch" excluded="true"/>
+  <property name="branch" excluded="true"/> <!-- GTLF logging -->
+  <property name="changenumber" excluded="true"/> <!-- GTLF logging -->
+  <property name="code-coverage.enabled" excluded="true" default="0"/>
+  <property name="config-dependency" default="false"/>
+  <property name="debug" default="false"/>
+
+  <property name="env.beanjndiname" excluded="true"/> <!-- GTLF logging -->
+  <property name="env.Browser" excluded="true"/> <!-- GTLF logging --> 
+  <property name="env.chip-architecture" excluded="true"/> <!-- GTLF logging 
--> 
+  <property name="env.client" excluded="true"/> <!-- GTLF logging --> 
+  <property name="env.Client_JVM_Mode" excluded="true"/> <!-- GTLF logging --> 
+  <property name="env.Client_JVM_Name" excluded="true"/> <!-- GTLF logging --> 
+  <property name="env.Client_JVM_Version" excluded="true"/> <!-- GTLF logging 
--> 
+  <property name="env.Database" excluded="true"/> <!-- GTLF logging --> 
+  <property name="env.domain_type" excluded="true"/> <!-- GTLF logging --> 
+  <property name="env.Driver_Type" excluded="true"/> <!-- GTLF logging --> 
+  <property name="env.Driver_Version" excluded="true"/> <!-- GTLF logging --> 
+  <property name="env.GC-mode" excluded="true"/> <!-- GTLF logging --> 
+  <property name="env.JVM_Mode" excluded="true"/> <!-- GTLF logging --> 
+  <property name="env.JVM_Name" excluded="true"/> <!-- GTLF logging --> 
+  <property name="env.JVM_Version" excluded="true"/> <!-- GTLF logging --> 
+  <property name="env.NativeIO" excluded="true"/> <!-- GTLF logging --> 
+  <property name="env.OS" excluded="true"/> <!-- GTLF logging --> 
+  <property name="env.plugin" excluded="true"/> <!-- GTLF logging --> 
+  <property name="env.ProdMode" excluded="true"/> <!-- GTLF logging -->
+  <property name="env.Protocol" excluded="true"/> <!-- GTLF logging --> 
+  <property name="env.rarjndiname" excluded="true"/> <!-- GTLF logging --> 
+  <property name="env.Remote_VM" excluded="true"/> <!-- GTLF logging --> 
+  <property name="env.sharedbeanjndiname" excluded="true"/> <!-- GTLF logging 
--> 
+  <property name="env.Thread-mode" excluded="true"/> <!-- GTLF logging --> 
+  <property name="env.Tier" excluded="true"/> <!-- GTLF logging --> 
+  <property name="env.XA" excluded="true"/> <!-- GTLF logging -->
+
+  <property name="execaccount" excluded="true"/> <!-- GTLF logging -->
+  <property name="execdate" excluded="true"/> <!-- GTLF logging -->
+  <property name="fail-build" default="true" excluded="true"/>
+  <property name="failfast-validation" default="true" forceval="false"/>
+
+  <!-- filter props -->
+  <property name="filter.adopt-test-names" default="false" excluded="true"/>
+  <property name="filter.dbs" excluded="true"/>
+  <property name="filter.client-type" excluded="true"/>
+  <property name="filter.conversations" excluded="true"/>
+  <property name="filter.crs" excluded="true"/>
+  <property name="filter.crs-match-all" excluded="true" default="false"/>
+  <property name="filter.domains" excluded="true"/>
+  <property name="filter.knownFailures" excluded="true"/>
+  <property name="filter.frequencies" excluded="true"/>
+  <property name="filter.owners" excluded="true"/>
+  <property name="filter.misc" excluded="true"/>
+  <property name="filter.security-type" excluded="true" default="security70"/>
+  <property name="filter.server-modes" excluded="true"/>
+  <property name="filter.silently-ignore" excluded="true" default="true"/>
+  <property name="filter.ssl" excluded="true"/>
+  <property name="filter.status" excluded="true"/>
+  <property name="filter.test-level" excluded="true"/>
+
+  <property name="fork"/>
+  <property name="global-test-vehicle" default="local"/>
+  <property name="global-test-vehicle-process" excluded="false"/>
+  <property name="home" excluded="true"/>
+  <property name="hostname" excluded="true"/> <!-- GTLF logging -->
+  <property name="importinfo" excluded="true"/> <!-- GTLF logging -->
+  <property name="init-mode-only" default="false"/>
+
+  <!-- Do not set this on the generated java command line so that 
+       its length can be kept to a minimum. 
+       This means that any subsequent command lines generated from running
+       the generated java command line will not be correct. -->
+  <property name="javaopts" javaExcluded="true"/> 
+  
+  <!-- deprecated, replaced by process.keep-alive -->
+  <property name="keep-alive" default="true" excluded="true"/>
+  
+  <!-- deprecated, append subtest name to test name, set using
+      tch.test-names -->
+  <property name="javatest.method-names" excluded="true"/>
+  
+  <property name="junit.force-failure" default="false" excluded="false"/>
+  <property name="junit.validate-class" default="true" excluded="false"/>
+  <property name="junit.validate-method-names" default="true" 
excluded="false"/>
+
+  <property name="load" excluded="true"/> <!-- GTLF logging -->
+
+  <property name="log.basedir" excluded="true" default="."/>
+  <property name="log-banners" default="true" excluded="true"/>
+  <property name="log-comparison" default="false" excluded="true"/>
+  <property name="log.composite.enabled" default="true" excluded="true"/>
+  <property name="log.config" default="%{tch.home}/tch-logger-conf.xml"/>
+  <property name="log-custom" excluded="true"/>
+  <property name="log-custom-suffix" excluded="true"/>
+  <property name="log.date-format" default="MMM d, yyyy h:mm:ss aa zzz" 
excluded="true"/>
+  <property name="log.debug-level" default="3" excluded="true"/>
+  <property name="log-gtlf" default="true" forceval="false"/>
+  <property name="log.gtlf.file-extension" default="xml" excluded="true"/>
+  <property name="log.stdout-as-inform" default="false" excluded="true"/>
+  <property name="log.inform-as-details" default="true" excluded="true"/>
+
+  <!-- Prefered way to pass envs to the GTLF logger -->
+  <property name="log.gtlf.env.*" excluded="true"/>
+
+  <property name="log-to-stdout" default="true" excluded="true"/>
+  <property name="log.progress-info" default="false" excluded="false"/>
+  <property name="log-verbose-debug" default="true" excluded="true"/>
+  <property name="log.test-names" default="false" excluded="true"/>
+
+  <property name="management-admin-port" default="9425" excluded="true"/>
+
+  <!-- Deprecated, internal, not documented -->
+  <property name="modified-classpath" default="false" excluded="true"/>
+
+  <property name="start-processes-only" default="false"/>
+  <property name="test-info"/>
+  <property name="test-info-also-run" default="false"/>
+  <property name="test-names" excluded="true"/>
+  <property name="test-vehicle.vm.shutdown-after-test" excluded="false" 
default="false"/>
+  <property name="test-vehicle.vm.shutdown-if-problem" excluded="false" 
default="false"/>
+  <property name="run-timeout" default="false"/>
+  <property name="run-timeout-seconds" default="1800"/>
+  <property name="runmodifier" default="" excluded="true"/> <!-- GTLF logging 
-->
+  <property name="test-timeout" default="false"/>
+  <property name="test-timeout-seconds" default="300"/>
+  <property name="process.auto-start" default="false" excluded="false"/>
+  <property name="process.base-home" excluded="false"/>
+  <property name="process.ctrlc-cleanup" default="false" excluded="true"/> 
+  <property name="process.configure-all" default="false"/>
+  <property name="process.dynamic.*" excluded="false"/>
+  <property name="process.local-listener-port" default="4242" excluded="true"/>
+  <property name="process.keep-alive" default="true" excluded="true"/>
+  <property name="process.log.basedir" excluded="true"/>
+  <property name="process.merge-output-streams" default="true" 
excluded="true"/>
+  <property name="process.window" default="false"/>
+  <property name="process.write-cmd-files" default="true" excluded="true"/>
+  <property name="process.write-process-data-props-file" default="false" 
excluded="true"/>
+  <property name="prop-val-substitution" default="false" excluded="true"/>
+  <property name="replication.entry-point" default="tch.sh run" 
excluded="true"/>
+  <property name="replication.info" default="" excluded="true"/>
+  <property name="replication.print-win-cmdline" default="false" 
excluded="true"/>
+  <property name="replication.set-javaopts" default="true" excluded="true"/>
+  <property name="release" excluded="true"/> <!-- GTLF logging -->
+  <property name="runid" excluded="true"/> <!-- GTLF logging -->
+  <property name="stagger-result-time" default="true" excluded="true"/>
+  <property name="stf.component-files" excluded="true"/>
+  <property name="stf.operation-files" excluded="true"/>
+  
+  <!-- not excluded because some tests use it in conditionals -->
+  <property name="string" excluded="false"/> <!-- GTLF logging -->
+
+  <property name="testruntype" excluded="true"/> <!-- GTLF logging --> 
+  <property name="threaddump" default="false" excluded="true"/>
+  <property name="toptestfile" excluded="true"/> <!-- GTLF logging -->
+  <property name="update.*" excluded="true"/>
+  <property 
+    name="junit.update.src" 
+    excluded="true" 
+    default="%{tch.home}/../core/java"
+  />
+  <property name="validate" default="true"/>
+  <property name="validate-test-name-length" default="true" excluded="true"/>
+  <property name="validation-error-metafile" default="tch-error-messages.xml"/>
+  <property name="verbose" default="false" excluded="true"/>
+  <property name="verbose-validation" default="true"/>
+
+
+  <property name="wstest.verbose" default="false"/>
+  <property name="wstest.config-file"/>
+  <property name="wstest.host" default="localhost"/>
+  <property name="wstest.builddir" default="."/>
+  <property name="wstest.installdir" default="."/>
+
+  <!-- These are for internal Tch use only, cannot ever be set by user.-->
+  <property name="internal.log-banners-prop-name"/>
+  <property name="internal.srcdir"/>
+  <property name="internal.start-processes-only-prop-name"/>
+  <property name="internal.validation-failed" default="false"/>
+
+</root>
+
+

Added: incubator/beehive/trunk/controls/test/infra/tch/tch-root-template.xml
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/controls/test/infra/tch/tch-root-template.xml       
Thu Aug  5 11:50:20 2004
@@ -0,0 +1,270 @@
+<project name="tch" default="version">
+
+  <!-- This is the root Tch buildfile.  It performs process configuration, as 
well as
+       calling out to the specified Tch buildfile supplied by the user.
+       See the documentation and the functional description document for more 
details. -->
+
+  <!-- Tch core tasks -->
+
+  <taskdef name="process-setup" 
classname="org.apache.beehive.test.tools.tch.core.stl.ProcessSetupTask"/>
+
+  <taskdef name="test-suite-call" 
classname="org.apache.beehive.test.tools.tch.core.TestSuiteCallTask"/>
+  <taskdef name="test-suite" 
classname="org.apache.beehive.test.tools.tch.core.TestSuiteTask"/>
+  <taskdef name="test-block" 
classname="org.apache.beehive.test.tools.tch.core.TestBlockTask"/>
+  <taskdef name="test" 
classname="org.apache.beehive.test.tools.tch.core.TestTask"/>
+
+  <taskdef name="process" 
classname="org.apache.beehive.test.tools.tch.core.ProcessTask"/>
+  <taskdef name="independent-test-group" 
classname="org.apache.beehive.test.tools.tch.core.IndependentTestGroupTask"/>
+  <taskdef name="configuration-dependency" 
classname="org.apache.beehive.test.tools.tch.core.ConfigurationDependencyTask"/>
+  <taskdef name="jvmarg" 
classname="org.apache.beehive.test.tools.tch.core.JvmargTask"/>
+  <taskdef name="test-parameter" 
classname="org.apache.beehive.test.tools.tch.core.ParamTask"/>
+  <taskdef name="test-unit-modifier" 
classname="org.apache.beehive.test.tools.tch.core.TestUnitModifierTask"/>
+  <taskdef name="test-unit-override" 
classname="org.apache.beehive.test.tools.tch.core.TestUnitOverrideTask"/>
+  <taskdef name="append-to-test-unit" 
classname="org.apache.beehive.test.tools.tch.core.AppendModifierToTestUnitTask"/>
+  <taskdef name="test-name-modifier" 
classname="org.apache.beehive.test.tools.tch.core.TestNameModifierTask"/>
+  <taskdef name="append-to-test-name" 
classname="org.apache.beehive.test.tools.tch.core.AppendModifierToTestNameTask"/>
+  <taskdef name="test-parallel" 
classname="org.apache.beehive.test.tools.tch.core.TestParallelTask"/>
+  <taskdef name="test-sequential" 
classname="org.apache.beehive.test.tools.tch.core.TestSequentialTask"/>
+  <taskdef name="test-vehicle" 
classname="org.apache.beehive.test.tools.tch.core.TestVehicleTask"/>
+  <taskdef name="test-metadata" 
classname="org.apache.beehive.test.tools.tch.core.TestMetadataTask"/>
+
+  <taskdef name="if" 
classname="org.apache.beehive.test.tools.tch.core.IfTask"/>
+  <taskdef name="conditional" 
classname="org.apache.beehive.test.tools.tch.core.IfTask$ConditionTask"/>
+
+  <taskdef name="requires-dependent" 
classname="org.apache.beehive.test.tools.tch.core.RequiresDependentTask"/>
+  <taskdef name="requires" 
classname="org.apache.beehive.test.tools.tch.core.RequiresTask"/>
+  <taskdef name="dependent" 
classname="org.apache.beehive.test.tools.tch.core.DependentTask"/>
+
+  <!-- FIXME we can probably remove the 'utility' task -->
+  <taskdef name="utility" 
classname="org.apache.beehive.test.tools.tch.core.UtilityTask"/>
+  <taskdef 
+    name="javatest-utility" 
+    
classname="org.apache.beehive.test.tools.tch.extension.exectask.javatest.JavatestUtilityTask"/>
+  <taskdef name="parameter" 
+           
classname="org.apache.beehive.test.tools.tch.extension.exectask.javatest.JavatestUtilityTask$ParameterContainer"/>
+
+  <taskdef name="custom-task" 
classname="org.apache.beehive.test.tools.tch.core.AnythingTask"/>
+  <taskdef name="init-hook" 
classname="org.apache.beehive.test.tools.tch.core.InitHookTask"/>
+  <taskdef name="cleanup-hook" 
classname="org.apache.beehive.test.tools.tch.core.CleanupHookTask"/>
+  <taskdef name="prop-val-substitution" 
classname="org.apache.beehive.test.tools.tch.core.PropValueSubstitutionSetupTask"/>
+  <taskdef name="inform" 
classname="org.apache.beehive.test.tools.tch.core.ant.TchLogTask"/>
+
+  @TASKDEFS@
+
+  <taskdef name="startup" 
classname="org.apache.beehive.test.tools.tch.core.StartupTask"/>
+  <taskdef name="file-exists" 
classname="org.apache.beehive.test.tools.tch.util.ant.FileExistsTask"/>
+  <taskdef name="message" 
classname="org.apache.beehive.test.tools.tch.core.MessageTask"/>
+  <taskdef name="test-list-output" 
classname="org.apache.beehive.test.tools.tch.core.TestListOutputTask"/>
+  <taskdef name="update" 
classname="org.apache.beehive.test.tools.tch.extension.update.UpdateManager"/>
+
+  <taskdef name="init-pm" 
+           
classname="org.apache.beehive.test.tools.tch.core.InitProcessManagementTask"/>
+  <taskdef name="resolve-process-info-props" 
+           
classname="org.apache.beehive.test.tools.tch.core.process.ResolveProcessPropertiesTask"/>
+  <taskdef name="check-references" 
+           
classname="org.apache.beehive.test.tools.tch.core.ReferenceCheckTask"/>
+  <taskdef name="final-validation" 
+           
classname="org.apache.beehive.test.tools.tch.core.configuration.FinalValidationCheckTask"/>
+  <taskdef name="auto-start-processes" 
+           
classname="org.apache.beehive.test.tools.tch.core.AutoStartProcessesTask"/>
+  <taskdef name="init-logger" 
+           classname="org.apache.beehive.test.tools.tch.core.InitLoggerTask"/>
+  <taskdef name="test-runner" 
classname="org.apache.beehive.test.tools.tch.core.TestRunner"/>
+  <taskdef name="shutdown" 
+           
classname="org.apache.beehive.test.tools.tch.core.PrepareForShutdown"/>
+
+  <!-- For javatest execution task -->
+  <taskdef name="javatest" 
+           
classname="org.apache.beehive.test.tools.tch.extension.exectask.javatest.JavatestTask"/>
+
+  <taskdef name="junit" 
+           
classname="org.apache.beehive.test.tools.tch.extension.exectask.junit.JunitExecTask"/>
+
+  <!-- For webservertest execution task -->
+  <taskdef name="wstest" 
+           
classname="org.apache.beehive.test.tools.tch.extension.exectask.wstest.WebServerExecTask"/>
+
+  <!-- Tch test (tch testing tch) -->
+  <taskdef name="tch-diff-test" 
classname="org.apache.beehive.test.tools.tch.extension.exectask.self.TchExecTask"/>
+
+  @PRODUCTION-EXEC-TASKDEFS@
+
+  <!-- cmdline exec task -->
+  <taskdef name="cmdline" 
+           
classname="org.apache.beehive.test.tools.tch.extension.exectask.cmdline.CommandLineTask"/>
+
+  <!-- For stf execution task 
+  <taskdef name="stf" 
+           
classname="org.apache.beehive.test.tools.tch.extension.exectask.stf.STFExecTask"/>
+  -->
+  <!-- For ant-exec-task execution task -->
+  <taskdef name="ant-task" 
+           
classname="org.apache.beehive.test.tools.tch.extension.exectask.ant.AntExecTask"/>
+
+  <property name="test-suite" value="test.xml"/>
+
+  <property name="base-param" value="set-at-base"/>
+
+  <property 
+    name="tch.internal.start-processes-only-prop-name" 
+    value="tch.start-processes-only"
+  />
+
+  <property 
+    name="tch.internal.log-banners-prop-name" 
+    value="tch.log-banners"
+  />
+
+  <!-- do not change this prefix, we depend on it for dynamic process config 
-->
+  <property environment="env"/>
+  
+
+  <target name="version">
+    <echo message="runtime java.version: ${java.version}"/>
+    <echo message="runtime java.home: ${java.home}"/>
+    <java classname="tch.version"/>
+  </target>
+
+  <target name="dtd">
+     <antstructure output="simple.dtd"/>
+  </target> 
+
+  <target name="run" depends="version,
+                              preRun,
+                              InitRun,
+                              PostInitRun,
+                              PreExecRun,
+                              ExecRun,
+                              PostRun"/>
+                              
+  <target name="preRun">      
+
+    <startup/>  <!-- might want to move both of these to the very beginning, 
when we want to have control over all msgs -->
+
+    <fail unless="tch.home" message="tch.home must be set."/>
+    <file-exists dir="${tch.baseDir}" file="${test-suite}" message="Your 
supplied test-suite XML testfile was not found.  This is set using 
&quot;-Dtest-suite=filename&quot; and defaults to &quot;test.xml&quot;.  The 
file not found is:  "/>
+
+    <antcall target="print-start-message"/>
+
+    <process-setup/>
+    
+    <!--java 
classname="org.apache.beehive.test.tools.tch.core.configuration.ProcessSetup" 
+     failonerror="true"/-->
+
+    @INIT-ANONYMOUS-PROCESS@
+    @INIT-TEST-VEHICLE@
+
+  </target>
+
+  <target name="InitRun" depends="is-init-mode-enabled">
+    <echo message="Running test suite: ${test-suite} ..."/>
+    <test-suite-call 
+      testfile="${test-suite}" 
+      dir="${tch.baseDir}" 
+      topLevel="true"
+    />
+    <check-references/>
+    <final-validation checkFatalOnly="true"/>
+    
+    <!-- this performs updates to test metadata
+         forces init-mode-only
+         experimental, does not do anything right now
+    -->
+    <update/>
+
+    <!-- There are antcalls since they should only run if
+         tch.internal.validation-failed is not set
+    -->
+    <antcall target="test-runner"/>
+    <antcall target="init-pm"/>
+    
+    <!-- this task needs to set properties, on the current project, 
+         so it cannot run in its own target -->
+    <resolve-process-info-props/>
+    
+    <final-validation/>
+    <message mode="middle"/>
+    <test-list-output/>
+  </target>
+
+  <target name="test-runner" unless="tch.internal.validation-failed">
+    <test-runner/>
+  </target>
+
+  <target name="init-pm" unless="tch.internal.validation-failed">
+    <init-pm/>
+  </target>
+
+  <target name="final-validation" unless="tch.internal.validation-failed">
+    <final-validation/>
+  </target>
+
+  <target name="PostInitRun" unless="tch.internal.init-mode-only-enabled">
+    <init-logger/>
+    <auto-start-processes/>
+  </target>
+
+  <target name="ExitEarly" if="${tch.internal.start-processes-only-prop-name}">
+    <fail message="Exiting after starting processes..."/>
+  </target>
+
+  <target name="PreExecRun" depends="ExitEarly" 
unless="tch.internal.init-mode-only-enabled">
+
+    <prop-val-substitution>
+      <arg name="${env.TCH_HOME}" value="TCH_HOME" env="true"/>
+    </prop-val-substitution>
+
+    @ENV-PROP-MAPPING@
+
+    <!-- Switching from init mode to run mode -->
+    <java classname="org.apache.beehive.test.tools.tch.core.DirtyClass"
+     failonerror="true"/>
+     <test-runner/>
+  </target>
+
+  <target name="ExecRun" unless="tch.internal.init-mode-only-enabled">
+    <test-suite-call testfile="${test-suite}" dir="${tch.baseDir}" 
topLevel="true"/>
+  </target>
+
+  <target name="PostRun" unless="tch.internal.init-mode-only-enabled">
+    <java 
+      classname="org.apache.beehive.test.tools.tch.core.DirtyClass"
+      failonerror="true"
+    />
+  
+    <antcall target="print-end-message"/>
+
+    <shutdown/>
+  </target>
+
+  <target name="print-start-message" 
unless="${tch.internal.log-banners-prop-name}">
+    <loadfile 
+      srcfile="${tch.home}/messages/start.txt" 
+      property="tch.internal.start-message"
+    />
+    <echo message="${tch.internal.start-message}"/>
+  </target>
+
+  <target name="print-end-message" 
unless="${tch.internal.log-banners-prop-name}">
+    <loadfile 
+      srcfile="${tch.home}/messages/end.txt" 
+      property="tch.internal.end-message"
+    />
+    <echo message="${tch.internal.end-message}"/>
+  </target>
+
+  <target name="is-init-mode-enabled">
+    <condition
+      property="tch.internal.init-mode-only-enabled" 
+      value="set"
+    > 
+      <equals 
+        arg1="true" 
+        arg2="${tch.init-mode-only}" 
+        casesensitive="false"
+      />
+    </condition>
+  </target>
+
+</project>
+

Added: incubator/beehive/trunk/controls/test/infra/tch/tch-root.xml
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/controls/test/infra/tch/tch-root.xml        Thu Aug 
 5 11:50:20 2004
@@ -0,0 +1,270 @@
+<project name="tch" default="version">
+
+  <!-- This is the root Tch buildfile.  It performs process configuration, as 
well as
+       calling out to the specified Tch buildfile supplied by the user.
+       See the documentation and the functional description document for more 
details. -->
+
+  <!-- Tch core tasks -->
+
+  <taskdef name="process-setup" 
classname="org.apache.beehive.test.tools.tch.core.stl.ProcessSetupTask"/>
+
+  <taskdef name="test-suite-call" 
classname="org.apache.beehive.test.tools.tch.core.TestSuiteCallTask"/>
+  <taskdef name="test-suite" 
classname="org.apache.beehive.test.tools.tch.core.TestSuiteTask"/>
+  <taskdef name="test-block" 
classname="org.apache.beehive.test.tools.tch.core.TestBlockTask"/>
+  <taskdef name="test" 
classname="org.apache.beehive.test.tools.tch.core.TestTask"/>
+
+  <taskdef name="process" 
classname="org.apache.beehive.test.tools.tch.core.ProcessTask"/>
+  <taskdef name="independent-test-group" 
classname="org.apache.beehive.test.tools.tch.core.IndependentTestGroupTask"/>
+  <taskdef name="configuration-dependency" 
classname="org.apache.beehive.test.tools.tch.core.ConfigurationDependencyTask"/>
+  <taskdef name="jvmarg" 
classname="org.apache.beehive.test.tools.tch.core.JvmargTask"/>
+  <taskdef name="test-parameter" 
classname="org.apache.beehive.test.tools.tch.core.ParamTask"/>
+  <taskdef name="test-unit-modifier" 
classname="org.apache.beehive.test.tools.tch.core.TestUnitModifierTask"/>
+  <taskdef name="test-unit-override" 
classname="org.apache.beehive.test.tools.tch.core.TestUnitOverrideTask"/>
+  <taskdef name="append-to-test-unit" 
classname="org.apache.beehive.test.tools.tch.core.AppendModifierToTestUnitTask"/>
+  <taskdef name="test-name-modifier" 
classname="org.apache.beehive.test.tools.tch.core.TestNameModifierTask"/>
+  <taskdef name="append-to-test-name" 
classname="org.apache.beehive.test.tools.tch.core.AppendModifierToTestNameTask"/>
+  <taskdef name="test-parallel" 
classname="org.apache.beehive.test.tools.tch.core.TestParallelTask"/>
+  <taskdef name="test-sequential" 
classname="org.apache.beehive.test.tools.tch.core.TestSequentialTask"/>
+  <taskdef name="test-vehicle" 
classname="org.apache.beehive.test.tools.tch.core.TestVehicleTask"/>
+  <taskdef name="test-metadata" 
classname="org.apache.beehive.test.tools.tch.core.TestMetadataTask"/>
+
+  <taskdef name="if" 
classname="org.apache.beehive.test.tools.tch.core.IfTask"/>
+  <taskdef name="conditional" 
classname="org.apache.beehive.test.tools.tch.core.IfTask$ConditionTask"/>
+
+  <taskdef name="requires-dependent" 
classname="org.apache.beehive.test.tools.tch.core.RequiresDependentTask"/>
+  <taskdef name="requires" 
classname="org.apache.beehive.test.tools.tch.core.RequiresTask"/>
+  <taskdef name="dependent" 
classname="org.apache.beehive.test.tools.tch.core.DependentTask"/>
+
+  <!-- FIXME we can probably remove the 'utility' task -->
+  <taskdef name="utility" 
classname="org.apache.beehive.test.tools.tch.core.UtilityTask"/>
+  <taskdef 
+    name="javatest-utility" 
+    
classname="org.apache.beehive.test.tools.tch.extension.exectask.javatest.JavatestUtilityTask"/>
+  <taskdef name="parameter" 
+           
classname="org.apache.beehive.test.tools.tch.extension.exectask.javatest.JavatestUtilityTask$ParameterContainer"/>
+
+  <taskdef name="custom-task" 
classname="org.apache.beehive.test.tools.tch.core.AnythingTask"/>
+  <taskdef name="init-hook" 
classname="org.apache.beehive.test.tools.tch.core.InitHookTask"/>
+  <taskdef name="cleanup-hook" 
classname="org.apache.beehive.test.tools.tch.core.CleanupHookTask"/>
+  <taskdef name="prop-val-substitution" 
classname="org.apache.beehive.test.tools.tch.core.PropValueSubstitutionSetupTask"/>
+  <taskdef name="inform" 
classname="org.apache.beehive.test.tools.tch.core.ant.TchLogTask"/>
+
+  
+
+  <taskdef name="startup" 
classname="org.apache.beehive.test.tools.tch.core.StartupTask"/>
+  <taskdef name="file-exists" 
classname="org.apache.beehive.test.tools.tch.util.ant.FileExistsTask"/>
+  <taskdef name="message" 
classname="org.apache.beehive.test.tools.tch.core.MessageTask"/>
+  <taskdef name="test-list-output" 
classname="org.apache.beehive.test.tools.tch.core.TestListOutputTask"/>
+  <taskdef name="update" 
classname="org.apache.beehive.test.tools.tch.extension.update.UpdateManager"/>
+
+  <taskdef name="init-pm" 
+           
classname="org.apache.beehive.test.tools.tch.core.InitProcessManagementTask"/>
+  <taskdef name="resolve-process-info-props" 
+           
classname="org.apache.beehive.test.tools.tch.core.process.ResolveProcessPropertiesTask"/>
+  <taskdef name="check-references" 
+           
classname="org.apache.beehive.test.tools.tch.core.ReferenceCheckTask"/>
+  <taskdef name="final-validation" 
+           
classname="org.apache.beehive.test.tools.tch.core.configuration.FinalValidationCheckTask"/>
+  <taskdef name="auto-start-processes" 
+           
classname="org.apache.beehive.test.tools.tch.core.AutoStartProcessesTask"/>
+  <taskdef name="init-logger" 
+           classname="org.apache.beehive.test.tools.tch.core.InitLoggerTask"/>
+  <taskdef name="test-runner" 
classname="org.apache.beehive.test.tools.tch.core.TestRunner"/>
+  <taskdef name="shutdown" 
+           
classname="org.apache.beehive.test.tools.tch.core.PrepareForShutdown"/>
+
+  <!-- For javatest execution task -->
+  <taskdef name="javatest" 
+           
classname="org.apache.beehive.test.tools.tch.extension.exectask.javatest.JavatestTask"/>
+
+  <taskdef name="junit" 
+           
classname="org.apache.beehive.test.tools.tch.extension.exectask.junit.JunitExecTask"/>
+
+  <!-- For webservertest execution task -->
+  <taskdef name="wstest" 
+           
classname="org.apache.beehive.test.tools.tch.extension.exectask.wstest.WebServerExecTask"/>
+
+  <!-- Tch test (tch testing tch) -->
+  <taskdef name="tch-diff-test" 
classname="org.apache.beehive.test.tools.tch.extension.exectask.self.TchExecTask"/>
+
+  
+
+  <!-- cmdline exec task -->
+  <taskdef name="cmdline" 
+           
classname="org.apache.beehive.test.tools.tch.extension.exectask.cmdline.CommandLineTask"/>
+
+  <!-- For stf execution task 
+  <taskdef name="stf" 
+           
classname="org.apache.beehive.test.tools.tch.extension.exectask.stf.STFExecTask"/>
+  -->
+  <!-- For ant-exec-task execution task -->
+  <taskdef name="ant-task" 
+           
classname="org.apache.beehive.test.tools.tch.extension.exectask.ant.AntExecTask"/>
+
+  <property name="test-suite" value="test.xml"/>
+
+  <property name="base-param" value="set-at-base"/>
+
+  <property 
+    name="tch.internal.start-processes-only-prop-name" 
+    value="tch.start-processes-only"
+  />
+
+  <property 
+    name="tch.internal.log-banners-prop-name" 
+    value="tch.log-banners"
+  />
+
+  <!-- do not change this prefix, we depend on it for dynamic process config 
-->
+  <property environment="env"/>
+  
+
+  <target name="version">
+    <echo message="runtime java.version: ${java.version}"/>
+    <echo message="runtime java.home: ${java.home}"/>
+    <java classname="tch.version"/>
+  </target>
+
+  <target name="dtd">
+     <antstructure output="simple.dtd"/>
+  </target> 
+
+  <target name="run" depends="version,
+                              preRun,
+                              InitRun,
+                              PostInitRun,
+                              PreExecRun,
+                              ExecRun,
+                              PostRun"/>
+                              
+  <target name="preRun">      
+
+    <startup/>  <!-- might want to move both of these to the very beginning, 
when we want to have control over all msgs -->
+
+    <fail unless="tch.home" message="tch.home must be set."/>
+    <file-exists dir="${tch.baseDir}" file="${test-suite}" message="Your 
supplied test-suite XML testfile was not found.  This is set using 
&quot;-Dtest-suite=filename&quot; and defaults to &quot;test.xml&quot;.  The 
file not found is:  "/>
+
+    <antcall target="print-start-message"/>
+
+    <process-setup/>
+    
+    <!--java 
classname="org.apache.beehive.test.tools.tch.core.configuration.ProcessSetup" 
+     failonerror="true"/-->
+
+    
+    
+
+  </target>
+
+  <target name="InitRun" depends="is-init-mode-enabled">
+    <echo message="Running test suite: ${test-suite} ..."/>
+    <test-suite-call 
+      testfile="${test-suite}" 
+      dir="${tch.baseDir}" 
+      topLevel="true"
+    />
+    <check-references/>
+    <final-validation checkFatalOnly="true"/>
+    
+    <!-- this performs updates to test metadata
+         forces init-mode-only
+         experimental, does not do anything right now
+    -->
+    <update/>
+
+    <!-- There are antcalls since they should only run if
+         tch.internal.validation-failed is not set
+    -->
+    <antcall target="test-runner"/>
+    <antcall target="init-pm"/>
+    
+    <!-- this task needs to set properties, on the current project, 
+         so it cannot run in its own target -->
+    <resolve-process-info-props/>
+    
+    <final-validation/>
+    <message mode="middle"/>
+    <test-list-output/>
+  </target>
+
+  <target name="test-runner" unless="tch.internal.validation-failed">
+    <test-runner/>
+  </target>
+
+  <target name="init-pm" unless="tch.internal.validation-failed">
+    <init-pm/>
+  </target>
+
+  <target name="final-validation" unless="tch.internal.validation-failed">
+    <final-validation/>
+  </target>
+
+  <target name="PostInitRun" unless="tch.internal.init-mode-only-enabled">
+    <init-logger/>
+    <auto-start-processes/>
+  </target>
+
+  <target name="ExitEarly" if="${tch.internal.start-processes-only-prop-name}">
+    <fail message="Exiting after starting processes..."/>
+  </target>
+
+  <target name="PreExecRun" depends="ExitEarly" 
unless="tch.internal.init-mode-only-enabled">
+
+    <prop-val-substitution>
+      <arg name="${env.TCH_HOME}" value="TCH_HOME" env="true"/>
+    </prop-val-substitution>
+
+    
+
+    <!-- Switching from init mode to run mode -->
+    <java classname="org.apache.beehive.test.tools.tch.core.DirtyClass"
+     failonerror="true"/>
+     <test-runner/>
+  </target>
+
+  <target name="ExecRun" unless="tch.internal.init-mode-only-enabled">
+    <test-suite-call testfile="${test-suite}" dir="${tch.baseDir}" 
topLevel="true"/>
+  </target>
+
+  <target name="PostRun" unless="tch.internal.init-mode-only-enabled">
+    <java 
+      classname="org.apache.beehive.test.tools.tch.core.DirtyClass"
+      failonerror="true"
+    />
+  
+    <antcall target="print-end-message"/>
+
+    <shutdown/>
+  </target>
+
+  <target name="print-start-message" 
unless="${tch.internal.log-banners-prop-name}">
+    <loadfile 
+      srcfile="${tch.home}/messages/start.txt" 
+      property="tch.internal.start-message"
+    />
+    <echo message="${tch.internal.start-message}"/>
+  </target>
+
+  <target name="print-end-message" 
unless="${tch.internal.log-banners-prop-name}">
+    <loadfile 
+      srcfile="${tch.home}/messages/end.txt" 
+      property="tch.internal.end-message"
+    />
+    <echo message="${tch.internal.end-message}"/>
+  </target>
+
+  <target name="is-init-mode-enabled">
+    <condition
+      property="tch.internal.init-mode-only-enabled" 
+      value="set"
+    > 
+      <equals 
+        arg1="true" 
+        arg2="${tch.init-mode-only}" 
+        casesensitive="false"
+      />
+    </condition>
+  </target>
+
+</project>
+

Added: incubator/beehive/trunk/controls/test/infra/tch/tch-update-conf.xml
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/controls/test/infra/tch/tch-update-conf.xml Thu Aug 
 5 11:50:20 2004
@@ -0,0 +1,39 @@
+<root>
+  <updatable-entity>
+    <entity name="owner" property-name="update.owners"/>
+    <entity name="freq" property-name="update.frequencies"/>
+    <entity name="timeout" property-name="update.timeout"/>
+    <entity name="conversation" property-name="update.conversations"/>
+    <entity name="serverMode" property-name="update.server-modes"/>
+    <entity name="domain" property-name="update.domains"/>
+    <entity name="os" property-name="update.os"/>
+    <entity name="db" property-name="update.dbs"/>
+    <entity name="status" property-name="update.status"/>
+    <entity name="misc" property-name="update.misc"/>
+  </updatable-entity>
+  <update-listener>
+
+    <!-- Default listener -->
+    <!-- (default because it does not specify an exec task -->
+    <listener 
+      name="default" 
+      
classname="org.apache.beehive.test.tools.tch.extension.update.DefaultUpdateListener"
 
+      exectask=""
+    /> 
+
+    <!-- Junit update listener -->
+    <listener 
+      name="junit-updater" 
+      
classname="org.apache.beehive.test.tools.tch.extension.update.junit.JunitUpdateListener"
 
+      exectask="junit"
+    >
+      <configuration>
+        <!-- mapping used if tag name  is different from xml metadata name --> 
+        <!--metadata-mapping tch-val="frequency" junit-val="freq"/-->
+      </configuration>
+    </listener>
+
+  </update-listener>
+</root>
+
+

Added: incubator/beehive/trunk/controls/test/infra/tch/tch.cmd
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/controls/test/infra/tch/tch.cmd     Thu Aug  5 
11:50:20 2004
@@ -0,0 +1,8 @@
[EMAIL PROTECTED] off
+
+if NOT %ERRORLEVEL% == 0 goto antsh
+%~d0%~p0/tchcmd.cmd %*
+
+rem it won't get here unless you use "call" on the .cmd
+:antsh
+sh %~d0%~p0/tch.sh %*

Added: incubator/beehive/trunk/controls/test/infra/tch/tch.sh
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/controls/test/infra/tch/tch.sh      Thu Aug  5 
11:50:20 2004
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+java org.apache.tools.ant.Main -emacs -verbose -f ${TCH_HOME}/build.xml 
-Dtch.home=${TCH_HOME} "$@"

Added: incubator/beehive/trunk/controls/test/infra/tch/tchcmd.cmd
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/controls/test/infra/tch/tchcmd.cmd  Thu Aug  5 
11:50:20 2004
@@ -0,0 +1,5 @@
[EMAIL PROTECTED] off
+
+SETLOCAL
+java org.apache.tools.ant.Main -emacs -verbose -f %TCH_HOME%/build.xml 
-Dtch.home=%TCH_HOME% %*
+

Added: incubator/beehive/trunk/controls/test/infra/tch/tchx.jar
==============================================================================
Binary file. No diff available.

Modified: 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/context/test.xml
==============================================================================
--- 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/context/test.xml
      (original)
+++ 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/context/test.xml
      Thu Aug  5 11:50:20 2004
@@ -8,7 +8,7 @@
             </test-metadata>
             <junit 
testclass="org.apache.beehive.controls.test.java.context.ContextTest" />
         </test>
-        <test name="Test access other service" timeoutSeconds="300" >
+        <test name="Test_access_other_service" timeoutSeconds="300" >
            <test-metadata>
                <freq>daily</freq>
                <status>active</status>

Modified: 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/contextevent/test.xml
==============================================================================
--- 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/contextevent/test.xml
 (original)
+++ 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/contextevent/test.xml
 Thu Aug  5 11:50:20 2004
@@ -1,7 +1,7 @@
 <project name="org.apache.beehive.controls.test.java.context" 
default="org-apache-beehive-controls-test-java-context" >
     <target name="org-apache-beehive-controls-test-java-context" >
         <test-suite testunit="org-apache-beehive-controls-test-java-context" >
-        <test name="Tests Control LifeCycle Event" timeoutSeconds="300" >
+        <test name="Tests_Control_LifeCycle_Event" timeoutSeconds="300" >
             <test-metadata>
                 <freq>daily</freq>
                 <status>active</status>

Modified: 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/event/test.xml
==============================================================================
--- 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/event/test.xml
        (original)
+++ 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/event/test.xml
        Thu Aug  5 11:50:20 2004
@@ -1,14 +1,14 @@
 <project name="org.apache.beehive.controls.test.java.context" 
default="org-apache-beehive-controls-test-java-context" >
     <target name="org-apache-beehive-controls-test-java-context" >
         <test-suite testunit="org-apache-beehive-controls-test-java-context" >
-        <test name="Tests Receiving Events by Listeners" timeoutSeconds="300" >
+        <test name="Tests_Receiving_Events_by_Listeners" timeoutSeconds="300" >
             <test-metadata>
                 <freq>daily</freq>
                 <status>active</status>
             </test-metadata>
             <junit 
testclass="org.apache.beehive.controls.test.java.event.ListenerTest" />
         </test>
-        <test name="Tests Receiving Events by EventHandlers" 
timeoutSeconds="300" >
+        <test name="Tests_Receiving_Events_by_EventHandlers" 
timeoutSeconds="300" >
             <test-metadata>
                 <freq>daily</freq>
                 <status>active</status>

Modified: 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/extension/test.xml
==============================================================================
--- 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/extension/test.xml
    (original)
+++ 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/extension/test.xml
    Thu Aug  5 11:50:20 2004
@@ -1,7 +1,7 @@
 <project name="org.apache.beehive.controls.test.java.context" 
default="org-apache-beehive-controls-test-java-context" >
     <target name="org-apache-beehive-controls-test-java-context" >
         <test-suite testunit="org-apache-beehive-controls-test-java-context" >
-        <test name="Tests Control Inheritance" timeoutSeconds="300" >
+        <test name="Tests_Control_Inheritance" timeoutSeconds="300" >
             <test-metadata>
                 <freq>daily</freq>
                 <status>active</status>

Modified: 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/instantiate/test.xml
==============================================================================
--- 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/instantiate/test.xml
  (original)
+++ 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/instantiate/test.xml
  Thu Aug  5 11:50:20 2004
@@ -1,7 +1,7 @@
 <project name="org.apache.beehive.controls.test.java.instantiate" 
default="org-apache-beehive-controls-test-java-instantiate" >
     <target name="org-apache-beehive-controls-test-java-instantiate" >
         <test-suite 
testunit="org-apache-beehive-controls-test-java-instantiate" >
-        <test name="Test Control Instantiation" timeoutSeconds="300" >
+        <test name="Test_Control_Instantiation" timeoutSeconds="300" >
             <test-metadata>
                 <freq>daily</freq>
                 <status>active</status>

Modified: 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/property/test.xml
==============================================================================
--- 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/property/test.xml
     (original)
+++ 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/property/test.xml
     Thu Aug  5 11:50:20 2004
@@ -1,28 +1,28 @@
 <project name="org.apache.beehive.controls.test.java.property" 
default="org-apache-beehive-controls-test-java-property" >
     <target name="org-apache-beehive-controls-test-java-property" >
         <test-suite testunit="org-apache-beehive-controls-test-java-property" >
-        <test name="Test Controls Property" timeoutSeconds="300" >
+        <test name="Test_Controls_Property" timeoutSeconds="300" >
             <test-metadata>
                 <freq>daily</freq>
                 <status>active</status>
             </test-metadata>
             <junit 
testclass="org.apache.beehive.controls.test.java.property.PropTest" />
         </test>
-        <test name="Test Accessing Control Property by Getter" 
timeoutSeconds="300" >
+        <test name="Test_Accessing_Control_Property_by_Getter" 
timeoutSeconds="300" >
             <test-metadata>
                 <freq>daily</freq>
                 <status>active</status>
             </test-metadata>
             <junit 
testclass="org.apache.beehive.controls.test.java.property.ClientAccessTest" />
         </test>
-        <test name="Test Accessing Control Property by Control Context" 
timeoutSeconds="300" >
+        <test name="Test_Accessing_Control_Property_by_Control_Context" 
timeoutSeconds="300" >
             <test-metadata>
                 <freq>daily</freq>
                 <status>active</status>
             </test-metadata>
             <junit 
testclass="org.apache.beehive.controls.test.java.property.ImplAccessTest" />
         </test>
-        <test name="Test Resetting Control Property by setter" 
timeoutSeconds="300" >
+        <test name="Test_Resetting_Control_Property_by_setter" 
timeoutSeconds="300" >
             <test-metadata>
                 <freq>daily</freq>
                 <status>active</status>

Modified: 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/root.xml
==============================================================================
--- 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/root.xml
      (original)
+++ 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/root.xml
      Thu Aug  5 11:50:20 2004
@@ -2,8 +2,6 @@
     <target name="na" >
         <test-suite testunit="na" >
               <test-suite-call testfile="context\test.xml" />
-        </test-suite>
-        <test-suite testunit="na" >
               <test-suite-call testfile="instantiate\test.xml" />
         </test-suite>
     </target>

Reply via email to