def AR_9(dul): """Association release AR-9. On receiving A-RELEASE primitive, send release response State-event triggers: Sta9 + Evt14 .. [1] DICOM Standard 2015b, PS3.8, Table 9-8, "Associate Release Related Actions" Parameters ---------- dul : pynetdicom3.dul.DULServiceProvider The DICOM Upper Layer Service instance for the local AE Returns ------- str Sta11, the next state of the state machine """ # Send A-RELEASE-RP PDU dul.pdu = A_RELEASE_RP() dul.pdu.from_primitive(dul.primitive) # Callback dul.assoc.acse.debug_send_release_rp(dul.pdu) dul.scu_socket.send(dul.pdu.encode()) return 'Sta11'
def test_from_primitive(self): """ Check converting PDU to primitive """ orig_pdu = A_RELEASE_RP() orig_pdu.Decode(a_release_rp) primitive = orig_pdu.ToParams() new_pdu = A_RELEASE_RP() new_pdu.FromParams(primitive) self.assertEqual(new_pdu, orig_pdu)
def test__pdu_to_event(self): """Test that good PDU paramters return expected results""" dul = DummyDUL() p2e = dul._pdu_to_event pdu_types = [ A_ASSOCIATE_RQ(), A_ASSOCIATE_AC(), A_ASSOCIATE_RJ(), P_DATA_TF(), A_RELEASE_RQ(), A_RELEASE_RP(), A_ABORT_RQ(), 'TEST' ] event_str = [ 'Evt6', 'Evt3', 'Evt4', 'Evt10', 'Evt12', 'Evt13', 'Evt16', 'Evt19' ] for pdu, evt in zip(pdu_types, event_str): self.assertEqual(p2e(pdu), evt)
def _socket_to_pdu(self, data): """Returns the PDU object associated with an incoming data stream. Parameters ---------- data : bytes The incoming data stream Returns ------- pdu : pynetdicom3.pdu.PDU The decoded data as a PDU object """ pdutype = unpack('B', data[0:1])[0] acse = self.assoc.acse pdu_types = { 0x01: (A_ASSOCIATE_RQ(), acse.debug_receive_associate_rq), 0x02: (A_ASSOCIATE_AC(), acse.debug_receive_associate_ac), 0x03: (A_ASSOCIATE_RJ(), acse.debug_receive_associate_rj), 0x04: (P_DATA_TF(), acse.debug_receive_data_tf), 0x05: (A_RELEASE_RQ(), acse.debug_receive_release_rq), 0x06: (A_RELEASE_RP(), acse.debug_receive_release_rp), 0x07: (A_ABORT_RQ(), acse.debug_receive_abort) } if pdutype in pdu_types: pdu = pdu_types[pdutype][0] pdu.Decode(data) # ACSE callbacks pdu_types[pdutype][1](pdu) return pdu return None
def test_encode(self): """ Check encoding an release_rp produces the correct output """ pdu = A_RELEASE_RP() pdu.decode(a_release_rp) assert pdu.encode() == a_release_rp
def test_string_output(self): """Test the string output""" pdu = A_RELEASE_RP() pdu.decode(a_release_rp) assert "0x06" in pdu.__str__() assert "4 bytes" in pdu.__str__()
def test_init(self): """Test a new A_RELEASE_RQ PDU""" pdu = A_RELEASE_RP() assert pdu.pdu_type == 0x06 assert pdu.pdu_length == 4 assert len(pdu) == 10
def test_string_output(self): """Test the string output""" pdu = A_RELEASE_RP() pdu.Decode(a_release_rp) self.assertTrue("0x06" in pdu.__str__()) self.assertTrue("10 bytes" in pdu.__str__())