From 8457830abdca9d5769e2ec1bdbfb793a05e6c5dd Mon Sep 17 00:00:00 2001 From: Tim Jenssen Date: Mon, 21 Feb 2011 16:30:31 +0100 Subject: init commit --- test-framework/vmware/reporter.py | 96 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 test-framework/vmware/reporter.py (limited to 'test-framework/vmware/reporter.py') diff --git a/test-framework/vmware/reporter.py b/test-framework/vmware/reporter.py new file mode 100644 index 000000000..57366a8fe --- /dev/null +++ b/test-framework/vmware/reporter.py @@ -0,0 +1,96 @@ +import datetime, socket, sys, traceback +from xml.sax.saxutils import XMLGenerator +from xml.sax.xmlreader import AttributesNSImpl +import result +from result import exitStatusAsString +from xmlutils import startElement, endElement, writeElement + +class Reporter: + def __init__( self ): + pass + + def reportException( self ): + sys.stderr.write( traceback.format_exc( 15 ) + '\n' ) + + def reportResult( self, result ): + try: + self.toXml( result, sys.stdout ) + finally: + sys.stdout.flush() + + def toXml( self, result, out ): + atom = "http://www.w3.org/2005/Atom" + tf = "http://sdk.nokia.com/test-framework/ns/1.0" + + gen = XMLGenerator( out, 'utf-8' ) + gen.startDocument() + gen.startPrefixMapping( 'atom', atom) + gen.startPrefixMapping( 'tf', tf ) + + startElement( gen, atom, 'entry' ) + + writeElement( gen, atom, 'title', result.constructTitle() ) + writeElement( gen, atom, 'updated', datetime.datetime.now().isoformat() ) + + writeElement( gen, tf, 'errorSummary', exitStatusAsString( result.status() ) ) + + writeElement( gen, tf, 'host', socket.gethostname() ) + if result._testStart != None: + writeElement( gen, tf, 'testStart', result._testStart.isoformat() ) + else: + result._internalErrors.append( "Result generator: no start timestamp found." ) + + if result._testEnd != None: + writeElement( gen, tf, 'testEnd', result._testEnd.isoformat() ) + else: + result._internalErrors.append( "Result generator: no end timestamp found." ) + + + startElement( gen, tf, 'installer' ) + writeElement( gen, tf, 'sourceUrl', result._installerSourceLocation ) + writeElement( gen, tf, 'platform', result._installerTargetPlatform ) + #TODO revision + endElement( gen, tf, 'installer' ) + + if result._testcase != None: + startElement( gen, tf, 'testCase' ) + writeElement( gen, tf, 'name', result._testcase.name() ) + writeElement( gen, tf, 'path', result._testcase.path() ) + writeElement( gen, tf, 'installScript', result._testcase.installscript() ) + endElement( gen, tf, 'testCase' ) + else: + result._internalErrors.append( "Result generator: No test case given." ) + + if result._installationResult != None: + startElement( gen, tf, 'installationResult' ) + writeElement( gen, tf, 'exitCode', str( result._installationResult.exitCode ) ) + writeElement( gen, tf, 'exitStatus', exitStatusAsString( result._installationResult.exitStatus ) ) + endElement( gen, tf, 'installationResult' ) + else: + result._internalErrors.append( "Result generator: No installation result given." ) + startElement( gen, tf, 'checkerResult' ) + + for err in result._checkerErrors: + writeElement( gen, tf, 'error', err ) + endElement( gen, tf, 'checkerResult' ) + + startElement( gen, tf, 'virtualMachine' ) + writeElement( gen, tf, 'path', result._vm.vmxPath() ) + writeElement( gen, tf, 'platform', result._vm.ostype() ) + writeElement( gen, tf, 'snapshot', result._vm.snapshot() ) + endElement( gen, tf, 'virtualMachine' ) + + startElement( gen, tf, 'internalErrors' ) + for i in result._internalErrors: + writeElement( gen, tf, 'internalError', str( i ) ) + + endElement( gen, tf, 'internalErrors' ) + + if result._errorSnapshot != None: + writeElement( gen, tf, 'errorSnapshot', result._errorSnapshot ) + + endElement( gen, atom, 'entry' ) + + gen.endDocument() + + -- cgit v1.2.3