def writeTest( gen, test ): startElement( gen, None, "Test", { u"Status":checkerResultAsString[test.result]} ) writeElement( gen, None, "Name", test.name ) writeElement( gen, None, "FullName", test.name ) startElement( gen, None, "NamedMeasurement", { u"type":u"text/string", u"name":u"Completion Status"} ) writeElement( gen, None, "Value", test.errorString ) endElement( gen, None, "NamedMeasurement" ) endElement( gen, None, "Test" )
def writeInternalError( gen, errorstr, num ): startElement( gen, None, "Test", { u"Status":u"failed"} ) name = "InternalError{0}".format( num ) writeElement( gen, None, "Name", name ) writeElement( gen, None, "FullName", name ) startElement( gen, None, "NamedMeasurement", { u"type":u"text/string", u"name":u"Completion Status"} ) writeElement( gen, None, "Value", errorstr ) endElement( gen, None, "NamedMeasurement" ) endElement( gen, None, "Test" )
def genTestXml(self, gen, result): name = "{0} on {1}".format(result._installer.sourceFilename, result._vm.name()) startElement( gen, None, "Site", { u"BuildStamp": self._buildStamp, u"Name": name, u"Generator": u"VMTester 0.1" }) startElement(gen, None, "Testing") writeElement(gen, None, "StartDateTime", formatDate(result._testStart)) startElement(gen, None, "TestList") internal = result._internalErrors for i in range(0, len(internal) - 1): writeElement(gen, None, "Test", "InternalError{0}".format(i)) for stepNum in range(len(result._stepResults)): step = result._stepResults[stepNum] writeElement(gen, None, "Test", "installer-run{0}".format(stepNum)) for i in step.checkerResults: writeElement(gen, None, "Test", i.name) endElement(gen, None, "TestList") for i in range(0, len(internal) - 1): writeInternalError(gen, internal[i], i) for stepNum in range(len(result._stepResults)): step = result._stepResults[stepNum] writeExecutionResult(gen, "installer-run{0}".format(stepNum), step.executionResult) for i in step.checkerResults: writeTest(gen, i) endElement(gen, None, "Testing") endElement(gen, None, "Site")
def writeExecutionResult( gen, name, r ): if r == None or r.hasError(): stat = "failed" else: stat = "passed" startElement( gen, None, "Test", { u"Status":stat } ) writeElement( gen, None, "Name", name ) writeElement( gen, None, "FullName", name ) startElement( gen, None, "NamedMeasurement", { u"type":u"text/string", u"name":u"Exit Code"} ) if r: msg = "(Unexpected)" ec = r.exitCode if ec == 0: msg = "(Success)" elif ec == 1: msg = "(Failed)" elif ec == 2: msg = "(Canceled)" writeElement( gen, None, "Value", "Exit status: {0}; Installer exit code: {1} {2}".format( exitStatusAsString( r.exitStatus ), str( r.exitCode ), msg ) ) else: writeElement( gen, None, "Value", "Could not determine installation result." ) endElement( gen, None, "NamedMeasurement" ) if r: startElement( gen, None, "NamedMeasurement", { u"type":u"numeric/double", u"name":u"Execution Time"} ) writeElement( gen, None, "Value", str( r.executionTime ) ) endElement( gen, None, "NamedMeasurement" ) endElement( gen, None, "Test" )
def genTestXml( self, gen, result ): name = "{0} on {1}".format( result._installer.sourceFilename, result._vm.name() ) startElement( gen, None, "Site", { u"BuildStamp":self._buildStamp, u"Name":name, u"Generator":u"VMTester 0.1" } ) startElement( gen, None, "Testing" ) writeElement( gen, None, "StartDateTime", formatDate( result._testStart ) ) startElement( gen, None, "TestList" ) internal = result._internalErrors for i in range( 0, len( internal ) - 1 ): writeElement( gen, None, "Test", "InternalError{0}".format( i ) ) for stepNum in range( len( result._stepResults ) ): step = result._stepResults[stepNum] writeElement( gen, None, "Test", "installer-run{0}".format( stepNum ) ) for i in step.checkerResults: writeElement( gen, None, "Test", i.name ) endElement( gen, None, "TestList" ) for i in range( 0, len( internal ) - 1 ): writeInternalError( gen, internal[i], i ) for stepNum in range( len( result._stepResults ) ): step = result._stepResults[stepNum] writeExecutionResult( gen, "installer-run{0}".format( stepNum ), step.executionResult ) for i in step.checkerResults: writeTest( gen, i ) endElement( gen, None, "Testing" ) endElement( gen, None, "Site" )
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()
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()