import sys import os import subprocess import SSHTunnelBoxClass import ClientClass import LogFileClass logger = LogFileClass.Logging('TestProcessLog.log') from time import sleep class doTheTest: def __init__(self, callFrom, callPortName, accCaller, callTo, destPortName, destNo, accDest): self.callFrom = callFrom self.dest = callTo self.destNo = destNo self.accDest = accDest self.accCaller = accCaller self.callPortName = callPortName self.destPortName = destPortName self.portCaller = None self.portDest = None self.resultCaller = None self.resultDest = None self.testResult = None def FuncTest(self): logger.logEvent('') self.initCaller() sleep(2) self.callerGreeting() if self.connected == 'OK': self.caller.sendData('CALLER|'+self.destNo) callerHandler = self.caller.receiveData(10) if callerHandler == "CALLER READY": logger.logEvent('Caller handler : Ready') self.initReceiver() sleep(2) self.receiverGreeting() if self.connected == 'OK': self.receiver.sendData('RECEIVER') destHandler = self.receiver.receiveData(10) if destHandler == 'RECEIVER READY': logger.logEvent('Receiver handler : Ready') self.startCall() self.waitingFeedback() else: self.testResult = 604 logger.logEvent('604 General Handler Error: Destination handler no respond timeout') self.caller.sendData('TERMINATE CONNECTION') self.receiver.closeConnection() else: logger.logEvent('998 General Handler Error: Could not connect Destination handler') self.testResult = 998 self.caller.sendData('TERMINATE CONNECTION') self.caller.closeConnection() else: self.testResult = 605 logger.logEvent('605 General Handler Error: caller handler no respond timeout') self.caller.closeConnection() else: self.testResult = 999 logger.logEvent('999 General Handler Error: Could not connect to Caller handler') def waitingFeedback(self): logger.logEvent('Waiting Feedback') self.resultCaller = self.caller.receiveData(15) self.resultDest = self.receiver.receiveData(15) if self.resultCaller <> 'CALL OK' or self.resultDest <> 'CALL OK': logger.logEvent('Test Failed') self.testResult = 486 self.initTerminate() else: logger.logEvent('Test Succeed') self.testResult = 200 self.initTerminate() def startCall(self): logger.logEvent('Start Call') self.receiver.sendData('RECEIVE START') self.caller.sendData('CALL START') def initCaller(self): logger.logEvent('init Caller') logger.logEvent(self.callFrom) if self.callFrom =="GSMRZ1": self.portCaller = 50007 self.initGSM(self.portCaller, self.callPortName) elif self.callFrom =="GSMRZ2": self.portCaller = 40000 self.box1 = SSHTunnelBoxClass.SSHTunneling(40000, 50008, '10.4.58.241', 'lsfks', 'r') self.box1.startTunneling() elif self.callFrom =="GSMRZ3": self.portCaller = 20000 self.box2 = SSHTunnelBoxClass.SSHTunneling(20000, 50008, '132.230.4.67', 'lsfks', 'r')#ip?? self.box2.startTunneling() elif self.callFrom =="GSMExt.O2": self.portCaller = 50010 self.initGSM(self.portCaller, self.callPortName) elif self.callFrom =="GSMExt.Voda": self.portCaller = 50011 self.initGSM(self.portCaller, self.callPortName) elif self.callFrom =="GSMExt.Tm": self.portCaller = 50012 self.initGSM(self.portCaller, self.callPortName) elif self.callFrom =="GSMExt.Eplus": self.portCaller = 50013 self.initGSM(self.portCaller, self.callPortName) else: self.portCaller = 50099 subprocess.Popen(args=["gnome-terminal", '--command=python SIPHandler.py '+self.accCaller+ ' ' +str(self.portCaller)]) def initReceiver(self): logger.logEvent('init Receiver') logger.logEvent(self.dest) if self.dest =="GSMRZ1": self.portDest = 50007 self.initGSM(self.portDest, self.destPortName) elif self.dest =="GSMRZ2": self.portDest = 40000 self.box1 = SSHTunnelBoxClass.SSHTunneling(40000, 50008, '10.4.58.241', 'lsfks', 'r') self.box1.startTunneling() elif self.dest =="GSMRZ3": self.portDest = 20000#should be 9 self.box2 = SSHTunnelBoxClass.SSHTunneling(20000, 50008, '132.230.4.67', 'lsfks', 'r')#ip?? self.box2.startTunneling() elif self.dest =="GSMExt.O2": self.portDest = 50010 self.initGSM(self.portDest, self.destPortName) elif self.dest =="GSMExt.Voda": self.portDest = 50011 self.initGSM(self.portDest, self.destPortName) elif self.dest =="GSMExt.Tm": self.portDest = 50012 self.initGSM(self.portDest, self.destPortName) elif self.dest =="GSMExt.Eplus": self.portDest = 50013 self.initGSM(self.portDest, self.destPortName) else: self.portDest = 50100 subprocess.Popen(args=['gnome-terminal', '--command=python SIPHandler.py '+self.accDest+ ' ' +str(self.portDest)]) #os.system("/usr/bin/python SIPHandler.py > /dev/null 2>&1 &") def initTerminate(self): self.caller.sendData('TERMINATE CONNECTION') self.receiver.sendData('TERMINATE CONNECTION') if self.dest =="GSMRZ2" or self.callFrom =="GSMRZ2": self.box1.killTunneling() if self.dest =="GSMRZ3" or self.callFrom =="GSMRZ3": self.box2.killTunneling() def callerGreeting(self): self.connected = None self.caller = ClientClass.Connection('localhost',self.portCaller) self.caller.connect() if self.caller.connected == 1: logger.logEvent('Connected to Caller Handler') self.caller.sendData('HELLO HANDLER') if self.caller.receiveData(10) == 'HELLO CONTROLLER': logger.logEvent('Caller Handler respond') self.connected = 'OK' else: logger.logEvent('Cannt connect to Caller') self.connected = 'NOT OK' def receiverGreeting(self): self.connected = None self.receiver = ClientClass.Connection('localhost', self.portDest) self.receiver.connect() if self.receiver.connected == 1: logger.logEvent('Connected to Receiver Handler') self.receiver.sendData('HELLO HANDLER') if self.receiver.receiveData(10) == 'HELLO CONTROLLER': logger.logEvent('Receiver Handler respond') self.connected = 'OK' else: logger.logEvent('Cannt connect to Receiver') self.connected = 'NOT OK' def initGSM(self, portCommunication, portDevice): subprocess.Popen(args=["gnome-terminal", '--command=python GSMHandler.py '+str(portCommunication)+ ' ' +str(portDevice)])