Commit bcca55aa authored by poglitsch's avatar poglitsch
Browse files

first version of CONF

parent 21cfd19d
Loading
Loading
Loading
Loading
+1069 −0

File added.

Preview size limit exceeded, changes collapsed.

+110 −0
Original line number Diff line number Diff line
module CONF_Templates {
    
    
    import from LibSip_SDPTypes language "TTCN-3:2005" all;

    import from LibSip_Templates language "TTCN-3:2009" all;

    import from LibSip_SIPTypesAndValues language "TTCN-3:2005" all;

    template SubscriptionState mw_SubscriptionState(charstring p_state) := {
        fieldName:=SUBSCRIPTION_STATE_E, 
        subState:=p_state,
        substateParams:=*
    }
    
    template Response mw_Response_conf (
        template StatusLine p_statusLine, 
        template CallId p_callId,
        template CSeq p_cSeq, 
        template Contact p_contact,
        template MessageBody p_mb
    ) modifies mw_Response_Base:= {
        statusLine := { 
            sipVersion := c_sipNameVersion, 
            statusCode := p_statusLine.statusCode, 
            reasonPhrase := ?
        },
        msgHeader :=
        {
            contact := p_contact
        },
        messageBody := p_mb
    }
    
    template SDP_attribute_curr m_SDP_curr(
        charstring p_precondition, 
        charstring p_status, 
        charstring p_direction
    ) := {
        preconditionType := p_precondition,
        statusType := p_status,
        direction := p_direction
    }
    
    template SDP_attribute_curr mw_SDP_curr(
        template (present) charstring p_precondition, 
        template (present) charstring p_status, 
        template (present) charstring p_direction
    ) := {
        preconditionType := p_precondition,
        statusType := p_status,
        direction := p_direction
    }
    
    template SDP_attribute_curr m_SDP_conf(
        charstring p_precondition, 
        charstring p_status, 
        charstring p_direction
    ) := {
        preconditionType := p_precondition,
        statusType := p_status,
        direction := p_direction
    }
    
    template SDP_attribute_curr mw_SDP_conf(
        template (present) charstring p_precondition, 
        template (present) charstring p_status, 
        template (present) charstring p_direction
    ) := {
        preconditionType := p_precondition,
        statusType := p_status,
        direction := p_direction
    }
    
    template SDP_attribute_des m_SDP_des(
        charstring p_precondition,
        charstring p_strength,  
        charstring p_status, 
        charstring p_direction
    ) := {
        preconditionType := p_precondition,
        strength := p_strength,
        statusType := p_status,
        direction := p_direction
    }
    
    template SDP_attribute_des mw_SDP_des(
        template (present) charstring p_precondition,
        template (present) charstring p_strength,
        template (present) charstring p_status, 
        template (present) charstring p_direction
    ) := {
        preconditionType := p_precondition,
        strength := p_strength,
        statusType := p_status,
        direction := p_direction
    }
    
    template INVITE_Request mw_INVITE_Request_CONF(
        template SipUrl p_requestUri,
        template PAssertedID p_pAssertedID, 
        template Contact p_contact
    ) modifies mw_INVITE_Request_Base := {
        requestLine := {requestUri := p_requestUri},
        msgHeader := {
            contact := p_contact,
            pAssertedID := p_pAssertedID
        }
    }
}
 No newline at end of file
+432 −0
Original line number Diff line number Diff line
module CONF_TestCases {
    import from LibSip_SIPTypesAndValues language "TTCN-3:2005" all;

    import from CONF_TC_Functions language "TTCN-3:2009" all;

    import from SS_Ims_TestSystem language "TTCN-3:2009" all;

    import from LibIms_Interface language "TTCN-3:2009" all;

    import from LibCommon_Sync language "TTCN-3:2009" all;

    import from SS_Ims_TestConfiguration language "TTCN-3:2009" all;

