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 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
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