From 3b10b7f44b8fcc8338c5638e6a8a77eb4f17b121 Mon Sep 17 00:00:00 2001
From: gary_williams <gary_williams@localhost>
Date: Tue, 22 May 2007 08:24:10 +0000
Subject: [PATCH] Implement Issue 1498 Test report should show build number and date

---
 opends/tests/functional-tests/shared/python/common.py            |   26 ++
 opends/tests/functional-tests/shared/functions/baselib.xml       |  133 ++++++++++++++
 opends/tests/functional-tests/shared/functions/environment.xml   |   46 ++++
 opends/tests/functional-tests/shared/functions/dsadm.xml         |   26 ++
 opends/tests/functional-tests/shared/functions/stafcmd.xml       |  124 +++++++++++++
 opends/tests/functional-tests/shared/xsl/gen-alltests-report.xsl |   71 +++++--
 opends/tests/functional-tests/testcases/runTestJob.xml           |  101 ++++++++++
 7 files changed, 493 insertions(+), 34 deletions(-)

diff --git a/opends/tests/functional-tests/shared/functions/baselib.xml b/opends/tests/functional-tests/shared/functions/baselib.xml
new file mode 100755
index 0000000..fbf9ca4
--- /dev/null
+++ b/opends/tests/functional-tests/shared/functions/baselib.xml
@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE stax SYSTEM "stax.dtd">
+<!--
+ ! CDDL HEADER START
+ !
+ ! The contents of this file are subject to the terms of the
+ ! Common Development and Distribution License, Version 1.0 only
+ ! (the "License").  You may not use this file except in compliance
+ ! with the License.
+ !
+ ! You can obtain a copy of the license at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ ! See the License for the specific language governing permissions
+ ! and limitations under the License.
+ !
+ ! When distributing Covered Code, include this CDDL HEADER in each
+ ! file and include the License file at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
+ ! add the following below this CDDL HEADER, with the fields enclosed
+ ! by brackets "[]" replaced with your own identifying information:
+ !      Portions Copyright [yyyy] [name of copyright owner]
+ !
+ ! CDDL HEADER END
+ !
+ !      Portions Copyright 2007 Sun Microsystems, Inc.
+ ! -->
+<stax>
+        
+  <function name="GetDirectoryServerVars">
+    <function-prolog>
+      This function gets variables associated with the Directory Server
+    </function-prolog>
+    <function-map-args>
+      <function-arg-def name="location" type="optional" default="'%s' % STAXServiceMachine">
+        <function-arg-description>
+          Location of target host
+        </function-arg-description>
+        <function-arg-property name="type" value="hostname"/>
+      </function-arg-def>
+     <function-arg-def name="dsPath" type="optional" default="'%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)">
+        <function-arg-description>
+          Pathname to installation root
+        </function-arg-description>
+        <function-arg-property name="type" value="hostname"/>
+      </function-arg-def>
+    </function-map-args>
+
+    <sequence>
+
+      <script>
+        mylocation=location
+        mypath=dsPath
+     
+        DSInfo=directory_server_information()
+      </script>
+
+      <message>'Get Information about server %s' % dsPath</message>
+
+      <!-- Obtain the variables for the system from start-ds -->          
+      <call function="'StartDsWithScript'">
+        { 'location'  : mylocation,
+          'dsPath'    : mypath,
+          'dsSystemInfo' : 'true' }
+      </call>
+
+      <script>
+        DSInfo.SystemList=STAXResult[1].split('\n')
+
+        DSInfo.ServerDict['server version']= \
+          DSInfo.getServerVersion(DSInfo.SystemList[0])
+                  
+        for DSInfo.line in DSInfo.SystemList:
+          DSInfo.key=DSInfo.line[0:DSInfo.line.find(':')].strip()
+          DSInfo.value= \
+            DSInfo.line[DSInfo.line.find(':')+1:len(DSInfo.line)].strip()
+          DSInfo.SystemDict[DSInfo.key]=DSInfo.value
+
+        DSInfo.ServerDict['server buildid']= \
+          DSInfo.getServerValueFromKey('Build ID',DSInfo.SystemDict)
+        DSInfo.ServerDict['java version']= \
+          DSInfo.getServerValueFromKey('Java Version',DSInfo.SystemDict)
+        DSInfo.ServerDict['java vendor']= \
+          DSInfo.getServerValueFromKey('Java Vendor',DSInfo.SystemDict)
+        DSInfo.ServerDict['jvm version']= \
+          DSInfo.getServerValueFromKey('JVM Version',DSInfo.SystemDict)
+        DSInfo.ServerDict['jvm vendor']= \
+          DSInfo.getServerValueFromKey('JVM Vendor',DSInfo.SystemDict)
+        DSInfo.ServerDict['system os']= \
+          DSInfo.getServerValueFromKey('Operating System',DSInfo.SystemDict)
+        DSInfo.ServerDict['system name']= \
+          DSInfo.getServerValueFromKey('System Name',DSInfo.SystemDict)
+        
+        DSInfoServersDict[dsPath]=DSInfo.ServerDict
+      </script>
+
+      <!-- Obtain the secret variables for the system from start-ds -->
+      <call function="'StartDsWithScript'">
+        { 'location'    : mylocation,
+          'dsPath'      : mypath,
+          'dsBuildInfo' : 'true' }
+      </call>
+
+      <script>
+        DSInfo.SystemList=STAXResult[1].split('\n')
+                  
+        for DSInfo.line in DSInfo.SystemList:
+          DSInfo.key=DSInfo.line[0:DSInfo.line.find(':')].strip()
+          DSInfo.value= \
+            DSInfo.line[DSInfo.line.find(':')+1:len(DSInfo.line)].strip()
+          DSInfo.SystemDict[DSInfo.key]=DSInfo.value
+
+        DSInfo.ServerDict['svn revision']= \
+          DSInfo.getServerValueFromKey('Revision Number',DSInfo.SystemDict)        
+        DSInfo.ServerDict['major version']= \
+          DSInfo.getServerValueFromKey('Major Version',DSInfo.SystemDict)
+        DSInfo.ServerDict['minor version']= \
+          DSInfo.getServerValueFromKey('Minor Version',DSInfo.SystemDict)
+        DSInfo.ServerDict['point version']= \
+          DSInfo.getServerValueFromKey('Point Version',DSInfo.SystemDict)
+        DSInfo.ServerDict['version qualifier']= \
+          DSInfo.getServerValueFromKey('Version Qualifier',DSInfo.SystemDict)
+        DSInfo.ServerDict['fix ids']= \
+          DSInfo.getServerValueFromKey('Fix IDs',DSInfo.SystemDict)
+        DSInfo.ServerDict['debug build']= \
+          DSInfo.getServerValueFromKey('Debug Build',DSInfo.SystemDict)            
+      </script>
+                          
+    </sequence>
+    
+  </function>
+  
+</stax>
diff --git a/opends/tests/functional-tests/shared/functions/dsadm.xml b/opends/tests/functional-tests/shared/functions/dsadm.xml
index 6b70a8a..b1d635b 100755
--- a/opends/tests/functional-tests/shared/functions/dsadm.xml
+++ b/opends/tests/functional-tests/shared/functions/dsadm.xml
@@ -26,7 +26,7 @@
  !      Portions Copyright 2006-2007 Sun Microsystems, Inc.
  ! -->
 <stax>