    group conferenceCreation {

        /**
         * @desc
         *     Conferenece creation with a conference factory URI. Conference event package subscribed.
         *     <p> Ensure that a conference can be created by a UE using the conference factory URI. 
         *     The "isfocus" feature parameter indicated in Contact header is received in the 200 OK. 
         *     In addition the conference participant subscribes to the conference event package 
         *     and receives a NOTIFY request describing the conference status.</p>
         * @param p_cSeq Transaction Id
         */
        testcase TC_CONF_N01_001(inout CSeq p_cSeq) runs on ServerSyncComp system TestAdapter {
            // variable declaration
            var ImsComponent v_scscf;
        
            // setup test configuration
            f_cf_as_up(v_scscf);
        
            // start component
            v_scscf.start(f_TC_CONF_N01_001(p_cSeq));
    	
            // synchronize component
            f_serverSync1Client({c_tbDone});
    	
            // tear down test configuration
            f_cf_as_down(v_scscf);
        }
    
        /**
         * @desc
         *     Conferenece creation with a conference factory URI. Conference event package not subscribed.
         *     <p> Ensure that a conference can be created by a UE using the conference factory URI. 
         *     The "isfocus" feature parameter indicated in Contact header is received in the 200 OK. 
         *     The Conference participant does not subscribe to the conference event package.</p>
         * @param p_cSeq Transaction Id
         */
        testcase TC_CONF_N01_002(inout CSeq p_cSeq) runs on ServerSyncComp system TestAdapter {
            // variable declaration
            var ImsComponent v_scscf;
        
            // setup test configuration
            f_cf_as_up(v_scscf);
        
            // start component
            v_scscf.start(f_TC_CONF_N01_002(p_cSeq));
        
            // synchronize component
            f_serverSync1Client({c_tbDone});
        
            // tear down test configuration
            f_cf_as_down(v_scscf);
        }
        
        /**
         * @desc
         *     Conferenece creation with a conference URI. Conference event package subscribed.
         *     <p> Ensure that a conference can be created by a UE using the conference factory URI. 
         *     The "isfocus" feature parameter indicated in Contact header is received in the 200 OK. 
         *     In addition the conference participant subscribes to the conference event package 
         *     and receives a NOTIFY request describing the conference status.</p>
         * @param p_cSeq Transaction Id
         */
        testcase TC_CONF_N01_003(inout CSeq p_cSeq) runs on ServerSyncComp system TestAdapter {
            // variable declaration
            var ImsComponent v_scscf;
        
            // setup test configuration
            f_cf_as_up(v_scscf);
        
            // start component
            // TODO same module parameter is used for conference factory uri and conference uri
            v_scscf.start(f_TC_CONF_N01_001(p_cSeq)); 
        
            // synchronize component
            f_serverSync1Client({c_tbDone});
        
            // tear down test configuration
            f_cf_as_down(v_scscf);
        }
    
        /**
         * @desc
         *     Conferenece creation with a conference URI. Conference event package not subscribed.
         *     <p> Ensure that a conference can be created by a UE using the conference factory URI. 
         *     The "isfocus" feature parameter indicated in Contact header is received in the 200 OK. 
         *     The Conference participant does not subscribe to the conference event package.</p>
         * @param p_cSeq Transaction Id
         */
        testcase TC_CONF_N01_004(inout CSeq p_cSeq) runs on ServerSyncComp system TestAdapter {
            // variable declaration
            var ImsComponent v_scscf;
        
            // setup test configuration
            f_cf_as_up(v_scscf);
        
            // start component
            // TODO same module parameter is used for conference factory uri and conference uri
            v_scscf.start(f_TC_CONF_N01_002(p_cSeq));
        
            // synchronize component
            f_serverSync1Client({c_tbDone});
        
            // tear down test configuration
            f_cf_as_down(v_scscf);
        }
        
        /**
         * @desc
         *     Conferenece creation with a conference URI. Precondition indicated 
         *     a conference UROI is sent in the first provisional response.
         *     <p> Ensure that a conference can be created by a UE using the conference factory URI. 
         *     Precinditions are requested by the originating UE. 
         *     The "isfocus" feature parameter indicated in Contact header is received in the 200 OK,</p>
         * @param p_cSeq Transaction Id
         */
        testcase TC_CONF_N01_005(inout CSeq p_cSeq) runs on ServerSyncComp system TestAdapter {
            // variable declaration
            var ImsComponent v_scscf;
        
            // setup test configuration
            f_cf_as_up(v_scscf);
        
            // start component
            v_scscf.start(f_TC_CONF_N01_005(p_cSeq));
        
            // synchronize component
            f_serverSync1Client({c_tbDone});
        
            // tear down test configuration
            f_cf_as_down(v_scscf);
        }
        
        /**
         * @desc
         *     Conferenece creation with a conference URI not allocated in the focus, unsuccessful.
         *     <p> Ensure that a conference cannot be created by a UE using the conference factory URI
         *     not allocated in the focus. The request is rejected by the focus with a 
         *     488 Not Acceptable Here final response.</p>
         * @param p_cSeq Transaction Id
         */
        testcase TC_CONF_N01_006(inout CSeq p_cSeq) runs on ServerSyncComp system TestAdapter {
            // variable declaration
            var ImsComponent v_scscf;
        
            // setup test configuration
            f_cf_as_up(v_scscf);
        
            // start component
            v_scscf.start(f_TC_CONF_N01_006(p_cSeq));
        
            // synchronize component
            f_serverSync1Client({c_tbDone});
        
            // tear down test configuration
            f_cf_as_down(v_scscf);
        }
        
    }
    
