def test_SplitterDelLinkBoth(self): """Sending an delSink message to splitter unlinks in the extra outbox and signal""" Axon.Scheduler.scheduler.run = Axon.Scheduler.scheduler() split = Splitter().activate() target1 = Axon.Component.component().activate() target2 = Axon.Component.component().activate() target1.link((split, "outbox"), (target1, "inbox")) target1.link((split, "signal"), (target1, "control")) addmsg = addsink(target2, "inbox", "control") split._deliver(addmsg, "configuration") execute = Axon.Scheduler.scheduler.run.main() for i in xrange(1, 10): execute.next() for i in xrange(1, 10): if i == 5: delmsg = removesink(target2, "inbox", "control") split._deliver(delmsg, "configuration") split._deliver(i, "inbox") split._deliver(10 + i, "control") for j in xrange(1, 10): execute.next() for i in xrange(1, 40): execute.next() # verify that the data has made it to the targets for i in xrange(1, 5): self.assert_(target1.dataReady("inbox")) self.assert_(target1.dataReady("control")) self.assert_(i == target1.recv("inbox")) self.assert_(10 + i == target1.recv("control")) self.assert_(target2.dataReady("inbox")) self.assert_(target2.dataReady("control")) self.assert_(i == target2.recv("inbox")) self.assert_(10 + i == target2.recv("control")) for i in xrange(5, 10): self.assert_(target1.dataReady("inbox")) self.assert_(target1.dataReady("control")) self.assert_(i == target1.recv("inbox")) self.assert_(10 + i == target1.recv("control")) self.assert_(not target2.dataReady("inbox")) self.assert_(not target2.dataReady("control")) # verify there is nothing left self.assert_(not target1.dataReady("inbox")) self.assert_(not target1.dataReady("control")) self.assert_(not target2.dataReady("inbox")) self.assert_(not target2.dataReady("control"))
def test_SplitterDelLinkBoth(self): """Sending an delSink message to splitter unlinks in the extra outbox and signal""" Axon.Scheduler.scheduler.run = Axon.Scheduler.scheduler() split = Splitter().activate() target1 = Axon.Component.component().activate() target2 = Axon.Component.component().activate() target1.link( (split,"outbox"), (target1, "inbox") ) target1.link( (split,"signal"), (target1, "control") ) addmsg = addsink(target2, "inbox", "control") split._deliver(addmsg, "configuration") execute = Axon.Scheduler.scheduler.run.main() for i in xrange(1,10): execute.next() for i in xrange(1,10): if i == 5: delmsg = removesink(target2, "inbox", "control") split._deliver(delmsg, "configuration") split._deliver(i, "inbox") split._deliver(10+i, "control") for j in xrange(1,10): execute.next() for i in xrange(1,40): execute.next() # verify that the data has made it to the targets for i in xrange(1,5): self.assert_(target1.dataReady("inbox")) self.assert_(target1.dataReady("control")) self.assert_(i == target1.recv("inbox")) self.assert_(10+i == target1.recv("control")) self.assert_(target2.dataReady("inbox")) self.assert_(target2.dataReady("control")) self.assert_(i == target2.recv("inbox")) self.assert_(10+i == target2.recv("control")) for i in xrange(5,10): self.assert_(target1.dataReady("inbox")) self.assert_(target1.dataReady("control")) self.assert_(i == target1.recv("inbox")) self.assert_(10+i == target1.recv("control")) self.assert_(not target2.dataReady("inbox")) self.assert_(not target2.dataReady("control")) # verify there is nothing left self.assert_(not target1.dataReady("inbox")) self.assert_(not target1.dataReady("control")) self.assert_(not target2.dataReady("inbox")) self.assert_(not target2.dataReady("control"))
def test_SplitterAddLinkSignalOnly(self): """Sending an addSink message to splitter links in an extra signal""" Axon.Scheduler.scheduler.run = Axon.Scheduler.scheduler() split = Splitter().activate() target1 = Axon.Component.component().activate() target2 = Axon.Component.component().activate() target1.link((split, "outbox"), (target1, "inbox")) target1.link((split, "signal"), (target1, "control")) addmsg = addsink(target2, None, "control") split._deliver(addmsg, "configuration") execute = Axon.Scheduler.scheduler.run.main() for i in xrange(1, 10): execute.next() for i in xrange(1, 10): split._deliver(i, "inbox") split._deliver(10 + i, "control") for j in xrange(1, 10): execute.next() # verify that the data has made it to the targets for i in xrange(1, 10): self.assert_(target1.dataReady("inbox")) self.assert_(target1.dataReady("control")) self.assert_(i == target1.recv("inbox")) self.assert_(10 + i == target1.recv("control")) self.assert_(not target2.dataReady("inbox")) self.assert_(target2.dataReady("control")) self.assert_(10 + i == target2.recv("control")) # verify there is nothing left self.assert_(not target1.dataReady("inbox")) self.assert_(not target1.dataReady("control")) self.assert_(not target2.dataReady("inbox")) self.assert_(not target2.dataReady("control"))
def test_SplitterAddLinkSignalOnly(self): """Sending an addSink message to splitter links in an extra signal""" Axon.Scheduler.scheduler.run = Axon.Scheduler.scheduler() split = Splitter().activate() target1 = Axon.Component.component().activate() target2 = Axon.Component.component().activate() target1.link( (split,"outbox"), (target1, "inbox") ) target1.link( (split,"signal"), (target1, "control") ) addmsg = addsink(target2, None, "control") split._deliver(addmsg, "configuration") execute = Axon.Scheduler.scheduler.run.main() for i in xrange(1,10): execute.next() for i in xrange(1,10): split._deliver(i, "inbox") split._deliver(10+i, "control") for j in xrange(1,10): execute.next() # verify that the data has made it to the targets for i in xrange(1,10): self.assert_(target1.dataReady("inbox")) self.assert_(target1.dataReady("control")) self.assert_(i == target1.recv("inbox")) self.assert_(10+i == target1.recv("control")) self.assert_(not target2.dataReady("inbox")) self.assert_(target2.dataReady("control")) self.assert_(10+i == target2.recv("control")) # verify there is nothing left self.assert_(not target1.dataReady("inbox")) self.assert_(not target1.dataReady("control")) self.assert_(not target2.dataReady("inbox")) self.assert_(not target2.dataReady("control"))