mirror of
https://github.com/valitydev/yandex-tank.git
synced 2024-11-07 02:45:21 +00:00
add timeout to feeder put
This commit is contained in:
parent
231ce4b69e
commit
b7c12d0edb
@ -21,7 +21,7 @@ from contextlib import contextmanager
|
|||||||
|
|
||||||
|
|
||||||
@contextmanager
|
@contextmanager
|
||||||
def measure(marker, err, results):
|
def measure(marker, results):
|
||||||
start_time = time.time()
|
start_time = time.time()
|
||||||
yield
|
yield
|
||||||
response_time = int((time.time() - start_time) * 1000)
|
response_time = int((time.time() - start_time) * 1000)
|
||||||
@ -29,7 +29,7 @@ def measure(marker, err, results):
|
|||||||
marker, # marker
|
marker, # marker
|
||||||
th.active_count(), # threads
|
th.active_count(), # threads
|
||||||
response_time, # overall response time
|
response_time, # overall response time
|
||||||
err, # httpCode
|
200, # httpCode
|
||||||
0, # netCode
|
0, # netCode
|
||||||
0, # sent
|
0, # sent
|
||||||
0, # received
|
0, # received
|
||||||
@ -130,7 +130,7 @@ class CustomGun(AbstractPlugin):
|
|||||||
self.module = __import__(module_name)
|
self.module = __import__(module_name)
|
||||||
|
|
||||||
def shoot(self, missile, marker, results):
|
def shoot(self, missile, marker, results):
|
||||||
results.put(self.module.shoot(self, missile, marker), timeout=1)
|
self.module.shoot(self, missile, marker, results)
|
||||||
|
|
||||||
class HttpGun(AbstractPlugin):
|
class HttpGun(AbstractPlugin):
|
||||||
SECTION = 'http_gun'
|
SECTION = 'http_gun'
|
||||||
@ -163,6 +163,7 @@ class HttpGun(AbstractPlugin):
|
|||||||
)
|
)
|
||||||
results.put((int(time.time()), data_item), timeout=1)
|
results.put((int(time.time()), data_item), timeout=1)
|
||||||
|
|
||||||
|
|
||||||
class ScenarioGun(AbstractPlugin):
|
class ScenarioGun(AbstractPlugin):
|
||||||
SECTION = 'scenario_gun'
|
SECTION = 'scenario_gun'
|
||||||
|
|
||||||
@ -171,16 +172,5 @@ class ScenarioGun(AbstractPlugin):
|
|||||||
AbstractPlugin.__init__(self, core)
|
AbstractPlugin.__init__(self, core)
|
||||||
|
|
||||||
def shoot(self, missile, marker, results):
|
def shoot(self, missile, marker, results):
|
||||||
err = 0
|
with measure("logon", results):
|
||||||
with measure("root", err, results):
|
requests.get("http://google.com/")
|
||||||
#resp = requests.get("http://bsgraphite-gfe01h.yandex.ru/")
|
|
||||||
#err = resp.status_code
|
|
||||||
time.sleep(1)
|
|
||||||
with measure("afdb_load", err, results):
|
|
||||||
#resp = requests.get("http://bsgraphite-gfe01h.yandex.ru/afdb_load/")
|
|
||||||
#err = resp.status_code
|
|
||||||
time.sleep(1)
|
|
||||||
with measure("afdb", err, results):
|
|
||||||
#resp = requests.get("http://bsgraphite-gfe01h.yandex.ru/afdb/")
|
|
||||||
#err = resp.status_code
|
|
||||||
time.sleep(1)
|
|
||||||
|
@ -38,6 +38,7 @@ Gun: {gun.__class__}
|
|||||||
self.feeder = th.Thread(target=self._feed, name="Feeder")
|
self.feeder = th.Thread(target=self._feed, name="Feeder")
|
||||||
self.zmq = zmq
|
self.zmq = zmq
|
||||||
self.workers_finished = False
|
self.workers_finished = False
|
||||||
|
self.start_time = time.time()
|
||||||
|
|
||||||
def start(self):
|
def start(self):
|
||||||
self.start_time = time.time()
|
self.start_time = time.time()
|
||||||
@ -45,6 +46,13 @@ Gun: {gun.__class__}
|
|||||||
process.daemon = True
|
process.daemon = True
|
||||||
process.start()
|
process.start()
|
||||||
self.feeder.start()
|
self.feeder.start()
|
||||||
|
try:
|
||||||
|
self.log.info("Waiting for workers")
|
||||||
|
map(lambda x: x.join(), self.pool)
|
||||||
|
self.log.info("All workers exited.")
|
||||||
|
self.workers_finished = True
|
||||||
|
except (KeyboardInterrupt, SystemExit):
|
||||||
|
self.quit.set()
|
||||||
|
|
||||||
def running(self):
|
def running(self):
|
||||||
return not self.workers_finished
|
return not self.workers_finished
|
||||||
@ -64,20 +72,20 @@ Gun: {gun.__class__}
|
|||||||
for task in self.plan:
|
for task in self.plan:
|
||||||
if self.quit.is_set():
|
if self.quit.is_set():
|
||||||
self.log.info("Stop feeding: gonna quit")
|
self.log.info("Stop feeding: gonna quit")
|
||||||
|
# self.task_queue.close()
|
||||||
return
|
return
|
||||||
self.task_queue.put(task)
|
while 1:
|
||||||
|
try:
|
||||||
|
self.task_queue.put(task, timeout=1)
|
||||||
|
except Full:
|
||||||
|
if self.quit.is_set() or self.workers_finished:
|
||||||
|
return
|
||||||
self.log.info(
|
self.log.info(
|
||||||
"Feeded all data. Publishing %d killer tasks" % (
|
"Feeded all data. Publishing %d killer tasks" % (
|
||||||
self.threads * self.instances))
|
self.threads * self.instances))
|
||||||
[self.task_queue.put(None) for _ in range(
|
[self.task_queue.put(None) for _ in xrange(
|
||||||
self.threads * self.instances)]
|
0, self.threads * self.instances)]
|
||||||
try:
|
|
||||||
self.log.info("Waiting for workers")
|
|
||||||
map(lambda x: x.join(), self.pool)
|
|
||||||
self.log.info("All workers exited.")
|
|
||||||
self.workers_finished = True
|
|
||||||
except (KeyboardInterrupt, SystemExit):
|
|
||||||
self.quit.set()
|
|
||||||
|
|
||||||
def _worker(self):
|
def _worker(self):
|
||||||
self.log.info(
|
self.log.info(
|
||||||
|
Loading…
Reference in New Issue
Block a user