summaryrefslogblamecommitdiffstats
path: root/notFinishedCode/tricode/ControllerClass.py
blob: 30d8b3365507f917d0cdf0659b51751e8abed1dd (plain) (tree)

































































































































































































































                                                                                                                                              
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 = SHHTunnelBoxClass.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 = SHHTunnelBoxClass.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)])

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