summaryrefslogblamecommitdiffstats
path: root/For Weekly Test/12-09-2011/gsmselftest.py
blob: 9f8d0c25359b012da2c0ff37706694ccc608173c (plain) (tree)

























                                                          
                                 



                                                    
                                                      























                                                  
                                              







































                                                                                                                





                                         
                    







                               
                             











































































































































                                                                             
            













                                                                                                                  
                                                                                   


































                                                                                                 


                            





                                     

                                                             
                                                 
                                                                      
















                                                                                                                             



                                      
                                              




                                        










                                                

                                                                      


                   
                                                                            




                                       
                                                
                                                                      
                       




                        

                      








                                                                              
                                                                             















                                                     
                                                                    


                                              
                                                                                                  









































                                                                                                  
 













                                                                                         
                                                                                       














































































































                                                                                                              
                                                                                                            



                                                                                                                           
 

















                                                                                                                           











                                                                   
                                                                                            

                                                             
                                                                                                                
                                             
                                                                                                                      








                                                                                                                           
                                                                                                                     

                                                             
                                                                                                                             
                                             
                                                                                                                      


                                                                                                                           
                                                                                                      


                                                                                       






























                                                                                                                          










                                



                                   















                                                                                           
 






                                          

























                                                                                                                  
 



















                                                                                                      
                                       




























                                                     
#! /usr/bin/env python
import sys
import ControllerClass
import DbClass
import PingClass
from time import sleep

global resultsList
resultsList = list()

def ping(handler):
	
	global serverStatus
	
	if handler == 'landline':
		server = PingClass.Ping('sipgate.de')
		serverStatus = server.ping(1)

	elif handler == 'sip':
		server = PingClass.Ping('132.230.4.8')
		serverStatus = server.ping(1)

	elif handler == 'unisip':
		server = PingClass.Ping('132.230.252.228')
		serverStatus = server.ping(1)

	elif handler == 'GSMRZ3':
		server = PingClass.Ping('localhost')
		serverStatus = server.ping(1)

	elif handler == 'GSMRZ2':
		server = PingClass.Ping('10.4.58.241')
		serverStatus = server.ping(1)
	else:
		serverStatus = 1

def allPing():
	
	global sipGate
	global sipServer
	global unisip
	global gsmBox1
	global gsmBox2
		
	server = PingClass.Ping('sipgate.de')
	sipGate = server.ping(1)

	server = PingClass.Ping('132.230.4.8')
	sipServer = server.ping(1)

	server = PingClass.Ping('132.230.252.228')
	unisip = server.ping(1)

	server = PingClass.Ping('localhost')
	gsmBox1 = server.ping(1)

	server = PingClass.Ping('10.4.58.241')
	gsmBox2 = server.ping(1)

def initDB():
    global dbStatus
    global db
    
    db = DbClass.DBMySQLConnection('root', 'randompasswordSQL', 'localhost', 'gsmselftesting')
    db.connectDB()
    dbStatus = db.connectDB()

def initTest(callFrom,callTo):
    global dest
    global caller
    global callAdd
    global accCaller
    global recAdd
    global destNo
    global accDest
    global result
    global repeatTest
    
    initDB()
    
    if dbStatus != 0:
        
        dest = db.deviceAddress(str(callTo))
        
        caller = db.deviceAddress(str(callFrom))
        
        callAdd = caller[0]
        accCaller = caller[2]+':'+caller[3]+':'+caller[4]+':'
        
        destAdd = dest[0]
        destNo = dest[1]
        accDest = dest[2]+':'+dest[3]+':'+dest[4]+':'
        
        makeTest = ControllerClass.doTheTest(callFrom, callAdd, accCaller, callTo, destAdd, destNo, accDest)	
        makeTest.FuncTest()
        
        result = str(makeTest.testResult)
    
    else:
        print "No connection to Database"
    
    return result