-
+  
   <!-- This function configures DS using the configure-ds script -->
   <function name="ConfigureDsWithScript">
     <function-prolog>
@@ -189,7 +189,13 @@
           Help option
         </function-arg-description>
         <function-arg-property name="type" value="option"/>
-      </function-arg-def>          
+      </function-arg-def>
+      <function-arg-def name="dsBuildInfo" type="optional">
+        <function-arg-description>
+          Directory server build information
+        </function-arg-description>
+        <function-arg-property name="type" value="option"/>
+      </function-arg-def>                
     </function-map-args>
     
     <sequence>
@@ -214,6 +220,9 @@
         
         if dsHelp:
           STAFCmdParamsList.append('-H')
+          
+        if dsBuildInfo:
+          STAFCmdParamsList.append('-F')
  
         STAFCmdParams=' '.join(STAFCmdParamsList)
       </script>
@@ -234,12 +243,19 @@
         <stderr mode="'stdout'"/>
         <returnstdout/>
       </process>
+
+      <script>
+        startRC=RC
+        startResult=STAXResult
+      </script>
       
       <call function="'checkRC'">
-          { 'returncode' : RC ,
-            'result'     : STAXResult }
+          { 'returncode' : startRC ,
+            'result'     : startResult }
       </call>
-      
+     
+      <return>startResult[0]</return>
+          
     </sequence>
     
   </function>
