summaryrefslogtreecommitdiffstats
path: root/Controller
diff options
context:
space:
mode:
Diffstat (limited to 'Controller')
-rw-r--r--Controller/Controller.py129
-rw-r--r--Controller/ControllerClass.py177
-rw-r--r--Controller/classController.py222
-rwxr-xr-xController/gsmselftest.py271
4 files changed, 448 insertions, 351 deletions
diff --git a/Controller/Controller.py b/Controller/Controller.py
deleted file mode 100644
index 0f8812f..0000000
--- a/Controller/Controller.py
+++ /dev/null
@@ -1,129 +0,0 @@
-import sys
-import os
-import time
-import MySQLdb
-import subprocess
-
-
-import classClient #import class socket
-import classDb #import class db
-import classPing
-import classController
-from time import sleep
-
-
-
-sipNum = "4661929"
-landlnNum = "076145875681"
-unisipNum = "076120397897"
-
-# Main software
-
-# Check DB connection
-db = classDb.DBMySQLConnection('root', 'randompasswordSQL', 'localhost', 'gsmselftesting')
-db.connectDB()
-print ""
-dbStatus = db.connectDB()
-
-
-if dbStatus == 1:
-
- # Check Ping to the Every Handler
- sipServer = classPing.Ping('132.230.4.8')
- sipServerStatus = sipServer.ping(3)
-
- sipGateServer = classPing.Ping('sipgate.de')
- sipGateServerStatus = sipGateServer.ping(3)
-
- sipLocalServer = classPing.Ping('132.230.252.228')
- sipLocalServerStatus = sipLocalServer.ping(3)
-
-# Fetch The task information from DB
- db.anyTasksToDo()
- #x = ()
-
- for item in db.tasksList:
-
- taskID = item[0]
- taskNo = item[1]
- callFrom = item[2]
- callTo = item[3]
-
- print "Test ID : " , taskID
- print "Caller : " , callFrom
- print "Receiver : " , callTo
-
- if callFrom == "sip":
- if sipServerStatus == 0:
- print "[failed] 500 Server Internal Error"
-
- else:
-
- if callTo == "gsmrz1":
-
- x = classController.test('-S',"gsmBox1","4661455")
- x.FuncTest()
-
- db.addResult(taskID, x.testResult)
-
- if x.repeatTest == True:
- db.insertTaskIn2(callTo,callFrom,taskNo)
-
- if callTo == "gsmrz2":
-
- if gsmBox1Status == 0:
- print "[failed] 500 Server Internal Error"
-
- else:
- x = classController.test('-S', "gsmBox2", "4661404")
- x.FuncTest()
-
- db.addResult(taskID, x.testResult)
-
- if x.repeatTest == True:
- db.insertTaskIn2(callTo,callFrom,taskNo)
-
- if callTo == "gsmrz3":
-
- if gsmBox2Status == 0:
- print "[failed] 500 Server Internal Error"
-
- else:
- x = classController.test('-S', "gsmBox3","4661405")
- x.FuncTest()
-
- db.addResult(taskID, x.testResult)
-
- if x.repeatTest == True:
- db.insertTaskIn2(callTo,callFrom,taskNo)
-
- if callTo == "landline":
-
- if sipGateServerStatus == 0:
- print "[failed] 500 Server Internal Error"
-
- else:
- x = classController.test('-S', '-L',landlnNum)
- x.FuncTest()
-
- db.addResult(taskID, x.testResult)
-
- if x.repeatTest == True:
- db.insertTaskIn2(callTo,callFrom,taskNo)
- sleep(5)
-
- if callTo == "localsip":
- if sipLocalServerStatus == 0:
- print "[failed] 500 Server Internal Error"
-
- else:
- x = classController.test('-S', '-U',unisipNum)
- x.FuncTest()
-
- db.addResult(taskID, x.testResult)
- sleep(5)
-
-# will exit if DB connection failed
-else:
- sys.exit(5)
-
diff --git a/Controller/ControllerClass.py b/Controller/ControllerClass.py
new file mode 100644
index 0000000..04c9614
--- /dev/null
+++ b/Controller/ControllerClass.py
@@ -0,0 +1,177 @@
+import sys
+import os
+import subprocess
+
+import ClientClass
+
+import LogFileClass
+logger = LogFileClass.Logging('classController.log')
+
+from time import sleep
+
+
+class test:
+
+ def __init__(self, callFrom, callAdd, callTo, recAdd, destNo):
+
+ self.callFrom = callFrom
+ self.dest = callTo
+ self.destNo = destNo
+ self.repeatTest = None
+ self.portCaller = None
+ self.portDest = None
+ self.resultCaller = None
+ self.resultDest = None
+ self.testResult = None
+ self.callAdd = callAdd
+ self.recAdd = recAdd
+ self.receiver = None
+ self.caller = None
+ self.connected = None
+
+
+ def FuncTest(self):
+
+ logger.logEvent('')
+
+ self.initCaller()
+ sleep(3)
+
+ self.callerGreeting()
+
+ if self.connected == 'OK':
+
+ self.caller.sendData('CALLER|'+self.destNo)
+ callerHandler = self.caller.receiveData(60)
+
+ if callerHandler == "CALLER READY":
+ logger.logEvent('Caller handler : Ready')
+
+ self.initReceiver()
+ sleep(3)
+ self.receiverGreeting()
+
+ if self.connected == 'OK':
+
+ self.receiver.sendData('RECEIVER')
+ destHandler = self.receiver.receiveData(60)
+
+ if destHandler == 'RECEIVER READY':
+ logger.logEvent('Receiver handler : Ready')
+
+ self.startCall()
+ self.waitingFeedback()
+
+ else:
+ self.testResult = 604
+ logger.logEvent('604 General Handler Error: Destination handler no respond timeout')
+ self.caller.sendData('TERMINATE CONNECTION')
+ self.receiver.closeConnection()
+
+ else:
+ logger.logEvent('998 General Handler Error: Could not connect Destination handler')
+ self.testResult = 998
+ self.caller.sendData('TERMINATE CONNECTION')
+ self.caller.closeConnection()
+ else:
+ self.testResult = 605
+ logger.logEvent('605 General Handler Error: caller handler no respond timeout')
+
+ self.caller.closeConnection()
+
+ else:
+ self.testResult = 999
+ logger.logEvent('999 General Handler Error: Could not connect to Caller handler')
+
+
+
+ def waitingFeedback(self):
+ logger.logEvent('Waiting Feedback')
+ self.resultCaller = self.caller.receiveData(60)
+ self.resultDest = self.receiver.receiveData(60)
+
+ if self.resultCaller <> 'CALL OK' or self.resultDest <> 'CALL OK':
+
+ logger.logEvent('Test Failed')
+ self.testResult = 486
+ self.repeatTest = True
+ self.initTerminate()
+
+ else:
+ logger.logEvent('Test Succeed')
+ self.testResult = 200
+ self.initTerminate()
+
+
+ def startCall(self):
+ logger.logEvent('Start Call')
+ self.receiver.sendData('RECEIVE START')
+ self.caller.sendData('CALL START')
+
+
+ def initCaller(self):
+ logger.logEvent('init Caller')
+
+ if self.callFrom =="gsmr1":
+ self.portCaller = 50008
+
+ elif self.callFrom =="gsmr2":
+ self.portCaller = 50008 #temp
+
+ elif self.callFrom =="gsmr3":
+ self.portCaller = 50097
+
+ else:
+ self.portCaller = 50099
+ subprocess.Popen(args=["gnome-terminal", '--command=python sipHandler.py '+self.callFrom+ ' ' +str(self.portCaller)])
+
+ def initReceiver(self):
+ logger.logEvent('init Receiver')
+
+ if self.dest =="gsmr1":
+ self.portDest = 50008
+
+ elif self.dest =="gsmr2":
+ self.portDest = 50008 #temp
+
+ elif self.dest =="gsmr3":
+ self.portDest = 50103
+
+ else:
+ self.portDest = 50100
+ subprocess.Popen(args=['gnome-terminal', '--command=python sipHandler.py '+self.dest+ ' ' +str(self.portDest)])
+
+ def initTerminate(self):
+ self.caller.sendData('TERMINATE CONNECTION')
+ self.receiver.sendData('TERMINATE CONNECTION')
+
+ def callerGreeting(self):
+ self.connected = None
+ self.caller = ClientClass.Connection(self.callAdd,self.portCaller)
+ self.caller.connect()
+
+ if self.caller.connected == 1:
+ logger.logEvent('Connected to Caller Handler')
+ self.caller.sendData('HELLO HANDLER')
+ if self.caller.receiveData(30) == 'HELLO CONTROLLER':
+ logger.logEvent('Caller Handler respond')
+ self.connected = 'OK'
+ else:
+ logger.logEvent('Cannt connect to Caller')
+ self.connected = 'NOT OK'
+
+ def receiverGreeting(self):
+ self.connected = None
+ self.receiver = ClientClass.Connection(self.recAdd, self.portDest)
+ self.receiver.connect()
+
+ if self.receiver.connected == 1:
+ logger.logEvent('Connected to Receiver Handler')
+ self.receiver.sendData('HELLO HANDLER')
+ if self.receiver.receiveData(30) == 'HELLO CONTROLLER':
+ logger.logEvent('Receiver Handler respond')
+ self.connected = 'OK'
+ else:
+ logger.logEvent('Cannt connect to Receiver')
+ self.connected = 'NOT OK'
+
diff --git a/Controller/classController.py b/Controller/classController.py
deleted file mode 100644
index b48dbc8..0000000
--- a/Controller/classController.py
+++ /dev/null
@@ -1,222 +0,0 @@
-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" or self.orig =="gsmBox2" or self.orig =="gsmBox3:
-
- if self.orig =="gsmBox1":
- self.portOrig = 50095
-
- if self.orig =="gsmBox2":
- self.portOrig = 50096
-
- if 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
- signal.signal(signal.SIGALRM, timeout_handler)
- signal.alarm(60)
-
- while 1:
- try:
- origHandler = caller.receiveData(0)
- if origHandler <> "":
- break
-
- except TimeoutException:
- origHandler = "failed"
- break
-
-
- if origHandler == "ready":
- logger.logEvent('Caller handler : Ready')
- try:
- if self.dest =="gsmBox1" or self.dest =="gsmBox2" or self.dest =="gsmBox2":
-
- 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)
-
- signal.signal(signal.SIGALRM, timeout_handler)
- signal.alarm(60)
-
- while 1:
- try:
- destHandler = receiver.receiveData(0)
- if destHandler <> "":
- break
-
- except TimeoutException:
- destHandler = "failed"
- break
-
- if destHandler == "ready":
-
- logger.logEvent('Receiver handler : Ready')
-
- caller.sendData("start|"+self.destNo)
-
-
- signal.signal(signal.SIGALRM, timeout_handler)
- signal.alarm(120)
-
- logger.logEvent('------------ Test Result ------------')
-
- while 1:
- try:
- sleep(0.5)
- self.resultOrig = caller.receiveData(0)
- self.resultDest = receiver.receiveData(0)
-
- if self.resultOrig <> "" and self.resultDest <> "":
- logger.logEvent('1st Test, Origin :' +self.resultOrig)
- logger.logEvent('1st Test, Destination :' +self.resultDest)
- break
-
- except TimeoutException:
- self.resultOrig = 486
- self.resultDest = 486
- break
-
- #if failed, tell everybody to try one more time
- if self.resultOrig == 486 or self.resultDest == 486:
-
- caller.sendData("start|"+self.destNo)
-
- signal.signal(signal.SIGALRM, timeout_handler)
- signal.alarm(120)
-
- while 1:
- try:
- sleep(0.5)
- self.resultOrig = caller.receiveData(0)
- self.resultDest = receiver.receiveData(0)
-
- if self.resultOrig <> "" and self.resultDest <> "":
- logger.logEvent('2nd Test, Origin :' +self.resultOrig)
- logger.logEvent('2nd Test, Destination :' +self.resultDest)
- break
-
- except TimeoutException:
- self.resultOrig = 486
- self.resultDest = 486
- break
-
- #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')
-
- caller.closeConnection()
-
- except ValueError:
- testResult = 602
- logger.logEvent('602 General Handler Error: Could not open Origin handler')
-
diff --git a/Controller/gsmselftest.py b/Controller/gsmselftest.py
new file mode 100755
index 0000000..400970f
--- /dev/null
+++ b/Controller/gsmselftest.py
@@ -0,0 +1,271 @@
+#! /usr/bin/env python
+import sys
+import ControllerClass
+import DbClass
+import PingClass
+import DeviceAddress
+from time import sleep
+
+def ping(handler):
+
+ global serverStatus
+
+ if handler == 'landline':
+ server = PingClass.Ping('sipgate.de')
+ serverStatus = server.ping(3)
+
+ elif handler == 'sip':
+ server = PingClass.Ping('132.230.4.8')
+ serverStatus = server.ping(3)
+
+ elif handler == 'unisip':
+ server = PingClass.Ping('132.230.252.228')
+ serverStatus = server.ping(3)
+
+ elif handler == 'gsmr1':
+ server = PingClass.Ping('localhost')
+ serverStatus = server.ping(3)
+
+ elif handler == 'gsmr2':
+ server = PingClass.Ping('132.230.4.64')
+ serverStatus = server.ping(3)
+
+
+def doTest(callFrom,callTo):
+ global testResult
+
+ ping(callFrom)
+ device = DeviceAddress.DeviceAddress()
+
+ if serverStatus <> 0:
+
+ ping(callTo)
+ if serverStatus <> 0:
+ device.findDevice(callTo)
+ recAdd = device.add
+ destNo = str(device.num)
+
+ device.findDevice(callFrom)
+ callAdd = device.add
+
+ print '\n'
+ print "Caller: ", callFrom
+ print 'Destination: ', callTo
+ makeTest = ControllerClass.test(callFrom, callAdd, callTo, recAdd, destNo)
+ makeTest.FuncTest()
+
+ #db.addResult(taskID, makeTest.testResult)
+
+ if makeTest.repeatTest == True:
+ testRepeat = True
+
+ print "Result :", makeTest.testResult
+
+ #db.deleteTempTask(taskID)
+ #db.tasksList.remove(item)
+ #db.tasksList.insert(i,'')
+ sleep(3)
+ else:
+ print "[failed] 500 "+callTo+ " Server Internal Error"
+ else:
+ print "[failed] 500 "+callFrom+ " Server Internal Error"
+
+def doSipTest():
+
+ print '--SIP Part Test--'
+ destList = ['sip', 'gsmr1','gsmr2', 'gsmr3', 'landline', 'unisip', 'gsmeO', 'gsmeV', 'gsmeT', 'gsmeE']
+ #destList = ['unisip']
+ for callTo in destList:
+
+ callFrom = 'sip'
+ if callFrom <> callTo:
+ doTest(callFrom, callTo)
+
+def doLandlineTest():
+
+ print '--Landline Part Test--'
+ destList = ['gsmr1', 'gsmr2', 'gsmr3', 'sip']
+
+ for callTo in destList:
+
+ callFrom = 'landline'
+ doTest(callFrom, callTo)
+
+def doGsmrzTest():
+
+ print '--GSM Part Test--'
+ destList = ['sip', 'gsmr1','gsmr2', 'gsmr3', 'landline', 'unisip', 'gsmeO', 'gsmeV', 'gsmeT', 'gsmeE']
+ calllist = ['gsmr1','gsmr2', 'gsmr3']
+
+ for callFrom in calllist:
+
+ for callTo in destList:
+ if callTo <> callFrom:
+ doTest(callFrom, callTo)
+
+ doGsmExtTest()
+
+def doGsmExtTest():
+
+ destList = ['sip', 'gsmr1','gsmr2', 'gsmr3']
+
+ for callTo in destList:
+
+ callFrom = 'gsmeO'
+ doTest(callFrom, callTo)
+
+ callFrom = 'gsmeV'
+ doTest(callFrom, callTo)
+
+ callFrom = 'gsmeT'
+ doTest(callFrom, callTo)
+
+ callFrom = 'gsmeE'
+ doTest(callFrom, callTo)
+
+def doAllTest():
+
+ doSipTest()
+ doLandlineTest()
+ doGsmTest()
+
+if len(sys.argv) > 1:
+
+ command = sys.argv[1]
+ print '\n'
+
+ if command == '--all':
+ doAllTest()
+
+ elif command == '--sip':
+ doSipTest()
+
+ elif command == '--gsm':
+ doGsmTest()
+
+ elif command == '--landline':
+ doLandlineTest()
+
+ elif command == '--help':
+ file = open('help.txt', 'r')
+ print file.read()
+
+ else:
+ print "command not found, Type '--help', '--copyright', '--credits' or '--license' for more information."
+ print '\n'
+else:
+ print '\n'
+ db = DbClass.DBMySQLConnection('root', 'randompasswordSQL', 'localhost', 'gsmselftesting')
+ db.connectDB()
+ dbStatus = db.connectDB()
+
+ 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]
+
+ destination = db.deviceAddress(str(callTo))
+
+ caller = db.deviceAddress(str(callFrom))
+
+ callAdd = caller[0]
+ recAdd = destination[0]
+ destNo = destination[1]
+
+ #if i == 0:
+ # db.updatePingResult(taskNo, sipServer, sipGate, sipLoc, gsmBox1, gsmBox2)
+
+ if callFrom == 'unisip':
+ destNo = destNo[7:]
+
+ print '\n'
+ print "Task ID: ", taskID
+ print "Calling From: ", callFrom
+ print "To: ", callTo
+ print "number: ", destNo
+
+ ping(callFrom)
+
+ if serverStatus <> 0:
+
+ ping(callTo)
+ if serverStatus <> 0:
+
+ makeTest = ControllerClass.test(callFrom, callAdd, callTo, recAdd, destNo)
+ makeTest.FuncTest()
+
+ db.addResult(taskID, makeTest.testResult)
+
+ if makeTest.repeatTest == True:
+ db.insertTaskIn2(callTo,callFrom,taskNo)
+
+ print "Result :", makeTest.testResult
+
+ db.deleteTempTask(taskID)
+ db.tasksList.remove(item)
+ db.tasksList.insert(i,'')
+ i = i+1
+
+ sleep(3)
+ else:
+ print "[failed] 500 "+callTo+ " Server Internal Error"
+ else:
+ print "[failed] 500 "+callFrom+ " Server Internal Error"
+ db.cleanTasksList()
+ else:
+ print "No job at all"
+ else:
+ sys.exit(5)
+
+
+
+def allPing():
+
+ global sipGate
+ global sipServer
+ global sipLoc
+ global gsmBox1
+ global gsmBox2
+
+ server = PingClass.Ping('sipgate.de')
+ sipGate = server.ping(3)
+
+ server = PingClass.Ping('132.230.4.8')
+ sipServer = server.ping(3)
+
+ server = PingClass.Ping('132.230.252.228')
+ sipLoc = server.ping(3)
+
+ server = PingClass.Ping('localhost')
+ gsmBox1 = server.ping(3)
+
+ server = PingClass.Ping('132.230.4.64')
+ gsmBox2 = server.ping(3)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+