summaryrefslogblamecommitdiffstats
path: root/For Weekly Test/23-07-2011/classController.py
blob: 698f7db5abb976a72b1dfee87fe927a705cef50f (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11










                  


                                                    

                      

 




                                   
                                         
                              
                              


                                
                              


                              

                              




                                           


                                                                                       


                

                                             
 

                                             
 

                                             


                                                 

                                                                                


                                                                          
 

                                                                          
 


                                          

                                                  
 

                                                     
                                          
                                                                 
                            
        

                                                             
 

                                                             
 

                                                             
                                        
                        
                                     

                                                                                                

                                                                                          
                                                
                                        

                                                                                             
                                



                                                          
                                                                     


                                                          
                                                                                   
 
                                                                             
                                        
                                                                                                
 

                                                                                   
 



                                                                                                   


                                                                                            
                                                                                     
 




                                                                                                           





                                                                                                    
 


                                                                             

                                                                        



                                                                     

                                                                        


                                                             
                                                                                                                    
                                                                                                      
                                                              
                                        
                                                          

                                              
                                                                                                                
                                                     

                                                        

                                             
                                                                                                        
                
                                        


                                
                                                                                           
 
import sys
import os
import time
import MySQLdb
import subprocess
import signal

import classClient
import classDb
import classPing

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

from time import sleep



class TimeoutException(Exception): 
    pass 

class test:

  def __init__(self, orig, dest, destNo):
	self.orig 	= orig
	self.dest 	= dest
	self.destNo 	= destNo
	self.repeatTest	= None
	self.portOrig	= None
	self.portDest	= None
	self.resultOrig	= None
	self.resultDest	= None
	self.testResult	= None
	self.caller	= None
	self.receiver	= None

  def FuncTest(self):

	def timeout_handler(signum, frame):
        	raise TimeoutException()

	logger.logEvent('')
	logger.logEvent('====================== Preparing Test ======================')
	
	try:
		
		if self.orig =="gsmBox1":
			self.portOrig = 50095

		elif self.orig =="gsmBox2":
			self.portOrig = 50096

		elif self.orig =="gsmBox3":
			self.portOrig = 50097

		else:
			# open SIP caller handler
			self.portOrig = 50099
			command="--command=python sipHandler.py " +self.portOrig
			subprocess.Popen(args=["gnome-terminal", command])

			sleep(5)

		logger.logEvent('Connecting to Caller handler')
		caller = classClient.Connection('localhost',self.portOrig)

		caller.connect()
		message = self.orig+ '|-C'
		caller.sendData(message)
			
		# wait respond from origin handler

		origHandler = caller.receiveData(60) 
		
		if origHandler == "ready":
			logger.logEvent('Caller handler : Ready')
			try:
	
				if self.dest =="gsmBox1":
					self.portDest = 50102

				if self.dest =="gsmBox2":
					self.portDest = 50103

				if self.dest =="gsmBox3":
					self.portDest = 50103
					
			
				else:
					self.portDest = 50100
					command="--command=python sipHandler.py " +self.portDest
					subprocess.Popen(args=["gnome-terminal", command])
		
					sleep(5)
					
				logger.logEvent('Connecting to Receiver handler')
				receiver = classClient.Connection('localhost', self.portDest)
				
				receiver.connect()
				message = self.dest+ '|-R'
				receiver.sendData(message)

				destHandler = receiver.receiveData(0)

				if destHandler == "ready":

					logger.logEvent('Receiver handler : Ready')

					caller.sendData("start|"+self.destNo)
					
					logger.logEvent('------------ Test Result ------------')

					self.resultOrig = caller.receiveData(120)
					self.resultDest = receiver.receiveData(120)

					
					logger.logEvent('1st Test, Origin :' +self.resultOrig)
					logger.logEvent('1st Test, Destination :' +self.resultDest)
					
					#if failed, tell everybody to try one more time
					if self.resultOrig == 486 or self.resultDest == 486:
						
						caller.sendData("start|"+self.destNo)

						self.resultOrig = caller.receiveData(0)
						self.resultDest = receiver.receiveData(0)

						logger.logEvent('2nd Test, Origin :' +self.resultOrig)
						logger.logEvent('2nd Test, Destination :' +self.resultDest)
						
						#if still failed, we make automatic test vice versa
	
						if self.resultOrig == 486 or self.resultDest == 486:
							self.testResult = 486
							self.repeatTest = True

						else:
							self.testResult = 200

						caller.sendData('487')
						receiver.sendData('487')

					else: 
						
						self.testResult = 200
						caller.sendData('487')
						receiver.sendData('487')

				else:
					self.testResult = 604
					logger.logEvent('604 General Handler Error: Destination handler no respond')
					#tell Caller handler to terminate because receiver doesnt work
					caller.sendData('487')
					
				receiver.closeConnection()

			except ValueError:    
				logger.logEvent('601 General Handler Error: Could not open Destination handler')
				self.testResult = 601
				caller.sendData('487')
				caller.closeConnection()
		else:
			self.testResult = 605
			logger.logEvent('605 General Handler Error: Origin handler no respond time out')
		
		caller.closeConnection()
	
	except ValueError:    
		testResult = 602
		logger.logEvent('602 General Handler Error: Could not open Origin handler')