diff --git a/opends/tests/functional-tests/shared/functions/environment.xml b/opends/tests/functional-tests/shared/functions/environment.xml
index cd480cb..0ed4b94 100755
--- a/opends/tests/functional-tests/shared/functions/environment.xml
+++ b/opends/tests/functional-tests/shared/functions/environment.xml
@@ -36,6 +36,9 @@
 		
       <!--- Import all the shared xml libraries -->
       <import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
+        file="'%s/baselib.xml' % (TESTS_FUNCTIONS_DIR)" />
+              
+      <import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
         file="'%s/utils.xml' % (TESTS_FUNCTIONS_DIR)" />
 
       <import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
@@ -139,6 +142,7 @@
       <!-- Initialize any global variables -->
       <script>
         CurrentTestPath={}
+        DSInfoServersDict={}
         True = 1
         False = 0		  		  
       </script>
@@ -147,8 +151,45 @@
 	</sequence> 	  
   </function>
 
+  <function name="GetDirectoryServerInformation">
+    <function-prolog>
+      This function gets information about the Directory Server  
+    </function-prolog>
+    
+    <sequence>
+    
+      <!-- Install DS into temporary folder -->
+      <message>
+        'Extract temporary DS zip archive to %s.' % (TMPDIR)
+      </message>
+      <call function="'unZipFile'">
+        { 'location' : STAF_LOCAL_HOSTNAME, 
+          'zipfile'  : '%s/%s' % (ZIPPATH,ZIPNAME), 
+          'unzipdir' : '%s' % TMPDIR }
+      </call>
+                
+      <!-- Get Directory Server Variables -->
+      <call function="'GetDirectoryServerVars'">
+        { 'location'  : STAF_LOCAL_HOSTNAME,
+          'dsPath'    : '%s/%s' % (TMPDIR,OPENDSNAME)  }
+      </call>
 
-
+      <!-- Set Directory Server Variables -->
+      <call function="'SetVar'">
+        { 'location'  : STAF_LOCAL_HOSTNAME,
+          'type'      : 'shared',
+          'variable'  : 'ServerInfo=%s' % DSInfoServersDict }
+      </call>
+      
+      <!-- Uninstall DS from temporary folder -->
+      <message>'Remove temporary DS zip archive'</message>
+      <call function="'deleteFolder'">
+        { 'location'   : STAF_LOCAL_HOSTNAME ,
+          'foldername' : '%s/%s' % (TMPDIR,OPENDSNAME) }
+      </call> 
+      
+    </sequence>
+  </function>
 	
 	
   <function name="loadEnvironment">
@@ -173,7 +214,8 @@
       <call function="'prepareInstanceCreation'"></call>						  		
 -->					
 		
-						
+      <call function="'GetDirectoryServerInformation'"/>
+      						
       <call function="'checkRC'">
         { 'returncode' : RC ,
           'result'     : STAXResult }
diff --git a/opends/tests/functional-tests/shared/functions/stafcmd.xml b/opends/tests/functional-tests/shared/functions/stafcmd.xml
index a24841a..1874910 100755
--- a/opends/tests/functional-tests/shared/functions/stafcmd.xml
+++ b/opends/tests/functional-tests/shared/functions/stafcmd.xml
@@ -402,7 +402,6 @@
 
   </function>  
 
-
   <function name="queryLogs">
 
     <function-prolog>
@@ -448,4 +447,127 @@
 
   </function>
 