    group joiningConference {
        /**
         * @desc
         *     Participant dial-in the fonference, the conference URI is used.
         *     <p>UE1 (via ISC#1) establish a conference. UE2 (via ISC#2) joins in that conference by sending an INVITE request to the conferencing AS (the conference URI is known at the UE2). The request is succesful.</p>
         * @param p_cSeq Transaction Id
         */
        testcase TC_CONF_N02_001(inout CSeq p_cSeq) runs on ServerSyncComp system TestAdapter {
            // variable declaration
            var ImsComponent v_scscf;
        
            // setup test configuration
            f_cf_as_up(v_scscf);
        
            // start component
            v_scscf.start(f_TC_CONF_N02_001(p_cSeq));
        
            // synchronize component
            f_serverSync1Client({c_prDone, c_tbDone});
        
            // tear down test configuration
            f_cf_as_down(v_scscf);
        }
        
        
        /**
         * @desc
         *     Participant dial-in the fonference, the conference URI is not allocated, the request is rejected.
         *     <p>UE2 (via ISC#2) tries to join in that conference but the conference 
         *     URI in the INVITE request is not allocated at the focus. 
         *     The request is jrected with the final response 4xx.</p>
         * @param p_cSeq Transaction Id
         */
        testcase TC_CONF_N02_002(inout CSeq p_cSeq) runs on ServerSyncComp system TestAdapter {
            // variable declaration
            var ImsComponent v_scscf;
        
            // setup test configuration
            f_cf_as_up(v_scscf);
        
            // start component
            v_scscf.start(f_TC_CONF_N02_002(p_cSeq));
        
            // synchronize component
            f_serverSync1Client({c_prDone, c_tbDone});
        
            // tear down test configuration
            f_cf_as_down(v_scscf);
        }
    }
    
    group inviteToConference {
        
        /**
         * @desc
         *     Inviting participant sending REFER to the focus.
         *     <p>UE1 (via ISC#1) establish a conference and invites UE2 (connected via ISC#2) 
         *     to join into the conference. UE1 sends a REFER to the focus, 
         *     the focus sends an INVITE request to UE2 to invite it to the conference.</p>
         * @param p_cSeq Transaction Id
         */
        testcase TC_CONF_N03_001(inout CSeq p_cSeq) runs on ServerSyncComp system TestAdapter {
            // variable declaration
            var ImsComponent v_scscf;
        
            // setup test configuration
            f_cf_as_up(v_scscf);
        
            // start component
            v_scscf.start(f_TC_CONF_N03_001(p_cSeq));
        
            // synchronize component
            f_serverSync1Client({c_prDone, c_tbDone});
        
            // tear down test configuration
            f_cf_as_down(v_scscf);
        }
    }
    
    group leavingConference {

        /**
         * @desc
         *     A particioant leaves the conference.
         *     <p>UE#2 wishes to leave the conference by sending a BYE request to ghe focus in accordance to the basic call.</p>
         * @param p_cSeq Transaction Id
         */
        testcase TC_CONF_N04_001(inout CSeq p_cSeq) runs on ServerSyncComp system TestAdapter {
            // variable declaration
            var ImsComponent v_scscf;
        
            // setup test configuration
            f_cf_as_up(v_scscf);
        
            // start component
            v_scscf.start(f_TC_CONF_N04_001(p_cSeq));
        
            // synchronize component
            f_serverSync1Client({c_prDone, c_tbDone});
        
            // tear down test configuration
            f_cf_as_down(v_scscf);
        }
        
    }
    
