예제 #1
0
    def test_PassThroughControlSignal(self):
        """Data sent to the inbox is sent on to the outbox"""
        split = Splitter()
        split.activate()

        for i in xrange(1, 10):
            split._deliver(i, "control")
        for _ in xrange(0, 100):
            split.next()
        for i in xrange(1, 10):
            self.assert_(len(split.outboxes["signal"]))
            self.assert_(0 == len(split.outboxes["outbox"]))
            self.assert_(i == split._collect("signal"))

        for i in xrange(1, 10):
            split._deliver(i, "control")
            split.next()
            split.next()
        for _ in xrange(0, 10):
            split.next()
        for i in xrange(1, 10):
            self.assert_(len(split.outboxes["signal"]))
            self.assert_(0 == len(split.outboxes["outbox"]))
            self.assert_(i == split._collect("signal"))
예제 #2
0
    def test_PassThroughControlSignal(self):
        """Data sent to the inbox is sent on to the outbox"""
        split = Splitter()
        split.activate()

        for i in xrange(1,10):
            split._deliver( i, "control" )
        for _ in xrange(0,100):
            split.next()
        for i in xrange(1,10):
            self.assert_(len(split.outboxes["signal"]))
            self.assert_(0==len(split.outboxes["outbox"]))
            self.assert_( i == split._collect("signal") )

        for i in xrange(1,10):
            split._deliver( i, "control" )
            split.next()
            split.next()
        for _ in xrange(0,10):
            split.next()
        for i in xrange(1,10):
            self.assert_(len(split.outboxes["signal"]))
            self.assert_(0==len(split.outboxes["outbox"]))
            self.assert_( i == split._collect("signal") )
예제 #3
0
    def test_SplitterShutdown(self):
        """If producerFinished or shutdownMicroprocess is received on the 'control' inbox they are passed on and the component shuts down"""
        for msg in [producerFinished(self), shutdownMicroprocess(self)]:
            split = Splitter()
            split.activate()

            for _ in xrange(0, 10):
                split.next()
            self.assert_(0 == len(split.outboxes["outbox"]))
            self.assert_(0 == len(split.outboxes["signal"]))

            split._deliver(msg, "control")
            try:
                for _ in xrange(0, 10):
                    split.next()
                self.fail()
            except StopIteration:
                pass
            self.assert_(0 == len(split.outboxes["outbox"]))
            self.assert_(1 == len(split.outboxes["signal"]))
            received = split._collect("signal")
            self.assert_(msg == received)
예제 #4
0
 def test_SplitterShutdown(self):
     """If producerFinished or shutdownMicroprocess is received on the 'control' inbox they are passed on and the component shuts down"""
     for msg in [producerFinished(self), shutdownMicroprocess(self)]:
         split = Splitter()
         split.activate()
 
         for _ in xrange(0,10):
             split.next()
         self.assert_(0==len(split.outboxes["outbox"]))
         self.assert_(0==len(split.outboxes["signal"]))
 
         split._deliver( msg, "control" )
         try:
             for _ in xrange(0,10):
                 split.next()
             self.fail()
         except StopIteration:
             pass
         self.assert_(0==len(split.outboxes["outbox"]))
         self.assert_(1==len(split.outboxes["signal"]))
         received = split._collect("signal")
         self.assert_( msg == received )