summaryrefslogblamecommitdiffstats
path: root/For Weekly Test/tricode/trueTableClass.py
blob: 11f1cc964fb5d36fa1cc19bcfdc63ba0e57e6f11 (plain) (tree)
1
2
3
4
5
6
7





                                                     
                                              












                                                                                                       
                             























































                                                                                                               
 






































                                                                                                                                                                     
 
                                                                                                       
 

                                                                                         
 






































                                                                                                                
                                                         


                                                      
import DbClass

class trueTable:
     def __init__(self, resultsList):

		self.resultsList	= resultsList
		self.outGoingRZ		= None
		self.asteriskServer 	= None
        	self.incomingRZ     	= None
            	self.openBSC    	= None
		self.nanoBTS		= None

     def initDB(self):
    	# function for connect to database
	self.db = DbClass.DBMySQLConnection('root', 'randompasswordSQL', 'localhost', 'gsmselftesting')
        self.db.connectDB()
        self.dbStatus = self.db.connectDB()

     def lookingBTSname(self, btsname):
	if len(self.nanoBts) == 0:
		found = False
	else:
		found = False
		for y in self.nanoBts: #find the existing nanoBts result
			name = y[0]
			if name == btsName:
				if y[1] == False:
					self.nanoBts.remove(btsName)
				else:
					found = True
	return found

     def initTrueTable(self):
	global btsName
	self.initDB()
	deviceLists = self.db.deviceList() #fetch device list from database
	externalRZList = list()

        for devLists in deviceLists: #define category of the external devices
		device = devLists[0]
            	if device[0:5] == 'GSMEx' or device == 'landline':
                	externalRZList.append(device) # fetch into the list
	self.db.closeDBConn()
        lists = self.resultsList
        self.nanoBts = list()
        gsmResultList = list()

        i= 1
        for w in lists:
		call=w[0]
		dest=w[1]

		
        	if call[0:5]=='GSMRZ':
               		if i <= int(call[5:]):
              			i = int(call[5:])
        	if dest[0:5]=='GSMRZ':

               		if i <= int(dest[5:]):
               			i = int(dest[5:])
	i = i+1

        for x in lists: # to find nanoBts, asterik server and open BSC status regarding result test for GSM RZ 
            call=x[0]
            dest=x[1]
            result=x[2]
            stop = False
            j=1

	    if call[0:5]=='GSMRZ' or dest[0:5]=='GSMRZ':
            	while stop != True:
                	if j != i:
                    		key = 'GSMRZ'+str(j)
                    		if key == call or key == dest:

					btsName = 'nanoBts '+str(j)
                        		if result == '200':

						btsName = 'nanoBts '+str(j)
                            			self.asteriskServer = True #set status of asterik server as working
						if self.lookingBTSname(btsName) != True:
							#if doesnt found the nanoBts, add the result to the list, otherwise just ignoring 
							self.nanoBts.append([btsName,True])

                            			if key == call:#
                                			for z in externalRZList:# find the result for outgoing call from GSM RZ to external RZ network
                                    				if dest == z:
                                        				self.outGoingRZ = True #set status as working for outgoing RZ
                            			if key == dest:
                                			for z in externalRZList:
                                    				if call == z:
                                        				self.incomingRZ = True # find the result for imcoming call to GSM RZ from external RZ network
					elif result == '486':
						found = False
                            			if key == call:# and dest == 'landline':
                                			for z in externalRZList:
                                    				if dest == z and self.outGoingRZ != True:
                                        				self.outGoingRZ = False
                            			if key == dest:# and call == 'landline':
                                			for z in externalRZList:
                                    				if call == z and self.incomingRZ != True:
                                        				self.incomingRZ = False
						if self.nanoBts == '':
							self.nanoBts.append([btsName,False])
						for y in self.nanoBts: #find the existing nanoBts result
                                    			name = y[0]
                                    			if name == btsName and y[1] != True:
								found = True
						if found != True:
                            				self.nanoBts.append([btsName,False])

							
					if result == '998' and key == dest: # find how to solve this!!!
						
						if self.lookingBTSname(key) != True:
							self.nanoBts.append([key,result])


					if result == '999' and key == call: # find how to solve this!!!

						if self.lookingBTSname(key) != True:
							self.nanoBts.append([key,result])

					
                
                    		j = j+1
               		elif j == i:
                    		stop = True

            if call[0:5]=='GSMEx': # looking for calling from GSMexternal
            		found = False
            		if len(self.nanoBts) == 0:
                		self.nanoBts.append([call,result])
                		found = False
            		else:
                		for y in self.nanoBts: #find the existing result for GSM external in the list
                    			name = y[0]
					if name == call:
						if int(y[1]) == 486 or int(y[1]) == 999 or int(y[1]) == 998:
							self.nanoBts.remove(y)
						else:
	                        			found = True                    			
                		if found != True:
                    			self.nanoBts.append([call,result])
    
            if dest[0:5]=='GSMEx': # looking for destination call to GSMexternal
            		found = False
            		if len(self.nanoBts) == 0:
                		self.nanoBts.append([dest,result])
                		found = False
            		else:
				
                		for y in self.nanoBts:
                    			name = y[0]
                    			if name == dest:
						if int(y[1]) == 486 or int(y[1]) == 999 or int(y[1]) == 998:
							self.nanoBts.remove(y)
						else:
	                        			found = True
                		if found != True:
                    			self.nanoBts.append([dest,result])
	    for device in externalRZList:
		if device == dest and int(result) == 200:
				self.outGoingRZ = True