def test_encode(self): """Test encoding of a DIMSE message.""" primitive = C_STORE() primitive.MessageID = 7 primitive.AffectedSOPClassUID = "1.1.1" primitive.AffectedSOPInstanceUID = "1.2.1" primitive.Priority = 0x02 primitive.MoveOriginatorApplicationEntityTitle = "UNITTEST" primitive.MoveOriginatorMessageID = 3 # Test encode without dataset dimse_msg = C_STORE_RQ() dimse_msg.primitive_to_message(primitive) p_data_list = [] for pdata in dimse_msg.encode_msg(12, 16): p_data_list.append(pdata) assert p_data_list[0].presentation_data_value_list[0][1][ 0:1] == b"\x01" assert p_data_list[-1].presentation_data_value_list[0][1][ 0:1] == b"\x03" assert dimse_msg.context_id == 12 # Test encode with dataset ds = Dataset() ds.PatientID = "Test1101" ds.PatientName = "Tube^HeNe" primitive.DataSet = BytesIO(encode(ds, True, True)) dimse_msg = C_STORE_RQ() dimse_msg.primitive_to_message(primitive) p_data_list = [] for pdata in dimse_msg.encode_msg(13, 10): p_data_list.append(pdata) assert p_data_list[0].presentation_data_value_list[0][1][ 0:1] == b"\x01" assert p_data_list[-1].presentation_data_value_list[0][1][ 0:1] == b"\x02" assert p_data_list[-2].presentation_data_value_list[0][1][ 0:1] == b"\x00" assert p_data_list[-10].presentation_data_value_list[0][1][ 0:1] == b"\x03" assert dimse_msg.context_id == 13 p_data_list = [] for pdata in dimse_msg.encode_msg(1, 31682): p_data_list.append(pdata) assert p_data_list[0].presentation_data_value_list[0][ 1] == c_store_rq_cmd assert p_data_list[1].presentation_data_value_list[0][1] == c_store_ds
def test_conversion_rq(self): """ Check conversion to a -RQ PDU produces the correct output """ primitive = C_STORE() primitive.MessageID = 7 primitive.AffectedSOPClassUID = '1.2.840.10008.5.1.4.1.1.2' primitive.AffectedSOPInstanceUID = '1.2.392.200036.9116.2.6.1.48.' \ '1215709044.1459316254.522441' primitive.Priority = 0x02 primitive.MoveOriginatorApplicationEntityTitle = 'UNITTEST_SCP' primitive.MoveOriginatorMessageID = 3 ref_ds = Dataset() ref_ds.PatientID = 'Test1101' ref_ds.PatientName = "Tube HeNe" primitive.DataSet = BytesIO(encode(ref_ds, True, True)) dimse_msg = C_STORE_RQ() dimse_msg.primitive_to_message(primitive) pdvs = [] for fragment in dimse_msg.encode_msg(1, 16382): pdvs.append(fragment) cs_pdv = pdvs[0].presentation_data_value_list[0][1] ds_pdv = pdvs[1].presentation_data_value_list[0][1] assert cs_pdv == c_store_rq_cmd_b assert ds_pdv == c_store_rq_ds_b
def test_encode_zero(self): """Test encoding with a 0 max pdu length.""" primitive = C_STORE() primitive.MessageID = 7 primitive.AffectedSOPClassUID = '1.1.1' primitive.AffectedSOPInstanceUID = '1.2.1' primitive.Priority = 0x02 primitive.MoveOriginatorApplicationEntityTitle = 'UNITTEST' primitive.MoveOriginatorMessageID = 3 # Test encode without dataset dimse_msg = C_STORE_RQ() dimse_msg.primitive_to_message(primitive) p_data_list = [] for pdata in dimse_msg.encode_msg(12, 0): p_data_list.append(pdata) assert p_data_list[0].presentation_data_value_list[0][1][ 0:1] == b'\x03' assert dimse_msg.context_id == 12 # Test encode with dataset ds = Dataset() ds.PatientID = 'Test1101' ds.PatientName = 'Tube^HeNe' primitive.DataSet = BytesIO(encode(ds, True, True)) dimse_msg = C_STORE_RQ() dimse_msg.primitive_to_message(primitive) p_data_list = [] for pdata in dimse_msg.encode_msg(13, 0): p_data_list.append(pdata) assert p_data_list[0].presentation_data_value_list[0][1][ 0:1] == b'\x03' assert p_data_list[0].presentation_data_value_list[0][ 1] == c_store_rq_cmd assert p_data_list[1].presentation_data_value_list[0][1][ 0:1] == b'\x02' assert p_data_list[1].presentation_data_value_list[0][1] == c_store_ds assert dimse_msg.context_id == 13
def setup(self): """Run prior to each test""" primitive = C_STORE() primitive.MessageID = 7 primitive.AffectedSOPClassUID = '1.1.1' primitive.AffectedSOPInstanceUID = '1.2.1' primitive.Priority = 0x02 primitive.MoveOriginatorApplicationEntityTitle = b'UNITTEST' primitive.MoveOriginatorMessageID = 3 primitive.DataSet = BytesIO(encode(DATASET, True, True)) msg = C_STORE_RQ() msg.primitive_to_message(primitive) self.fragments = msg.encode_msg(1, 16382)
def test_decode(self): """Test decoding of a DIMSE message.""" primitive = C_STORE() primitive.MessageID = 7 primitive.AffectedSOPClassUID = "1.1.1" primitive.AffectedSOPInstanceUID = "1.2.1" primitive.Priority = 0x02 primitive.MoveOriginatorApplicationEntityTitle = "UNITTEST" primitive.MoveOriginatorMessageID = 3 ds = Dataset() ds.PatientID = "Test1101" ds.PatientName = "Tube^HeNe" primitive.DataSet = BytesIO(encode(ds, True, True)) dimse_msg = C_STORE_RQ() dimse_msg.primitive_to_message(primitive) # CMD: (1x4, 3x1), DS: (0x1, 2x1) p_data = dimse_msg.encode_msg(12, 24) # Command set decoding dimse_msg.decode_msg(next(p_data)) # MCHB 1 dimse_msg.decode_msg(next(p_data)) # MCHB 1 dimse_msg.decode_msg(next(p_data)) # MCHB 1 dimse_msg.decode_msg(next(p_data)) # MCHB 1 dimse_msg.decode_msg(next(p_data)) # MCHB 3 - end of command set assert dimse_msg.__class__ == C_STORE_RQ # Test decoded command set cs = dimse_msg.command_set assert cs.CommandGroupLength == 94 assert cs.AffectedSOPClassUID == UID("1.1.1") assert cs.AffectedSOPInstanceUID == UID("1.2.1") assert cs.Priority == 2 assert cs.CommandDataSetType == 1 assert cs.CommandField == 1 assert cs.MoveOriginatorApplicationEntityTitle == "UNITTEST" assert cs.MoveOriginatorMessageID == 3 # Test decoded dataset dimse_msg.decode_msg(next(p_data)) # MCHB 1 # MCHB 0 dimse_msg.decode_msg(next(p_data)) # MCHB 1 # MCHB 2 assert dimse_msg.data_set.getvalue() == c_store_ds[1:] # Test returns false msg = C_STORE_RSP() assert not msg.decode_msg(c_store_rsp_cmd)
class TestEncodeMessage: def setup(self): primitive = C_STORE() primitive.MessageID = 7 primitive.AffectedSOPClassUID = '1.1.1' primitive.AffectedSOPInstanceUID = '1.2.1' primitive.Priority = 0x02 primitive.MoveOriginatorApplicationEntityTitle = b'UNITTEST' primitive.MoveOriginatorMessageID = 3 primitive.DataSet = BytesIO(encode(DATASET, True, True)) self.msg = C_STORE_RQ() self.msg.primitive_to_message(primitive) def time_encode(self): """Benchmark for standard encode.""" for ii in range(100): for fragment in self.msg.encode_msg(1, 16382): pass