def setup(self): self.queue = Queue() self.done = Countdown(N) self.results = [] self.handled = defaultdict(int) self.populate() self.consume() self.trigger()
def setup(self): self.done = Countdown(10) self.fan = Fanout() self.subscriber_data = {} for x in xrange(10): diesel.fork(self.subscriber) diesel.sleep() for i in xrange(10): self.fan.pub(i) self.done.wait()
def main(): diesel.fork(track_cpu_stats) actor_pairs = int(sys.argv[1]) done = Countdown(actor_pairs) for i in xrange(actor_pairs): pair(done) start = time.time() done.wait() print "done in %.2f secs" % (time.time() - start) diesel.sleep(1) diesel.quickstop()
def main(): diesel.fork(track_cpu_stats) actor_pairs = int(sys.argv[1]) done = Countdown(actor_pairs) for i in xrange(actor_pairs): pair(done) start = time.time() done.wait() print "done in %.2f secs" % (time.time() - start) diesel.sleep(1) diesel.quickstop()
def runner(): global v v = 0 print "First, without dreadlock" t = time.time() cd = Countdown(500) for x in xrange(500): fork(nolocks, cd) cd.wait() print "Test took %.3f" % (time.time() - t) print "%s < %s?" % (v, 50 * 500) assert (v < 50 * 500) print '-' * 72 v = 0 locker = DreadlockService('localhost', 6001, 100) t = time.time() cd = Countdown(500) for x in xrange(500): fork(withlocks, locker, cd) cd.wait() print "Test took %.3f" % (time.time() - t) print "%s == %s?" % (v, 50 * 500) assert (v == 50 * 500) print '-' * 72 print "okay."
def setup(self): self.queue = Queue() self.done = Countdown(N) self.results = [] self.handled = defaultdict(int) self.populate() self.consume() self.trigger()
class FanoutHarness(object): def setup(self): self.done = Countdown(10) self.fan = Fanout() self.subscriber_data = {} for x in xrange(10): diesel.fork(self.subscriber) diesel.sleep() for i in xrange(10): self.fan.pub(i) self.done.wait() def subscriber(self): self.subscriber_data[uuid.uuid4()] = data = [] with self.fan.sub() as q: for i in xrange(10): data.append(q.get()) self.done.tick()
class FanoutHarness(object): def setup(self): self.done = Countdown(10) self.fan = Fanout() self.subscriber_data = {} for x in xrange(10): diesel.fork(self.subscriber) diesel.sleep() for i in xrange(10): self.fan.pub(i) self.done.wait() def subscriber(self): self.subscriber_data[uuid.uuid4()] = data = [] with self.fan.sub() as q: for i in xrange(10): data.append(q.get()) self.done.tick()
def setup(self): self.done = Countdown(10) self.fan = Fanout() self.subscriber_data = {} for x in xrange(10): diesel.fork(self.subscriber) diesel.sleep() for i in xrange(10): self.fan.pub(i) self.done.wait()
def runner(): global v v = 0 print "First, without dreadlock" t = time.time() cd = Countdown(500) for x in xrange(500): fork(nolocks, cd) cd.wait() print "Test took %.3f" % (time.time() - t) print "%s < %s?" % (v, 50 * 500) assert (v < 50 * 500) print '-' * 72 v = 0 locker = DreadlockService('localhost', 6001, 100) t = time.time() cd = Countdown(500) for x in xrange(500): fork(withlocks, locker, cd) cd.wait() print "Test took %.3f" % (time.time() - t) print "%s == %s?" % (v, 50 * 500) assert (v == 50 * 500) print '-' * 72 print "okay."
class QueueHarness(object): def setup(self): self.queue = Queue() self.done = Countdown(N) self.results = [] self.handled = defaultdict(int) self.populate() self.consume() self.trigger() def consume(self): def worker(myid): while True: # Test both queue.get and wait() on queue (both are valid # APIs for getting items from the queue). The results should # be the same. if random.random() > 0.5: v = self.queue.get() else: v = diesel.wait(self.queue) self.results.append(v) self.handled[myid] += 1 self.done.tick() for i in xrange(W): diesel.fork(worker, i) def trigger(self): ev, val = diesel.first(sleep=TIMEOUT, waits=[self.done]) if ev == 'sleep': assert 0, "timed out" def test_results_are_ordered_as_expected(self): assert self.results == range(N), self.results def test_results_are_balanced(self): for wid, count in self.handled.iteritems(): assert count == N / W, count
def test_multiple_signal_waiters(): N_WAITERS = 5 c = Countdown(N_WAITERS) def mwaiter(): diesel.signal(signal.SIGUSR1) c.tick() for i in xrange(N_WAITERS): diesel.fork(mwaiter) diesel.sleep() os.kill(os.getpid(), signal.SIGUSR1) evt, data = diesel.first(sleep=1, waits=[c]) assert evt is c, "all waiters were not triggered!"
class QueueHarness(object): def setup(self): self.queue = Queue() self.done = Countdown(N) self.results = [] self.handled = defaultdict(int) self.populate() self.consume() self.trigger() def consume(self): def worker(myid): while True: # Test both queue.get and wait() on queue (both are valid # APIs for getting items from the queue). The results should # be the same. if random.random() > 0.5: v = self.queue.get() else: v = diesel.wait(self.queue) self.results.append(v) self.handled[myid] += 1 self.done.tick() for i in xrange(W): diesel.fork(worker, i) def trigger(self): ev, val = diesel.first(sleep=TIMEOUT, waits=[self.done]) if ev == 'sleep': assert 0, "timed out" def test_results_are_ordered_as_expected(self): assert self.results == range(N), self.results def test_results_are_balanced(self): for wid, count in self.handled.iteritems(): assert count == N/W, count
from diesel import quickstart, quickstop, sleep from diesel.util.queue import Fanout from diesel.util.event import Countdown LISTENERS = 10 EVENTS = 5 cd = Countdown(LISTENERS * EVENTS) f = Fanout() def listener(x): with f.sub() as q: while True: v = q.get() print '%s <- %s' % (x, v) cd.tick() def teller(): for x in xrange(EVENTS): sleep(2) f.pub(x) def killer(): cd.wait() quickstop()
from diesel.util.queue import Queue, QueueTimeout from diesel.util.event import Countdown from diesel import log as glog, sleep, quickstart, quickstop q = Queue() cd = Countdown(4) def putter(): log = glog.sublog("putter", glog.info) log.info("putting 100000 things on log") for x in xrange(100000): q.put(x) sleep() def getter(): log = glog.sublog("getter", glog.info) got = 0 while got < 25000: try: s = q.get(timeout=3) sleep() except QueueTimeout: log.warn("timeout before getting a value, retrying...") continue got += 1 log.info("SUCCESS! got all 25,000") cd.tick() def manage():