def test(self): self.nodes[LEADER].start() self.simulator.go(5) self.assertEqual(self.nodes[LEADER].get_state(), 'leader') # 1 DUT_ROUTER1: Attach to LEADER self.nodes[DUT_ROUTER1].start() self.simulator.go(5) self.assertEqual(self.nodes[DUT_ROUTER1].get_state(), 'router') # DUT_ROUTER1: Verify MLE advertisements router1_messages = self.simulator.get_messages_sent_by(DUT_ROUTER1) msg = router1_messages.next_mle_message(mle.CommandType.ADVERTISEMENT) command.check_mle_advertisement(msg) # 2 REED1: Attach to DUT_ROUTER1 self.nodes[REED1].start() self.simulator.go(5) self.assertEqual(self.nodes[REED1].get_state(), 'child') # 3 DUT_ROUTER1: Verify MLE Parent Response router1_messages = self.simulator.get_messages_sent_by(DUT_ROUTER1) msg = router1_messages.next_mle_message(mle.CommandType.PARENT_RESPONSE) msg.assertSentToNode(self.nodes[REED1]) command.check_parent_response(msg) # 4 DUT_ROUTER1: Verify MLE Child ID Response msg = router1_messages.next_mle_message(mle.CommandType.CHILD_ID_RESPONSE) msg.assertSentToNode(self.nodes[REED1]) command.check_child_id_response(msg) # 5 Omitted # 6 MED1: Attach to REED1 self.nodes[MED1].start() self.simulator.go(5) self.assertEqual(self.nodes[MED1].get_state(), 'child') # 7 REED1: Verify sending Address Solicit Request to DUT_ROUTER1 reed1_messages = self.simulator.get_messages_sent_by(REED1) msg = reed1_messages.next_coap_message('0.02') reed1_ipv6_address = msg.ipv6_packet.ipv6_header.source_address.compressed msg.assertSentToNode(self.nodes[DUT_ROUTER1]); msg.assertCoapMessageRequestUriPath('/a/as') # 8 DUT_ROUTER1: Verify forwarding REED1's Address Solicit Request to LEADER router1_messages = self.simulator.get_messages_sent_by(DUT_ROUTER1) msg = router1_messages.next_coap_message('0.02') msg.assertSentToNode(self.nodes[LEADER]); msg.assertCoapMessageRequestUriPath('/a/as') # DUT_ROUTER1: Verify forwarding LEADER's Address Solicit Response to REED1 msg = router1_messages.next_coap_message('2.04') msg.assertSentToDestinationAddress(reed1_ipv6_address) # 9 LEADER: Verify connectivity by sending an ICMPv6 Echo Request to REED1 for addr in self.nodes[REED1].get_addrs(): if addr[0:4] != 'fe80': self.assertTrue(self.nodes[LEADER].ping(addr))
def test(self): self.nodes[LEADER].start() self.simulator.go(5) self.assertEqual(self.nodes[LEADER].get_state(), 'leader') # 1 DUT_ROUTER1: Attach to LEADER self.nodes[DUT_ROUTER1].start() self.simulator.go(5) self.assertEqual(self.nodes[DUT_ROUTER1].get_state(), 'router') # DUT_ROUTER1: Verify MLE advertisements router1_messages = self.simulator.get_messages_sent_by(DUT_ROUTER1) msg = router1_messages.next_mle_message(mle.CommandType.ADVERTISEMENT) command.check_mle_advertisement(msg) # 2 REED1: Attach to DUT_ROUTER1 self.nodes[REED1].start() self.simulator.go(5) self.assertEqual(self.nodes[REED1].get_state(), 'child') # 3 DUT_ROUTER1: Verify MLE Parent Response router1_messages = self.simulator.get_messages_sent_by(DUT_ROUTER1) msg = router1_messages.next_mle_message(mle.CommandType.PARENT_RESPONSE) msg.assertSentToNode(self.nodes[REED1]) command.check_parent_response(msg) # 4 DUT_ROUTER1: Verify MLE Child ID Response msg = router1_messages.next_mle_message(mle.CommandType.CHILD_ID_RESPONSE) msg.assertSentToNode(self.nodes[REED1]) command.check_child_id_response(msg) # 5 Omitted # 6 MED1: Attach to REED1 self.nodes[MED1].start() self.simulator.go(5) self.assertEqual(self.nodes[MED1].get_state(), 'child') # 7 REED1: Verify sending Address Solicit Request to DUT_ROUTER1 reed1_messages = self.simulator.get_messages_sent_by(REED1) msg = reed1_messages.next_coap_message('0.02') reed1_ipv6_address = msg.ipv6_packet.ipv6_header.source_address.compressed msg.assertSentToNode(self.nodes[DUT_ROUTER1]); msg.assertCoapMessageRequestUriPath('/a/as') # 8 DUT_ROUTER1: Verify forwarding REED1's Address Solicit Request to LEADER router1_messages = self.simulator.get_messages_sent_by(DUT_ROUTER1) msg = router1_messages.next_coap_message('0.02') msg.assertSentToNode(self.nodes[LEADER]); msg.assertCoapMessageRequestUriPath('/a/as') # DUT_ROUTER1: Verify forwarding LEADER's Address Solicit Response to REED1 msg = router1_messages.next_coap_message('2.04') msg.assertSentToDestinationAddress(reed1_ipv6_address) self.simulator.go(config.MAX_ADVERTISEMENT_INTERVAL) # 9 LEADER: Verify connectivity by sending an ICMPv6 Echo Request to REED1 for addr in self.nodes[REED1].get_addrs(): if addr[0:4] != 'fe80': self.assertTrue(self.nodes[LEADER].ping(addr))