def initTrueTable():
	nanoBTS1 = None
	nanoBTS2 = None
    	nanoBTS3 = None
    	o2Card = None
	eplusCard = None
	vodaCard = None
	tmobileCard = None
	outgoingLandline = None
	asteriskServer = None

    	for x in resultsList:

        	destination = x[1]
        	result = x[2]
		caller = x[0]

        	if destination == 'GSMRZ1': 
                	if result =='486':
		    		nanoBTS1 = False
                    		for y in resultsList:
                    			call = y[0]
					destination = y[1]
                    			result = y[2]
                    			if call == 'GSMRZ1':
						if result == '200':
							nanoBTS1 = True

					if destination == 'GSMRZ1':
						if result == '200':
							nanoBTS1 = True
                	elif result =='200':
				nanoBTS1 = True

        	elif destination == 'GSMRZ2': 
                	if result =='486':
		    		nanoBTS2 = False
                    		for y in resultsList:
                    			call = y[0]
					destination = y[1]
                    			result = y[2]
                    			if call == 'GSMRZ2':
						if result == '200':
							nanoBTS2 = True

					if destination == 'GSMRZ2':
						if result == '200':
							nanoBTS2 = True
                	elif result =='200':
				nanoBTS2 = True

        	elif destination == 'GSMRZ3': 
                	if result =='486':
		    		nanoBTS3 = False
                    		for y in resultsList:
                    			call = y[0]
					destination = y[1]
                    			result = y[2]
                    			if call == 'GSMRZ3':
						if result == '200':
							nanoBTS3 = True

					if destination == 'GSMRZ2':
						if result == '200':
							nanoBTS3 = True
                	elif result =='200':
				nanoBTS3 = True

       		elif destination == 'GSMExt.O2': 
                	if result =='486':
		    		o2Card = False
                    		for y in resultsList:
                    			call = y[0]
					destination = y[1]
                    			result = y[2]
                    			if call == 'GSMExt.O2':
						if result == '200':
							o2Card = True

					if destination == 'GSMExt.O2':
						if result == '200':
							o2Card = True
                	elif result =='200':
				o2Card = True

        	elif destination == 'GSMExt.Voda': 
                	if result =='486':
		    		vodaCard = False
                    		for y in resultsList:
                    			call = y[0]
					destination = y[1]
                    			result = y[2]
                    			if call == 'GSMExt.Voda':
						if result == '200':
							vodaCard = True

					if destination == 'GSMExt.Voda':
						if result == '200':
							vodaCard = True
                	elif result =='200':
				vodaCard = True

        	elif destination == 'GSMExt.Eplus': 
                	if result =='486':
		    		eplusCard = False
                    		for y in resultsList:
                    			call = y[0]
					destination = y[1]
                    			result = y[2]
                    			if call == 'GSMExt.Eplus':
						if result == '200':
							eplusCard = True

					if destination == 'GSMExt.Eplus':
						if result == '200':
							eplusCard = True
                	elif result =='200':
				eplusCard = True

        	elif destination == 'GSMExt.Tm': 
                	if result =='486':
		    		tmobileCard = False
                    		for y in resultsList:
                    			call = y[0]
					destination = y[1]
                    			result = y[2]
                    			if call == 'GSMExt.Tm':
						if result == '200':
							tmobileCard = True

					if destination == 'GSMExt.Tm':
						if result == '200':
							tmobileCard = True
                	elif result =='200':
				tmobileCard = True

        	elif destination == 'sip': 
                	if result =='486':
		    		asteriskServer = False
                    		for y in resultsList:
                    			call = y[0]
					destination = y[1]
                    			result = y[2]
                    			if call == 'sip':
						if result == '200':
							asteriskServer = True

					if destination == 'sip':
						if result == '200':
							asteriskServer = True
            
                	elif result =='200':
				asteriskServer = True

		if caller == 'GSMRZ1' or caller == 'GSMRZ2' or caller == 'GSMRZ3':

        		if destination == 'landline': 
                		if result =='486':
		    			outgoingLandline = False
                    			for y in resultsList:
                    				call = y[0]
						destination = y[1]
                    				result = y[2]
                    				if caller == 'GSMRZ1' or caller == 'GSMRZ2' or caller == 'GSMRZ3':
							if destination == 'landline':
								if result == '200':
									outgoingLandline = True

	print '\n'
    	if o2Card == False and eplusCard == False and vodaCard == False and tmobileCard == False:
		print 'GSM BOX Modem down'
    	else:
    		if o2Card == False:
			print "O2 card indicate having problem"
    		if eplusCard == False:
			print "eplus card indicate having problem"
    		if vodaCard == False:
			print "vodaphone card indicate having problem"
    		if tmobileCard == False:
			print "T-Mobile card indicate having problem"
		print '\n'

    	if nanoBTS1 == False and nanoBTS2 == False and nanoBTS3 == False:
		print 'openBSC down'
    	else:
    		if nanoBTS1 == False:
			print "nanoBTS 1 indicate having problem"
    		if nanoBTS2 == False:
			print "nanoBTS 2 indicate having problem"
    		if nanoBTS3 == False:
			print "nanoBTS 3 indicate having problem"

	if outgoingLandline == False:
		print 'outgoing from GSM RZ to landline having problem'
		print '\n'

    	if asteriskServer == False:
		print "Asterisk server indicate having problem"
    	elif asteriskServer == True:
		print 'Asterisk server working good'
	print '\n'


