summaryrefslogblamecommitdiffstats
path: root/Controller/ControllerClass.py
blob: 04c9614e01d67abaae5754ec11e4ff91cfe5f544 (plain) (tree)






































































                                                                                                                                    

                                                                                                                           









                                                                                                               
                                                                                                         



                                  


                                                               

                                                                                  

                                                      
                                             

                                              














































































                                                                                                                                             
import sys
import os
import subprocess

import ClientClass

import LogFileClass
logger = LogFileClass.Logging('classController.log')

from time import sleep


class test:

	def __init__(self, callFrom, callAdd, callTo, recAdd, destNo):
	
		self.callFrom 		= callFrom
		self.dest 		= callTo
		self.destNo 		= destNo
		self.repeatTest		= None
		self.portCaller		= None
		self.portDest		= None
		self.resultCaller	= None
		self.resultDest		= None
		self.testResult		= None
		self.callAdd		= callAdd
		self.recAdd		= recAdd
		self.receiver		= None
		self.caller		= None
		self.connected 		= None
  

	def FuncTest(self):

		logger.logEvent('')
		
		self.initCaller()
		sleep(3)

		self.callerGreeting()

		if self.connected == 'OK':
		
			self.caller.sendData('CALLER|'+self.destNo)
			callerHandler = self.caller.receiveData(60) 
		
			if callerHandler == "CALLER READY":
				logger.logEvent('Caller handler : Ready')
				
				self.initReceiver()				
				sleep(3)
				self.receiverGreeting()	
				
				if self.connected == 'OK':	
			
					self.receiver.sendData('RECEIVER')
					destHandler = self.receiver.receiveData(60)
	
					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(60)
		self.resultDest = self.receiver.receiveData(60)
						
		if self.resultCaller <> 'CALL OK' or self.resultDest <> 'CALL OK':

			logger.logEvent('Test Failed')
			self.testResult = 486
			self.repeatTest = True
			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')

		if self.callFrom =="gsmr1":
			self.portCaller = 50008 

		elif self.callFrom =="gsmr2":
			self.portCaller = 50008 #temp

		elif self.callFrom =="gsmr3":
			self.portCaller = 50097

		else:
			self.portCaller = 50099
			subprocess.Popen(args=["gnome-terminal", '--command=python sipHandler.py '+self.callFrom+ ' ' +str(self.portCaller)])

	def initReceiver(self):
		logger.logEvent('init Receiver')

		if self.dest =="gsmr1":
			self.portDest = 50008

		elif self.dest =="gsmr2":
			self.portDest = 50008 #temp

		elif self.dest =="gsmr3":
			self.portDest = 50103
			
		else:
			self.portDest = 50100
			subprocess.Popen(args=['gnome-terminal', '--command=python sipHandler.py '+self.dest+ ' ' +str(self.portDest)])

	def initTerminate(self):
		self.caller.sendData('TERMINATE CONNECTION')
		self.receiver.sendData('TERMINATE CONNECTION')

	def callerGreeting(self):
		self.connected 	= None
		self.caller = ClientClass.Connection(self.callAdd,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(30) == '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(self.recAdd, 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(30) == 'HELLO CONTROLLER':
				logger.logEvent('Receiver Handler respond')
				self.connected = 'OK'
		else:
			logger.logEvent('Cannt connect to Receiver')
			self.connected = 'NOT OK'