예제 #1
0
    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])
예제 #2
0
    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])
예제 #3
0
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():