def doTest(callFrom,callTo):
	ping(callFrom)

	if serverStatus <> 0:

		ping(callTo)
		if serverStatus <> 0:
			print 'Call From	: ', callFrom
			print 'Call Destination	: ', callTo
            		initTest(callFrom,callTo)
			resultsList.append([callFrom, callTo, result])
			db.errorCode(result)
			print 'Result		: ' +result+ ' ' +db.errCode
			sleep(5)
		else:
			print '[failed] 500 '+callTo+ ' Server Internal Error'
	else:
		print '[failed] 500 '+callFrom+ ' Server Internal Error'

def doSipTest():
	
	print '--SIP Part Test--'
	destList = ['gsmr1','gsmr2', 'gsmr3', 'landline', 'unisip', 'GSMExt.O2', 'GSMExt.Voda', 'GSMExt.Eplus', 'GSMExt.Tm' ]
	#destList = ['landline']
	for callTo in destList:

		callFrom = 'sip'
		doTest(callFrom, callTo)

def doLandlineTest():
	
	print '--Landline Part Test--'
	destList = ['GSMRZ1','unisip', 'sip'] 

	for callTo in destList:

		callFrom = 'landline'
		doTest(callFrom, callTo)

def doGsmrzTest():

	print '--GSM Part Test--'
	destList = ['GSMRZ1','GSMRZ2', 'GSMRZ3']
	callList = ['sip']
	
	for callFrom in callList:

		for callTo in destList:
			doTest(callFrom, callTo)
			resultsList.append([callFrom, callTo, result])
	initTrueTable()
	
def doGsmExtTest():
	
	destList = ['GSMExt.O2', 'GSMExt.Voda', 'GSMExt.Eplus', 'GSMExt.Tm']
	callList = ['sip']
	#callList = ['sip', 'GSMRZ1']

	for callFrom in callList:
		for callTo in destList:
			doTest(callFrom, callTo)
			resultsList.append([callFrom, callTo, result])
	initTrueTable()

def doAllTest():

	doSipTest()
	doLandlineTest()
	doGsmrzTest()
	doGsmExtTest()

