def testInterProcessMultiService_Async(self): print print 'testInterProcessMultiService_Async' M = 10 N = 1000 ports = range(16600, 16600 + M) for port in ports: self.registerSubprocess(spawn_server(port)) listeners = [('localhost', port) for port in ports] clients = [Client(listener, StoreProtocol()) for listener in listeners] self.clients.extend(clients) for client in clients: client.connect() while not client.is_connected(): coio.sleep(0.1) store_client = MulticastClient(StoreProtocol()) keys = ['foo%d' % i for i in xrange(N)] timestamps = [i for i in xrange(N)] values = ['bar%d' % i for i in xrange(N)] start = time.time() collector = store_client.set_collector(clients, N) for key, timestamp, value in zip(keys, timestamps, values): store_client.set_async(collector, key, timestamp, value) collector.collect() collector = store_client.get_collector(clients, N) for key in keys: store_client.get_async(collector, key) received_value_lists = collector.collect() elapsed = time.time() - start for token, received_values in received_value_lists.iteritems(): for timestamp, value, (received_timestamp, received_value) in zip( timestamps, values, received_values): if str(received_value) != str(value): print received_value, value assert str(received_value) == str(value) assert received_timestamp == timestamp invocation_count = 2 * len(ports) * N print 'Elapsed: %.2fs' % elapsed print 'Invocations: %d' % invocation_count print '%.2f invocations / s' % (invocation_count / elapsed)
def testInterProcessMultiService_Async(self): print print "testInterProcessMultiService_Async" M = 10 N = 1000 ports = range(16600, 16600 + M) for port in ports: self.registerSubprocess(spawn_server(port)) listeners = [("localhost", port) for port in ports] clients = [Client(listener, StoreProtocol()) for listener in listeners] self.clients.extend(clients) for client in clients: client.connect() while not client.is_connected(): coio.sleep(0.1) store_client = MulticastClient(StoreProtocol()) keys = ["foo%d" % i for i in xrange(N)] timestamps = [i for i in xrange(N)] values = ["bar%d" % i for i in xrange(N)] start = time.time() collector = store_client.set_collector(clients, N) for key, timestamp, value in zip(keys, timestamps, values): store_client.set_async(collector, key, timestamp, value) collector.collect() collector = store_client.get_collector(clients, N) for key in keys: store_client.get_async(collector, key) received_value_lists = collector.collect() elapsed = time.time() - start for token, received_values in received_value_lists.iteritems(): for timestamp, value, (received_timestamp, received_value) in zip(timestamps, values, received_values): if str(received_value) != str(value): print received_value, value assert str(received_value) == str(value) assert received_timestamp == timestamp invocation_count = 2 * len(ports) * N print "Elapsed: %.2fs" % elapsed print "Invocations: %d" % invocation_count print "%.2f invocations / s" % (invocation_count / elapsed)