import sys import os import time import MySQLdb import subprocess import signal import classClient import classDb import classPing from time import sleep class TimeoutException(Exception): pass class test: def __init__(self, orig, origAdd, dest, destAdd, destNo): self.orig = orig self.origAdd = origAdd self.dest = dest self.destAdd = destAdd self.destNo = destNo self.repeatTest = None self.portOrig = None self.resultOrig = None self.resultDest = None self.testResult = None self.x = None self.y = None def FuncTest(self): def timeout_handler(signum, frame): raise TimeoutException() print "" print "====================== Preparing Test ======================" try: if self.dest =="gsmBox1" or self.dest =="gsmBox2": if self.dest =="gsmBox1": portOrig = 50095 if self.dest =="gsmBox2": portOrig = 50096 print "" print "Connecting to Caller handler" x.connect() x.sendData('be caller') else: # open SIP caller handler command="--command=python " +self.orig subprocess.Popen(args=["gnome-terminal", command]) sleep(5) if self.orig=="sipCall.py": self.portOrig = 50097 if self.orig == "landlineCall.py": self.portOrig = 50099 if self.orig == "LocalSIPCall.py": self.portOrig = 50100 x = classClient.Connection(self.origAdd,self.portOrig) print "" print "Connecting to Caller handler" x.connect() # wait respond from origin handler signal.signal(signal.SIGALRM, timeout_handler) signal.alarm(60) while 1: try: origHandler = x.receiveData(0) if origHandler <> "": break except TimeoutException: origHandler = "failed" break if origHandler == "ready": print "Caller handler : Ready" print "" try: if self.dest =="gsmBox1" or self.dest =="gsmBox2": if self.dest =="gsmBox1": self.portDest = 50102 if self.dest =="gsmBox2": self.portDest = 50103 y = classClient.Connection(self.destAdd, self.portDest) print "Connecting to Receiver handler" y.connect() y.sendData('receiver') else: command="--command=python " +self.dest subprocess.Popen(args=["gnome-terminal", command]) sleep(2) if self.dest=="SIPReceiver.py": self.portDest = 50104 if self.dest == "landlineReceiver.py": self.portDest = 50106 if self.dest == "localsipReceiver.py": self.portDest = 50107 y = classClient.Connection(self.destAdd, self.portDest) print "Connecting to Receiver handler" y.connect() signal.signal(signal.SIGALRM, timeout_handler) signal.alarm(60) while 1: try: destHandler = y.receiveData(0) if destHandler <> "": break except TimeoutException: destHandler = "failed" break if destHandler == "ready": print "Receiver handler : Ready" x.sendData("start|"+self.destNo)#send message to handler to start the call signal.signal(signal.SIGALRM, timeout_handler) signal.alarm(120) print "" print "------------ Test Result ------------" print "" while 1: try: sleep(0.5) self.resultOrig = x.receiveData(0) self.resultDest = y.receiveData(0) if self.resultOrig <> "" and self.resultDest <> "": break except TimeoutException: self.resultOrig = 486 self.resultDest = 486 break #if failed, tell everybody to try one more time if self.resultOrig == 486 or self.resultDest == 486: x.sendData("start|"+self.destNo) signal.signal(signal.SIGALRM, timeout_handler) signal.alarm(120) while 1: try: sleep(0.5) self.resultOrig = x.receiveData(0) self.resultDest = y.receiveData(0) if self.resultOrig <> "" and self.resultDest <> "": print "here" break except TimeoutException: self.resultOrig = 486 self.resultDest = 486 break #if still failed, we make automatic test vice versa if self.resultOrig == 486 or self.resultDest == 486: self.testResult = 486 self.repeatTest = True print "Second test result origin: ", self.resultOrig print "Second test result Destination: ", self.resultDest else: self.testResult = 200 print "Second test result origin: ", self.resultOrig print "Second test result Destination: ", self.resultDest x.sendData('487') y.sendData('487') else: self.testResult = 200 print "Test Result origin: ", self.resultOrig print "Test Result Destination: ", self.resultDest x.sendData('487') y.sendData('487') else: self.testResult = 604 print "604 General Handler Error: Destination handler no respond" #tell Caller handler to terminate because receiver doesnt work x.sendData('487') y.closeConnection() except ValueError: print "601 General Handler Error: Could not open Destination handler" self.testResult = 601 else: self.testResult = 605 print "605 General Handler Error: Origin handler no respond" x.closeConnection() except ValueError: testResult = 602 print "602 General Handler Error: Could not open Origin handler"