summaryrefslogtreecommitdiffstats
path: root/For Weekly Test
diff options
context:
space:
mode:
authortriatmoko2011-07-18 18:39:09 +0200
committertriatmoko2011-07-18 18:39:09 +0200
commit5e6ff41619b70b9a3c7a1eaeb989c295e22943f1 (patch)
tree364cedfa81e7044b53ce8d9e643377930fadf2d3 /For Weekly Test
parenttesting purpose. (diff)
downloadgsm-selftest-5e6ff41619b70b9a3c7a1eaeb989c295e22943f1.tar.gz
gsm-selftest-5e6ff41619b70b9a3c7a1eaeb989c295e22943f1.tar.xz
gsm-selftest-5e6ff41619b70b9a3c7a1eaeb989c295e22943f1.zip
modified for test weekly
Diffstat (limited to 'For Weekly Test')
-rw-r--r--For Weekly Test/20-07-2011/Controller.py8
-rw-r--r--For Weekly Test/20-07-2011/classClient.py97
-rw-r--r--For Weekly Test/20-07-2011/classClient.pycbin2791 -> 3673 bytes
-rw-r--r--For Weekly Test/20-07-2011/classController.py65
-rw-r--r--For Weekly Test/20-07-2011/classController.pycbin5539 -> 5466 bytes
-rw-r--r--For Weekly Test/20-07-2011/classServer.py84
-rw-r--r--For Weekly Test/20-07-2011/classServer.pycbin3365 -> 4651 bytes
-rw-r--r--For Weekly Test/20-07-2011/landlineReceiver.py8
-rw-r--r--For Weekly Test/20-07-2011/sipCall.py14
9 files changed, 185 insertions, 91 deletions
diff --git a/For Weekly Test/20-07-2011/Controller.py b/For Weekly Test/20-07-2011/Controller.py
index 69d9d87..99cc11a 100644
--- a/For Weekly Test/20-07-2011/Controller.py
+++ b/For Weekly Test/20-07-2011/Controller.py
@@ -35,10 +35,6 @@ tmobilRec = "tmobileReceiver.py"
# One function for all test case
-
-
-
-
# Main software
# Check DB connection
@@ -131,9 +127,7 @@ if dbStatus == 1:
else:
x = classController.test(sipCall, "localhost", landlnRec, "localhost",landlnNum)
x.FuncTest()
- sleep(10)
- #print x.testResult()
- db.addResult(taskID, testResult)
+ db.addResult(taskID, x.testResult)
if callTo == "localsip":
if sipLocalSeverStatus == 0:
diff --git a/For Weekly Test/20-07-2011/classClient.py b/For Weekly Test/20-07-2011/classClient.py
index ce02d19..46c3b00 100644
--- a/For Weekly Test/20-07-2011/classClient.py
+++ b/For Weekly Test/20-07-2011/classClient.py
@@ -2,6 +2,10 @@ import socket
import sys
import os
import string
+import signal
+
+class TimeoutException(Exception):
+ pass
class Connection:
def __init__(self, h, p):
@@ -10,12 +14,11 @@ class Connection:
self.s = None
self.connected = 0
+ self.debugMode = 0
+
def connect(self):
self.s = None
- alive = self.ping()
- if alive == 0:
- return 'The machine is not alive'
for res in socket.getaddrinfo(self.host, self.port, socket.AF_UNSPEC, socket.SOCK_STREAM):
af, socktype, proto, canonname, sa = res
try:
@@ -35,32 +38,86 @@ class Connection:
break
if self.s is None:
self.connected = 0
- return 'Could not open socket'
+ return 0 #couldn't connect to the server
else:
self.connected = 1
- return 'Connected'
+ return 1 #successfully connected to the server
def sendData(self, data):
if self.connected == 1:
- self.s.send(data)
+ try:
+ self.s.send(data)
+ return 1
+ except Exception, e:
+ if self.debugMode == 1:
+ import traceback
+ print traceback.format_exc()
+ print e
+ self.connected = 0
+ return 2
+
+ else:
+ return 0
- def receiveData(self):
+ def receiveData(self, timeout):
if self.connected == 1:
- return self.s.recv(1024)
+
+ def timeout_handler(signum, frame):
+ raise TimeoutException()
+
+ old_handler = signal.signal(signal.SIGALRM, timeout_handler)
+ signal.alarm(timeout) #start the timeout alarm, for timeout seconds
+ try:
+ data = self.s.recv(1024)
+
+ #stop the timeout function
+ signal.signal(signal.SIGALRM, old_handler)
+ signal.alarm(0)
+
+ return data
+
+
+ except TimeoutException:
+ #timeout happened
+ signal.signal(signal.SIGALRM, old_handler)
+ signal.alarm(0)
+ return 'TIMEOUT'
+
+ except Exception, e:
+
+ signal.signal(signal.SIGALRM, old_handler)
+ signal.alarm(0)
+
+ error = str(e)
+ if self.debugMode == 1:
+ import traceback
+ print traceback.format_exc()
+ print e
+ self.connected = 0
+ if error[0:11] == '[Errno 104]':
+ return 3 #the other side reset the connection,[Errno 104] Connection reset by peer
+
+ return 2
else:
- return 'Not connected'
+ return 0
def closeConnection(self):
if self.connected == 1:
- self.s.close()
- self.connected = 0
- return 'Closed'
-
- def ping(self):
- ping_cmd = os.popen('ping '+ self.host + ' -c 1 -W 1').read()
- pingAlive = int(string.find(ping_cmd, '1 received'))
- if pingAlive != -1:
- return 1
- else:
+ try:
+ self.connected = 0
+ SHUT_RDWR = 2
+ self.s.shutdown(SHUT_RDWR)
+ self.s.close()
+ return 1
+ except Exception, e:
+ self.connected = 0
+ error = str(e)
+ if self.debugMode == 1:
+ import traceback
+ print traceback.format_exc()
+ print e
+ if error[0:11] == '[Errno 107]':
+ return 3 #the other side closed the connection before us, [Errno 107] Transport endpoint is not connected
+ return 2
+ else:
return 0
-
diff --git a/For Weekly Test/20-07-2011/classClient.pyc b/For Weekly Test/20-07-2011/classClient.pyc
index 9255493..fbfa63d 100644
--- a/For Weekly Test/20-07-2011/classClient.pyc
+++ b/For Weekly Test/20-07-2011/classClient.pyc
Binary files differ
diff --git a/For Weekly Test/20-07-2011/classController.py b/For Weekly Test/20-07-2011/classController.py
index 193f1b4..08f4e63 100644
--- a/For Weekly Test/20-07-2011/classController.py
+++ b/For Weekly Test/20-07-2011/classController.py
@@ -72,9 +72,6 @@ class test:
if self.orig == "LocalSIPCall.py":
self.portOrig = 50100
- #else: #mean external GSM
- # print "have not yet define"
- #portOrig = 50101
x = classClient.Connection(self.origAdd,self.portOrig)
print ""
@@ -88,7 +85,7 @@ class test:
signal.alarm(60)
while 1:
try:
- origHandler = x.receiveData()
+ origHandler = x.receiveData(0)
if origHandler <> "":
break
@@ -101,9 +98,6 @@ class test:
print "Caller handler : Ready"
print ""
try:
-
- print self.dest
-
if self.dest =="gsmBox1" or self.dest =="gsmBox2":
if self.dest =="gsmBox1":
@@ -140,7 +134,7 @@ class test:
#portDest = 50108
y = classClient.Connection(self.destAdd, self.portDest)
- print "Connecting to Receiver handler xx", self.destAdd, self.portDest, self.dest
+ print "Connecting to Receiver handler"
print "Receiver handler status:", y.connect()
@@ -149,7 +143,7 @@ class test:
while 1:
try:
- destHandler = y.receiveData()
+ destHandler = y.receiveData(0)
if destHandler <> "":
break
@@ -163,14 +157,9 @@ class test:
print ""
x.sendData("start|"+self.destNo)#send message to handler to start the call
- x.closeConnection()
- x.connect()
-
- y.closeConnection()
- y.connect()
signal.signal(signal.SIGALRM, timeout_handler)
- signal.alarm(1200)
+ signal.alarm(120)
print "------------ Test Result ------------"
print ""
@@ -178,68 +167,62 @@ class test:
while 1:
try:
sleep(0.5)
- resultOrig = x.receiveData()
- resultDest = y.receiveData()
+ self.resultOrig = x.receiveData(0)
+ self.resultDest = y.receiveData(0)
- if resultOrig <> "" and resultDest <> "":
+ if self.resultOrig <> "" and self.resultDest <> "":
break
except TimeoutException:
- resultOrig = 486
- resultDest = 486
+ self.resultOrig = 486
+ self.resultDest = 486
break
#if failed, tell everybody to try one more time
- if resultOrig == 486 or resultDest == 486:
+ if self.resultOrig == 486 or self.resultDest == 486:
x.sendData("start|"+self.destNo)
- x.closeConnection()
- x.connect()
-
- y.closeConnection()
- y.connect()
-
signal.signal(signal.SIGALRM, timeout_handler)
signal.alarm(120)
while 1:
try:
sleep(0.5)
- resultOrig = x.receiveData()
- resultDest = y.receiveData()
+ self.resultOrig = x.receiveData(0)
+ self.resultDest = y.receiveData(0)
- if resultOrig <> "" and resultDest <> "":
+ if self.resultOrig <> "" and self.resultDest <> "":
print "here"
break
except TimeoutException:
- resultOrig = 486
- resultDest = 486
+ self.resultOrig = 486
+ self.resultDest = 486
break
#if still failed, we make automatic test vice versa
- if resultOrig == 486 or resultDest == 486:
+ if self.resultOrig == 486 or self.resultDest == 486:
self.testResult = 486
repeatTest = True
- return 486
- print "Second test result origin: ", resultOrig
- print "Second test result Destination: ", resultDest
+
+ print "Second test result origin: ", self.resultOrig
+ print "Second test result Destination: ", self.resultDest
else:
self.testResult = 200
return 200
- print "Second test result origin: ", resultOrig
- print "Second test result Destination: ", resultDest
+ print "Second test result origin: ", self.resultOrig
+ print "Second test result Destination: ", self.resultDest
x.sendData('487')
y.sendData('487')
else:
self.testResult = 200
- return 200
- print "Test Result origin: ", resultOrig
- print "Test Result Destination: ", resultDest
+
+ print "Test Result origin: ", self.resultOrig
+ print "Test Result Destination: ", self.resultDest
x.sendData('487')
y.sendData('487')
diff --git a/For Weekly Test/20-07-2011/classController.pyc b/For Weekly Test/20-07-2011/classController.pyc
index 763113e..5f32faa 100644
--- a/For Weekly Test/20-07-2011/classController.pyc
+++ b/For Weekly Test/20-07-2011/classController.pyc
Binary files differ
diff --git a/For Weekly Test/20-07-2011/classServer.py b/For Weekly Test/20-07-2011/classServer.py
index 97a398d..93c2f8e 100644
--- a/For Weekly Test/20-07-2011/classServer.py
+++ b/For Weekly Test/20-07-2011/classServer.py
@@ -1,9 +1,11 @@
-# Echo server program
import socket
import sys
import os
import string
-from time import sleep
+import signal
+
+class TimeoutException(Exception):
+ pass
class ServerHandler:
@@ -16,6 +18,8 @@ class ServerHandler:
self.onceConnected = 0
self.error = 'No error'
+ self.debugMode = 0
+
def openSocket(self):
self.error = 'No error'
for res in socket.getaddrinfo(self.host, self.port, socket.AF_UNSPEC,
@@ -54,31 +58,86 @@ class ServerHandler:
def connectedTo(self):
return self.address
- def receiveData(self):
+ def receiveData(self, timeout):
if self.connected == 1:
- while 1:
- data = self.connection.recv(64)
+
+ def timeout_handler(signum, frame):
+ raise TimeoutException()
+
+ try:
+
+ old_handler = signal.signal(signal.SIGALRM, timeout_handler)
+ signal.alarm(timeout) #start the timeout alarm, for timeout seconds
+
+ data = self.connection.recv(1024)
+
+ #stop the timeout function
+ signal.signal(signal.SIGALRM, old_handler)
+ signal.alarm(0)
+
if not data:
+ self.connected = 0
return 'NO DATA'
else:
return data
+
+ except TimeoutException:
+ #timeout happened
+ signal.signal(signal.SIGALRM, old_handler)
+ signal.alarm(0)
+ return 'TIMEOUT'
+
+ except Exception, e:
+ #stop the timeout timer
+ signal.signal(signal.SIGALRM, old_handler)
+ signal.alarm(0)
+
+ if self.debugMode == 1:
+ import traceback
+ print traceback.format_exc()
+ print e
+ self.connected = 0
+ if error[0:11] == '[Errno 104]':
+ return 3 #the other side reset the connection,[Errno 104] Connection reset by peer
+
+ return 2
else:
return 0
def sendData(self, data):
if self.connected == 1:
- self.connection.send(data)
- return 1
+ try:
+ self.connection.send(data)
+ return 1
+
+ except Exception, e:
+ if self.debugMode == 1:
+ import traceback
+ print traceback.format_exc()
+ print e
+ self.connecected = 0
+ return 2
else:
return 0
def closeConnection(self):
if self.onceConnected == 1:
- self.connection.close()
- self.s.close()
- self.s = None
- self.connected == 0
- return 1
+ try:
+ self.connected = 0
+ SHUT_RDWR = 2
+ self.connection.shutdown(SHUT_RDWR)
+ self.connection.close()
+ return 1
+ except Exception, e:
+ self.connected = 0
+ error = str(e)
+ if self.debugMode == 1:
+ import traceback
+ print traceback.format_exc()
+ print e
+ if error[0:11] == '[Errno 107]':
+ return 3 #the other side closed the connection before us [Errno 107] Transport endpoint is not connected
+ return 2
else:
return 0
@@ -91,4 +150,3 @@ class ServerHandler:
killPort = os.popen("kill -9 " + killResult).read()
return 1
return 0
-
diff --git a/For Weekly Test/20-07-2011/classServer.pyc b/For Weekly Test/20-07-2011/classServer.pyc
index 52f5085..a96a41f 100644
--- a/For Weekly Test/20-07-2011/classServer.pyc
+++ b/For Weekly Test/20-07-2011/classServer.pyc
Binary files differ
diff --git a/For Weekly Test/20-07-2011/landlineReceiver.py b/For Weekly Test/20-07-2011/landlineReceiver.py
index f61ff6a..470b4c6 100644
--- a/For Weekly Test/20-07-2011/landlineReceiver.py
+++ b/For Weekly Test/20-07-2011/landlineReceiver.py
@@ -14,15 +14,17 @@ class MyAccountCallback(pj.AccountCallback):
def on_incoming_call(self, call):
current_call = call
-
- sleep(0.5)
+
+ sleep(1)
call.answer(200)
sleep(0.5)
if current_call <> None:
+ print "hangup the call"
call.hangup()
+ print "send result"
server.sendData('200')
@@ -50,7 +52,7 @@ try:
while stop <> True:
- data = server.receiveData()
+ data = server.receiveData(0)
if data == "487":
stop = True
diff --git a/For Weekly Test/20-07-2011/sipCall.py b/For Weekly Test/20-07-2011/sipCall.py
index a863ce8..7cbbf4c 100644
--- a/For Weekly Test/20-07-2011/sipCall.py
+++ b/For Weekly Test/20-07-2011/sipCall.py
@@ -16,10 +16,12 @@ class MyCallCallback(pj.CallCallback):
if self.call.info().state <> pj.CallState.DISCONNECTED:
if self.call.info().state_text == "CONNECTING":
print "CALL : ", self.call.info().state_text
- sleep(1)
+ sleep(1.5)
if self.call.info().state <> pj.CallState.DISCONNECTED:
+ print "will Hangup call"
current_call.hangup()
-
+
+ print "send result"
server.sendData('200')
else:
sleep(0.5)
@@ -71,14 +73,12 @@ while stop <> True:
while 1:
try:
- data = server.receiveData()
+ data = server.receiveData(0)
event = data[0:5]
num = data[6:]
if event == "start" and num <> "":
-
- server.closeConnection()
- tried = server.openSocket()
-
+
+ print "Make a call to :", num
number = "sip:"+num+"@132.230.4.8"
current_call = make_call(number)