Пример #1
0
 def testResilience(self):
     try:
         token = id(self)
         q = Queue()
         def callback(value, token):
             q.append((value, token))
         port = 6000
         host = ('localhost', port)
         p = launch_echoserver(port)
         coio.sleep(1)
         messenger = Messenger(host, reconnect_max_interval=0.1)
         messenger.connect()
         messenger.send('1', token, callback)
         assert q.popleft() == ('1', token)
         os.kill(p.pid, signal.SIGKILL)
         messenger.send('2', token, callback)
         coio.sleep(1)
         messenger.send('3', token, callback)
         assert q.popleft() == (None, token)
         assert q.popleft() == (None, token)
         p = launch_echoserver(port)
         coio.sleep(1)
         messenger.send('4', token, callback)
         assert q.popleft() == ('4', token)
         messenger.close()
         coio.sleep(1)
     finally:
         os.kill(p.pid, signal.SIGKILL)
Пример #2
0
    def testResilience(self):
        try:
            token = id(self)
            q = Queue()

            def callback(value, token):
                q.append((value, token))

            port = 6000
            host = ('localhost', port)
            p = launch_echoserver(port)
            coio.sleep(1)
            messenger = Messenger(host, reconnect_max_interval=0.1)
            messenger.connect()
            messenger.send('1', token, callback)
            assert q.popleft() == ('1', token)
            os.kill(p.pid, signal.SIGKILL)
            messenger.send('2', token, callback)
            coio.sleep(1)
            messenger.send('3', token, callback)
            assert q.popleft() == (None, token)
            assert q.popleft() == (None, token)
            p = launch_echoserver(port)
            coio.sleep(1)
            messenger.send('4', token, callback)
            assert q.popleft() == ('4', token)
            messenger.close()
            coio.sleep(1)
        finally:
            os.kill(p.pid, signal.SIGKILL)
Пример #3
0
    def testPerformance(self):
        token = id(self)
        message_length = 1024
        N = 10000
        batch_size = 100
        collector = Collector(batch_size)
        l = 0
        port = 6001
        host = ('localhost', port)
        p = launch_echoserver(port)
        bytecount = 0
        try:
            sent_messages = deque()
            coio.sleep(1)
            messenger = Messenger(host)
            messenger.connect()
            message_buffer = ''.join('%d' % (i % 10)
                                     for i in xrange(N + message_length * 2))
            i = 0
            start_time = timer()
            for i in xrange(N):
                if message_length > 4096:
                    message = buffer(message_buffer, i, message_length)
                else:
                    message = message_buffer[i:i + message_length]
                bytecount += len(message)
                messenger.send(message, token, collector)
                sent_messages.append((message, token))
                l += 1
                if l % batch_size == 0:
                    replies = collector.collect()
                    for i in xrange(len(replies)):
                        rm, rt = replies[i]
                        sm, st = sent_messages.popleft()
                        if type(sm) is buffer:
                            rm = buffer(rm)
                        if rm != sm:
                            print 'i: ', i
                            assert False
                    collector = Collector(batch_size)

            end_time = timer()
            elapsed_time = end_time - start_time
            print 'Transmitted %d messages with a size of %d bytes' % (
                N, message_length)
            print 'Transmission time (with validation): %fs' % elapsed_time
            print '%.2f requests+replies/s, %.2f MB/s' % (
                float(N * 2) / elapsed_time,
                (float(bytecount * 2) / 2**20) / elapsed_time)
            messenger.close()
        finally:
            os.kill(p.pid, signal.SIGKILL)
Пример #4
0
    def testPerformance(self):
        token = id(self)
        message_length = 1024
        N = 10000
        batch_size = 100
        collector = Collector(batch_size)
        l = 0
        port = 6001
        host = ('localhost', port)
        p = launch_echoserver(port)
        bytecount = 0
        try:
            sent_messages = deque()
            coio.sleep(1)
            messenger = Messenger(host)
            messenger.connect()
            message_buffer = ''.join('%d' % (i % 10) for i in xrange(N+message_length*2))
            i = 0
            start_time = timer()
            for i in xrange(N):
                if message_length > 4096:
                    message = buffer(message_buffer, i, message_length)
                else:
                    message = message_buffer[i:i+message_length]
                bytecount += len(message)
                messenger.send(message, token, collector)
                sent_messages.append((message, token))
                l += 1
                if l % batch_size == 0:
                    replies = collector.collect()
                    for i in xrange(len(replies)):
                        rm, rt = replies[i]
                        sm, st = sent_messages.popleft()
                        if type(sm) is buffer:
                            rm = buffer(rm)
                        if rm != sm:
                            print 'i: ', i
                            assert False
                    collector = Collector(batch_size)

            end_time = timer()
            elapsed_time = end_time - start_time
            print 'Transmitted %d messages with a size of %d bytes' % (N, message_length)
            print 'Transmission time (with validation): %fs' % elapsed_time
            print '%.2f requests+replies/s, %.2f MB/s' % (float(N*2) / elapsed_time, (float(bytecount*2) / 2**20) / elapsed_time)
            messenger.close()
        finally:
            os.kill(p.pid, signal.SIGKILL)