def test_Message_chunkDeChunk_remainsintact(self): from Kamaelia.Chassis.Pipeline import Pipeline syncmessage = "XXXXXXXXXXXXXXXXXXXXXXX" File = open("../../Examples/SimpleGraphicalApps/Ticker/Ulysses").read() chunks = [File[y:y+20] for y in xrange(0,len(File),20) ] chunker = Framing.DataChunker(syncmessage=syncmessage) dechunker = Framing.DataDeChunker(syncmessage=syncmessage) system = Pipeline( chunker, dechunker, ).activate() Dummy = Axon.Component.component() system.link((system, "outbox"),(Dummy, "inbox")) system.link((system, "signal"),(Dummy, "control")) for chunk in chunks: system._deliver(chunk, "inbox") activeScheduler = system.schedulerClass.run.main() for _ in xrange(2000): activeScheduler.next() resultchunks = [] try: while 1: # chunk = system._collect("outbox") chunk = Dummy.recv("inbox") resultchunks.append(chunk) except IndexError: pass # We collect all items in the outbox result = "".join(resultchunks) self.assertEqual(File[:20],result[:20])
def test_Message_chunkDeChunk_remainsintact(self): from Kamaelia.Chassis.Pipeline import Pipeline syncmessage = "XXXXXXXXXXXXXXXXXXXXXXX" File = open("../../Examples/SimpleGraphicalApps/Ticker/Ulysses").read() chunks = [File[y:y + 20] for y in xrange(0, len(File), 20)] chunker = Framing.DataChunker(syncmessage=syncmessage) dechunker = Framing.DataDeChunker(syncmessage=syncmessage) system = Pipeline( chunker, dechunker, ).activate() Dummy = Axon.Component.component() system.link((system, "outbox"), (Dummy, "inbox")) system.link((system, "signal"), (Dummy, "control")) for chunk in chunks: system._deliver(chunk, "inbox") activeScheduler = system.schedulerClass.run.main() for _ in xrange(2000): activeScheduler.next() resultchunks = [] try: while 1: # chunk = system._collect("outbox") chunk = Dummy.recv("inbox") resultchunks.append(chunk) except IndexError: pass # We collect all items in the outbox result = "".join(resultchunks) self.assertEqual(File[:20], result[:20])
pipe1 = Pipeline( producer, published, ) pipe1.activate() pipe2 = Pipeline( subscribe, consumer ) consumer2 = Consumer() consumer2.activate() pipe1.link((pipe1,'signal'),(pipe2,'control')) pipe2.link((pipe2,'signal'),(backplane,'control')) backplane.link((backplane,'signal'),(consumer2,'control')) import threading class A(threading.Thread): def run(self): someStopped = False injected = False while 1: print "<whatever>" someRunning = False for i in (producer, consumer, published, subscribe, pipe1, pipe2, backplane): print i._isStopped(), i if i._isStopped():