+  <function name="SetVar">
+
+    <function-prolog>
+        Sets a variable in the staf var service
+    </function-prolog>
+
+    <function-map-args>
+      <function-arg-def name="location" type="optional" default="'%s' % STAXServiceMachine">
+        <function-arg-description>
+          Location of target host
+        </function-arg-description>
+        <function-arg-property name="type" value="hostname"/>
+      </function-arg-def>
+      <function-arg-def name="type" type="required">
+        <function-arg-description>
+          Name of file to be deleted
+        </function-arg-description>
+        <function-arg-property name="type" value="variable"/>
+      </function-arg-def>       
+      <function-arg-def name="variable" type="required">
+        <function-arg-description>
+          Name of file to be deleted
+        </function-arg-description>
+        <function-arg-property name="type" value="variable"/>
+      </function-arg-def> 
+    </function-map-args>
+
+    <sequence>
+
+      <message>'Set %s Variable %s' % (type,variable)</message>
+            
+      <stafcmd name="'STAF Command: Set Var.'">
+        <location>'%s' % location</location>
+        <service>'var'</service>
+        <request>'SET %s VAR %s' % (type,variable)</request>
+      </stafcmd>
+      
+    </sequence>
+
+  </function>
+
+  <function name="GetVar">
+
+    <function-prolog>
+        Gets a variable in the staf var service
+    </function-prolog>
+
+    <function-map-args>
+      <function-arg-def name="location" type="optional" default="'%s' % STAXServiceMachine">
+        <function-arg-description>
+          Location of target host
+        </function-arg-description>
+        <function-arg-property name="type" value="hostname"/>
+      </function-arg-def>
+      <function-arg-def name="type" type="required">
+        <function-arg-description>
+          Name of file to be deleted
+        </function-arg-description>
+        <function-arg-property name="type" value="variable"/>
+      </function-arg-def>       
+      <function-arg-def name="variable" type="required">
+        <function-arg-description>
+          Name of file to be deleted
+        </function-arg-description>
+        <function-arg-property name="type" value="variable"/>
+      </function-arg-def> 
+    </function-map-args>
+
+    <sequence>
+
+      <message>'Get %s Variable %s' % (type,variable)</message>
+            
+      <stafcmd name="'STAF Command: Get Var.'">
+        <location>'%s' % location</location>
+        <service>'var'</service>
+        <request>'GET %s VAR %s' % (type,variable)</request>
+      </stafcmd>
+      
+    </sequence>
+
+  </function>
+
+  <function name="ResolveVar">
+
+    <function-prolog>
+        Resolve a variable in the staf var service
+    </function-prolog>
+
+    <function-map-args>
+      <function-arg-def name="location" type="optional" default="'%s' % STAXServiceMachine">
+        <function-arg-description>
+          Location of target host
+        </function-arg-description>
+        <function-arg-property name="type" value="hostname"/>
+      </function-arg-def>
+      <function-arg-def name="type" type="required">
+        <function-arg-description>
+          Name of file to be deleted
+        </function-arg-description>
+        <function-arg-property name="type" value="variable"/>
+      </function-arg-def>       
+      <function-arg-def name="string" type="required">
+        <function-arg-description>
+          Name of file to be deleted
+        </function-arg-description>
+        <function-arg-property name="type" value="string"/>
+      </function-arg-def> 
+    </function-map-args>
+
+    <sequence>
+
+      <message>'Resolve %s Variable %s' % (type,string)</message>
+            
+      <stafcmd name="'STAF Command: Resolve Var.'">
+        <location>'%s' % location</location>
+        <service>'var'</service>
+        <request>'RESOLVE %s STRING {%s}' % (type,string)</request>
+      </stafcmd>
+
+    </sequence>
+
+  </function>
+      
 </stax>
diff --git a/opends/tests/functional-tests/shared/python/common.py b/opends/tests/functional-tests/shared/python/common.py
index 389ea6e..8101de2 100644
--- a/opends/tests/functional-tests/shared/python/common.py
+++ b/opends/tests/functional-tests/shared/python/common.py
@@ -29,7 +29,7 @@
 # $Source$
 
 # public symbols
-__all__ = [ "format_testcase" ]
+__all__ = [ "format_testcase", "directory_server_information" ]
 
 class format_testcase:
   "Format the Test name objects"
@@ -46,3 +46,27 @@
     self.name=string.strip()
     self.name=self.name.replace(' ','-')
     return '%s' % self.name
