From d16ab74aff9a07196aae5aa4994ff22adfc3a361 Mon Sep 17 00:00:00 2001
From: gary_williams <gary_williams@localhost>
Date: Tue, 09 Oct 2007 06:15:50 +0000
Subject: [PATCH] prevent from writing files to TMPDIR
---
opends/tests/functional-tests/testcases/runFuncTests.xml | 8 +-
opends/tests/functional-tests/shared/functions/utils.xml | 95 ++++++++++++++++++++-----------
opends/tests/functional-tests/testcases/runTestJob.xml | 37 +++++++++++
3 files changed, 101 insertions(+), 39 deletions(-)
diff --git a/opends/tests/functional-tests/shared/functions/utils.xml b/opends/tests/functional-tests/shared/functions/utils.xml
index 939eb61..7e5694f 100755
--- a/opends/tests/functional-tests/shared/functions/utils.xml
+++ b/opends/tests/functional-tests/shared/functions/utils.xml
@@ -559,8 +559,8 @@
testcaseStartTime=strftime("%Y%m%d@%H:%M:%S",localtime())
issuesList=[]
for logType in ['errors','access']:
- if os.path.exists('%s/%s/logs/%s' % (TMPDIR,OPENDSNAME,logType)):
- logfile=open('%s/%s/logs/%s' % (TMPDIR,OPENDSNAME,logType),'a')
+ if os.path.exists('%s/%s/logs/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME,logType)):
+ logfile=open('%s/%s/logs/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME,logType),'a')
logfile.seek(0,2)
logfile.write('Begin testcase %s\n' % STAXCurrentTestcase)
logfile.close()
@@ -622,18 +622,21 @@
<script>
testcaseEndTime = strftime("%Y%m%d@%H:%M:%S",localtime())
</script>
+
<call function="'queryLogs'">
{ 'location' : STAXServiceMachine,
'logname' : 'STAX_Job_%s_User' % STAXJobID,
'startfrom' : testcaseStartTime,
'endat' : testcaseEndTime }
</call>
+
<script>
class Test:
def __init__(self, group, suite, fullname, start, stop, failures, successes, issues, duration):
- self.log='%s/test.log' % TMPDIR
- self.errors='%s/error.log' % TMPDIR
- self.access='%s/access.log' % TMPDIR
+ self.message=[]
+ self.log='%s/test.log' % logsTestsDir
+ self.errors='%s/error.log' % DIRECTORY_INSTANCE_DIR
+ self.access='%s/access.log' % DIRECTORY_INSTANCE_DIR
for f in [self.log,self.errors,self.access]:
fh=open(f,'w')
fh.write('')
@@ -661,8 +664,7 @@
else:
self.result='known'
self.issues=issues
-
-
+
def toXML(self):
xml = ' <test>%s' % newLine
xml += ' <name>%s</name>%s' % (self.name,newLine)
@@ -680,27 +682,36 @@
xml += ' <![CDATA[%s' % newLine
if self.result!='pass':
# TODO: wrap with try catch to get IOError without stopping the tests
- fh=open(self.log)
- xml += fh.read()
- fh.close()
+ try:
+ fh=open(self.log)
+ xml += fh.read()
+ fh.close()
+ except IOError,details:
+ self.message.append('IOError: Opening %s for reading %s' % (self.log,details.args))
xml += ' ]]>%s' % newLine
xml += ' </log>%s' % newLine
xml += ' <error>%s' % newLine
xml += ' <![CDATA[%s' % newLine
if self.result!='pass':
# TODO: wrap with try catch to get IOError without stopping the tests
- fh=open(self.errors)
- xml += fh.read()
- fh.close()
+ try:
+ fh=open(self.errors)
+ xml += fh.read()
+ fh.close()
+ except IOError,details:
+ self.message.append('IOError: Opening %s for reading %s' % (self.errors,details.args))
xml += ' ]]>%s' % newLine
xml += ' </error>%s' % newLine
xml += ' <access>%s' % newLine
xml += ' <![CDATA[%s' % newLine
if self.result!='pass':
# TODO: wrap with try catch to get IOError without stopping the tests
- fh=open(self.access)
- xml += fh.read()
- fh.close()
+ try:
+ fh=open(self.access)
+ xml += fh.read()
+ fh.close()
+ except IOError,details:
+ self.message.append('IOError: Opening %s for reading %s' % (self.access,details.args))
xml += ' ]]>%s' % newLine
xml += ' </access>%s' % newLine
xml += ' </test>%s' % newLine
@@ -769,12 +780,12 @@
# TODO: figure out how to do this for multiple instance for the replication
# tests for example
for logType in ['errors','access']:
- if os.path.exists('%s/%s/logs/%s' % (TMPDIR,OPENDSNAME,logType)):
- logfile=open('%s/%s/logs/%s' % (TMPDIR,OPENDSNAME,logType),'a')
+ if os.path.exists('%s/%s/logs/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME,logType)):
+ logfile=open('%s/%s/logs/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME,logType),'a')
logfile.seek(0,2)
logfile.write('End testcase %s\n' % STAXCurrentTestcase)
logfile.close()
- logfile=open('%s/%s/logs/%s' % (TMPDIR,OPENDSNAME,logType), 'r')
+ logfile=open('%s/%s/logs/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME,logType), 'r')
_log=''
_doLog=False
while True:
@@ -791,14 +802,24 @@
thisTest.appendLog(logType, _log)
# save to test log
- testlog=open('%s/tests-log.xml' % TMPDIR,'a')
+ testlog=open('%s/tests-log.xml' % logsTestsDir,'a')
testlog.seek(0,2)
testlog.write(thisTest.toXML())
testlog.close()
+
# clean the temporary log files for this test
# this MUST be done AFTER the call to toXML or the logs will appear empty
thisTest.clean()
</script>
+
+ <if expr="thisTest.message">
+ <iterate in="thisTest.message" var="_message">
+ <message>'%s' % _message</message>
+ </iterate>
+ </if>
+
+ <script>thisTest.message=[]</script>
+
</sequence>
</function>
@@ -972,7 +993,7 @@
if thisNodeAttributes.getNamedItem("type").getNodeValue() == 'block, %':
rawCoverage = thisNodeAttributes.getNamedItem("value").getNodeValue()
coverage = rawCoverage.split('%')[0]
- testlog=open('%s/tests-log.xml' % TMPDIR,'a')
+ testlog=open('%s/tests-log.xml' % logsTestsDir,'a')
testlog.seek(0,2)
testlog.write(" <group>\n")
testlog.write(" <name>\n")
@@ -987,7 +1008,7 @@
</sequence>
<else>
<script>
- testlog=open('%s/tests-log.xml' % TMPDIR,'a')
+ testlog=open('%s/tests-log.xml' % logsTestsDir,'a')
testlog.seek(0,2)
testlog.write(" <group>\n")
testlog.write(" <name>\n")
@@ -1395,6 +1416,13 @@
<function-arg-property-data type="choice" value="False"/>
</function-arg-property>
</function-arg-def>
+ <function-arg-def name="timerDuration"
+ type="optional"
+ default="'5m'">
+ <function-arg-description>
+ The duration that the process is allowed to run
+ </function-arg-description>
+ </function-arg-def>
</function-map-args>
<sequence>
<script>
@@ -1412,19 +1440,20 @@
<message>
'%s: Running command:\n %s %s\nlocation: %s\nenv: %s\nworkdir: %s' % (_id,command,arguments,location,env,path)
</message>
-
+
<block name="'%s:Wrapper for %s' % (_id,re.compile('\..*$').sub('',os.path.basename(command)))">
- <process name="name">
- <location>location</location>
- <command>command</command>
- <parms>arguments</parms>
- <workdir>path</workdir>
- <envs>env</envs>
- <console use="'same'"/>
- <stderr mode="'stdout'"/>
- <returnstdout/>
- </process>
+ <process name="name">
+ <location>location</location>
+ <command>command</command>
+ <parms>arguments</parms>
+ <workdir>path</workdir>
+ <envs>env</envs>
+ <console use="'same'"/>
+ <stderr mode="'stdout'"/>
+ <returnstdout/>
+ </process>
</block>
+
<message level="'info'">
'%s: Command returned:\n%s' % (_id,STAXResult[0][1])
</message>
diff --git a/opends/tests/functional-tests/testcases/runFuncTests.xml b/opends/tests/functional-tests/testcases/runFuncTests.xml
index e5c603b..b18e18d 100755
--- a/opends/tests/functional-tests/testcases/runFuncTests.xml
+++ b/opends/tests/functional-tests/testcases/runFuncTests.xml
@@ -133,7 +133,7 @@
def getName(self):
return self.name
- testlog=open('%s/tests-log.xml' % TMPDIR,'w')
+ testlog=open('%s/tests-log.xml' % logsTestsDir,'w')
testlog.write('<qa>\n')
testlog.write(' <functional-tests>\n')
testlog.write(' <results>\n')
@@ -197,7 +197,7 @@
if thisNodeAttributes.getNamedItem("type").getNodeValue() == 'block, %':
rawCoverage = thisNodeAttributes.getNamedItem("value").getNodeValue()
coverage = rawCoverage.split('%')[0]
- testlog=open('%s/tests-log.xml' % TMPDIR,'a')
+ testlog=open('%s/tests-log.xml' % logsTestsDir,'a')
testlog.seek(0,2)
testlog.write(" <all>\n")
testlog.write(" <coverage>\n")
@@ -209,7 +209,7 @@
</sequence>
<else>
<script>
- testlog=open('%s/tests-log.xml' % TMPDIR,'a')
+ testlog=open('%s/tests-log.xml' % logsTestsDir,'a')
testlog.seek(0,2)
testlog.write(" <all>\n")
testlog.write(" <coverage>\n")
@@ -291,7 +291,7 @@
else:
ServerInfoDict='No key found (%s/%s)' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)
- testlog=open('%s/tests-log.xml' % TMPDIR,'a')
+ testlog=open('%s/tests-log.xml' % logsTestsDir,'a')
testlog.seek(0,2)
testlog.write(' </results>\n')
testlog.write(' <identification>\n')
diff --git a/opends/tests/functional-tests/testcases/runTestJob.xml b/opends/tests/functional-tests/testcases/runTestJob.xml
index 3137170..2fd5142 100644
--- a/opends/tests/functional-tests/testcases/runTestJob.xml
+++ b/opends/tests/functional-tests/testcases/runTestJob.xml
@@ -34,7 +34,11 @@
<script>
STAXLogMessage = 1
</script>
-
+
+ <script>
+ import os
+ </script>
+
<if expr="not STAXJobScriptFiles">
<sequence>
<message>'No script file (config.py) is specified. Unable to run the tests.'</message>
@@ -206,6 +210,7 @@
<script>
logsReportDir='%s/reports' % logsDir
+ logsTestsDir='%s/testlogs' % logsDir
</script>
<call function="'createFolder'">
@@ -448,6 +453,9 @@
<script>
_message=''
+ myreportxsl='%s/xsl/my-report.xsl' % TESTS_SHARED_DIR
+ myreporthtml='%s/my-report.html' % logsReportDir
+ mytestslog='%s/tests-log.xml' % logsTestsDir
try:
from java.io import FileInputStream
from java.io import FileOutputStream
@@ -467,12 +475,37 @@
transformer.transform(source, result)
#the new report transformation
- TransformerFactory.newInstance().newTemplates(StreamSource(FileInputStream("%s/xsl/my-report.xsl" % TESTS_SHARED_DIR))).newTransformer().transform(StreamSource(FileInputStream("%s/tests-log.xml" % TMPDIR)), StreamResult(FileOutputStream("%s/my-report.html" % TMPDIR)))
+ TransformerFactory.newInstance().newTemplates(StreamSource(FileInputStream(myreportxsl))).newTransformer().transform(StreamSource(FileInputStream(mytestslog)), StreamResult(FileOutputStream(myreporthtml)))
_message='Generated drill-down HTML report'
except:
_message='Could not generate drill-down HTML report'
</script>
<message>_message</message>
+
+ <!-- FixMe: Compatability with Hudson -->
+ <if expr="os.path.exists(myreporthtml)">
+ <sequence>
+ <message>'Copy %s to %s' % (myreporthtml,TMPDIR)</message>
+ <call function="'copyFile'">
+ { 'srcfile' : myreporthtml,
+ 'destfile' : '%s/my-report.html' % TMPDIR
+ }
+ </call>
+ </sequence>
+ </if>
+
+ <!-- FixMe: Compatability with Hudson -->
+ <if expr="os.path.exists(mytestslog)">
+ <sequence>
+ <message>'Copy %s to %s' % (myreporthtml,TMPDIR)</message>
+ <call function="'copyFile'">
+ { 'srcfile' : mytestslog,
+ 'destfile' : '%s/tests-log.xml' % TMPDIR
+ }
+ </call>
+ </sequence>
+ </if>
+
<if expr="SEND_MAIL_AFTER_TEST_RUN == 'TRUE'">
<sequence>
<message>
--
Gitblit v1.10.0