Rev

Rev 614 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | SVN | Bug Tracker

Rev 614 Rev 617
Line 1... Line 1...
1
/*
1
/*
2
 * @author      STF 346, STF366, STF368, STF369, STF450, STF471
2
 * @author      STF 346, STF366, STF368, STF369, STF450, STF471
3
 * @version     $Id: LibSip_Steps.ttcn 614 2014-07-07 10:01:14Z tepelmann $
3
 * @version     $Id: LibSip_Steps.ttcn 617 2014-07-07 12:31:12Z tepelmann $
4
 * @desc        This module provides the types used by the test component
4
 * @desc        This module provides the types used by the test component
5
 *              for SIP-IMS tests.
5
 *              for SIP-IMS tests.
6
 *              This module is part of LibSipV2.
6
 *              This module is part of LibSipV2.
7
 */
7
 */
8
module LibSip_Steps {
8
module LibSip_Steps {
Line 3084... Line 3084...
3084
         */
3084
         */
3085
        function f_awaitingOkResponse(
3085
        function f_awaitingOkResponse(
3086
            inout CSeq p_cSeq_s
3086
            inout CSeq p_cSeq_s
3087
        ) runs on SipComponent  {
3087
        ) runs on SipComponent  {
3088
3088
3089
            tc_resp.start(PX_SIP_TRESP);
3089
            tc_resp.start;
3090
            alt {
3090
            alt {
3091
                [] SIPP.receive(mw_Response_Base(c_statusLine200, vc_callId, p_cSeq_s)) -> value vc_response {
3091
                [] SIPP.receive(mw_Response_Base(c_statusLine200, vc_callId, p_cSeq_s)) -> value vc_response {
3092
                    tc_resp.stop;
3092
                    tc_resp.stop;
3093
                    f_setHeadersOnReceiptOfResponse(vc_response);
3093
                    f_setHeadersOnReceiptOfResponse(vc_response);
3094
                    setverdict(pass);
3094
                    setverdict(pass);
Line 3101... Line 3101...
3101
         * @param p_Response expected response message
3101
         * @param p_Response expected response message
3102
         */
3102
         */
3103
        function f_awaitingResponse(
3103
        function f_awaitingResponse(
3104
            in template(present) Response p_Response := ?
3104
            in template(present) Response p_Response := ?
3105
        ) runs on SipComponent  {
3105
        ) runs on SipComponent  {
3106
            tc_resp.start(PX_SIP_TRESP);
3106
            tc_resp.start;
3107
            a_awaitingResponse(p_Response);
3107
            a_awaitingResponse(p_Response);
3108
        } // end f_awaitingResponse
3108
        } // end f_awaitingResponse
3109
3109
3110
        altstep a_awaitingResponse(
3110
        altstep a_awaitingResponse(
3111
            in template(present) Response p_Response := ?
3111
            in template(present) Response p_Response := ?
Line 3123... Line 3123...
3123
         * @param p_Response expected response message
3123
         * @param p_Response expected response message
3124
         */
3124
         */
3125
        function f_awaitingResponseIgnore100Trying(
3125
        function f_awaitingResponseIgnore100Trying(
3126
            in template(present) Response p_Response := ?
3126
            in template(present) Response p_Response := ?
3127
        ) runs on SipComponent  {
3127
        ) runs on SipComponent  {
3128
            tc_resp.start(PX_SIP_TRESP);
3128
            tc_resp.start;
3129
            alt {
3129
            alt {
3130
                [] SIPP.receive(p_Response) -> value vc_response {
3130
                [] SIPP.receive(p_Response) -> value vc_response {
3131
                    tc_resp.stop;
3131
                    tc_resp.stop;
3132
                    f_setHeadersOnReceiptOfResponse(vc_response);
3132
                    f_setHeadersOnReceiptOfResponse(vc_response);
3133
                // setverdict(pass)
3133
                // setverdict(pass)
Line 3143... Line 3143...
3143
         * @param p_Response expected response message
3143
         * @param p_Response expected response message
3144
         */
3144
         */
3145
        function f_awaitingResponseSendACK(
3145
        function f_awaitingResponseSendACK(
3146
            in template(present) Response p_Response := ?
3146
            in template(present) Response p_Response := ?
3147
        ) runs on SipComponent  {
3147
        ) runs on SipComponent  {
3148
            tc_resp.start(PX_SIP_TRESP);
3148
            tc_resp.start;
3149
            alt {
3149
            alt {
3150
                [] SIPP.receive(p_Response) -> value vc_response {
3150
                [] SIPP.receive(p_Response) -> value vc_response {
3151
                    tc_resp.stop;
3151
                    tc_resp.stop;
3152
                    f_setHeadersOnReceiptOfResponse(vc_response);
3152
                    f_setHeadersOnReceiptOfResponse(vc_response);
3153
                    LibSip_Steps.f_setHeadersACK();
3153
                    LibSip_Steps.f_setHeadersACK();
Line 3162... Line 3162...
3162
         * @param p_Response expected response message
3162
         * @param p_Response expected response message
3163
         */
3163
         */
3164
        function f_awaitingResponsePassOnTimeout(
3164
        function f_awaitingResponsePassOnTimeout(
3165
            in template(present) Response p_Response := ?
3165
            in template(present) Response p_Response := ?
3166
        ) runs on SipComponent  {
3166
        ) runs on SipComponent  {
3167
            tc_resp.start(PX_SIP_TRESP);
3167
            tc_resp.start;
3168
            alt {
3168
            alt {
3169
                [] SIPP.receive(p_Response) -> value vc_response {
3169
                [] SIPP.receive(p_Response) -> value vc_response {
3170
                    tc_resp.stop;
3170
                    tc_resp.stop;
3171
                    f_setHeadersOnReceiptOfResponse(vc_response);
3171
                    f_setHeadersOnReceiptOfResponse(vc_response);
3172
                    vc_boo_response := true;
3172
                    vc_boo_response := true;
Line 3190... Line 3190...
3190
        ) runs on SipComponent  {
3190
        ) runs on SipComponent  {
3191
3191
3192
            var boolean v_received_OK := false;
3192
            var boolean v_received_OK := false;
3193
            var boolean v_received_NOTIFY := false;
3193
            var boolean v_received_NOTIFY := false;
3194
            var NOTIFY_Request v_MSG;
3194
            var NOTIFY_Request v_MSG;
3195
            tc_resp.start(PX_SIP_TRESP);
3195
            tc_resp.start;
3196
            tc_wait.start(PX_SIP_TWAIT);
3196
            tc_wait.start(PX_SIP_TWAIT);
3197
3197
3198
            alt {
3198
            alt {
3199
                [] SIPP.receive(mw_Response_Base(c_statusLine200, vc_callId, p_cSeq_s)) -> value vc_response {
3199
                [] SIPP.receive(mw_Response_Base(c_statusLine200, vc_callId, p_cSeq_s)) -> value vc_response {
3200
                    tc_resp.stop;
3200
                    tc_resp.stop;
Line 3336... Line 3336...
3336
        function f_awaitingACK_setHeaders(
3336
        function f_awaitingACK_setHeaders(
3337
            in template(present) ACK_Request p_ACK := ?,
3337
            in template(present) ACK_Request p_ACK := ?,
3338
            in boolean p_setHeaders
3338
            in boolean p_setHeaders
3339
        ) runs on SipComponent  {
3339
        ) runs on SipComponent  {
3340
            var Request v_ACK_Request;
3340
            var Request v_ACK_Request;
3341
            tc_ack.start(PX_SIP_TACK);
3341
            tc_ack.start;
3342
3342
3343
            alt {
3343
            alt {
3344
                [] SIPP.receive(p_ACK) -> value v_ACK_Request {
3344
                [] SIPP.receive(p_ACK) -> value v_ACK_Request {
3345
                    tc_ack.stop;
3345
                    tc_ack.stop;
3346
                    if (p_setHeaders) {
3346
                    if (p_setHeaders) {
Line 4009... Line 4009...
4009
                f_SendREGISTER(p_register); // LibSip
4009
                f_SendREGISTER(p_register); // LibSip
4010
                // awaiting of 401 and sending 2nd REGISTER and awaiting 200 OK REGISTER
4010
                // awaiting of 401 and sending 2nd REGISTER and awaiting 200 OK REGISTER
4011
                if (p_auth) {
4011
                if (p_auth) {
4012
                    // receiving 401 Unauthorized response.
4012
                    // receiving 401 Unauthorized response.
4013
                    // and Re-send REGISTER request with Authorization header
4013
                    // and Re-send REGISTER request with Authorization header
4014
                    tc_resp.start(PX_SIP_TRESP);
4014
                    tc_resp.start;
4015
                    alt {
4015
                    alt {
4016
                        [] SIPP.receive(mw_Response_Base(c_statusLine401, vc_callId, p_cSeq_s)) -> value vc_response {
4016
                        [] SIPP.receive(mw_Response_Base(c_statusLine401, vc_callId, p_cSeq_s)) -> value vc_response {
4017
                            tc_resp.stop;
4017
                            tc_resp.stop;
4018
                            f_setHeadersOnReceiptOfResponse(vc_response);
4018
                            f_setHeadersOnReceiptOfResponse(vc_response);
4019
                            // set headers via, cseq and authorization
4019
                            // set headers via, cseq and authorization
Line 4057... Line 4057...
4057
                f_SendREGISTER(p_register); // LibSip
4057
                f_SendREGISTER(p_register); // LibSip
4058
                // awaiting of 401 and sending 2nd REGISTER and awaiting 200 OK REGISTER
4058
                // awaiting of 401 and sending 2nd REGISTER and awaiting 200 OK REGISTER
4059
                if (p_auth) {
4059
                if (p_auth) {
4060
                    // receiving 401 Unauthorized response.
4060
                    // receiving 401 Unauthorized response.
4061
                    // and Re-send REGISTER request with Authorization header
4061
                    // and Re-send REGISTER request with Authorization header
4062
                    tc_resp.start(PX_SIP_TRESP);
4062
                    tc_resp.start;
4063
                    alt {
4063
                    alt {
4064
                        [] SIPP.receive(mw_Response_Base(c_statusLine401, vc_callId, p_cSeq_s)) -> value vc_response {
4064
                        [] SIPP.receive(mw_Response_Base(c_statusLine401, vc_callId, p_cSeq_s)) -> value vc_response {
4065
                            tc_resp.stop;
4065
                            tc_resp.stop;
4066
                            f_setHeadersOnReceiptOfResponse(vc_response);
4066
                            f_setHeadersOnReceiptOfResponse(vc_response);
4067
                            // set headers via, cseq and authorization
4067
                            // set headers via, cseq and authorization
Line 4120... Line 4120...
4120
4120
4121
                f_SendREGISTER(v_request);
4121
                f_SendREGISTER(v_request);
4122
                if (PX_SIP_REGISTER_AUTHENTICATION_ENABLED) {
4122
                if (PX_SIP_REGISTER_AUTHENTICATION_ENABLED) {
4123
                    // receiving 401 Unauthorized response.
4123
                    // receiving 401 Unauthorized response.
4124
                    // and Re-send REGISTER request with Authorization header
4124
                    // and Re-send REGISTER request with Authorization header
4125
                    tc_resp.start(PX_SIP_TRESP);
4125
                    tc_resp.start;
4126
                    alt {
4126
                    alt {
4127
                        [] SIPP.receive(mw_Response_Base(c_statusLine401, vc_callIdReg, p_cSeq)) -> value vc_response {
4127
                        [] SIPP.receive(mw_Response_Base(c_statusLine401, vc_callIdReg, p_cSeq)) -> value vc_response {
4128
                            tc_resp.stop;
4128
                            tc_resp.stop;
4129
                            // TODO STF471 changed
4129
                            // TODO STF471 changed
4130
                            f_setHeadersOnReceiptOfResponse(vc_response);
4130
                            f_setHeadersOnReceiptOfResponse(vc_response);
Line 4146... Line 4146...
4146
                        [] a_awaitNotify(mw_NOTIFY_Request_Base(vc_callIdSub), v_receivedNotify) {
4146
                        [] a_awaitNotify(mw_NOTIFY_Request_Base(vc_callIdSub), v_receivedNotify) {
4147
                        }
4147
                        }
4148
                    }
4148
                    }
4149
                }
4149
                }
4150
                else {
4150
                else {
4151
                    tc_resp.start(PX_SIP_TRESP);
4151
                    tc_resp.start;
4152
                    alt {
4152
                    alt {
4153
                        [] a_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callIdReg, p_cSeq)) {
4153
                        [] a_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callIdReg, p_cSeq)) {
4154
                        }
4154
                        }
4155
                        [] a_awaitNotify(mw_NOTIFY_Request_Base(vc_callIdSub), v_receivedNotify) {
4155
                        [] a_awaitNotify(mw_NOTIFY_Request_Base(vc_callIdSub), v_receivedNotify) {
4156
                        }
4156
                        }
Line 4317... Line 4317...
4317
            integer p_byeCause
4317
            integer p_byeCause
4318
        ) runs on SipComponent  {
4318
        ) runs on SipComponent  {
4319
            // Sending of a BYE request to release the call and expect a final response
4319
            // Sending of a BYE request to release the call and expect a final response
4320
            f_SendBYE(m_BYE_Request_cause(p_requestUri, p_CallId, p_cSeq, p_from, p_to, vc_via, p_byeCause));
4320
            f_SendBYE(m_BYE_Request_cause(p_requestUri, p_CallId, p_cSeq, p_from, p_to, vc_via, p_byeCause));
4321
4321
4322
            tc_resp.start(PX_SIP_TRESP);
4322
            tc_resp.start;
4323
            alt {
4323
            alt {
4324
                [] SIPP.receive(mw_Response_Base(mw_statusLine1xx, p_CallId, p_cSeq)) {
4324
                [] SIPP.receive(mw_Response_Base(mw_statusLine1xx, p_CallId, p_cSeq)) {
4325
                    repeat;
4325
                    repeat;
4326
                }
4326
                }
4327
                [] SIPP.receive(mw_Response_Base(mw_statusLineFinal, p_CallId, p_cSeq)) {
4327
                [] SIPP.receive(mw_Response_Base(mw_statusLineFinal, p_CallId, p_cSeq)) {
Line 4336... Line 4336...
4336
            // This function is called to bring back the IUT in idle condition
4336
            // This function is called to bring back the IUT in idle condition
4337
            // in case of errors or unexpected behaviour.
4337
            // in case of errors or unexpected behaviour.
4338
            // Sending of a CANCEL request with the same Cseq
4338
            // Sending of a CANCEL request with the same Cseq
4339
            f_setHeadersCANCEL(vc_cSeq);
4339
            f_setHeadersCANCEL(vc_cSeq);
4340
            f_SendCANCEL(p_request);
4340
            f_SendCANCEL(p_request);
4341
            tc_resp.start(PX_SIP_TRESP);
4341
            tc_resp.start;
4342
            alt {
4342
            alt {
4343
                [] SIPP.receive(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)) {
4343
                [] SIPP.receive(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)) {
4344
                    tc_resp.stop;
4344
                    tc_resp.stop;
4345
                }
4345
                }
4346
            }
4346
            }
Line 4931... Line 4931...
4931
            var Credentials v_Credentials;
4931
            var Credentials v_Credentials;
4932
            var Response v_Response;
4932
            var Response v_Response;
4933
            var Request v_Request := vc_requestFor407;
4933
            var Request v_Request := vc_requestFor407;
4934
            [] any port.check(receive) {
4934
            [] any port.check(receive) {
4935
4935
4936
                tc_resp.start(PX_SIP_TRESP);
4936
                tc_resp.start;
4937
                alt {
4937
                alt {
4938
                    [] SIPP.receive(mw_Response_Base((c_statusLine401, c_statusLine407), vc_callId, vc_cSeq)) -> value v_Response {
4938
                    [] SIPP.receive(mw_Response_Base((c_statusLine401, c_statusLine407), vc_callId, vc_cSeq)) -> value v_Response {
4939
                        tc_resp.stop;
4939
                        tc_resp.stop;
4940
                        // get tag from To header if available
4940
                        // get tag from To header if available
4941
                        vc_to := v_Response.msgHeader.toField;
4941
                        vc_to := v_Response.msgHeader.toField;