+
+class directory_server_information:
+  "Container for Information about Directory Servers"
+  def __init__(self):
+    self.line=''
+    self.key=''
+    self.value=''
+    self.VersionList=[]
+    self.SystemList=[]
+    self.ServerDict={}
+    self.SystemDict={}
+
+  def getServerVersion(self,string):
+    return string.replace("OpenDS Directory Server ","")
+
+  def getServerBuildId(self,string):
+    return string.replace("Build ","")
+
+  def getServerValueFromString(self,string):
+    return string[string.find(':') +1:len(string)].strip()
+
+  def getServerValueFromKey(self,string,result):
+    return result[string]
+
diff --git a/opends/tests/functional-tests/shared/xsl/gen-alltests-report.xsl b/opends/tests/functional-tests/shared/xsl/gen-alltests-report.xsl
index 127884d..69901db 100644
--- a/opends/tests/functional-tests/shared/xsl/gen-alltests-report.xsl
+++ b/opends/tests/functional-tests/shared/xsl/gen-alltests-report.xsl
@@ -4,6 +4,17 @@
 
 <xsl:template match="/">
 
+  <!--- Test Report Header Variables -->
+  <xsl:variable name="identification"     select="qa/functional-tests/identification"/>
+  <xsl:variable name="version"  select="$identification/version"/>
+  <xsl:variable name="buildid"  select="$identification/buildid"/>
+  <xsl:variable name="revision"  select="$identification/revision"/>
+  <xsl:variable name="testcase"     select="qa/functional-tests/results/testgroup/testsuite/testcase"/>
+  <xsl:variable name="total-tests"  select="count($testcase)"/>
+  <xsl:variable name="pass-tests"   select="count($testcase[@result='pass'])"/>
+  <xsl:variable name="fail-tests"   select="count($testcase[@result='fail'])"/>
+  <xsl:variable name="inconc-tests" select="count($testcase[@result='unknown'])"/>
+
   <xsl:element name="html">
   
   <xsl:element name="head">
@@ -19,28 +30,20 @@
   <link rel="stylesheet" href="https://opends.dev.java.net/public/css/opends.css" type="text/css" />
 
     <xsl:element name="title">
-      <xsl:value-of select="'Test Report'"/>
+      <xsl:value-of select="concat('Test Report for OpenDS ',$version)"/>
     </xsl:element>
   
-    </xsl:element>
+  </xsl:element>
   
   <table class="tertmasttable" width="100%" cellspacing="0">
     <tbody>
       <tr>
-        <td><div class="collectionheader">Test Report</div></td>
+        <td><div class="collectionheader"><xsl:value-of select="concat('Test Report for OpenDS ',$version)"/></div></td>
         <td width="10%"><a href="https://opends.dev.java.net/"><img src="https://opends.dev.java.net/public/images/opends_logo_sm.png" alt="OpenDS Logo" width="104" height="33" border="0" align="middle" /></a> </td>
       </tr>
     </tbody>
   </table>
   
-  <!--- Test Report Header Variables -->
-  <xsl:variable name="identification"     select="qa/functional-tests/identification"/>
-  <xsl:variable name="testcase"     select="qa/functional-tests/results/testgroup/testsuite/testcase"/>
-  <xsl:variable name="total-tests"  select="count($testcase)"/>
-  <xsl:variable name="pass-tests"   select="count($testcase[@result='pass'])"/>
-  <xsl:variable name="fail-tests"   select="count($testcase[@result='fail'])"/>
-  <xsl:variable name="inconc-tests" select="count($testcase[@result='unknown'])"/>
-
   <!-- Overall Test Percentage -->
   <xsl:variable name="percent-tests">
     <xsl:choose>
@@ -117,6 +120,22 @@
           <xsl:value-of select="'center'"/>
         </xsl:attribute>
         <xsl:element name="b">
+          <xsl:value-of select="'Build'"/>
+        </xsl:element>
+      </xsl:element>
+      <xsl:element name="td">
+        <xsl:attribute name="align">
+          <xsl:value-of select="'center'"/>
+        </xsl:attribute>
+        <xsl:element name="b">
+          <xsl:value-of select="'Revision'"/>
+        </xsl:element>
+      </xsl:element>          
+      <xsl:element name="td">
+        <xsl:attribute name="align">
+          <xsl:value-of select="'center'"/>
+        </xsl:attribute>
+        <xsl:element name="b">
           <xsl:value-of select="'Platform'"/>
         </xsl:element>
       </xsl:element>