    group removeFormConference {

        /**
         * @desc
         *     The conference owner asks the focus to remove a participant from the conference.
         *     <p>UE1 sends a REFER request to remove UE2 from the conference. 
         *     THe focus sends a BYE request to UE2.</p>
         * @param p_cSeq Transaction Id
         */
        testcase TC_CONF_N05_001(inout CSeq p_cSeq) runs on ServerSyncComp system TestAdapter {
            // variable declaration
            var ImsComponent v_scscf;
        
            // setup test configuration
            f_cf_as_up(v_scscf);
        
            // start component
            v_scscf.start(f_TC_CONF_N05_001(p_cSeq));
        
            // synchronize component
            f_serverSync1Client({c_prDone, c_tbDone});
        
            // tear down test configuration
            f_cf_as_down(v_scscf);
        }
        

        /**
         * @desc
         *     The conference owner asks the focus to remove a user that is not participant from the conference.
         *     <p>UE1 sends a REFER request to remove a user that is not participant in the conference from the conference. 
         *     THe focus reject the request.</p>
         * @param p_cSeq Transaction Id
         */
        testcase TC_CONF_N05_002(inout CSeq p_cSeq) runs on ServerSyncComp system TestAdapter {
            // variable declaration
            var ImsComponent v_scscf;
        
            // setup test configuration
            f_cf_as_up(v_scscf);
        
            // start component
            v_scscf.start(f_TC_CONF_N05_002(p_cSeq));
        
            // synchronize component
            f_serverSync1Client({c_prDone, c_tbDone});
        
            // tear down test configuration
            f_cf_as_down(v_scscf);
        }
    }
    
    group terminateConference {
        

        /**
         * @desc
         *     The conference owner releases the entire conference by sending a BYE to the focus.
         *     <p>UE1, the conference owner, sends a BYE request to the focus. The entire conference is released.</p>
         * @param p_cSeq Transaction Id
         */
        testcase TC_CONF_N06_001(inout CSeq p_cSeq) runs on ServerSyncComp system TestAdapter {
            // variable declaration
            var ImsComponent v_scscf;
        
            // setup test configuration
            f_cf_as_up(v_scscf);
        
            // start component
            v_scscf.start(f_TC_CONF_N06_001(p_cSeq));
        
            // synchronize component
            f_serverSync1Client({c_prDone, c_tbDone});
        
            // tear down test configuration
            f_cf_as_down(v_scscf);
        }

        /**
         * @desc
         *     Conference termination when the conference creator has left the conference.
         *     <p>Ensure that the conference is terminated when the conference 
         *     creator which has created the conference using the coference factory has left the conference.</p>
         * @param p_cSeq Transaction Id
         */
        testcase TC_CONF_N06_002(inout CSeq p_cSeq) runs on ServerSyncComp system TestAdapter {
            // variable declaration
            var ImsComponent v_scscf;
        
            // setup test configuration
            f_cf_as_up(v_scscf);
        
            // start component
            v_scscf.start(f_TC_CONF_N06_001(p_cSeq));
        
            // synchronize component
            f_serverSync1Client({c_prDone, c_tbDone});
        
            // tear down test configuration
            f_cf_as_down(v_scscf);
        }
        
    }
    
    group userEquipment {

        /**
         * @desc
         *     The user equipment has the capability to create a conference. No subscription to the conference event package.
         *     <p>Ensure that the user equipment to create a conference with a conference factory, sends an initial INVITE request with the request URI containing a conference factory URI.</p>
         * @param p_cSeq Transaction Id
         */
        testcase TC_CONF_U01_001(inout CSeq p_cSeq) runs on ServerSyncComp system TestAdapter {
            // variable declaration
            var ImsComponent v_pcscf;
        
            // setup test configuration
            f_cf_ue_up(v_pcscf);
        
            // start component
            v_pcscf.start(f_TC_CONF_U01_001(p_cSeq));
        
            // synchronize component
            f_serverSync1Client({c_prDone, c_tbDone});
        
            // tear down test configuration
            f_cf_ue_down(v_pcscf);
        }
        
        /**
         * @desc
         *     The user equipment has the capability to create a conference with subscription to the conference event package.
         *     <p>Ensure that the user equipment to create a conference with a conference factory, sends an initial INVITE request with the request URI containing a conference factory and on receipt of 200 OK response, to subscribe to the conference event package sends SUBSCRIBE request with request URI indicating the received conference URI.</p>
         * @param p_cSeq Transaction Id
         */
        testcase TC_CONF_U01_002(inout CSeq p_cSeq) runs on ServerSyncComp system TestAdapter {
            // variable declaration
            var ImsComponent v_pcscf;
        
            // setup test configuration
            f_cf_ue_up(v_pcscf);
        
            // start component
            v_pcscf.start(f_TC_CONF_U01_002(p_cSeq));
        
            // synchronize component
            f_serverSync1Client({c_prDone, c_tbDone});
        
            // tear down test configuration
            f_cf_ue_down(v_pcscf);
        }
        
    }
}
 No newline at end of file