Пример #1
0
    def test(self):
        self.nodes[LEADER].start()
        self.simulator.go(5)
        self.assertEqual(self.nodes[LEADER].get_state(), 'leader')

        self.nodes[ROUTER1].start()
        self.simulator.go(5)
        self.assertEqual(self.nodes[ROUTER1].get_state(), 'router')
        rloc16 = self.nodes[ROUTER1].get_addr16()

        for addr in self.nodes[ROUTER1].get_addrs():
            self.assertTrue(self.nodes[LEADER].ping(addr))

        self.nodes[LEADER].release_router_id(rloc16 >> 10)
        self.simulator.go(5)
        self.assertEqual(self.nodes[ROUTER1].get_state(), 'router')

        leader_messages = self.simulator.get_messages_sent_by(LEADER)
        router1_messages = self.simulator.get_messages_sent_by(ROUTER1)

        # 1 - All
        leader_messages.next_mle_message(mle.CommandType.ADVERTISEMENT)

        router1_messages.next_mle_message(mle.CommandType.PARENT_REQUEST)
        leader_messages.next_mle_message(mle.CommandType.PARENT_RESPONSE)

        router1_messages.next_mle_message(mle.CommandType.CHILD_ID_REQUEST)
        leader_messages.next_mle_message(mle.CommandType.CHILD_ID_RESPONSE)

        msg = router1_messages.next_coap_message("0.02")
        msg.assertCoapMessageRequestUriPath("/a/as")

        leader_messages.next_coap_message("2.04")

        # 2 - N/A

        # 3 - Router1
        msg = router1_messages.next_mle_message(mle.CommandType.PARENT_REQUEST)
        command.check_parent_request(msg, is_first_request=True)

        msg = router1_messages.next_mle_message(
            mle.CommandType.CHILD_ID_REQUEST, sent_to_node=self.nodes[LEADER])
        command.check_child_id_request(
            msg,
            tlv_request=CheckType.CONTAIN,
            mle_frame_counter=CheckType.OPTIONAL,
            address_registration=CheckType.NOT_CONTAIN,
            active_timestamp=CheckType.OPTIONAL,
            pending_timestamp=CheckType.OPTIONAL,
        )

        msg = router1_messages.next_coap_message(code="0.02")
        command.check_address_solicit(msg, was_router=True)

        # 4 - Router1
        for addr in self.nodes[ROUTER1].get_addrs():
            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')

        self.nodes[ROUTER1].start()
        self.simulator.go(5)
        self.assertEqual(self.nodes[ROUTER1].get_state(), 'router')
        rloc16 = self.nodes[ROUTER1].get_addr16()

        for addr in self.nodes[ROUTER1].get_addrs():
            self.assertTrue(self.nodes[LEADER].ping(addr))

        self.nodes[LEADER].release_router_id(rloc16 >> 10)
        self.simulator.go(5)
        self.assertEqual(self.nodes[ROUTER1].get_state(), 'router')

        leader_messages = self.simulator.get_messages_sent_by(LEADER)
        router1_messages = self.simulator.get_messages_sent_by(ROUTER1)

        # 1 - All
        leader_messages.next_mle_message(mle.CommandType.ADVERTISEMENT)

        router1_messages.next_mle_message(mle.CommandType.PARENT_REQUEST)
        leader_messages.next_mle_message(mle.CommandType.PARENT_RESPONSE)

        router1_messages.next_mle_message(mle.CommandType.CHILD_ID_REQUEST)
        leader_messages.next_mle_message(mle.CommandType.CHILD_ID_RESPONSE)

        msg = router1_messages.next_coap_message("0.02")
        msg.assertCoapMessageRequestUriPath("/a/as")

        leader_messages.next_coap_message("2.04")

        # 2 - N/A

        # 3 - Router1
        msg = router1_messages.next_mle_message(mle.CommandType.PARENT_REQUEST)
        command.check_parent_request(msg, is_first_request=True)

        msg = router1_messages.next_mle_message(mle.CommandType.CHILD_ID_REQUEST, sent_to_node=self.nodes[LEADER])
        command.check_child_id_request(msg, tlv_request=CheckType.CONTAIN,
            mle_frame_counter=CheckType.OPTIONAL, address_registration=CheckType.NOT_CONTAIN,
            active_timestamp=CheckType.OPTIONAL, pending_timestamp=CheckType.OPTIONAL)

        msg = router1_messages.next_coap_message(code="0.02")
        command.check_address_solicit(msg, was_router=True)

        # 4 - Router1
        for addr in self.nodes[ROUTER1].get_addrs():
            self.assertTrue(self.nodes[LEADER].ping(addr))