| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 | # -*- coding: utf-8 -*-import contextlibimport jsonimport loggingimport socketimport timeimport mmapimport os, sys, timefrom multiprocessing import Lockfrom ssat_sdk import getRunnerTcpPortfrom ssat_sdk.utils import LoggingUtil# lock = Lock()_IsLoggerCreated = Nonedef sendActionStart(testCaseName, stepIndex, stepName, stepDesc):    actionStartMessage = {'ReportType': "ActionStart",                          'data': {'testCaseName': testCaseName, 'stepIndex': stepIndex, 'stepName': stepName,                                   'stepDesc': stepDesc}}    actionStartMessageJson = json.dumps(actionStartMessage)    client(actionStartMessageJson)def sendActionResult(testCaseName, stepIndex, stepName, stepDesc, actionRet, failedReason, imageFileDir, videoFileDir,                     imageNameList, videoName, analysis):    actionResultMessage = {'ReportType': "ActionFinish", 'data':        {'testCaseName': testCaseName, 'stepIndex': stepIndex, 'stepName': stepName, 'stepDesc': stepDesc,         'actionRet': actionRet, 'failedReason': failedReason, 'imageFileDir': imageFileDir,         'videoFileDir': videoFileDir, 'imageName': imageNameList, 'videoName': videoName, 'analysis': analysis}}    actionResultMessageJson = json.dumps(actionResultMessage)    client(actionResultMessageJson)def sendCaseResult(testCaseName, stepIndex, caseResult, failedReason, logFileDir, logName):    caseResultMessage = {'ReportType': "CaseFinish",                         'data': {'testCaseName': testCaseName, 'stepIndex': stepIndex, 'caseResult': caseResult,                                  'failedReason': failedReason, 'logFileDir': logFileDir, 'logName': logName}}    caseResultMessageJson = json.dumps(caseResultMessage)    client(caseResultMessageJson)    time.sleep(1)  # 确保程序结束时结果能发送成功。def client(message):    # lock.acquire()    # tcp方式传结果给Runner端    LoggingUtil.caseResult(message)    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)    port = getRunnerTcpPort()    try:        sock.connect(('127.0.0.1', port))        sock.sendall(message)    except Exception, e:        print u"无Runner接收结果。Error:", e, '   runner_sender_port:', port    finally:        sock.close()    # 内存共享方式    # LoggingUtil.caseResult(message)    # with contextlib.closing(mmap.mmap(-1, 4096, tagname='caseresult', access=mmap.ACCESS_WRITE)) as m:    #     # for i in range(1, 10001):    #     m.seek(0)    #     m.write(message)    #     m.flush()    # lock.release()    # time.sleep(1)
 |