@@ -125,7 +144,7 @@
           <xsl:value-of select="'center'"/>
         </xsl:attribute>
         <xsl:element name="b">
-          <xsl:value-of select="'Hardware'"/>
+          <xsl:value-of select="'JVM Version'"/>
         </xsl:element>
       </xsl:element>
       <xsl:element name="td">
@@ -133,9 +152,9 @@
           <xsl:value-of select="'center'"/>
         </xsl:attribute>
         <xsl:element name="b">
-          <xsl:value-of select="'Java Version'"/>
+          <xsl:value-of select="'JVM Vendor'"/>
         </xsl:element>
-      </xsl:element>
+      </xsl:element>      
       <xsl:element name="td">
         <xsl:attribute name="align">
           <xsl:value-of select="'center'"/>
@@ -175,6 +194,22 @@
           <xsl:value-of select="'center'"/>
         </xsl:attribute>
         <xsl:element name="b">
+          <xsl:value-of select="$identification/buildid"/>
+        </xsl:element>
+      </xsl:element>
+      <xsl:element name="td">
+        <xsl:attribute name="align">
+          <xsl:value-of select="'center'"/>
+        </xsl:attribute>
+        <xsl:element name="b">
+          <xsl:value-of select="$identification/revision"/>
+        </xsl:element>
+      </xsl:element>          
+      <xsl:element name="td">
+        <xsl:attribute name="align">
+          <xsl:value-of select="'center'"/>
+        </xsl:attribute>
+        <xsl:element name="b">
           <xsl:value-of select="$identification/platform"/>
         </xsl:element>
       </xsl:element>
@@ -183,7 +218,7 @@
           <xsl:value-of select="'center'"/>
         </xsl:attribute>
         <xsl:element name="b">
-          <xsl:value-of select="$identification/hardware"/>
+          <xsl:value-of select="$identification/jvm-version"/>
         </xsl:element>
       </xsl:element>
       <xsl:element name="td">
@@ -191,9 +226,9 @@
           <xsl:value-of select="'center'"/>
         </xsl:attribute>
         <xsl:element name="b">
-          <xsl:value-of select="$identification/jvm"/>
+          <xsl:value-of select="$identification/jvm-vendor"/>
         </xsl:element>
-      </xsl:element>
+      </xsl:element>      
       <xsl:element name="td">
         <xsl:attribute name="align">
           <xsl:value-of select="'center'"/>
@@ -359,7 +394,7 @@
     </xsl:element>
 
   </xsl:element>
-  
+      
   </xsl:element>
 
 </xsl:template>
diff --git a/opends/tests/functional-tests/testcases/runTestJob.xml b/opends/tests/functional-tests/testcases/runTestJob.xml
index 940a49b..3899b66 100644
--- a/opends/tests/functional-tests/testcases/runTestJob.xml
+++ b/opends/tests/functional-tests/testcases/runTestJob.xml
@@ -59,6 +59,84 @@
       </else>
       </if>
 
