runner_sender.py 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. # -*- coding: utf-8 -*-
  2. import contextlib
  3. import json
  4. import logging
  5. import socket
  6. import time
  7. import mmap
  8. import os, sys, time
  9. from multiprocessing import Lock
  10. from ssat_sdk import getRunnerTcpPort
  11. from ssat_sdk.utils import LoggingUtil
  12. # lock = Lock()
  13. _IsLoggerCreated = None
  14. def sendActionStart(testCaseName, stepIndex, stepName, stepDesc):
  15. actionStartMessage = {'ReportType': "ActionStart",
  16. 'data': {'testCaseName': testCaseName, 'stepIndex': stepIndex, 'stepName': stepName,
  17. 'stepDesc': stepDesc}}
  18. actionStartMessageJson = json.dumps(actionStartMessage)
  19. client(actionStartMessageJson)
  20. def sendActionResult(testCaseName, stepIndex, stepName, stepDesc, actionRet, failedReason, imageFileDir, videoFileDir,
  21. imageNameList, videoName, analysis):
  22. actionResultMessage = {'ReportType': "ActionFinish", 'data':
  23. {'testCaseName': testCaseName, 'stepIndex': stepIndex, 'stepName': stepName, 'stepDesc': stepDesc,
  24. 'actionRet': actionRet, 'failedReason': failedReason, 'imageFileDir': imageFileDir,
  25. 'videoFileDir': videoFileDir, 'imageName': imageNameList, 'videoName': videoName, 'analysis': analysis}}
  26. actionResultMessageJson = json.dumps(actionResultMessage)
  27. client(actionResultMessageJson)
  28. def sendCaseResult(testCaseName, stepIndex, caseResult, failedReason, logFileDir, logName):
  29. caseResultMessage = {'ReportType': "CaseFinish",
  30. 'data': {'testCaseName': testCaseName, 'stepIndex': stepIndex, 'caseResult': caseResult,
  31. 'failedReason': failedReason, 'logFileDir': logFileDir, 'logName': logName}}
  32. caseResultMessageJson = json.dumps(caseResultMessage)
  33. client(caseResultMessageJson)
  34. time.sleep(1) # 确保程序结束时结果能发送成功。
  35. def client(message):
  36. # lock.acquire()
  37. # tcp方式传结果给Runner端
  38. LoggingUtil.caseResult(message)
  39. sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  40. port = getRunnerTcpPort()
  41. try:
  42. sock.connect(('127.0.0.1', port))
  43. sock.sendall(message)
  44. except Exception, e:
  45. print u"无Runner接收结果。Error:", e, ' runner_sender_port:', port
  46. finally:
  47. sock.close()
  48. # 内存共享方式
  49. # LoggingUtil.caseResult(message)
  50. # with contextlib.closing(mmap.mmap(-1, 4096, tagname='caseresult', access=mmap.ACCESS_WRITE)) as m:
  51. # # for i in range(1, 10001):
  52. # m.seek(0)
  53. # m.write(message)
  54. # m.flush()
  55. # lock.release()
  56. # time.sleep(1)