def test_actorref_remote_returns_a_ref_that_when_sent_a_message_delivers_it_on_another_node( defer): # This just tests the routing logic and not heartbeat or reliability or deadletters or anything. # emulate a scenario in which a single node sends many messages to other nodes; # a total of NUM_NODES * NUM_ACTORS messages will be sent out. NUM_NODES = 1 NUM_ACTORS_PER_NODE = 2 sender_node = Node(nid='localhost:20000', enable_remoting=True) defer(sender_node.stop) recipient_nodes = [] for node_ix in range(NUM_NODES): nid = 'localhost:2000%d' % (node_ix + 1, ) remote_node = Node(nid=nid, enable_remoting=True) defer(remote_node.stop) receive_boxes = [] sent_msgs = [] for actor_num in range(1, NUM_ACTORS_PER_NODE + 1): actor_box = obs_list() # collects whatever the MockActor receives actor = remote_node.spawn(Props(MockActor, actor_box), name='actor%d' % actor_num) # we only care about the messages received, not the ref itself receive_boxes.append(actor_box) # format: dummy-<nodename>-<actorname>-<random-stuff-for-good-measure> (just for debuggability) msg = 'dummy-%s-%s-%s' % (nid, actor.uri.name, random.randint(1, 10000000)) sender_node.lookup(actor.uri) << msg sent_msgs.append(msg) recipient_nodes.append((sent_msgs, receive_boxes)) for sent_msgs, receive_boxes in recipient_nodes: for sent_msg, receive_box in zip(sent_msgs, receive_boxes): receive_box.wait_eq(terminator=[sent_msg], timeout=None)
def test_actorref_remote_returns_a_ref_that_when_sent_a_message_delivers_it_on_another_node(defer): # This just tests the routing logic and not heartbeat or reliability or deadletters or anything. # emulate a scenario in which a single node sends many messages to other nodes; # a total of NUM_NODES * NUM_ACTORS messages will be sent out. NUM_NODES = 1 NUM_ACTORS_PER_NODE = 2 sender_node = Node(nid='localhost:20000', enable_remoting=True) defer(sender_node.stop) recipient_nodes = [] for node_ix in range(NUM_NODES): nid = 'localhost:2000%d' % (node_ix + 1,) remote_node = Node(nid=nid, enable_remoting=True) defer(remote_node.stop) receive_boxes = [] sent_msgs = [] for actor_num in range(1, NUM_ACTORS_PER_NODE + 1): actor_box = obs_list() # collects whatever the MockActor receives actor = remote_node.spawn(Props(MockActor, actor_box), name='actor%d' % actor_num) # we only care about the messages received, not the ref itself receive_boxes.append(actor_box) # format: dummy-<nodename>-<actorname>-<random-stuff-for-good-measure> (just for debuggability) msg = 'dummy-%s-%s-%s' % (nid, actor.uri.name, random.randint(1, 10000000)) sender_node.lookup(actor.uri) << msg sent_msgs.append(msg) recipient_nodes.append((sent_msgs, receive_boxes)) for sent_msgs, receive_boxes in recipient_nodes: for sent_msg, receive_box in zip(sent_msgs, receive_boxes): receive_box.wait_eq(terminator=[sent_msg], timeout=None)