class TestContextVars(unittest.TestCase): def setUp(self): self.bus = VoomBus(raise_errors=True) self.context2 = 0 def do1(self, msg): self.msg = msg self.context = self.bus.message_context['c'] with self.bus.using(dict(c=self.context + 1), local=True): with self.bus.using(dict(c=self.context + 2), local=True): self.bus.publish("hello") self.bus.publish("hello") def do2(self, msg): self.msg2 = msg self.context2 += self.bus.message_context['c'] def test_vars(self): msg = 1 self.bus.subscribe(int, self.do1) self.bus.subscribe(str, self.do2) with self.bus.using(dict(c=100), local=True): self.bus.publish(msg) assert self.context == 100 assert self.context2 == 101 + 102
class TestContextVars(unittest.TestCase): def setUp(self): self.bus = VoomBus(raise_errors=True) self.context = 0 self.context2 = 0 def do1(self, msg): self.msg = msg self.context += self.bus.session['c'] with self.bus.using(dict(c=self.context + 1)): with self.bus.using(dict(c=self.context + 2)): self.bus.publish("hello") self.bus.publish("hello") def do2(self, msg): self.msg2 = msg self.context2 += self.bus.session['c'] def test_vars_should_add_up(self): msg = 1 self.bus.subscribe(int, self.do1) self.bus.subscribe(str, self.do2) with self.bus.using(dict(c=100)): self.bus.publish(msg) assert self.context == 100 assert self.context2 == 101 + 102 def test_vars_should_add_up_twice(self): msg = 1 self.bus.subscribe(int, self.do1) self.bus.subscribe(str, self.do2) with self.bus.using(dict(c=100)): self.bus.publish(msg) self.bus.publish(msg) self.assertEquals(200, self.context) self.assertEquals(606, self.context2)
import sys, os sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..")) # make this file executable ### BEGIN from voom.bus import VoomBus from voom.priorities import BusPriority bus = VoomBus() bus.subscribe(int, lambda msg: sys.stdout.write("I see %d\n" % msg)) bus.subscribe(int, lambda msg: sys.stdout.write("squared %d\n" % msg**2), priority=BusPriority.LOW_PRIORITY) bus.subscribe(str, lambda msg: bus.publish(int(msg[::-1]))) bus.publish(101) bus.publish("102")