123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322 |
- import json
- import logging
- import os
- import sys
- import time
- import datetime
- import numpy as np
- import struct
- import binascii
- from ssat_sdk.utils.string_util import pathToWindowsPath
- from ssat_sdk.sat_environment import getSATTmpDIR, writeIsSendKeyTakePicture
- from ssat_sdk.sat_environment import getRunnerTcpPort
- import socket
- _IsLoggerCreated = None
- class logClient:
- def __init__(self):
- self.sock = None
- self.port = getRunnerTcpPort()
- self.constate = False
- def __del__(self):
- self.disconnect()
-
- def connect(self):
- try:
- self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- self.port = getRunnerTcpPort()
- self.sock.connect(('127.0.0.1', self.port))
- self.constate = True
- except Exception, e:
- print "LoggingUtil:client=> socket connect error:", e, self.port
- self.constate = False
-
- return self.constate
-
- def sendmsg(self, msg, type = 'printLog'):
- if self.constate is False:
- if self.connect() is False:
- return
- msg_json = ""
- msg_dict = {'ReportType': type, 'prinMsg': msg}
- try:
- msg_json = json.dumps(msg_dict)
- except Exception:
- print "LoggingUtil:client=> to json error:", msg
- return
- try:
- self.sock.settimeout(1)
- self.sock.sendall(msg_json)
- self.sock.settimeout(None)
- except Exception, e:
- print "LoggingUtil:client=>无Runner接收结果。Error:", e, 'runner_sender_port:', self.port
- self.disconnect()
- self.connect()
-
- def disconnect(self):
- if self.sock is None:
- return
- try:
- self.sock.shutdown(2)
- self.sock.close()
- except Exception, e:
- print "LoggingUtil:client=> socket disconnect error:", e
- DataHeader = np.dtype({'names': ['protocol', 'len', 'cmd'], 'formats': ['u1', 'u4', 'u1']}, align=False)
- NoticeResp = np.dtype({'names': ['TimeStamp', 'NoticeType'], 'formats': ['u8', 'u4']}, align=False)
- class noticeClient:
- def __init__(self):
- '''通信sock'''
- self.sock = None
- '''通信端口号'''
- self.port = getRunnerTcpPort()
- '''通信状态'''
- self.constate = False
- def __def__(self):
- self.disconnect()
- '''连接服务器'''
- def connect(self):
- try:
- self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- self.sock.connect(('127.0.0.1', self.port))
- self.sock.sendall("2222")
- self.constate = True
- except Exception, e:
- print "noticeClient=> socket connect error:", e, self.port
- self.constate = False
- return self.constate
-
-
- def sendnotice(self, type):
- '''是否连接'''
- if self.constate is False:
- if self.connect() is False:
- print u'连接服务器失败'
- return False
- '''拼装要发送的数据包'''
- notice = np.array([(time.time(), type)], dtype=NoticeResp)
- '''发送请求数据'''
- try:
- self.sock.settimeout(5)
- phead = np.array([(0xAA, notice.itemsize + np.array([(0xAA, 0, 0x01)], dtype=DataHeader).itemsize, 0x06)], dtype=DataHeader)
- '''一次性发送完整包'''
- self.sock.sendall(bytearray(phead.tobytes() + notice.tobytes()))
- self.sock.settimeout(None)
- except Exception, e:
- print "noticeClient=> send Error:", e
- self.disconnect()
- self.connect()
- return False
-
- print u'成功发送'
- return True
-
- '''断开连接'''
- def disconnect(self):
- try:
- self.sock.shutdown(2)
- self.sock.close()
- except Exception, e:
- print "noticeClient=> socket disconnect error:", e
- logClient_singleton = logClient()
- noticeClient_singleton = noticeClient()
- def sendKey(keyname, keyExit):
- if keyExit:
- msg = currentTime() + '执行sendKey:' + keyname
- else:
- msg = currentTime() + 'sendKey:' + keyname + '不存在'
- print msg
- def takePicpure(result, picpath):
-
- msg = currentTime() + 'takePicture:' + '截图结果:' + \
- str(result) + '截图路径:' + picpath
- print msg
- def printLog(tag='', logmsg=''):
-
- if logmsg == '':
- msg = currentTime() + 'printLog:%s' % str(tag)
- tcpMsg = str(tag)
- else:
- msg = currentTime() + 'printLog:%s:%s' % (str(tag), str(logmsg))
- tcpMsg = str(tag) + str(logmsg)
- print msg
-
- def NotifyShutdown():
-
- noticeClient_singleton.sendnotice(0)
- def NotifyReboot():
-
- noticeClient_singleton.sendnotice(1)
- def caseResult(caseresult):
-
-
- msg = currentTime() + u'TcpClient发送的信息caseResult:' + caseresult
- print msg
- def currentTime():
- return time.strftime('%Y-%m-%d %H:%M:%S ', time.localtime(time.time()))
- createdlogTab = 'default'
- caseRunLogDirPath = os.path.join(getSATTmpDIR(), 'case_run_no_created')
- debugCaseRunLogDirPath = os.path.join(getSATTmpDIR(), 'case_run_no_created')
- debugLogger = None
- Tag_pyFileName = os.path.split(__file__)[-1]
- class DebugLogger():
- def info(self, pyFileName, className, funName, msg):
-
- logtime = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
- logMsg = "%s %s %s.%s INFO %s \n" % (logtime, pyFileName, className, funName, msg)
- print "调试信息=>",logMsg
-
- mkCasedir(caseRunLogDirPath)
- filePath = os.path.join(caseRunLogDirPath, 'case_run.log')
- fp = open(filePath, 'a')
- fp.write(logMsg)
- fp.close()
-
- def getDebugLogger():
- global debugLogger
- if not debugLogger:
- debugLogger = DebugLogger()
- return debugLogger
- def closeFileHandler(logTab='default'):
- global createdlogTab, caseRunLogDirPath
-
- print 'createdlogTab:', createdlogTab, 'logTab:', logTab
-
- closeSendKeyTakePicture()
- if logTab != 'default' and logTab == createdlogTab:
- debugLogPath = os.path.join(caseRunLogDirPath, 'case_run.log')
- getDebugLogger().info('Loggger.py', 'NoClass', 'closeFileHandler',
- u'关闭Tab:%s的case_run.log文件保存路径:%s' % (logTab, pathToWindowsPath(debugLogPath)))
- caseRunLogDirPath = os.path.join(getSATTmpDIR(), 'case_run_no_created')
- createdlogTab = 'default'
- def createFileHandler(logTab='default'):
- global createdlogTab, caseRunLogDirPath, debugCaseRunLogDirPath
-
- print 'createFileHandler createdlogTab:', createdlogTab
-
- startSendKeyTakePicture()
- if createdlogTab == 'default':
- print '创建文件'
- caseRunLogDir = 'case_run_' + \
- '{0:%Y%m%d%H%M%S%f}'.format(datetime.datetime.now())
- caseRunLogDirPath = os.path.join(getSATTmpDIR(), caseRunLogDir)
-
- debugCaseRunLogDirPath = caseRunLogDirPath
- mkCasedir(caseRunLogDirPath)
- debugLogPath = os.path.join(caseRunLogDirPath, 'case_run.log')
- getDebugLogger().info('Loggger.py', 'NoClass', 'closeFileHandler',
- u'创建Tab:%s的case_run.log文件保存路径:%s' % (logTab, pathToWindowsPath(debugLogPath)))
-
- createdlogTab = logTab
- def startSendKeyTakePicture():
- writeIsSendKeyTakePicture("True")
- def closeSendKeyTakePicture():
- writeIsSendKeyTakePicture("False")
- def getCaseRunLogDirPath():
- global caseRunLogDirPath
- mkCasedir(caseRunLogDirPath)
- return caseRunLogDirPath
- def getDebugCaseRunLogDirPath():
- global debugCaseRunLogDirPath
- return debugCaseRunLogDirPath
- def mkCasedir(dir):
- if (not os.path.exists(dir)):
- os.mkdir(dir)
- if __name__ == "__main__":
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- NotifyReboot()
|