Remove global should_exit and fix tests

This commit is contained in:
Vyacheslav Bakhmutov 2014-06-13 14:14:55 +07:00
parent 00fd243810
commit b7c1d05782
5 changed files with 16 additions and 19 deletions

View File

@ -577,7 +577,7 @@ class ConsoleMaster(flow.FlowMaster):
self.view_flowlist()
self.server.start_slave(controller.Slave, controller.Channel(self.masterq))
self.server.start_slave(controller.Slave, controller.Channel(self.masterq, self.should_exit))
if self.options.rfile:
ret = self.load_flows(self.options.rfile)
@ -780,7 +780,7 @@ class ConsoleMaster(flow.FlowMaster):
def loop(self):
changed = True
try:
while not controller.should_exit:
while not self.should_exit.is_set():
startloop = time.time()
if changed:
self.statusbar.redraw()

View File

@ -1,9 +1,6 @@
from __future__ import absolute_import
import Queue, threading
should_exit = False
class DummyReply:
"""
A reply object that does nothing. Useful when we need an object to seem
@ -37,8 +34,9 @@ class Reply:
class Channel:
def __init__(self, q):
def __init__(self, q, should_exit):
self.q = q
self.should_exit = should_exit
def ask(self, mtype, m):
"""
@ -47,7 +45,7 @@ class Channel:
"""
m.reply = Reply(m)
self.q.put((mtype, m))
while not should_exit:
while not self.should_exit.is_set():
try:
# The timeout is here so we can handle a should_exit event.
g = m.reply.q.get(timeout=0.5)
@ -89,6 +87,7 @@ class Master:
"""
self.server = server
self.masterq = Queue.Queue()
self.should_exit = threading.Event()
def tick(self, q):
changed = False
@ -107,10 +106,9 @@ class Master:
return changed
def run(self):
global should_exit
should_exit = False
self.server.start_slave(Slave, Channel(self.masterq))
while not should_exit:
self.should_exit.clear()
self.server.start_slave(Slave, Channel(self.masterq, self.should_exit))
while not self.should_exit.is_set():
self.tick(self.masterq)
self.shutdown()
@ -123,8 +121,7 @@ class Master:
obj.reply()
def shutdown(self):
global should_exit
if not should_exit:
should_exit = True
if not self.should_exit.is_set():
self.should_exit.set()
if self.server:
self.server.shutdown()

View File

@ -654,6 +654,7 @@ class FlowMaster(controller.Master):
self.server.config,
f,
self.masterq,
self.should_exit
)
rt.start() # pragma: no cover
if block:
@ -792,8 +793,8 @@ class FilteredFlowWriter:
class RequestReplayThread(threading.Thread):
name="RequestReplayThread"
def __init__(self, config, flow, masterq):
self.config, self.flow, self.channel = config, flow, controller.Channel(masterq)
def __init__(self, config, flow, masterq, should_exit):
self.config, self.flow, self.channel = config, flow, controller.Channel(masterq, should_exit)
threading.Thread.__init__(self)
def run(self):

View File

@ -672,7 +672,6 @@ class TestFlowMaster:
fm.handle_error(f.error)
def test_server_playback(self):
controller.should_exit = False
s = flow.State()
f = tutils.tflow()
@ -695,7 +694,7 @@ class TestFlowMaster:
fm.start_server_playback(pb, False, [], True, False)
q = Queue.Queue()
fm.tick(q)
assert controller.should_exit
assert fm.should_exit.is_set()
fm.stop_server_playback()
assert not fm.server_playback

View File

@ -283,7 +283,7 @@ class ChainProxTest(ProxTestBase):
def teardownAll(cls):
super(ChainProxTest, cls).teardownAll()
for p in cls.chain:
p.tmaster.server.shutdown()
p.tmaster.shutdown()
def setUp(self):
super(ChainProxTest, self).setUp()