+      <!--- Import required shared xml libraries -->
+      <import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
+        file="'%s/stafcmd.xml' % (TESTS_FUNCTIONS_DIR)" />
+        
+      <!-- Get Directory Server Variables -->
+      <call function="'GetVar'">
+        { 'location'  : STAF_REMOTE_HOSTNAME,
+          'type'      : 'shared',
+          'variable'  : 'ServerInfo' }
+      </call>
+
+      <if expr="RC != 0">
+        <script>
+          STAFResult='{}'
+        </script>
+      </if>
+      
+      <!-- Build the Servers Information Dictionary -->
+      <script> 
+                    
+        ServersInfoDict=eval(STAFResult)
+
+        ServerVersion='unknown'
+        ServerBuildId='unknown'
+        ServerJavaVersion='unknown'
+        ServerJavaVendor='unknown'
+        ServerJVMVersion='unknown'
+        ServerJVMVendor='unknown'
+        ServerSystemOS='unknown'
+        ServerSystemName='unknown'
+        ServerSvnRevision='unknown'
+                  
+        if ServersInfoDict.has_key('%s/%s' % (TMPDIR,OPENDSNAME)):       
+          ServerInfoDict=ServersInfoDict['%s/%s' % (TMPDIR,OPENDSNAME)]
+          
+          ServerInfoKey='server version'
+          if ServerInfoDict.has_key(ServerInfoKey):
+            ServerVersion=ServerInfoDict[ServerInfoKey]  
+    
+          ServerInfoKey='server buildid'        
+          if ServerInfoDict.has_key(ServerInfoKey):
+            ServerBuildId=ServerInfoDict[ServerInfoKey]  
+
+          ServerInfoKey='java version'    
+          if ServerInfoDict.has_key(ServerInfoKey):
+            ServerJavaVersion=ServerInfoDict[ServerInfoKey]  
+
+          ServerInfoKey='java vendor'    
+          if ServerInfoDict.has_key(ServerInfoKey):
+            ServerJavaVendor=ServerInfoDict[ServerInfoKey]  
+
+          ServerInfoKey='jvm version'    
+          if ServerInfoDict.has_key(ServerInfoKey):
+            ServerJVMVersion=ServerInfoDict[ServerInfoKey]  
+
+          ServerInfoKey='jvm vendor'    
+          if ServerInfoDict.has_key(ServerInfoKey):
+            ServerJVMVendor=ServerInfoDict[ServerInfoKey]  
+
+          ServerInfoKey='system os'    
+          if ServerInfoDict.has_key(ServerInfoKey):
+            ServerSystemOS=ServerInfoDict[ServerInfoKey]  
+
+          ServerInfoKey='system name'    
+          if ServerInfoDict.has_key(ServerInfoKey):
+            ServerSystemName=ServerInfoDict[ServerInfoKey]  
+
+          ServerInfoKey='svn revision'    
+          if ServerInfoDict.has_key(ServerInfoKey):
+            ServerSvnRevision=ServerInfoDict[ServerInfoKey]  
+                                                                                                
+        else:
+          ServerInfoDict='No key found (%s/%s)' % (TMPDIR,OPENDSNAME)
+                    
+      </script>
+      
+      <message>'Server= %s' % ServerInfoDict </message>     
+                        
       <stafcmd name="'STAF Command: Log Query All'">
         <location>'%s' % STAF_LOCAL_HOSTNAME </location>
         <service>'log'</service>
@@ -219,15 +297,24 @@
         xmlfh.write('&lt;qa&gt;\n')
         xmlfh.write('  &lt;functional-tests&gt;\n')
         xmlfh.write('    &lt;identification&gt;\n')
+        xmlfh.write('      &lt;version&gt;\n')
+        xmlfh.write('        %s\n' % ServerVersion)
+        xmlfh.write('      &lt;/version&gt;\n')    
+        xmlfh.write('      &lt;buildid&gt;\n')
+        xmlfh.write('        %s\n' % ServerBuildId)
+        xmlfh.write('      &lt;/buildid&gt;\n')
+        xmlfh.write('      &lt;revision&gt;\n')
+        xmlfh.write('        %s\n' % ServerSvnRevision)
+        xmlfh.write('      &lt;/revision&gt;\n')                 
         xmlfh.write('      &lt;platform&gt;\n')
-        xmlfh.write('        %s\n' % TEST_OS_STRING)
+        xmlfh.write('        %s\n' % ServerSystemOS)
         xmlfh.write('      &lt;/platform&gt;\n')
-        xmlfh.write('      &lt;hardware&gt;\n')
-        xmlfh.write('        %s\n' % TEST_HW_STRING)
-        xmlfh.write('      &lt;/hardware&gt;\n')
-        xmlfh.write('      &lt;jvm&gt;\n')
-        xmlfh.write('        %s\n' % TEST_JVM_STRING)
-        xmlfh.write('      &lt;/jvm&gt;\n')
+        xmlfh.write('      &lt;jvm-version&gt;\n')
+        xmlfh.write('        %s\n' % ServerJVMVersion)
+        xmlfh.write('      &lt;/jvm-version&gt;\n')
+        xmlfh.write('      &lt;jvm-vendor&gt;\n')
+        xmlfh.write('        %s\n' % ServerJVMVendor)
+        xmlfh.write('      &lt;/jvm-vendor&gt;\n')        
         xmlfh.write('    &lt;/identification&gt;\n')
         xmlfh.write('    &lt;results&gt;\n')
       </script>

--
Gitblit v1.10.0