Code Review
/
doctor.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
Merge "fix some bugs in monitor"
[doctor.git]
/
tests
/
monitor
/
sample.py
diff --git
a/tests/monitor/sample.py
b/tests/monitor/sample.py
index
4f1ce49
..
1333a2e
100644
(file)
--- a/
tests/monitor/sample.py
+++ b/
tests/monitor/sample.py
@@
-78,7
+78,7
@@
class SampleMonitor(BaseMonitor):
class Pinger(Thread):
interval = 0.1 # second
timeout = 0.1 # second
class Pinger(Thread):
interval = 0.1 # second
timeout = 0.1 # second
- ICMP_ECHO_MESSAGE =
'\x08\x00\xf7\xff\x00\x00\x00\x00'
+ ICMP_ECHO_MESSAGE =
bytes([0x08, 0x00, 0xf7, 0xff, 0x00, 0x00, 0x00, 0x00])
def __init__(self, host_name, host_ip, monitor, log):
Thread.__init__(self)
def __init__(self, host_name, host_ip, monitor, log):
Thread.__init__(self)
@@
-89,18
+89,6
@@
class Pinger(Thread):
self._stopped = False
def run(self):
self._stopped = False
def run(self):
- while True:
- if self._stopped:
- return
- self._run()
- time.sleep(self.interval)
-
- def stop(self):
- self.log.info("Stopping Pinger host_name(%s), host_ip(%s)"
- % (self.hostname, self.ip_addr))
- self._stopped = True
-
- def _run(self):
self.log.info("Starting Pinger host_name(%s), host_ip(%s)"
% (self.hostname, self.ip_addr))
self.log.info("Starting Pinger host_name(%s), host_ip(%s)"
% (self.hostname, self.ip_addr))
@@
-108,8
+96,10
@@
class Pinger(Thread):
socket.IPPROTO_ICMP)
sock.settimeout(self.timeout)
while True:
socket.IPPROTO_ICMP)
sock.settimeout(self.timeout)
while True:
+ if self._stopped:
+ return
try:
try:
- sock.sendto(self.ICMP_ECHO_MESSAGE
.encode()
, (self.ip_addr, 0))
+ sock.sendto(self.ICMP_ECHO_MESSAGE, (self.ip_addr, 0))
sock.recv(4096)
except socket.timeout:
self.log.info("doctor monitor detected at %s" % time.time())
sock.recv(4096)
except socket.timeout:
self.log.info("doctor monitor detected at %s" % time.time())
@@
-117,3
+107,9
@@
class Pinger(Thread):
self.log.info("ping timeout, quit monitoring...")
self._stopped = True
return
self.log.info("ping timeout, quit monitoring...")
self._stopped = True
return
+ time.sleep(self.interval)
+
+ def stop(self):
+ self.log.info("Stopping Pinger host_name(%s), host_ip(%s)"
+ % (self.hostname, self.ip_addr))
+ self._stopped = True