def smartTest():
    ping('sip')
    if serverStatus == 0:
	print "Dont have connection to SIP Asterisk server, can't make a test"
	sys.exit(1)

    callerList = ['sip']
    destinationList = ['SIP', 'GSMExt']
    #destinationList = ['GSMExt', 'GSMRZ', 'SIP', 'RZOutgoing', 'RZincoming']
    for callFrom in callerList:
        for destination in destinationList:
            
            if destination == 'GSMRZ':
                print "make a call to GSMRZ1"
                initTest(callFrom,'GSMRZ1')
                
                if result == '200':
                    print "make a call to GSMRZ2"
                    initTest(callFrom,'GSMRZ2')
                    
                    if result == '200':
                        print "make a call to GSMRZ3"
                        initTest(callFrom,'GSMRZ3')
                        
                        if result == '200': 
                            print "all network on GSMRZ are working"
                        elif result == '486':
                            print "BTS 3 Down"
                        else:
                            print "incomplete test, Handler having error, please do one more test"
                    
                    elif result == '486':
                        print "make a call to GSMRZ3"
                        initTest(callFrom,'GSMRZ3')
                        
                        if result == '200':
                            print "BTS 2 Down"
                        elif result == '486':
                            print "BTS 2 and 3 indicate having problem"
                        else:
                            print "incomplete test, Handler having error, please do one more test"
                    else:
                        print "incomplete test, Handler having error, please do one more test"
                
                elif result == '486':
                    print "make a call to GSMRZ2"
                    initTest(callFrom,'GSMRZ2')
                    
                    if result == '200':
                        print "make a call to GSMRZ3"
                        initTest(callFrom,'GSMRZ3')
                        
                        if result == '200': 
                            print "BTS 1 Down"
                        elif result == '486':
                            print "BTS 1 & 3 indicate having problem"
                        else:
                            print "incomplete test, Handler having error, please do one more test"
                    
                    elif result == '486':
                        print "make a call to GSMRZ3"
                        
                        if result == '200':
                            print "BTS 1 & 2 indicate having problem"
                        elif result == '486':
                            print "OpenBSc Down"
                        else:
                            print "incomplete test, Handler having error, please do one more test"
                    else:
                        print "incomplete test, Handler having error, please do one more test"
                else:
                    print "incomplete test, Handler having error, please do one more test"

            
            elif destination == 'GSMExt':
                
                initTest(callFrom,'GSMExt.O2')                  
		if result == '200':
                        
                        initTest(callFrom,'GSMExt.Voda')                        
                        if result == '200':
                            
                            initTest(callFrom,'GSMExt.Eplus')                            
                            if result == '200': 
                                
				initTest(callFrom,'GSMExt.Tm')
                            	if result == '200': 
                                	print "All network on GSM external are working"
                            	elif result == '486':
                                	print "T-Mobile card indicate having problem"
                            	else:
                                	print "incomplete test, Handler having error, please do one more test"

			    elif result == '486':

				initTest(callFrom,'GSMExt.Tm')
                            	if result == '200': 
                                	print "E-Plus card indicate having problem"
                            	elif result == '486':
                                	print "T-Mobile and E-Plus card indicate having problem"
                            	else:
                                	print "incomplete test, Handler having error, please do one more test"

                        elif result == '486':
                            
                            initTest(callFrom,'GSMExt.Eplus')                            
                            if result == '200':
                                
				initTest(callFrom,'GSMExt.Tm')
                            	if result == '200': 
                                	print "Vodaphone card indicate having problem"
                            	elif result == '486':
                                	print "T-Mobile and Vodaphone cards indicate having problem"
                            	else:
                                	print "incomplete test, Handler having error, please do one more test"

                            elif result == '486':
                                
				initTest(callFrom,'GSMExt.Tm')
                            	if result == '200': 
                                	print "Vodaphone and E-Plus card indicate having problem"
                            	elif result == '486':
                                	print "T-Mobile, E-Plus and Vodaphone cards indicate having problem"
                            	else:
                                	print "incomplete test, Handler having error, please do one more test"
                            else:
                                print "Incomplete test, Handler having error, please do one more test"
                    
		elif result == '486':
                        
                        initTest(callFrom,'GSMExt.Voda')                        
                        if result == '200':
                            
                            initTest(callFrom,'GSMExt.Eplus')                            
                            if result == '200': 
                                
				initTest(callFrom,'GSMExt.Tm')
                            	if result == '200': 
                                	print "O2 card indicate having problem"
                            	elif result == '486':
                                	print "T-Mobile and O2 cards indicate having problem"
                            	else:
                                	print "incomplete test, Handler having error, please do one more test"

                            elif result == '486':
                                
				initTest(callFrom,'GSMExt.Tm')
                            	if result == '200': 
                                	print "O2 and E-Plus cards indicate having problem"
                            	elif result == '486':
                                	print "T-Mobile, E-Plus and O2 cards indicate having problem"
                            	else:
                                	print "incomplete test, Handler having error, please do one more test"
			    else:
				print "incomplete test, Handler having error, please do one more test"
                        
                        elif result == '486':
                            
                            initTest(callFrom,'GSMExt.Eplus')                            
                            if result == '200':
                                
				initTest(callFrom,'GSMExt.Tm')
                            	if result == '200': 
                                	print "O2 and Vodaphone cards indicate having problem"
                            	elif result == '486':
                                	print "T-Mobile, O2 and Vodaphone cards indicate having problem"
                            	else:
                                	print "incomplete test, Handler having error, please do one more test"

                            elif result == '486':
                                
				initTest(callFrom,'GSMExt.Tm')
                            	if result == '200': 
                                	print "O2, E-Plus and Vodaphone cards indicate having problem"
                            	elif result == '486':
                                	print "GSM External Modem Down"
                            	else:
                                	print "incomplete test, Handler having error, please do one more test"
                            else:
                                print "incomplete test, Handler having error, please do one more test"
                        else:
                            print "incomplete test, Handler having error, please do one more test"
		else:
			print "incomplete test, Handler having error, please do one more test"
            
            elif destination == 'SIP':
		
                ping('landline')
		if serverStatus <> 0:
                	initTest(callFrom,'landline')
                
                	if result == '200':
                    		ping('unisip')
		    		if serverStatus <> 0:
                    			initTest(callFrom,'unisip')
	                    
                    			if result =='200':
                    	    			print "All SIP network are working"
                    			elif result == '486':
                    	    			print "University telephone network indicate having problem"
                    			else:
                    	    			print "incomplete test, Handler having error, please do one more test"
                    		else:
					print "No connection to University telephone network server, check your connection"

                	elif result == '486':
                    		ping('unisip')
		    		if serverStatus <> 0:
                    			initTest(callFrom,'unisip')
                    
                    			if result == '200':
                        			print "Landline indicate having problem"
                    			elif result == '486':
                        			print "SIP Network Down"
                    			else:
                        			print "incomplete test, Handler having error, please do one more test"
				else:
					print "No connection to University telephone network server, check your connection"
                	else:
                    		print "incomplete test, Handler having error, please do one more test"
		else:
			print "No connection to SIP Gate server, check your connection"

            elif destination == 'RZOutgoing':
		
                ping('landline')
		if serverStatus <> 0:
                	initTest('GSMRZ1','landline')
                
                	if result == '200':
                    		ping('unisip')
		    		if serverStatus <> 0:
                    			initTest('GSMRZ1','unisip')
	                    
                    			if result =='200':
               	    				print "Outgoing call from GSM RZ is working"

                    			elif result == '486':
               	    				print "Outgoing call from GSM RZ to UTN indicate having problem"
                    			else:
                    	    			print "incomplete test, Handler having error, please do one more test"
                    		else:
					print "No connection to University telephone network server, check your connection"

                	elif result == '486':
                    		ping('unisip')
		    		if serverStatus <> 0:
                    			initTest('GSMRZ1','unisip')
                    
                    			if result == '200':
                       				print "Outgoing call from GSM RZ to Landline indicate having problem"

                    			elif result == '486':
                       				print "Outgoing call from GSM RZ to Landline and UTN indicate having problem"
                    			else:
                        			print "incomplete test, Handler having error, please do one more test"
				else:
					print "No connection to University telephone network server, check your connection"
                	else:
                    		print "incomplete test, Handler having error, please do one more test"
		else:
			print "No connection to SIP Gate server, check your connection"

            elif destination == 'RZincoming':
		
                ping('landline')
		if serverStatus <> 0:
                	initTest('landline', 'GSMRZ1')
                
                	if result == '486':

                    		initTest('GSMExt.O2','GSMRZ1')
	                    
                    		if result =='200':
               	    			print "incoming call to GSM RZ working"

                    		elif result == '486':
                    	    			
					initTest('GSMExt.Voda','GSMRZ1')
                    			if result =='200':
                    	    			print "incoming call to GSM RZ working"
                    			elif result == '486':
                    	    			print "incoming call to GSM RZ notworking"
                    			else:
                    	    			print "incomplete test, GSM Handler having error, please do one more test"
                    		else:
                    	    		print "incomplete test, Handler having error, please do one more test"

                	elif result == '200':
                    		print "incoming call to GSM RZ working"
		else:
			print "No connection to SIP Gate server, check your connection"


