Commit ee3a71ff authored by Yann Garcia's avatar Yann Garcia
Browse files

Create first TC for Sh/Dh

parent b13bafab
Loading
Loading
Loading
Loading

LibCommon @ 22cc04e3

Original line number Diff line number Diff line
Subproject commit 8f0b6280029f2b786f289ee6cf671553a4806b17
Subproject commit 22cc04e32b0e37f70a7df30df12727a6546e2916

LibDiameter @ 0a2c2794

Original line number Diff line number Diff line
Subproject commit b62f32c33a6306ba8fcdd214e7d97b103fdd47f0
Subproject commit 0a2c2794adaf00aa61ebda53e9b429a7ebd71b81
+15 −8
Original line number Diff line number Diff line
module DiameterShDh_Steps {

    //LibCommon
    import from LibCommon_DataStrings {type Bit1, Bit4, Bit5, Bit8;}//all;
    import from LibCommon_BasicTypesAndValues {type UInt8;type UInt32;};//LibCommon
    import from LibCommon_DataStrings all;
    import from LibCommon_BasicTypesAndValues all;
    import from LibCommon_Sync all ;
    import from LibCommon_VerdictControl all ;

@@ -14,6 +14,7 @@ module DiameterShDh_Steps {
    import from LibDiameter_Steps  all;
    import from LibDiameter_PIXITS all;
    import from LibDiameter_Interface all;
    import from LibDiameter_Interface all;
    
    //DiameterRFRo
    import from DiameterShDh_PIXITS all;
@@ -106,20 +107,26 @@ module DiameterShDh_Steps {
        
        altstep a_diameter_event() runs on DiameterShDh
        {

            [] DIAMP.receive (DIAMETER_MSG:{uDR_MSG := 
                mdw_uDR
                mdw_uDR(
                        ?,
                        mdw_udrBodyAvps(?,?,?))
            }) -> value vc_recvDiamMsgDefault
              {
                vc_recv_hopid:= vc_recvDiamMsgDefault.uDR_MSG.header.hopid;
                vc_recv_endid:= vc_recvDiamMsgDefault.uDR_MSG.header.endid;
                vc_accountingRecordNumber := vc_recvDiamMsgDefault.uDR_MSG.uDR_Body.accounting_Record_Number;

                /* TODO f_send_UDA(
                f_send_UDA(
                    md_uDA( 
                        vc_sessionId
                        vc_sessionId,                       // containing a Session-ID AVP
                        md_udaBodyAvps(
                            m_resultCode(                   // containing a Result-Code AVP
                                DIAMETER_SUCCESS_E          //     indicating DIAMETER_SUCCESS
                            ),
                            vc_originHost,                  // containing an Origin-Host AVP
                            vc_originRealm
                    ))
                );*/
                );
                repeat;
              }
        }//end altstep a_diameter_event()
+23 −15
Original line number Diff line number Diff line
@@ -46,21 +46,29 @@ module DiameterShDh_TCFunctions {

                    f_send_UDR(
                               md_uDR(
                            vc_sessionId
                                      vc_sessionId,
                                      md_udrBodyAvps(
                                                     m_vendor_Specific_Appl_Id_Sh,
                                                     vc_originHost,                 // containing an Origin-Host AVP
                                                     vc_originRealm,                // containing an Origin-Realm AVP
                                                     vc_destinationRealm            // containing a Destination-Realm AVP
                                                    )
                                     )
                    );

                    /* TODO f_awaiting_UDA(
                    f_awaiting_UDA(
                                   mdw_uDA( 
                                           vc_sessionId,                       // containing a Session-ID AVP
                                           mdw_udaBodyAvps(
                                mw_resultCode(                  // containing a Result-Code AVP
                                    DIAMETER_SUCCESS_E          //     indicating DIAMETER_SUCCESS
                                                           mw_UDA_ResulFaile(
                                                                             mw_resultCode(
                                                                                           DIAMETER_MISSING_AVP_E      // containing a Result-Code AVP
                                                                                                                       //     indicating DIAMETER_MISSING_AVP
                                                                                           ),
                                                           vc_originHost_IUT,              // containing an Origin-Host AVP
                                                           vc_originRealm_IUT
                        ))
                    );*/
                        )))
                    );

                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 

