Reconnect on socket failure
This commit is contained in:
@@ -239,12 +239,38 @@ Login lmw using the object creation user, password.
|
|||||||
Raises a LmwLoginFailure exception on failure
|
Raises a LmwLoginFailure exception on failure
|
||||||
"""
|
"""
|
||||||
li="LI " + self.user + "," + self.password + "\r"
|
li="LI " + self.user + "," + self.password + "\r"
|
||||||
|
#
|
||||||
|
# TODO: Check connect
|
||||||
|
#
|
||||||
self.send(li)
|
self.send(li)
|
||||||
d = self.recv()
|
d = self.recv()
|
||||||
if (d[0] != '!'):
|
if (d[0] != '!'):
|
||||||
self.closesocket()
|
self.closesocket()
|
||||||
raise LmwLoginFailure(self.user, d)
|
raise LmwLoginFailure(self.user, d)
|
||||||
|
|
||||||
|
def sendrecv(self, cmd):
|
||||||
|
"""sendrecv(cmd)
|
||||||
|
|
||||||
|
send the command and recieve the answer.
|
||||||
|
retry on socket failure.
|
||||||
|
"""
|
||||||
|
c = 0
|
||||||
|
ret = ""
|
||||||
|
while (ret == "") and (c < 3):
|
||||||
|
try:
|
||||||
|
self.send(cmd)
|
||||||
|
ret = self.recv()
|
||||||
|
except LmwSipConnectError as e:
|
||||||
|
if (self.user != None):
|
||||||
|
self.connect()
|
||||||
|
self.login()
|
||||||
|
c+=1
|
||||||
|
ret=""
|
||||||
|
else:
|
||||||
|
c=3
|
||||||
|
raise(e)
|
||||||
|
return(ret)
|
||||||
|
|
||||||
def ti(self):
|
def ti(self):
|
||||||
"""ti()
|
"""ti()
|
||||||
|
|
||||||
@@ -253,8 +279,7 @@ Request the time from lmw and returns the string.
|
|||||||
Raises a LmwCmdWarn of failure
|
Raises a LmwCmdWarn of failure
|
||||||
"""
|
"""
|
||||||
ti="TI " + self.meetnet + "\r"
|
ti="TI " + self.meetnet + "\r"
|
||||||
self.send(ti)
|
d = self.sendrecv(ti)
|
||||||
d = self.recv()
|
|
||||||
return (d[2:-1])
|
return (d[2:-1])
|
||||||
|
|
||||||
def cmd(self, process, location, parameter, time_delta, day,
|
def cmd(self, process, location, parameter, time_delta, day,
|
||||||
@@ -286,8 +311,7 @@ Returns:
|
|||||||
parameter + "," + time_delta + "," + day + "," + \
|
parameter + "," + time_delta + "," + day + "," + \
|
||||||
time_of_day + data + "\r"
|
time_of_day + data + "\r"
|
||||||
|
|
||||||
self.send(cmdstr)
|
d = self.sendrecv(cmdstr)
|
||||||
d = self.recv()
|
|
||||||
if (d[0] != '!'):
|
if (d[0] != '!'):
|
||||||
raise LmwCmdWarn(cmdstr, d)
|
raise LmwCmdWarn(cmdstr, d)
|
||||||
return (d[2:-1])
|
return (d[2:-1])
|
||||||
|
@@ -49,6 +49,11 @@ class lmwsipTest(unittest.TestCase):
|
|||||||
self.login()
|
self.login()
|
||||||
self.assertEqual(type(self.sip.cmd("WN", "DUMMY", "D10", "+00:59", "2020-01-01", "00:00")), str)
|
self.assertEqual(type(self.sip.cmd("WN", "DUMMY", "D10", "+00:59", "2020-01-01", "00:00")), str)
|
||||||
|
|
||||||
|
def test_cmderr(self):
|
||||||
|
self.login()
|
||||||
|
with self.assertRaises(lmwsip.LmwCmdWarn):
|
||||||
|
self.assertEqual(type(self.sip.cmd("NOP", "DUMMY", "D10", "+00:59", "2020-01-01", "00:00")), str)
|
||||||
|
|
||||||
def test_value(self):
|
def test_value(self):
|
||||||
self.login()
|
self.login()
|
||||||
self.assertEqual(type(self.sip.value("WN", "DUMMY", "D10")), str)
|
self.assertEqual(type(self.sip.value("WN", "DUMMY", "D10")), str)
|
||||||
@@ -81,6 +86,16 @@ class lmwsipTest(unittest.TestCase):
|
|||||||
with self.assertRaises(lmwsip.LmwSipConnectError):
|
with self.assertRaises(lmwsip.LmwSipConnectError):
|
||||||
self.sip.recv()
|
self.sip.recv()
|
||||||
|
|
||||||
|
def test_closeti(self):
|
||||||
|
self.login()
|
||||||
|
self.sip.send("CLOSE")
|
||||||
|
self.assertEqual(type(self.sip.ti()), str)
|
||||||
|
|
||||||
|
def test_closecmd(self):
|
||||||
|
self.login()
|
||||||
|
self.sip.send("CLOSE")
|
||||||
|
self.assertEqual(type(self.sip.cmd("WN", "DUMMY", "D10", "+00:59", "2020-01-01", "00:00")), str)
|
||||||
|
|
||||||
def test_run(self):
|
def test_run(self):
|
||||||
capturedOutput = io.StringIO()
|
capturedOutput = io.StringIO()
|
||||||
sys.stdout = capturedOutput
|
sys.stdout = capturedOutput
|
||||||
|
Reference in New Issue
Block a user