# -*- coding: utf-8 -*- import contextlib import json import logging import socket import time import mmap import os, sys, time from multiprocessing import Lock from ssat_sdk import getRunnerTcpPort from ssat_sdk.utils import LoggingUtil # lock = Lock() _IsLoggerCreated = None def 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)