From 1006a6e897f2959826e6ab6d24761c99e211fff6 Mon Sep 17 00:00:00 2001
From: gary_williams <gary_williams@localhost>
Date: Mon, 22 Sep 2008 16:18:20 +0000
Subject: [PATCH] Issue 2752: ensure well formed XML in test reports (part 1)
---
opendj-sdk/opends/tests/staf-tests/functional-tests/shared/xsl/gen-groups-report.xsl | 2
opendj-sdk/opends/tests/staf-tests/functional-tests/shared/xsl/gen-suites-report.xsl | 2
opendj-sdk/opends/tests/staf-tests/shared/python/common.py | 30 ++-
opendj-sdk/opends/tests/staf-tests/shared/tests/runTestJob.xml | 493 ++++++++++++++++++++++++------------------------------
4 files changed, 242 insertions(+), 285 deletions(-)
diff --git a/opendj-sdk/opends/tests/staf-tests/functional-tests/shared/xsl/gen-groups-report.xsl b/opendj-sdk/opends/tests/staf-tests/functional-tests/shared/xsl/gen-groups-report.xsl
index 2a268b2..065d258 100644
--- a/opendj-sdk/opends/tests/staf-tests/functional-tests/shared/xsl/gen-groups-report.xsl
+++ b/opendj-sdk/opends/tests/staf-tests/functional-tests/shared/xsl/gen-groups-report.xsl
@@ -43,7 +43,7 @@
<xsl:variable name="testware" select="$id/testware"/>
<xsl:variable name="mailto" select="normalize-space($id/mailto)"/>
<xsl:variable name="tests-dir" select="normalize-space($id/tests-dir)"/>
- <xsl:variable name="url" select="normalize-space($sut/tests-url)"/>
+ <xsl:variable name="url" select="normalize-space($id/tests-url)"/>
<xsl:variable name="hostname" select="normalize-space($sut/hostname)"/>
<xsl:variable name="version" select="normalize-space($sut/version)"/>
<xsl:variable name="buildid" select="normalize-space($sut/buildid)"/>
diff --git a/opendj-sdk/opends/tests/staf-tests/functional-tests/shared/xsl/gen-suites-report.xsl b/opendj-sdk/opends/tests/staf-tests/functional-tests/shared/xsl/gen-suites-report.xsl
index c2e8c27..42dcef0 100644
--- a/opendj-sdk/opends/tests/staf-tests/functional-tests/shared/xsl/gen-suites-report.xsl
+++ b/opendj-sdk/opends/tests/staf-tests/functional-tests/shared/xsl/gen-suites-report.xsl
@@ -45,7 +45,7 @@
<xsl:variable name="sut" select="$id/sut"/>
<xsl:variable name="mailto" select="normalize-space($id/mailto)"/>
<xsl:variable name="tests-dir" select="normalize-space($id/tests-dir)"/>
- <xsl:variable name="url" select="normalize-space($sut/tests-url)"/>
+ <xsl:variable name="url" select="normalize-space($id/tests-url)"/>
<xsl:variable name="hostname" select="normalize-space($sut/hostname)"/>
<xsl:variable name="version" select="normalize-space($sut/version)"/>
<xsl:variable name="buildid" select="normalize-space($sut/buildid)"/>
diff --git a/opendj-sdk/opends/tests/staf-tests/shared/python/common.py b/opendj-sdk/opends/tests/staf-tests/shared/python/common.py
index 7d7da0b..094d99a 100644
--- a/opendj-sdk/opends/tests/staf-tests/shared/python/common.py
+++ b/opendj-sdk/opends/tests/staf-tests/shared/python/common.py
@@ -266,24 +266,36 @@
return sfx
class staf_service:
-
+ 'Container to hold staf service instance objects'
def __init__(self,host,name):
from com.ibm.staf import STAFHandle
from com.ibm.staf import STAFResult
from com.ibm.staf import STAFMarshallingContext
- __handle = STAFHandle("varHandle")
+ self.name=name
+ self.library='Unknown'
+ self.executable='Unknown'
+ self.options='Unknown'
+ self.params='Unknown'
+
+ try:
+ __handle = STAFHandle("varHandle")
+ except STAFException, e:
+ pass
__cmd = 'QUERY SERVICE %s' % name
__res = __handle.submit2(host, "SERVICE", __cmd)
- __context = STAFMarshallingContext.unmarshall(__res.result)
- __entryMap = __context.getRootObject()
- self.name=__entryMap['name']
- self.library=__entryMap['library']
- self.executable=__entryMap['executable']
- self.options=__entryMap['options']
- self.params=__entryMap['parameters']
+ if (__res.rc == 0):
+
+ __context = STAFMarshallingContext.unmarshall(__res.result)
+ __entryMap = __context.getRootObject()
+
+ self.name=__entryMap['name']
+ self.library=__entryMap['library']
+ self.executable=__entryMap['executable']
+ self.options=__entryMap['options']
+ self.params=__entryMap['parameters']
def get_library(self):
return self.library
diff --git a/opendj-sdk/opends/tests/staf-tests/shared/tests/runTestJob.xml b/opendj-sdk/opends/tests/staf-tests/shared/tests/runTestJob.xml
index 01a23e2..74f8996 100644
--- a/opendj-sdk/opends/tests/staf-tests/shared/tests/runTestJob.xml
+++ b/opendj-sdk/opends/tests/staf-tests/shared/tests/runTestJob.xml
@@ -143,7 +143,8 @@
ServersInfoDict=eval(STAFResult)
- ServerName='unknown'
+ ServerPath='%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)
+ ServerName='unknown'
ServerVersion='unknown'
ServerBuildId='unknown'
ServerJavaVersion='unknown'
@@ -154,12 +155,12 @@
ServerJVMLabel='unknown'
ServerSystemOS='unknown'
ServerSystemName='unknown'
- ServerSvnRevision='unknown'
+ ServerRevision='unknown'
ServerPackage='%s/%s' % (ZIPPATH,ZIPNAME)
ServerSNMPJarFile='%s' % SNMP_OPENDMK_JARFILE
-
- if ServersInfoDict.has_key('%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)):
- ServerInfoDict=ServersInfoDict['%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)]
+
+ if ServersInfoDict.has_key(ServerPath):
+ ServerInfoDict=ServersInfoDict[ServerPath]
ServerName=OPENDSNAME
@@ -204,7 +205,7 @@
ServerSvnRevision=ServerInfoDict[ServerInfoKey]
else:
- ServerInfoDict='No key found (%s/%s)' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)
+ ServerInfoDict='No key found (%s)' % ServerPath
if ServerOsString == 'Unknown Operating System':
ServerOsString=ServerSystemOS
@@ -263,54 +264,64 @@
txtfh=open(textfile,'w')
</script>
- <iterate var="thisChild" in="listOfChildren">
+ <!-- Defend against not having any test groups run -->
+ <if expr="not listOfChildren">
<sequence>
- <stafcmd name="'STAF Command: Log Query All'">
- <location>'%s' % STAF_LOCAL_HOSTNAME </location>
- <service>'log'</service>
- <request>
- 'QUERY ALL MACHINE %s LOGNAME STAX_Job_%s' % (STAXServiceMachine,thisChild)
- </request>
- </stafcmd>
-
- <if expr="RC == 0">
- <sequence>
- <script>
- resultQuery=STAFResult
- </script>
- <message>
- 'Log Query on STAX_Job_%s Completed. RC=%s' % (thisChild,RC)
- </message>
- <iterate var="line" in="resultQuery">
-
- <script>
- txtfh.write('%s\n' % line)
- </script>
-
- </iterate>
- </sequence>
- <else>
- <sequence>
- <message log="1" level="'Error'">
- 'Unable to perform log query on STAX_Job_%s. RC: %s Result: %s' % (thisChild,RC,STAFResult)
- </message>
- <return>1</return>
- </sequence>
- </else>
- </if>
-
+ <message log="1" level="'Warning'">
+ 'No test groups have been run.'
+ </message>
</sequence>
- </iterate>
+ <else>
+ <sequence>
+ <iterate var="thisChild" in="listOfChildren">
+ <sequence>
+ <stafcmd name="'STAF Command: Log Query All'">
+ <location>'%s' % STAF_LOCAL_HOSTNAME </location>
+ <service>'log'</service>
+ <request>
+ 'QUERY ALL MACHINE %s LOGNAME STAX_Job_%s' % (STAXServiceMachine,thisChild)
+ </request>
+ </stafcmd>
+
+ <if expr="RC == 0">
+ <sequence>
+ <script>
+ resultQuery=STAFResult
+ </script>
+ <message>
+ 'Log Query on STAX_Job_%s Completed. RC=%s' % (thisChild,RC)
+ </message>
+ <iterate var="line" in="resultQuery">
+
+ <script>
+ txtfh.write('%s\n' % line)
+ </script>
+
+ </iterate>
+ </sequence>
+ <else>
+ <sequence>
+ <message log="1" level="'Error'">
+ 'Unable to perform log query on STAX_Job_%s. RC: %s Result: %s' % (thisChild,RC,STAFResult)
+ </message>
+ <return>1</return>
+ </sequence>
+ </else>
+ </if>
+
+ </sequence>
+ </iterate>
+ </sequence>
+ </else>
+ </if>
<script>
txtfh.close()
</script>
- <!-- Write XML File for results -->
+ <!-- Write error File for results -->
<script>
import re
- xmlfile= '%s/results.xml' % logsReportDir
- xmlfh=open(xmlfile,'w')
errorfile= '%s/results.errors' % logsReportDir
errorfh=open(errorfile,'w')
</script>
@@ -411,10 +422,8 @@
except IOError:
errorfh.write('Error: Unable to open %s. Reason IOError.' % textfile )
- </script>
- <!-- XML Report Pre -->
- <script>
+ # Create the objects
localstaf =test_env.staf(STAF_LOCAL_HOSTNAME)
remotestaf=test_env.staf(STAF_REMOTE_HOSTNAME)
@@ -425,219 +434,145 @@
http = test_env.http(STAF_LOCAL_HOSTNAME)
dsml = test_env.dsml(STAF_LOCAL_HOSTNAME)
- xmlfh.write('<qa>\n')
- xmlfh.write(' <functional-tests>\n')
- xmlfh.write(' <identification>\n')
- xmlfh.write(' <sut product="opends">\n')
- xmlfh.write(' <name>\n')
- xmlfh.write(' %s\n' % ServerName)
- xmlfh.write(' </name>\n')
- xmlfh.write(' <version>\n')
- xmlfh.write(' %s\n' % ServerVersion)
- xmlfh.write(' </version>\n')
- xmlfh.write(' <buildid>\n')
- xmlfh.write(' %s\n' % ServerBuildId)
- xmlfh.write(' </buildid>\n')
- xmlfh.write(' <revision>\n')
- xmlfh.write(' %s\n' % ServerSvnRevision)
- xmlfh.write(' </revision>\n')
- xmlfh.write(' <hostname>\n')
- xmlfh.write(' %s\n' % STAF_REMOTE_HOSTNAME)
- xmlfh.write(' </hostname>\n')
- xmlfh.write(' <platform>\n')
- xmlfh.write(' %s\n' % ServerSystemOS)
- xmlfh.write(' </platform>\n')
- xmlfh.write(' <jvm-version>\n')
- xmlfh.write(' %s\n' % ServerJVMVersion)
- xmlfh.write(' </jvm-version>\n')
- xmlfh.write(' <jvm-label>\n')
- xmlfh.write(' %s\n' % ServerJVMString)
- xmlfh.write(' </jvm-label>\n')
- xmlfh.write(' <jvm-vendor>\n')
- xmlfh.write(' %s\n' % ServerJVMVendor)
- xmlfh.write(' </jvm-vendor>\n')
- xmlfh.write(' <jvm-arch>\n')
- xmlfh.write(' %s\n' % ServerJVMArchitecture)
- xmlfh.write(' </jvm-arch>\n')
- xmlfh.write(' <jvm-args>\n')
- xmlfh.write(' TBD\n')
- xmlfh.write(' </jvm-args>\n')
- xmlfh.write(' <jvm-home>\n')
- xmlfh.write(' TBD\n')
- xmlfh.write(' </jvm-home>\n')
- xmlfh.write(' <jvm-bin>\n')
- xmlfh.write(' TBD\n')
- xmlfh.write(' </jvm-bin>\n')
- xmlfh.write(' <os-label>\n')
- xmlfh.write(' %s\n' % ServerOsString)
- xmlfh.write(' </os-label>\n')
- xmlfh.write(' <server-package>\n')
- xmlfh.write(' %s\n' % ServerPackage)
- xmlfh.write(' </server-package>\n')
- xmlfh.write(' <snmp-jarfile>\n')
- xmlfh.write(' %s\n' % ServerSNMPJarFile)
- xmlfh.write(' </snmp-jarfile>\n')
- xmlfh.write(' <md5-sum>\n')
- xmlfh.write(' TDB\n')
- xmlfh.write(' </md5-sum>\n')
- xmlfh.write(' </sut>\n')
- xmlfh.write(' <sut product="dsml">\n')
- xmlfh.write(' <name>\n')
- xmlfh.write(' %s\n' % DSMLName)
- xmlfh.write(' </name>\n')
- xmlfh.write(' <dsml-container>\n')
- xmlfh.write(' %s\n' % DSMLContainer)
- xmlfh.write(' </dsml-container>\n')
- xmlfh.write(' <dsml-package>\n')
- xmlfh.write(' %s\n' % DSMLPackage)
- xmlfh.write(' </dsml-package>\n')
- xmlfh.write(' <md5-sum>\n')
- xmlfh.write(' TDB\n')
- xmlfh.write(' </md5-sum>\n')
- xmlfh.write(' </sut>\n')
- xmlfh.write(' <testware>\n')
- xmlfh.write(' <staf>\n')
- xmlfh.write(' <local>\n')
- xmlfh.write(' <hostname>\n')
- xmlfh.write(' %s\n' % STAF_LOCAL_HOSTNAME)
- xmlfh.write(' </hostname>\n')
- xmlfh.write(' <version>\n')
- xmlfh.write(' %s\n' % localstaf.version)
- xmlfh.write(' </version>\n')
- xmlfh.write(' <rootdir>\n')
- xmlfh.write(' %s\n' % localstaf.root)
- xmlfh.write(' </rootdir>\n')
- xmlfh.write(' </local>\n')
- xmlfh.write(' <remote>\n')
- xmlfh.write(' <hostname>\n')
- xmlfh.write(' %s\n' % STAF_REMOTE_HOSTNAME)
- xmlfh.write(' </hostname>\n')
- xmlfh.write(' <version>\n')
- xmlfh.write(' %s\n' % remotestaf.version)
- xmlfh.write(' </version>\n')
- xmlfh.write(' <rootdir>\n')
- xmlfh.write(' %s\n' % remotestaf.root)
- xmlfh.write(' </rootdir>\n')
- xmlfh.write(' </remote>\n')
- xmlfh.write(' </staf>\n')
- xmlfh.write(' <service name="%s">\n' % stax.name)
- xmlfh.write(' <version>\n')
- xmlfh.write(' %s\n' % stax.version)
- xmlfh.write(' </version>\n')
- xmlfh.write(' <library>\n')
- xmlfh.write(' %s\n' % stax.library)
- xmlfh.write(' </library>\n')
- xmlfh.write(' <executable>\n')
- xmlfh.write(' %s\n' % stax.executable)
- xmlfh.write(' </executable>\n')
- xmlfh.write(' <options>\n')
- xmlfh.write(' %s\n' % stax.options)
- xmlfh.write(' </options>\n')
- xmlfh.write(' <params>\n')
- xmlfh.write(' %s\n' % stax.params)
- xmlfh.write(' </params>\n')
- xmlfh.write(' </service>\n')
- xmlfh.write(' <service name="%s">\n' % event.name)
- xmlfh.write(' <version>\n')
- xmlfh.write(' %s\n' % event.version)
- xmlfh.write(' </version>\n')
- xmlfh.write(' <library>\n')
- xmlfh.write(' %s\n' % event.library)
- xmlfh.write(' </library>\n')
- xmlfh.write(' <executable>\n')
- xmlfh.write(' %s\n' % event.executable)
- xmlfh.write(' </executable>\n')
- xmlfh.write(' <options>\n')
- xmlfh.write(' %s\n' % event.options)
- xmlfh.write(' </options>\n')
- xmlfh.write(' <params>\n')
- xmlfh.write(' %s\n' % event.params)
- xmlfh.write(' </params>\n')
- xmlfh.write(' </service>\n')
- xmlfh.write(' <service name="%s">\n' % eventman.name)
- xmlfh.write(' <version>\n')
- xmlfh.write(' %s\n' % eventman.version)
- xmlfh.write(' </version>\n')
- xmlfh.write(' <library>\n')
- xmlfh.write(' %s\n' % eventman.library)
- xmlfh.write(' </library>\n')
- xmlfh.write(' <executable>\n')
- xmlfh.write(' %s\n' % eventman.executable)
- xmlfh.write(' </executable>\n')
- xmlfh.write(' <options>\n')
- xmlfh.write(' %s\n' % eventman.options)
- xmlfh.write(' </options>\n')
- xmlfh.write(' <params>\n')
- xmlfh.write(' %s\n' % eventman.params)
- xmlfh.write(' </params>\n')
- xmlfh.write(' </service>\n')
- xmlfh.write(' <service name="%s">\n' % email.name)
- xmlfh.write(' <version>\n')
- xmlfh.write(' %s\n' % email.version)
- xmlfh.write(' </version>\n')
- xmlfh.write(' <library>\n')
- xmlfh.write(' %s\n' % email.library)
- xmlfh.write(' </library>\n')
- xmlfh.write(' <executable>\n')
- xmlfh.write(' %s\n' % email.executable)
- xmlfh.write(' </executable>\n')
- xmlfh.write(' <options>\n')
- xmlfh.write(' %s\n' % email.options)
- xmlfh.write(' </options>\n')
- xmlfh.write(' <params>\n')
- xmlfh.write(' %s\n' % email.params)
- xmlfh.write(' </params>\n')
- xmlfh.write(' </service>\n')
- xmlfh.write(' <service name="%s">\n' % http.name)
- xmlfh.write(' <version>\n')
- xmlfh.write(' %s\n' % http.version)
- xmlfh.write(' </version>\n')
- xmlfh.write(' <library>\n')
- xmlfh.write(' %s\n' % http.library)
- xmlfh.write(' </library>\n')
- xmlfh.write(' <executable>\n')
- xmlfh.write(' %s\n' % http.executable)
- xmlfh.write(' </executable>\n')
- xmlfh.write(' <options>\n')
- xmlfh.write(' %s\n' % http.options)
- xmlfh.write(' </options>\n')
- xmlfh.write(' <params>\n')
- xmlfh.write(' %s\n' % http.params)
- xmlfh.write(' </params>\n')
- xmlfh.write(' </service>\n')
- xmlfh.write(' <service name="%s">\n' % dsml.name)
- xmlfh.write(' <version>\n')
- xmlfh.write(' %s\n' % dsml.version)
- xmlfh.write(' </version>\n')
- xmlfh.write(' <library>\n')
- xmlfh.write(' %s\n' % dsml.library)
- xmlfh.write(' </library>\n')
- xmlfh.write(' <executable>\n')
- xmlfh.write(' %s\n' % dsml.executable)
- xmlfh.write(' </executable>\n')
- xmlfh.write(' <options>\n')
- xmlfh.write(' %s\n' % dsml.options)
- xmlfh.write(' </options>\n')
- xmlfh.write(' <params>\n')
- xmlfh.write(' %s\n' % dsml.params)
- xmlfh.write(' </params>\n')
- xmlfh.write(' </service>\n')
- xmlfh.write(' </testware>\n')
- xmlfh.write(' <tests-dir>\n')
- xmlfh.write(' %s\n' % logsDir)
- xmlfh.write(' </tests-dir>\n')
- xmlfh.write(' <tests-url>\n')
- xmlfh.write(' %s\n' % logsURI)
- xmlfh.write(' </tests-url>\n')
- xmlfh.write(' <mailto>\n')
- xmlfh.write(' %s\n' % SEND_MAIL_TO)
- xmlfh.write(' </mailto>\n')
- xmlfh.write(' </identification>\n')
- xmlfh.write(' <results>\n')
- </script>
+ # Build the XML results file
+ from xml.dom.minidom import Document
- <!-- XML Report Results -->
- <script>
+ def write_text_elements(parent,elements):
+
+ for sutElement in elements:
+ label,text = sutElement
+ element = doc.createElement(label)
+ parent.appendChild(element)
+ try:
+ element.appendChild(doc.createTextNode(text))
+ except TypeError,details:
+ element.appendChild(doc.createTextNode('TypeError: %s' % details))
+
+ # Create the test results document
+ doc = Document()
+
+ # Create the qa base element
+ qa = doc.createElement("qa")
+ doc.appendChild(qa)
+
+ # Create the functional-tests element
+ ft = doc.createElement("functional-tests")
+ qa.appendChild(ft)
+
+ # Create the identification element
+ id = doc.createElement("identification")
+ ft.appendChild(id)
+
+ # Create the sut opends element
+ sut = doc.createElement("sut")
+ sut.setAttribute("product", "opends")
+ id.appendChild(sut)
+
+ # Create the sut opends elements
+ sutElementList=[]
+ sutElementList.append(['name',ServerName])
+ sutElementList.append(['path',ServerPath])
+ sutElementList.append(['version',ServerVersion])
+ sutElementList.append(['buildid',ServerBuildId])
+ sutElementList.append(['revision',ServerRevision])
+ sutElementList.append(['hostname',STAF_REMOTE_HOSTNAME])
+ sutElementList.append(['platform',ServerSystemOS])
+ sutElementList.append(['jvm-version',ServerJVMVersion])
+ sutElementList.append(['jvm-label',ServerJVMString])
+ sutElementList.append(['jvm-vendor',ServerJVMVendor])
+ sutElementList.append(['jvm-arch',ServerJVMArchitecture])
+ sutElementList.append(['jvm-args','TBD'])
+ sutElementList.append(['jvm-home','TBD'])
+ sutElementList.append(['jvm-bin','TBD'])
+ sutElementList.append(['os-label',ServerOsString])
+ sutElementList.append(['server-package',ServerPackage])
+ sutElementList.append(['snmp-jarfile',ServerSNMPJarFile])
+ sutElementList.append(['md5-sum','TDB'])
+
+ write_text_elements(sut,sutElementList)
+
+ # Create the sut dsml element
+ sut = doc.createElement("sut")
+ sut.setAttribute("product", "dsml")
+ id.appendChild(sut)
+
+ # Create the sut dsml elements
+ sutElementList=[]
+ sutElementList.append(['name',DSMLName])
+ sutElementList.append(['dsml-container',DSMLContainer])
+ sutElementList.append(['dsml-package',DSMLPackage])
+ sutElementList.append(['md5-sum','TDB'])
+
+ write_text_elements(sut,sutElementList)
+
+ sutElementList=[]
+
+ # Create the testware element
+ testware = doc.createElement("testware")
+ id.appendChild(testware)
+
+ # Create the staf testware element
+ staf = doc.createElement("staf")
+ testware.appendChild(staf)
+
+ # Create the staf local element
+ local = doc.createElement("local")
+ staf.appendChild(local)
+
+ # Create the staf local testware elements
+ testwareElementList=[]
+ testwareElementList.append(['hostname',STAF_LOCAL_HOSTNAME])
+ testwareElementList.append(['version',localstaf.version])
+ testwareElementList.append(['rootdir',localstaf.root])
+
+ write_text_elements(local,testwareElementList)
+
+ # Create the staf remote testware element
+ remote = doc.createElement("remote")
+ staf.appendChild(remote)
+
+ # Create the staf remote testware elements
+ testwareElementList=[]
+ testwareElementList.append(['hostname',STAF_REMOTE_HOSTNAME])
+ testwareElementList.append(['version',remotestaf.version])
+ testwareElementList.append(['version',remotestaf.root])
+
+ write_text_elements(remote,testwareElementList)
+
+ for serviceType in [stax,event,eventman,email,http,dsml]:
+
+ # Create the service testware element
+ service = doc.createElement("service")
+ service.setAttribute("name", serviceType.name)
+ testware.appendChild(service)
+
+ # Create the service testware elements
+ testwareElementList=[]
+ testwareElementList.append(['version',serviceType.version])
+ testwareElementList.append(['library',serviceType.library])
+ testwareElementList.append(['executable',serviceType.executable])
+ testwareElementList.append(['options','%s' % serviceType.options])
+ testwareElementList.append(['params','%s' % serviceType.params])
+
+ write_text_elements(service,testwareElementList)
+
+ testwareElementList=[]
+
+ # Create the id elements
+ idElementList=[]
+ idElementList.append(['tests-dir',logsDir])
+ idElementList.append(['tests-url',logsURI])
+ idElementList.append(['mailto',SEND_MAIL_TO])
+
+ write_text_elements(id,idElementList)
+
+ idElementList=[]
+
+ # Create the results element
+ results = doc.createElement("results")
+ ft.appendChild(results)
+
+ # Create the results elements and attributes
for tcname in testCaseList:
if testDict.has_key(tcname):
@@ -689,21 +624,31 @@
tcdurationsecs=test_time().timeToSeconds(tcduration)
- xmlfh.write(' <testgroup name="%s">\n' % tcgroup)
- xmlfh.write(' <testsuite name="%s">\n' % tcsuite)
- xmlfh.write(' <testcase group="%s" suite="%s" name="%s" result="%s" start="%s" stop="%s" duration="%s"/>\n' % (tcgroup,tcsuite,tcname,tcresult,tcstart,tcstop,tcdurationsecs))
- xmlfh.write(' </testsuite>\n')
- xmlfh.write(' </testgroup>\n')
- </script>
+ # Create the testgroup element
+ group = doc.createElement("testgroup")
+ group.setAttribute("name", tcgroup)
+ results.appendChild(group)
+
+ # Create the testsuite element
+ suite = doc.createElement("testsuite")
+ suite.setAttribute("name", tcsuite)
+ group.appendChild(suite)
+
+ # Create the testcase element
+ case = doc.createElement("testcase")
+ case.setAttribute("group", "%s" %tcgroup)
+ case.setAttribute("suite", "%s" %tcsuite)
+ case.setAttribute("name", "%s" %tcname)
+ case.setAttribute("result", "%s" %tcresult)
+ case.setAttribute("start", "%s" %tcstart)
+ case.setAttribute("stop", "%s" %tcstop)
+ case.setAttribute("duration", "%s" % tcdurationsecs)
+ suite.appendChild(case)
- <!-- XML Report Post -->
- <script>
- xmlfh.write(' </results>\n')
- xmlfh.write(' </functional-tests>\n')
- xmlfh.write('</qa>\n')
- </script>
-
- <script>
+ # Write out the results
+ xmlfile= '%s/results.xml' % logsReportDir
+ xmlfh=open(xmlfile,'w')
+ xmlfh.writelines(doc.toprettyxml(indent=" "))
xmlfh.close()
errorfh.close()
</script>
--
Gitblit v1.10.0