Beispiel #1
0
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'
Beispiel #2
0
    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)
Beispiel #3
0
    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)
Beispiel #4
0
    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
Beispiel #5
0
    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
Beispiel #6
0
 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__()
Beispiel #7
0
 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
Beispiel #8
0
 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__())