📄 testpython.py
字号:
############################################################################## Software Testing Automation Framework (STAF) ## (C) Copyright IBM Corp. 2001, 2005 ## ## This software is licensed under the Common Public License (CPL) V1.0. ############################################################################### This file contains tests for the STAF Python supportfrom PySTAF import *from PySTAFMon import *from PySTAFLog import *import stringimport systry: handle = STAFHandle("Lang/Python/Test/Basic")except STAFException, e: print "Error registering with STAF, RC: %d" % e.rc sys.exit(e.rc)print "Using handle %d" % handle.handle######################################## First test some basic functionality ########################################print "Testing basic functionality"result = handle.submit("local", "ping", "ping")if ((result.rc != STAFResult.Ok) or (result.result != "PONG")): print "Error on ping request." print "Expected RC: 0, Result: PONG" print "Received RC: %d, Result: %s" % (result.rc, result.result) sys.exit(1)result = handle.submit("local", "var", "resolve string {STAF/Config/MachineNickname}")if (result.rc != STAFResult.Ok): print "Error resolving machine nickname, RC: %d, Result: %s" % \ (result.rc, result.result) sys.exit(result.rc)self = result.result################################################ Next, lets test the monitor service wrapper ################################################print "Testing Monitor service functions"# Log the messagemonitor = STAFMonitor(handle)monitorMessage = "Hello World"result = monitor.log(monitorMessage)if (result.rc != STAFResult.Ok): print "Error on STAFMonitorDoLog, RC: %d, Result: %s" % \ (result.rc, result.result) sys.exit(result.rc)# Try to retrieve itrequest = "query machine %s handle %d" % (self, handle.handle)result = handle.submit("local", "monitor", request)if (result.rc != STAFResult.Ok): print "Error querying monitor info, RC: %d, Result: %s" % \ (result.rc, result.result) sys.exit(result.rc)# Make sure we got back the correct messagecontext = unmarshall(result.result)monitorMap = context.getRootObject()if monitorMap['message'] != monitorMessage: print "Wrong output for MONITOR QUERY request" print "Expected to find:" print "{" print " Date-Time: <Timestamp>" print " Message : %s" % (monitorMessage) print "}" print "Found:\n%s" % context sys.exit(1)############################################### Finally, lets test the log service wrapper ###############################################print "Testing Log service functions"logName = "PythonTest"# Setup logginglog = STAFLog(handle, STAFLog.Handle, logName, [ STAFLog.Fatal, STAFLog.Error, STAFLog.Warning, STAFLog.Info ])# Log the messagelogMessage = "A log message"result = log.log(STAFLog.Info, logMessage)if (result.rc != STAFResult.Ok): print "Error on STAFLog.log(), RC: %d, Result: %s" % \ (result.rc, result.result) sys.exit(result.rc)# Try to retrieve itrequest = "query machine %s handle %d logname %s" % \ (self, handle.handle, logName)result = handle.submit("local", "log", request)if (result.rc != STAFResult.Ok): print "Error on STAF LOG Service QUERY, RC: %d, Result: %s" % \ (result.rc, result.result) sys.exit(result.rc)# Make sure we got back the correct messagecontext = unmarshall(result.result)logRecordList = context.getRootObject()if (len(logRecordList) > 0 and logRecordList[len(logRecordList) - 1]['level'] == STAFLog.Info and logRecordList[len(logRecordList) - 1]['message'] == logMessage): logRecord = logRecordList[len(logRecordList) - 1]else: print "Wrong output for log query request" print "Expected to find one record with level: '%s' and message: '%s'" % \ (STAFLog.Info, logMessage) print "Found:\n'%s'" % context sys.exit(1)# Try to retrieve it from monitorrequest = "query machine %s handle %d" % (self, handle.handle)result = handle.submit("local", "monitor", request)if (result.rc != STAFResult.Ok): print "Error on querying monitor info, RC: %d, Result: %s" % \ (result.rc, result.result) sys.exit(result.rc)# Make sure we got back the correct message from monitorcontext = unmarshall(result.result)monitorMap = context.getRootObject()if monitorMap['message'] != '%s:%s' % (STAFLog.Info, logMessage): print "Wrong output for MONITOR QUERY request" print "Expected to find:" print "{" print " Date-Time: <Timestamp>" print " Message : %s:%s" % (STAFLog.Info, logMessage) print "}" print "Found:\n%s" % context sys.exit(1)# Delete the log filerequest = "delete machine %s handle %d logname %s confirm" % \ (self, handle.handle, logName)result = handle.submit("local", "log", request)if (result.rc != STAFResult.Ok): print "Error deleting log file, RC: %s, Result: %s" % \ (result.rc, result.result) sys.exit(1)# Log the message so that Monitor shouldn't get itresult = log.log(STAFLog.Status, logMessage)if (result.rc != STAFResult.Ok): print "Error on STAFLog.log(), RC: %d, Result: %s" % \ (result.rc, result.result) sys.exit(result.rc)# Try to retrieve itrequest = "query machine %s handle %d logname %s" % \ (self, handle.handle, logName)result = handle.submit("local", "log", request)if (result.rc != STAFResult.Ok): print "Error on STAF LOG Service QUERY, RC: %d, Result: %s" % \ (result.rc, result.result) sys.exit(result.rc)# Make sure we got back the correct messagecontext = unmarshall(result.result)logRecordList = context.getRootObject()if (len(logRecordList) == 1 and logRecordList[0]['level'] == STAFLog.Status and logRecordList[0]['message'] == logMessage): logRecord = logRecordList[0]else: print "Wrong output for log query request" print "Expected to find one record with level: '%s' and message: '%s'" % \ (STAFLog.Status, logMessage) print "Found '%s'" % context sys.exit(1)# Try to retrieve it from monitorrequest = "query machine %s handle %d" % (self, handle.handle)result = handle.submit("local", "monitor", request)if (result.rc != STAFResult.Ok): print "Error on querying monitor info, RC: %d, Result: %s" % \ (result.rc, result.result) sys.exit(result.rc)# Make sure we got back the correct (old) message from monitorcontext = unmarshall(result.result)monitorMap = context.getRootObject()if monitorMap['message'] != '%s:%s' % (STAFLog.Info, logMessage): print "Wrong output for MONITOR QUERY request" print "Expected to find:" print "{" print " Date-Time: <Timestamp>" print " Message : %s:%s" % (STAFLog.Info, logMessage) print "}" print "Found:\n%s" % context sys.exit(1)# Delete the log filerequest = "delete machine %s handle %d logname %s confirm" % \ (self, handle.handle, logName)result = handle.submit("local", "log", request)if (result.rc != STAFResult.Ok): print "Error deleting log file, RC: %s, Result: %s" % \ (result.rc, result.result) sys.exit(1)######################################### Next, test the marshall function #########################################print "Testing marshall function"myTestMap = {'name': 'TestA', 'exec': '/tests/TestA.py', 'testType': 'FVT', 'outputs': ['TestA.out', 'TestA.err']}marshalledResult = marshall(myTestMap)expectedResult = ( "@SDT/{:138::7:outputs@SDT/[2:38:@SDT/$S:9:TestA.out" + "@SDT/$S:9:TestA.err:8:testType@SDT/$S:3:FVT:4:name" + "@SDT/$S:5:TestA:4:exec@SDT/$S:15:/tests/TestA.py")if marshalledResult != expectedResult: print "Wrong output for marshall function" print "Expected to find:\n%s" % (expectedResult) print "Found:\n%s" % (marshalledResult) sys.exit(1)########################################## Next, test the STAFMapClassDefinition ##########################################print "Testing STAFMapClassDefinition class"mapClassDefName = 'Test/MyMap'myMapClassDef = STAFMapClassDefinition(mapClassDefName)myMapClassDef.addKey('name', 'Name')myMapClassDef.addKey('exec', 'Executable')myMapClassDef.addKey('testType', 'Test Type')myMapClassDef.setKeyProperty('testType', 'display-short-name', 'test')myMapClassDef.addKey('outputs', 'Outputs')expectedKeyMap = [ {'display-name': 'Name', 'key': 'name'}, {'display-name': 'Executable', 'key': 'exec'}, {'display-name': 'Test Type', 'key': 'testType', 'display-short-name': 'test'}, {'display-name': 'Outputs', 'key': 'outputs'}]if myMapClassDef.keys() != expectedKeyMap: print "Wrong keys for myMapClassDef" print "Expected:\n%s" % (expectedKeyMap) print "Found:\n%s" % (myMapClassDef.keys()) sys.exit(1)if myMapClassDef.name() != mapClassDefName: print "Wrong name for myMapClassDef" print "Expected: %s" % (myClassDefName) print "Found : %s" % (myMapClassDef.name()) sys.exit(1)expectedMapClass = { 'keys': [ {'display-name': 'Name', 'key': 'name'}, {'display-name': 'Executable', 'key': 'exec'}, {'display-name': 'Test Type', 'key': 'testType', 'display-short-name': 'test'}, {'display-name': 'Outputs', 'key': 'outputs'} ], 'name': 'Test/MyMap'}if myMapClassDef.getMapClassDefinitionObject() != expectedMapClass: print "getMapClassDefinitionObject() returned wrong object" print "Expected:\n%s" % (expectedMapClass) print "Found:\n%s" % (myMapClassDef.getMapClassDefinitionObject()) sys.exit(1)myMapClass = myMapClassDef.createInstance()########################################## Next, test the STAFMarshallingContext ##########################################print "Testing STAFMarshallingContext class"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -