summaryrefslogblamecommitdiffstats
path: root/Under-Testing/Server-Code-New/truthtableClass.py
blob: 253069b9a92d472822eee4e606d88b2076045c63 (plain) (tree)






























































































































































































                                                                                                                                                                     
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
		self.testMount		= len(resultsList)
		self.OK 		= 0
		self.FAILED 		= 0
		self.handlerError 	= 0

     def initDB(self):
    	# function for connect to database
	self.db = DbClass.DBMySQLConnection()
        self.db.connectDB()
        self.dbStatus = self.db.connectDB()

     def lookingBTSname(self, btsname):
	if len(self.nanoBts) == 0:
		self.found = False
	else:
		found = False
		for y in self.nanoBts: #find the existing nanoBts result
			name = y[0]
			if name == btsName:
				self.found = True
	return self.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()

	for status in lists:
		
		if int(status[2]) == 200:
			self.OK = self.OK+1
		elif int(status[2]) == 486:
			self.FAILED = self.FAILED+1
		else:
			self.handlerError = self.handlerError+1
        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
						self.lookingBTSname(btsName)
						if self.found != True:
							#if doesnt found the nanoBts, add the result to the list, otherwise just ignoring 
							try:
								self.nanoBts.remove(btsName)
							except ValueError:
								message = 'Error'

							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:
                                			for z in externalRZList:
                                    				if dest == z and self.outGoingRZ != True:
                                        				self.outGoingRZ = False
                            			if key == dest:
                                			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])

					elif str(result) == '801' and key == call:
						self.lookingBTSname(key)
						if self.found != True:
							self.nanoBts.append([key,result])

					elif str(result) == '802'and key == dest:
						self.lookingBTSname(key)
						if self.found != True:
							self.nanoBts.append([key,result])
							
					if str(result) == '998' and key == dest:
						self.lookingBTSname(key)
						if self.found != True:
							self.nanoBts.append([key,result])

					if str(result) == '999' and key == call:
						self.lookingBTSname(key)
						if self.found != 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(result) == 200:
							if int(y[1]) == 486 or int(y[1]) == 999 or int(y[1]) == 998 or int(y[1]) == 801:
								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(result) == 200:
							if int(y[1]) == 486 or int(y[1]) == 999 or int(y[1]) == 998 or int(y[1]) == 402 or int(y[1]) == 802:
								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