Esempio n. 1
0
    def test_RCPMasterConnectionContext(self):
        ctx = RCPMaster.RCPMasterConnectionContext(socket=None)
        self.assertIsInstance(ctx, RCPMaster.RCPMasterConnectionContext)

        ctx._sequence_id = 1
        ret = ctx.get_next_seq_id()
        self.assertEqual(ret, 2)

        ctx._transaction_id = 1
        ret = ctx.get_next_trans_id()
        self.assertEqual(ret, 2)

        ret = ctx.get_responses_list()
        self.assertEqual(ret, ctx._responses_list)

        ret = ctx.get_last_response()
        self.assertIsNone(ret)

        test = "test"
        ctx.add_response(test)
        self.assertEqual(0, ctx.get_responses_count())

        pkt = rcp.RCPPacket()
        pkt_1 = rcp.RCPPacket()
        ctx.add_response(pkt)
        self.assertEqual(1, ctx.get_responses_count())
        for i in range(0, ctx.max_rsp_list_size):
            ctx.add_response(pkt_1)
        self.assertEqual(ctx.get_responses_count(), ctx.max_rsp_list_size)
        ret = ctx.get_last_response()
        self.assertEqual(ret, pkt_1)
        self.assertNotEquals(pkt, ctx._responses_list[0])
Esempio n. 2
0
    def construct_eds_first_ira_tlv(self):
        # read capabilities and write identification
        s_buffer = "\x00\x00\x00\x01\x01\x82\x00\x06\x01\x7e" \
            "\x00\x01\x00\x00\x00\x00\x00\x00\x00\x11\x8b\x01\x01\x01\x6f\x09" \
            "\x01\x1a\x0a\x00\x02\x00\x01\x0b\x00\x01\x01\x32\x01\x0e\x01\x00" \
            "\x00\x02\x00\x00\x03\x00\x00\x04\x00\x00\x05\x00\x00\x06\x00\x00" \
            "\x07\x00\x00\x08\x00\x00\x09\x00\x00\x0a\x00\x00\x0b\x00\x00\x0c" \
            "\x00\x00\x0d\x00\x00\x0e\x00\x00\x0f\x00\x00\x10\x00\x00\x11\x00" \
            "\x00\x12\x00\x00\x13\x00\x30\x01\x00\x00\x02\x00\x00\x03\x00\x00" \
            "\x04\x00\x00\x05\x00\x00\x06\x00\x00\x07\x00\x00\x08\x00\x00\x09" \
            "\x00\x00\x0a\x00\x00\x0b\x00\x00\x0c\x00\x00\x0d\x00\x00\x0e\x00" \
            "\x00\x0f\x00\x00\x10\x00\x00\x14\x00\x0f\x01\x00\x00\x02\x00\x00" \
            "\x03\x00\x00\x04\x00\x00\x05\x00\x00\x15\x00\x18\x01\x00\x00\x02" \
            "\x00\x00\x03\x00\x00\x04\x00\x00\x05\x00\x00\x06\x00\x00\x07\x00" \
            "\x00\x08\x00\x00\x16\x00\x12\x01\x00\x00\x02\x00\x00\x03\x00\x00" \
            "\x04\x00\x00\x05\x00\x00\x06\x00\x00\x17\x00\x12\x01\x00\x00\x02" \
            "\x00\x00\x03\x00\x00\x04\x00\x00\x05\x00\x00\x06\x00\x00\x18\x00" \
            "\x09\x01\x00\x00\x02\x00\x00\x03\x00\x00\x19\x00\x00\x1a\x00\x00" \
            "\x1b\x00\x00\x1c\x00\x00\x1d\x00\x00\x1e\x00\x00\x1f\x00\x00\x20" \
            "\x00\x00\x21\x00\x00\x23\x00\x00\x24\x00\x00\x26\x00\x00\x27\x00" \
            "\x00\x28\x00\x00\x29\x00\x00\x2a\x00\x00\x2b\x00\x00\x2c\x00\x00" \
            "\x2d\x00\x00\x2e\x00\x00\x2f\x00\x00\x30\x00\x00\x09\x00\x4f\x0a" \
            "\x00\x02\x00\x02\x0b\x00\x01\x02\x3c\x00\x43\x01\x00\x01\x01\x02" \
            "\x00\x04\x31\x32\x33\x34\x03\x00\x10\x20\x01\x00\x60\x00\x10\x00" \
            "\x13\x00\x00\x00\x00\x00\x00\x00\x01\x04\x00\x01\x01\x05\x00\x08" \
            "\x43\x43\x41\x50\x43\x4f\x52\x45\x06\x00\x02\x11\x8b\x07\x00\x01" \
            "\x01\x08\x00\x01\x00\x0a\x00\x02\x00\x00\x0b\x00\x01\x00"

        packet = rcp.RCPPacket(s_buffer, buf_data_len=len(s_buffer))
        result = packet.decode()
        self.assertEqual(result, GCPObject.DECODE_DONE)
        return packet
