📄 testpython.py
字号:
mc = STAFMarshallingContext()mc.setMapClassDefinition(myMapClassDef)theMapClassDef = mc.getMapClassDefinition('Test/MyMap')if theMapClassDef.keys() != expectedKeyMap: print "Wrong keys for theMapClassDef" print "Expected:\n%s" % (expectedKeyMap) print "Found:\n%s" % (theMapClassDef.keys()) sys.exit(1)if theMapClassDef.getMapClassDefinitionObject() != expectedMapClass: print "Error: getMapClassDefinitionObject() returned wrong object" print "Expected:\n%s" % (expectedMapClass) print "Found:\n%s" % (theMapClassDef.getMapClassDefinitionObject()) sys.exit(1)if mc.hasMapClassDefinition('Test/MyMap') != 1: print "Error: The marshalling context does not have map class definition 'Test/MyMap'" sys.exit(1)mc.setRootObject(myTestMap)rootObj = mc.getRootObject()if rootObj != myTestMap: print "Error: mc.getRootObject() returned wrong object" print "Expected:\n%s" % (myTestMap) print "Found:\n%s" % (rootObj) sys.exit(1) if isMarshalledData('xyz'): print "Error: 'xyz' is not marshalled data" sys.exit(1)if not mc.isMarshalledData(marshalledResult): print "Not marshalled data. marshalledResult=%s" % (marshalledResult) sys.exit(1)keyMap = mc.mapClassDefinitionIterator()if len(keyMap) == 1 and keyMap[0] == 'Test/MyMap': print ''else: print "Error: mc.mapClassDefinitionIterator() != ['Test/MapMap']" print "mc.mapClassDefinitionIterator()=%s" % mc.mapClassDefinitionIterator() sys.exit()priObj = mc.getPrimaryObject()if priObj != mc: print "Error: mc.getPrimaryObject() != mc" print "mc.getPrimaryObject()=%s" % (mc.getPrimaryObject()) print "mc=%s" % (mc) sys.exit()formattedOutput = '%s' % (mc)formattedOutput1 = mc.__str__()formattedOutput2 = mc.__repr__()formattedOutput3 = formatObject(myTestMap, mc)if (formattedOutput != formattedOutput1 or formattedOutput != formattedOutput2 or formattedOutput != formattedOutput3): print "Error in str(), repr(), or formatObject function" print "formattedOutput=%s" % (formattedOutput) print "formattedOutput1=%s" % (formattedOutput) print "formattedOutput2=%s" % (formattedOutput) print "formattedOutput3=%s" % (formattedOutput) sys.exit(1)# Test the marshall function using a MapClassDefinitionexpectedResult2 = ( "@SDT/*:558:@SDT/{:398::13:map-class-map@SDT/{:370::10:Test/MyMap" + "@SDT/{:345::4:keys@SDT/[4:298:@SDT/{:50::12:display-name" + "@SDT/$S:4:Name:3:key@SDT/$S:4:name@SDT/{:57::12:display-name" + "@SDT/$S:10:Executable:3:key@SDT/$S:4:exec@SDT/{:95::12:display-name" + "@SDT/$S:9:Test Type:3:key@SDT/$S:8:testType:18:display-short-name" + "@SDT/$S:4:test@SDT/{:56::12:display-name@SDT/$S:7:Outputs:3:key" + "@SDT/$S:7:outputs:4:name@SDT/$S:10:Test/MyMap@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")marshalledResult2 = marshall(mc, mc)if marshalledResult2 != expectedResult2: print "Error: Wrong output for marshall function" print "Expected to find:\n%s" % (expectedResult2) print "Found:\n%s" % (marshalledResult2) sys.exit(1)marshalledResult3 = mc.marshall()if marshalledResult3 != expectedResult2: print "Error: Wrong output for marshall function" print "Expected to find:\n%s" % (expectedResult2) print "Found:\n%s" % (marshalledResult3) sys.exit(1)# Create a STAFMarshallingContext instance specifying the object# and mapClassMapmc2 = STAFMarshallingContext(myTestMap, mc.getMapClassMap())if mc2.hasMapClassDefinition('Test/MyMap') != 1: print "Error: mc2 does not have map class definition 'Test/MyMap'" print "mc2=%s" % mc2 sys.exit(1)rootObj = mc2.getRootObject()if rootObj != myTestMap: print "Error: mc2.getRootObject() returned wrong object" print "Expected:\n%s" % (myTestMap) print "Found:\n%s" % (rootObj) sys.exit(1)######################################### Next, test the unmarshall function #########################################print "Testing unmarshall function"# Unmarshall the marshalledResultmc = unmarshall(marshalledResult)if mc.getRootObject() != myTestMap: print 'Unmarshalled object not same as original object that was marshaled' print 'Expected:\n%s' % (myTestMap) print 'Found:\n%s' % (marshalledResult.getRootObject()) sys.exit(1)# Unmarshall the result from a FS QUERY ENTRY requestfileName = '{STAF/Config/ConfigFile}'result = handle.submit('local', 'FS', 'QUERY ENTRY %s' % fileName)if result.rc != STAFResult.Ok: print 'FS QUERY ENTRY %s failed' % fileName print 'RC=%s Result=%s' % (result.rc, result,result) sys.exit(1)mc = unmarshall(result.result)entryMap = mc.getRootObject()if entryMap['type'] == 'F' and int(entryMap['lowerSize']) > 0 and entryMap['lastModifiedTimestamp']: print ''else: print 'Unmarshall/getRootObject() failed' print "entryMap['type']=%s entryMap['lowerSize']=%s entryMap['lastModifiedTimestamp']=%s" % \ (entryMap['type'], entryMap['lowerSize'], entryMap['lastModoifiedTimestamp'])# Marshall a map and queue it; Get it off the queue, and unmarshall it# and verify results in original map object that was marshalledmessage = marshall(myTestMap)result = handle.submit('local', 'QUEUE', 'QUEUE MESSAGE %s' % message)if result.rc != STAFResult.Ok: print 'QUEUE MESSAGE failed with RC=%s Result=%s' % (result.rc, result.result) sys.exit(1)# Another process could obtain the message from the queue and unmarshall# it to get the original dictionary (map) objectresult = handle.submit('local', 'QUEUE', 'GET MESSAGE')if result.rc == STAFResult.Ok: mc = unmarshall(result.result) yourTestMap = mc.getRootObject()############################################# Next, test the formatObject function #############################################print "Testing formatObject function\n"print "Printing formatted output for %s" % (myTestMap)print formatObject(myTestMap)fileName = '{STAF/Config/ConfigFile}'result = handle.submit('local', 'FS', 'QUERY ENTRY %s' % wrapData(fileName))if result.rc != STAFResult.Ok: print 'FS QUERY ENTRY %s failed' % fileName print 'RC=%s Result=%s' % (result.rc, result,result) sys.exit(1)mc = unmarshall(result.result)print "Printing formatted output for FS QUERY ENTRY %s" % (fileName)print formatObject(mc.getRootObject(), mc)# Create a marshalling context and marshall it, and unmarshall itmyMapClassDef = STAFMapClassDefinition('Test/MyMap')myMapClassDef.addKey('name', 'Name')myMapClassDef.addKey('exec', 'Executable')testList = [ {'name': 'TestA', 'exec': '/tests/TestA.py'}, {'name': 'TestB', 'exec': '/tests/TestB.sh'}, {'name': 'TestC', 'exec': '/tests/TestC.cmd'} ]mc = STAFMarshallingContext()mc.setMapClassDefinition(myMapClassDef)myTestList = []for test in testList: testMap = myMapClassDef.createInstance() testMap['name'] = test['name'] testMap['exec'] = test['exec'] myTestList.append(testMap)mc.setRootObject(myTestList)message = marshall(mc)mc2 = unmarshall(message)mc2.getRootObject()if str(mc) != str(mc2): print "Error: str(mc) != str(mc2)" print "mc=%s" % mc print "mc2=%s" % mc2 sys.exit(1)mc3 = STAFMarshallingContext(mapClassMap=mc.getMapClassMap())mc4 = STAFMarshallingContext(obj=myTestList, mapClassMap=mc.getMapClassMap())# Test privacy methodspassword = 'secret';pwWithPD = STAFAddPrivacyDelimiters(password)print 'STAFAddPrivacyDelimiters(%s)=%s' % (password, pwWithPD)print 'STAFEscapePrivacyDelimiters(%s)=%s' % (pwWithPD, STAFEscapePrivacyDelimiters(pwWithPD))print 'STAFMaskPrivateData(%s)=%s' % (pwWithPD, STAFMaskPrivateData(pwWithPD))print 'STAFRemovePrivacyDelimiters(%s)=%s' % (pwWithPD, STAFRemovePrivacyDelimiters(pwWithPD))password = 'secret';pwWithPD = addPrivacyDelimiters(password)print 'addPrivacyDelimiters(%s)=%s' % (password, pwWithPD)print 'escapePrivacyDelimiters(%s)=%s' % (pwWithPD, escapePrivacyDelimiters(pwWithPD))print 'maskPrivateData(%s)=%s' % (pwWithPD, maskPrivateData(pwWithPD))print 'removePrivacyDelimiters(%s)=%s' % (pwWithPD, removePrivacyDelimiters(pwWithPD))# Test private data methodstestData = ['secret', 'secret', '!!@secret@!!', 'Pw: !!@pw@!!', '^!!@secret@!!', '^!!@secret^@!!', '!!@secret', '!!@secret^@!!', 'Pw1=%s, Pw2=%s.' % (addPrivacyDelimiters('a'), addPrivacyDelimiters('pw')), '^%s^%s' % (addPrivacyDelimiters('a'), addPrivacyDelimiters('b')), 'Pw1=!!@secret, !!@pw@!!.', 'Pw1=!!@secret@!!, !!@pw.', 'Msg: !!@Pw: ^!!@pw^@!!@!!', '@!!a!!@b@!!', '' ] print ("KEY:\n apd() = STAFUtil.addPrivacyDelimiters()\n" + " mpd() = STAFUtil.maskPrivateData()\n" + " rpd() = STAFUtil.removePrivacyDelimiters()\n" + " epd() = STAFUtil.escapePrivacyDelimiters()\n")numErrors = 0;for i in range(0, len(testData)): data = testData[i] print '\n%s) data: %s\n' % ((i+1), data) maskedData2 = maskPrivateData(data) print "mpd(" + data + "): " + maskedData2 + "\n" dataWithPrivacy = addPrivacyDelimiters(data) print "apd(" + data + "): " + dataWithPrivacy dataWithPrivacyRemoved = removePrivacyDelimiters(dataWithPrivacy, 1) print "rpd(" + dataWithPrivacy + ", 1): " + dataWithPrivacyRemoved dataWithPrivacyRemoved2 = removePrivacyDelimiters(dataWithPrivacy, 2) print "rpd(" + dataWithPrivacy + ", 2): " + dataWithPrivacyRemoved2 dataWithAllPrivacyRemoved = removePrivacyDelimiters(dataWithPrivacy, 0) print "rpd(" + dataWithPrivacy + ", 0): " + dataWithAllPrivacyRemoved escapedData = escapePrivacyDelimiters(data) print "\nepd(" + data + "): " + escapedData dataWithPrivacy = addPrivacyDelimiters(escapedData) print "apd(" + escapedData + "): " + dataWithPrivacy dataWithPrivacyRemoved = removePrivacyDelimiters(dataWithPrivacy, 1) print "rpd(" + dataWithPrivacy + ", 1): " + dataWithPrivacyRemoved if (dataWithPrivacyRemoved != data): print "ERROR: removePrivacyDelimiters(" + dataWithPrivacyRemoved + ", 1) != " + data numErrors = numErrors + 1 dataWithAllPrivacyRemoved = removePrivacyDelimiters(dataWithPrivacy) print "rpd(" + dataWithPrivacy + ", 0): " + dataWithAllPrivacyRemoved if (dataWithAllPrivacyRemoved != data): print "ERROR: removePrivacyDelimiters(" + dataWithAllPrivacyRemoved + ", 0) != " + data numErrors = numErrors + 1if (numErrors == 0): print "\nTest completed successfully"else: print "\nTest failed with " + numErrors +" errors"############## Finish up ##############result = handle.unregister()if (result != STAFResult.Ok): print "Error unregistering with STAF, RC: %d" % result sys.exit(result)print "*** All tests successful ***"sys.exit(0)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -