| 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()
 
 
  |