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])
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
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
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
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()
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
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