+163 −47
Original line number Diff line number Diff line
@@ -68,33 +68,24 @@ module DiameterShDh_Templates {
        
    } // End of group HeaderFieldTemplates
    
    // Even if template is defined in DiameterS9_Templates module we keep it here to have ShDh specific 
    template (value) Subscription_Id_AVP m_subscription_Id(
                                                           in template (value) Subscription_Id_Type_AVP p_typeAVP, 
                                                           in template (value) Subscription_Id_Data_AVP p_dataAVP
    ) := {
        aVP_Header := m_aVP_HeaderVid_Mbit1(
                                            c_subscription_Id_AVP_Code,
                                            f_getByteAlignedLength(p_typeAVP.aVP_Header.aVP_len) + 
                                            f_getByteAlignedLength(p_dataAVP.aVP_Header.aVP_len),
                                            omit),
        subscription_Id_Type := p_typeAVP,
        subscription_Id_Data := p_dataAVP
    } // End of template m_subscription_Id
    
    template (value) Subscription_Id_Type_AVP m_subscription_Id_Type(
                                                                     in template (value) Subscription_Id_Ty_Type p_aVPData
    ):= {
        aVP_Header  := m_aVP_HeaderVid_Mbit1(c_subscription_Id_Type_AVP_Code, f_getEnumLength()),
        aVP_Data    := p_aVPData
    } // End of template m_subscription_Id_Type

    template (value) Subscription_Id_Data_AVP m_subscription_Id_Data(
                                                                     in template (value) UTF8String p_aVPData
    ) := {
        aVP_Header  := m_aVP_HeaderVid_Mbit1(c_subscription_Id_Data_AVP_Code, f_getUTF8StringLength(valueof(p_aVPData))),
        aVP_Data    := p_aVPData
    } // End of template  m_subscription_Id_Data
    group HeaderFieldTemplates {
        
        group SpecificAVPHeaders {
            
            group sendingTemplatesForAVPs{
            	
                template Vendor_Specific_Appl_Id_AVP m_vendor_Specific_Appl_Id_Sh 
                  modifies m_vendor_Specific_Appl_Id_dummy := {
                    aVP_Header := m_aVP_Header_Mbit1(c_vendor_Specific_Appl_Id_AVP_Code, 12+12),
                    vendor_Id := {m_vendorId(c_vendId3gpp)},
                    auth_Application_Id := {m_authApplicationId(c_applIdSh)},
                    acct_Application_Id := omit
                }
            }
            
        }
        
    }
    
    group Sh_modified_message_templates { 
        
@@ -103,39 +94,164 @@ module DiameterShDh_Templates {
            /**
             * @desc Send template for UDR
             * @param p_sessionId   Session identifier
             * @param p_acrBody     UDR message body
             * @param p_udrBody     UDR message body
             */
            template (value) UDR_MSG md_uDR(
                                            in template (value) Session_Id_AVP  p_sessionId,
                                            in template (value) UDR_Body_AVP    p_acrBody
                                            in template (value) UDR_Body_AVP    p_udrBody
            ) modifies m_UDR_dummy := {
                header := m_diameterHeaderReq_dummy(UDR_E, c_applIdSh),
                session_Id  := p_sessionId,
                uDR_Body    := p_acrBody
                uDR_Body    := p_udrBody
            } // End of template md_uDR
            
            /**
             * @desc Send template for UDR
             * @param p_sessionId   Session identifier
             * @param p_udrBody     UDR message body
             */
            template (value) UDR_MSG md_uDR_TflagSet(
                                                     in template (value) Session_Id_AVP  p_sessionId,
                                                     in template (value) UDR_Body_AVP    p_udrBody
            ) modifies m_UDR_dummy := {
                header := m_diameterHeaderReqDuplicated_dummy(UDR_E, c_applIdRf),
                session_Id  := p_sessionId,
                uDR_Body    := p_udrBody
            } // End of template md_uDR
             
            /**
             * @desc Send template for UDR message body
             */
            template (value) UDR_Body_AVP md_udrBodyAvps(
                                                         template (value) Origin_Host_AVP p_origin_Host,
                                                         template (value) Origin_Realm_AVP p_origin_Realm,
                                                         template (value) Destination_Realm_AVP p_destination_Realm,
                                                         template (value) User_Identity_AVP p_user_Identity := m_user_Identity_dummy,
                                                         template (value) Data_Reference_AVP p_data_Reference := m_data_Reference_dummy
            ) modifies m_UDR_Body_dummy := {
                vendor_Specific_Application_Id  := m_vendor_Specific_Appl_Id_Sh,
                origin_Host                     := p_origin_Host,
                origin_Realm                    := p_origin_Realm,
                destination_Realm               := p_destination_Realm,
                user_Identity                   := p_user_Identity,
                data_Reference                  := {p_data_Reference}
            } // End of template md_udrBodyAvps
            
        } // End of group Sh_request_message_templates_send 
        
        group Sh_request_message_templates_receive {
            
            group UDR_MSG_{
                    
            /**
                * @desc Main receive message for CDF_Sh port
                * @param p_uDR_MSG AC-Request message
             * @desc Main receive message for HSS_Sh port
             * @param p_uDR_MSG UD-Request message
             */
            template (present) UDR_MSG mdw_uDR(
                                                   in template (present) Session_Id_AVP  p_sessionId,
                                                   in template (present) UDR_Body_AVP    p_acrBody
                                               template (present) Session_Id_AVP  p_sessionId,
                                               template (present) UDR_Body_AVP    p_udrBody
            ) modifies mw_UDR_dummy := {
                header      := mw_diameterHeaderReq_dummy(UDR_E, c_applIdSh),
                session_Id  := p_sessionId,
                    uDR_Body    := p_acrBody
                uDR_Body    := p_udrBody
            } // End of template mdw_uDR
            
            }
            /**
             * @desc Main receive message for HSS_Sh port
             * @param p_uDR_MSG UD-Request message
             */
            template (present) UDR_MSG mdw_uDR_Header_UDRBody(
                                                              template (present) DiameterHeader p_header,
                                                              template (present) Session_Id_AVP  p_sessionId,
                                                              template (present) UDR_Body_AVP    p_udrBody
            ) modifies mw_UDR_dummy := {
                header := p_header,
                session_Id  := p_sessionId,
                uDR_Body    := p_udrBody
            } // End of template mdw_uDR_Header_UDRBody
            
        }
            /**
             * @desc Receive template for UDR message body
             * @param p_resultCode                  Indicates whether a particular request was completed successfully or an error occurred
             * @param p_originHost                  Identifies the endpoint that originated the Diameter message
             * @param p_originRealm                 Realm of the originator
             * @param p_destinationRealm            Destination realm
             */
            template UDR_Body_AVP mdw_udrBodyAvps(
                                                  template (present) Origin_Host_AVP              p_originHost := ?,
                                                  template (present) Origin_Realm_AVP             p_originRealm := ?,
                                                  template (present) Destination_Realm_AVP        p_destinationRealm := ?
            ) modifies mw_UDR_Body_dummy := {
                    origin_Host                 := p_originHost,
                    origin_Realm                := p_originRealm,
                    destination_Realm           := p_destinationRealm
            } // End of template mdw_udrBodyAvps
            
        } // End of group Sh_request_message_templates_receive
        
        group Sh_answer_message_templates_send {
            
            /**
             * @desc Send template for UDA
             * @param p_sessionId   Session identifier
             * @param p_udaBody     UDA message body
             */
            template (value) UDA_MSG md_uDA(
                                            in template (value) Session_Id_AVP  p_sessionId,
                                            in template (value) UDA_Body_AVP    p_udaBody
            ) modifies m_UDA_dummy := {
                header      := m_diameterHeaderAns_dummy(UDA_E, c_applIdRf),
                session_Id  := p_sessionId,
                uDA_Body    := p_udaBody
            } // End of template md_uDA
            
            template (omit) UDA_Body_AVP md_udaBodyAvps(
                                                        in template (value) Result_Code_AVP              p_resultCode,
                                                        in template (value) Origin_Host_AVP              p_originHost,
                                                        in template (value) Origin_Realm_AVP             p_originRealm
            ) modifies m_UDA_Body_dummy := {
                result_Code                 := p_resultCode,
                origin_Host                 := p_originHost,
                origin_Realm                := p_originRealm
            } // End of template md_udaBodyAvps 
            
        } // End of group Sh_answer_message_templates_send
        
        group Sh_answer_message_templates_receive {
            
            template UDA_Body_AVP mw_UDA_ResulFaile(
                                                    template Result_Code_AVP p_resultCode, 
                                                    template (present) Origin_Host_AVP p_originHost,
                                                    template (present) Origin_Realm_AVP p_originRealm,
                                                    template UDA_Body_AVP.failed p_failed
            ) modifies mdw_udaBodyAvps := {
                result_Code := p_resultCode,                     // optional  in TS 129 229
                failed := p_failed                               // optional  in TS 129 229
            } // End of template mw_UDA_ResulFaile
            
            /**
             * @desc Send template for UDA
             * @param p_sessionId   Session identifier
             * @param p_udaBody     UDA message body
             */
            template (present) UDA_MSG mdw_uDA(
                                               template (present) Session_Id_AVP  p_sessionId,
                                               template (present) UDA_Body_AVP    p_udaBody
            ) modifies mw_UDA_dummy := {
                header      := mw_diameterHeaderAns_dummy(UDA_E, c_applIdRf),
                session_Id  := p_sessionId,
                uDA_Body    := p_udaBody
            } // End of template md_uDA
            
            template (present) UDA_Body_AVP mdw_udaBodyAvps(
                                                            template (present) Result_Code_AVP              p_resultCode,
                                                            template (present) Origin_Host_AVP              p_originHost,
                                                            template (present) Origin_Realm_AVP             p_originRealm
            ) modifies mw_UDA_Body_dummy := {
                result_Code                 := p_resultCode,
                origin_Host                 := p_originHost,
                origin_Realm                := p_originRealm
            } // End of template mdw_udaBodyAvps
            
        } // End of group Sh_answer_message_templates_receive 
        
    } // End of group Sh_modified_message_templates 
    
Loading