Esempio n. 3
0
 def _new_packet_rsp(self, pkt_rcvd):  # pragma: no cover
     """Creates new RCP packet with header set according to received
     packet's header."""
     pkt = rcp.RCPPacket()
     pkt.transaction_identifier = pkt_rcvd.transaction_identifier
     pkt.protocol_identifier = pkt_rcvd.transaction_identifier
     pkt.unit_id = 0
     return pkt
Esempio n. 4
0
    def _new_packet_req(self, slave):  # pragma: no cover
        """Creates new RCP packet with header set according to slave's
        state."""

        pkt = rcp.RCPPacket()
        slave.io_ctx.transaction_id += 1
        pkt.transaction_identifier = slave.io_ctx.transaction_id
        pkt.protocol_identifier = slave.protocol_id
        pkt.unit_id = 0
        return pkt
Esempio n. 5
0
    def test_RCPMaster(self):
        try:
            RCPMaster(session_descriptor=None, dispatcher=self.dispatcher)
        except Exception as e:
            self.assertIsInstance(e, TypeError)

        cap = CcapCoreIdentification(index=1,
                                     core_id="CORE_12312ds",
                                     core_ip_addr="1.1.1.1",
                                     is_principal=True,
                                     core_name="CBR",
                                     vendor_id=9,
                                     core_mode=True)
        scena = RCPMasterScenario()

        desc = RCPMasterDescriptor(capabilities=cap,
                                   addr="localhost",
                                   scenario=scena)
        master = RCPMaster(session_descriptor=desc,
                           dispatcher=self.dispatcher,
                           scenario=scena)
        self.assertIsInstance(master, RCPMaster)
        master.initiate()
        self.assertTrue(master.is_initiated())

        # start slave working thread
        t = threading.Thread(target=self.__slave_worker())
        t.start()
        fd = master.accept_connection()
        self.assertIsNotNone(fd)

        rsp_list = master.get_responses_list(fd)
        self.assertIsNotNone(rsp_list)

        test = "test"
        master.add_response(pkt=test, fd=fd)
        self.assertEqual(0, master.get_responses_count(fd=fd))

        pkt = rcp.RCPPacket()
        master.add_response(pkt=pkt, fd=fd)
        self.assertEqual(1, master.get_responses_count(fd=fd))
        ret_pkt = master.get_last_response(fd)
        self.assertEqual(pkt, ret_pkt)

        master.close()
        master.remove_connection(fd)
        # wait for the thread
        self.slave_work_run = False
        t.join()
        master.close()
        self.session.close()
        master.dispatcher = None
        master.remove_connection(fd=fd)
        master.close()
Esempio n. 6
0
    def construct_eds_pkt_invalid_tlv_under_rfchannel(self):
        # write rfchannel with invalid tlv 99
        s_buffer = "\x00\x00\x00\x01\x00\x55\x00\x06\x00\x51\x05\x69\x00\x00" \
                   "\x00\x00\x00\x00\x00\x11\x8b\x01\x02\x00\x42\x09\x00\x3f\x0a\x00" \
                   "\x02\x05\x6a\x0b\x00\x01\x02\x10\x00\x33\x0c\x00\x0c\x01\x00\x01" \
                   "\x00\x02\x00\x01\x05\x03\x00\x01\x02\x63\x00\x21\x01\x00\x02\x1f" \
                   "\xff\x02\x00\x04\x00\x00\x39\x08\x03\x00\x01\x04\x04\x00\x04\x00" \
                   "\x00\x00\x04\x05\x00\x02\x00\x06\x06\x00\x02\x00\x1a"

        packet = rcp.RCPPacket(s_buffer, buf_data_len=len(s_buffer))
        result = packet.decode()
        self.assertEqual(result, GCPObject.DECODE_DONE)
        return packet
Esempio n. 7
0
 def construct_rcp_pkt(self, buffer):
     packet = rcp.RCPPacket(buffer, buf_data_len=len(buffer))
     result = packet.decode()
     self.assertEqual(result, GCPObject.DECODE_DONE)
     return packet