summaryrefslogblamecommitdiffstats
path: root/For Weekly Test/12-09-2011/gsmselftest1.py
blob: 69cbffaf5e26e8f5c68d02bec2520b89ff21f893 (plain) (tree)
1
2
3
4
5
6
7
8
9
                      

                                         




                      
                     




                      

                                                                                                                                                                                                                                                                                                                                                                                                                                    








































































                                                                                                                                             
                                       








                                                                     
                                       










                                                                     
                                       












                                                                             
                                       














                                                                             
                                            

                               
























                                                                                                   
                                                                        

























                                                                                                  






















                                     


                                    















                                                                                           
                                                         




























































                                                                                                                  
#! /usr/bin/env python
from serial import * #serial port library
import sys 
import ControllerClass
import DbClass
import PingClass
import trueTableClass
import initTestClass
import usbDetectClass
from time import sleep

global resultsList
resultsList = list()

GSMListPrefix = [['GSMExt.Tm','0151'],['GSMExt.Tm','0160'],['GSMExt.Tm','0170'],['GSMExt.Tm','0171'],['GSMExt.Tm','0175'],['GSMExt.Voda','0152'],['GSMExt.Voda','0162'],['GSMExt.Voda','0172'],['GSMExt.Voda','0173'],['GSMExt.Voda','0174'],['GSMExt.Eplus','0157'],['GSMExt.Eplus','0177'],['GSMExt.Eplus','0155'],['GSMExt.Eplus','0163'],['GSMExt.Eplus','0178'],['GSMExt.O2','0159'],['GSMExt.O2','0176'],['GSMExt.O2','0179']]


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 initTrueTable():
	initResult = trueTableClass.trueTable(resultsList)
	initResult.initTrueTable()

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

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

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

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

def doSipTest():

	destList = ['gsmr1','gsmr2', 'gsmr3', 'landline', 'unisip', 'GSMExt.O2', 'GSMExt.Voda', 'GSMExt.Eplus', 'GSMExt.Tm' ]
	doTest = initTestClass.doTest()
	for callTo in destList:

		callFrom = 'sip'
		doTest.initTest(callFrom,callTo)
		resultsList.append([callFrom, callTo, doTest.result])

def doLandlineTest():

	destList = ['GSMRZ1','unisip', 'sip'] 
	doTest = initTestClass.doTest()
	for callTo in destList:

		callFrom = 'landline'
		doTest.initTest(callFrom,callTo)
		resultsList.append([callFrom, callTo, doTest.result])
	initTrueTable()

def doGsmrzTest():

	destList = ['GSMRZ1','GSMRZ2', 'GSMRZ3']
	callList = ['sip']
	doTest = initTestClass.doTest()

	for callFrom in callList:

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

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

def doAllTest():

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

def regularTest():
	regulartest = initTestClass.doTest()
	regulartest.smartTest()

def findPort(portName):
	global connect
	global prefix
	global num
	global IMEI
	global portClass
	sleep(0.5)
	portLog = os.popen('dmesg | grep \'pl2303 converter now attached to '+portName+'\'').read()
	sleep(0.5)
	if portLog != '':
		connect = 1
		portClass = usbDetectClass.serialPort(portName)
		portClass.findNumber()
		portClass.findIMEI()
		IMEI = portClass.IMEI
		num = portClass.number
		number = portClass.number
		prefix = number[0:4]
	else:
		connect = 0

def updateDevice():

    while True:
        print "Mobile device configuration"
        print "Menu:  s = start device configuration, q = quit : ",	
        input = sys.stdin.readline().rstrip("\r\n")
	print ''
	if input == 's':
		i = 0
		while i !=10:
			portName ='ttyUSB'+str(i)
			findPort(portName)
			i=i+1
			if connect == 1:
				for listNum in GSMListPrefix:
					if prefix == listNum[1]:
						print 'Device Name	:', listNum[0]
						print 'IME		:',IMEI
						print 'Phone Number	:',num
						print 'Port Name	: /dev/'+portName

						newPortName = '/dev/'+portName
						portClass.initUpdate(listNum[0], newPortName, num)
						print '\n'
				
		

	if input == "q":
		break
    sys.exit()

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':
        	regularTest()

	elif command == '--devconf':
		updateDevice()

	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
			makeTest = initTestClass.doTest()
			for item in db.tasksList:

				taskID = item[0]
				taskNo = item[1]
				callFrom = item[2]
				callTo = item[3]
				
				#if i == 0:
					#db.updatePingResult(taskNo, sipServer, sipGate, unisip, gsmBox1, gsmBox2)
				print '\n'
				print 'Task ID		:', taskID
				print 'Calling From	:', callFrom
				print 'To		:', callTo
			

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

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

				db.deleteTempTask(taskID)
				i = i+1

			db.cleanTasksList()
            		
            
			print '\n'
			initTrueTable()	# fetch result list and make adjustment about the result
		else:
			print "--- No job at all ---"
	else:
		sys.exit(1)