if len(sys.argv) > 1:

	command = sys.argv[1]
	print ' '

	if command == '--all':
		doAllTest()

	elif command == '--sip':
		doSipTest()

	elif command == '--gsmrz':
		doGsmrzTest()

	elif command == '--gsmext':
		doGsmExtTest()

	elif command == '--landline':
		doLandlineTest()
            
    	elif command == '--smart':
        	smartTest()

	elif command == '--help':
		file = open('help.txt', 'r')
		print file.read()

	else:
		print "command not found, Type '--help', '--credits' for more information."
		print '\n'
else:

	initDB()
	if dbStatus == 1:
	
		if db.anyTasksToDo() == 1:

			#allPing()
			i=0
			for item in db.tasksList:

				taskID = item[0]
				taskNo = item[1]
				callFrom = item[2]
				callTo = item[3]
				tried = item[4]

				
				#if i == 0:
					#db.updatePingResult(taskNo, sipServer, sipGate, unisip, gsmBox1, gsmBox2)
				print '\n'
				print 'Task ID		:', taskID
				print 'Calling From	:', callFrom
				print 'To		:', callTo
			
				ping(callFrom)
				
				if serverStatus <> 0:

					ping(callTo)
					if serverStatus <> 0:

                        			initTest(callFrom,callTo)
					
						db.addResult(taskID, result)

						resultsList.append([callFrom, callTo, result])
						
						db.errorCode(result)
						print 'Result		: ' +result+ ' ' +db.errCode

						db.deleteTempTask(taskID)
						i = i+1

						sleep(5)
                            
					else:
						db.addResult(taskID, '500')
						print '[failed] 500 '+callTo+ ' Server Internal Error'
				else:
					db.addResult(taskID, '500')
					print '[failed] 500 '+callFrom+' Server Internal Error'
			db.cleanTasksList()
            		
            # fetch result list and make adjustment about the result
			print '\n'
			initTrueTable()
		else:
			print "--- No job at all ---"
	else:
		sys.exit(1)