S1AP_TCFunctions.ttcn 268 KB
Newer Older
                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                }
                
                // Postamble
                f_rABSetupRelease();
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_eNB_HAS_03
            
            /**
             * @desc Testcase function for TC_S1AP_eNB_HAS_04
             */
            function f_TC_S1AP_eNB_HAS_04() runs on S1APComponent { 
                // Local variables
                const E_RAB_ID c_E_RAB_ID_A := 0;
                const NAS_PDU c_nAS_PDU := '0000'O;
                
                // Preamble
                f_S1AP_enb_init();
                // Preamble action: E-RAB Setup is exchanged.
                f_rABSetupRequest();
                
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                // 1. to indicate a Handover to be forwarded
                if (fx_eNB_Handover_preparation_procedure() == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a HANDOVER_REQUIRED
                    f_recv_HandoverRequired(
                        mw_HandoverRequiredIEs(
                            vc_MME_UE_ID,
                            vc_eNB_UE_ID,
                            intralte,//handover_Type
                            -,//Cause
                            -,//TargetId
                            -//SourceToTargetTransparentContainer
                    ));
                    
                    f_send_E_RABModifiedRequest(m_E_RABModifiedReqIEs(
                        vc_MME_UE_ID,
                        vc_eNB_UE_ID,
                        {m_E_RABToBeModifiedItemBearerSUReq(
                            c_E_RAB_ID_A,
                            m_e_RABlevelQoSParameters(5),
                            c_nAS_PDU
                        )}
                    ));
                    
                    
                    
                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                }
                
                // Postamble
                f_rABSetupRelease();
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_eNB_HAS_04
            /**
             * @desc Testcase function for TC_S1AP_eNB_HAS_05
             */
            function f_TC_S1AP_eNB_HAS_05() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                // Preamble action: E-RAB Setup is exchanged.
                f_rABSetupRequest();
                
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                // 1. to indicate a Handover to be forwarded
                if (fx_eNB_Handover_preparation_procedure() == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a HANDOVER_REQUIRED
                    f_recv_HandoverRequired(
                        mw_HandoverRequiredIEs(
                            vc_MME_UE_ID,
                            vc_eNB_UE_ID,
                            intralte,//handover_Type
                            -,//Cause
                            -,//TargetId
                            -//SourceToTargetTransparentContainer
                    ));
                    
                    log("No response is send to IUT before timer TS1RELOCprep expires.");
                    
                    //wait for timer TS1RELOCprep
                    f_sleepIgnoreDef(1.0);
                        mw_HandoverCancelIEs(
                            vc_MME_UE_ID,
                            vc_eNB_UE_ID,
                            -//Cause
                    ));
                    f_send_HandoverCancelAcknowledge(
                        m_HandoverCancelAckIEs(
                            vc_MME_UE_ID,
                            vc_eNB_UE_ID
                    ));
                    
                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                }
                
                // Postamble
                f_rABSetupRelease();
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_eNB_HAS_05
2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533
                    
            /**
             * @desc Testcase function for TC_S1AP_eNB_HAS_06
             */
            function f_TC_S1AP_eNB_HAS_06() runs on S1APComponent { 
                // Local variables
                const Source_ToTarget_TransparentContainer c_source_ToTarget_TransparentContainer := '12121212'O;
                
                // Preamble
                f_S1AP_enb_init();
                // Preamble action: E-RAB Setup is exchanged.
                f_rABSetupRequest();
                
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                f_send_HandoverRequest(m_HandoverReqIEs(
                                   vc_MME_UE_ID,
                                   intralte,//Handover Type
                                   m_cause_ran(successful_handover),//Cause
                                   m_UEAggregateMaximumBitrate(1,1),//UE Aggregate_Max_Bit_Rate
                                   {m_E_RABToBeSetupItemHOReq (
                                       -,
                                       -,
                                       -,
                                       m_e_RABlevelQoSParameters
                                       (5)
                                   )},//E_RabsToBeSetupList
                                   c_source_ToTarget_TransparentContainer,//SourceToTargetTransparentContainer
                                   m_UESecurityCapabilities('0101010101010101'B,'0101010101010101'B),//UeSecurityCapabilities
                                   m_securityContext//SecurityContext
                               ));

                f_recv_HandoverRequestAck(mw_HandoverRequestAckIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    -,//ERabsAdmittedList
                    -//TargetToSourceTransparentContainer
                ));
               
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                // Postamble
                f_rABSetupRelease();
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_eNB_HAS_06
                    
            /**
             * @desc Testcase function for TC_S1AP_eNB_HAS_07
             */
            function f_TC_S1AP_eNB_HAS_07() runs on S1APComponent { 
                // Local variables
                const Source_ToTarget_TransparentContainer c_source_ToTarget_TransparentContainer := '12121212'O;
                const NASSecurityParameterstoE_UTRAN c_nASSecurityParameterstoE_UTRAN := '000000000000'O;
                
                // Preamble
                f_S1AP_enb_init();
                // Preamble action: E-RAB Setup is exchanged.
                f_rABSetupRequest();
                
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                f_send_HandoverRequest(m_HandoverReqIEs_nASSecParToEUTRAN(
                                   vc_MME_UE_ID,
                                   utrantolte,//Handover Type
                                   m_cause_ran(successful_handover),//Cause
                                   m_UEAggregateMaximumBitrate(1,1),//UE Aggregate_Max_Bit_Rate
                                   {m_E_RABToBeSetupItemHOReq (
                                       -,
                                       -,
                                       -,
                                       m_e_RABlevelQoSParameters
                                       (5)
                                   )},//E_RabsToBeSetupList
                                   c_source_ToTarget_TransparentContainer,//SourceToTargetTransparentContainer
                                   m_UESecurityCapabilities('0101010101010101'B,'0101010101010101'B),//UeSecurityCapabilities
                                   m_securityContext,//SecurityContext
                                   c_nASSecurityParameterstoE_UTRAN//NASSecurityParameterstoE_UTRAN//for coding see TS 124 301 clause 9.9.2.7
                               ));

                f_recv_HandoverRequestAck(mw_HandoverRequestAckIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    -,//ERabsAdmittedList
                    -//TargetToSourceTransparentContainer
                ));
               
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                // Postamble
                f_rABSetupRelease();
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_eNB_HAS_07
                    
            /**
             * @desc Testcase function for TC_S1AP_eNB_HAS_08
             */
            function f_TC_S1AP_eNB_HAS_08() runs on S1APComponent { 
                // Local variables
                const Source_ToTarget_TransparentContainer c_source_ToTarget_TransparentContainer := '12121212'O;
                const NASSecurityParameterstoE_UTRAN c_nASSecurityParameterstoE_UTRAN := '000000000000'O;
                // Preamble
                f_S1AP_enb_init();
                // Preamble action: E-RAB Setup is exchanged.
                f_rABSetupRequest();
                
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                f_send_HandoverRequest(m_HandoverReqIEs_nASSecParToEUTRAN(
                                   vc_MME_UE_ID,
                                   gerantolte,//Handover Type
                                   m_cause_ran(successful_handover),//Cause
                                   m_UEAggregateMaximumBitrate(1,1),//UE Aggregate_Max_Bit_Rate
                                   {m_E_RABToBeSetupItemHOReq (
                                       -,
                                       -,
                                       -,
                                       m_e_RABlevelQoSParameters
                                       (5)
                                   )},//E_RabsToBeSetupList
                                   c_source_ToTarget_TransparentContainer,//SourceToTargetTransparentContainer
                                   m_UESecurityCapabilities('0101010101010101'B,'0101010101010101'B),//UeSecurityCapabilities
                                   m_securityContext,//SecurityContext
                                   c_nASSecurityParameterstoE_UTRAN//NASSecurityParameterstoE_UTRAN//for coding see TS 124 301 clause 9.9.2.7
                               ));

                f_recv_HandoverRequestAck(mw_HandoverRequestAckIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    -,//ERabsAdmittedList
                    -//TargetToSourceTransparentContainer
                ));
               
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                // Postamble
                f_rABSetupRelease();
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_eNB_HAS_08
                    
            /**
             * @desc Testcase function for TC_S1AP_eNB_HAS_09
             */
            function f_TC_S1AP_eNB_HAS_09() runs on S1APComponent { 
                // Local variables
                const Source_ToTarget_TransparentContainer c_source_ToTarget_TransparentContainer := '12121212'O;
                
                // Preamble
                f_S1AP_enb_init();
                // Preamble action: E-RAB Setup is exchanged.
                f_rABSetupRequest();
                
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                f_send_HandoverRequest(m_HandoverReqIEs_cSGMembershipStatus(
                                   vc_MME_UE_ID,
                                   gerantolte,//Handover Type
                                   m_cause_ran(successful_handover),//Cause
                                   m_UEAggregateMaximumBitrate(1,1),//UE Aggregate_Max_Bit_Rate
                                   {m_E_RABToBeSetupItemHOReq (
                                       -,
                                       -,
                                       -,
                                       m_e_RABlevelQoSParameters
                                       (5)
                                   )},//E_RabsToBeSetupList
                                   c_source_ToTarget_TransparentContainer,//SourceToTargetTransparentContainer
                                   m_UESecurityCapabilities('0101010101010101'B,'0101010101010101'B),//UeSecurityCapabilities
                                   m_securityContext,//SecurityContext
                                   member//CSG_MembershipStatus
                               ));

                f_recv_HandoverFailure(mw_HandoverFailureIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    mw_cause_ran(?)
                ));
               
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                // Postamble
                f_rABSetupRelease();
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_eNB_HAS_09
                    
            /**
             * @desc Testcase function for TC_S1AP_eNB_HAS_10
             */
            function f_TC_S1AP_eNB_HAS_10() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                // Preamble action: E-RAB Setup is exchanged.
                f_rABSetupRequest();
                // And UE is not exchanged
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                // 1. to indicate handover notification procedureE
                if (fx_eNB_Handover_notification_procedure() == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a HANDOVER NOTIFY
                    f_recv_HandoverNotify(
                        mw_HandoverNotifyIEs(
                            vc_MME_UE_ID,
                            vc_eNB_UE_ID,
                            -,//E-UTRAN_CGI
                            -//TAI
                    ));

                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                }
                
                // Postamble
                f_rABSetupRelease();
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_eNB_HAS_10
                    
            /**
             * @desc Testcase function for TC_S1AP_eNB_HAS_11
             */
            function f_TC_S1AP_eNB_HAS_11() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                // Preamble action: E-RAB Setup is exchanged.
                f_rABSetupRequest();
                // And UE is not exchanged
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                // 1. to indicate path switch request procedureE
                if (fx_eNB_Path_switch_request_procedure() == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a PATH SWITCH REQUEST
                    f_recv_PathSwitchRequest(
                        mw_PathSwitchRequestIEs(
                            vc_eNB_UE_ID,
                            -,//E-RAB to be Switched
                            vc_MME_UE_ID,//Source MME_UE_S1AP_ID
                            -,//E-UTRAN_CGI
                            -,//TAI
                            -//UE Security capabilities
                    ));
                    
                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                    

                    f_send_PathSwitchRequestAcknowledge(m_PathSwitchRequestAckIEs(
                        vc_MME_UE_ID,
                        vc_eNB_UE_ID,
                        m_securityContext//Security Context
                    ));
                
                }
                // Postamble
                f_rABSetupRelease();
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_eNB_HAS_11
                    
            /**
             * @desc Testcase function for TC_S1AP_eNB_HAS_12
             */
            function f_TC_S1AP_eNB_HAS_12() runs on S1APComponent {
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                // Preamble action: E-RAB Setup is exchanged.
                f_rABSetupRequest();
                
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                // 1. to indicate a Handover to be forwarded
                if (fx_eNB_Handover_preparation_procedure() == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a HANDOVER_REQUIRED
                    f_recv_HandoverRequired(
                        mw_HandoverRequiredIEs(
                            vc_MME_UE_ID,
                            vc_eNB_UE_ID,
                            intralte,//handover_Type
                            -,//Cause
                            -,//TargetId
                            -//SourceToTargetTransparentContainer
                    ));
                    
                    log("No response is send to IUT before timer TS1RELOCprep expires.");
                    
                    //wait for timer TS1RELOCprep
                    f_sleepIgnoreDef(1.0);
                    
                    f_recv_HandoverCancel(
                        mw_HandoverCancelIEs(
                            vc_MME_UE_ID,
                            vc_eNB_UE_ID,
                            -//Cause
                    ));
                    
                    f_send_HandoverCancelAcknowledge(
                        m_HandoverCancelAckIEs(
                            vc_MME_UE_ID,
                            vc_eNB_UE_ID
                    ));
                    
                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                }
                
                // Postamble
                f_rABSetupRelease();
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_eNB_HAS_12
            
            /**
             * @desc Testcase function for TC_S1AP_eNB_HAS_13
             */
            function f_TC_S1AP_eNB_HAS_13() runs on S1APComponent { 
                // Local variables
                const Target_ToSource_TransparentContainer c_target_ToSource_TransparentContainer := '12121212'O;
                
                // Preamble
                f_S1AP_enb_init();
                // Preamble action: E-RAB Setup is exchanged.
                f_rABSetupRequest();
                
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                // 1. to indicate a Handover to be forwarded
                if (fx_eNB_Handover_preparation_procedure() == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a HANDOVER_REQUIRED
                    f_recv_HandoverRequired(
                        mw_HandoverRequiredIEs(
                            vc_MME_UE_ID,
                            vc_eNB_UE_ID,
                            intralte,//handover_Type
                            -,//Cause
                            -,//TargetId
                            -//SourceToTargetTransparentContainer
                    ));
                     
                    f_send_HandoverCommand(
                        m_HandoverCommandIEs(
                            vc_MME_UE_ID,
                            vc_eNB_UE_ID,
                            intralte,//handover_Type
                            c_target_ToSource_TransparentContainer//TargetToSourceTransparentContainer
                    ));

                    action("Await eNB_STATUS_TRANSFER MESSAGE.");
                    
                    f_recv_EnbStatusTransfer(
                        mw_EnbStatusTransferIEs(
                            vc_MME_UE_ID,
                            vc_eNB_UE_ID,
                            mw_eNBStatusTransferTransparentContainer//eNB Status Transfer Transparent Container
                    ));
                    
                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                }
                
                // Postamble
                f_rABSetupRelease();
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_eNB_HAS_13
        } // End of group Handover_signalling_group
        
        /**
         * @desc Paging group
         * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.5  Paging group
         */
        group Paging_group {
        } // End of group Paging_group
        
        /**
         * @desc NAS transport group
         * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.6   NAS transport group
         */
        group NAS_transport_group {
            
            /**
             * @desc Testcase function for TC_S1AP_eNB_NAS_01
             */
            function f_TC_S1AP_eNB_NAS_01() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                // Preamble action: E-RAB Setup is exchanged.
                f_rABSetupRequest();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                // 1. to indicate the initiation of a NAS Transport procedure
                if (fx_eNB_Initiate_NAS_transport_procedure() == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends an INITIAL UE MESSAGE
                    f_recv_Initial_UE_Message(
                        mw_initial_uE_MessageIEs(
                            vc_eNB_UE_ID,
                            -,
                            mw_TAI(
                                PX_PLMN_IDENTITY, 
                                PX_TAC
                            ),
                            mw_eUTRAN_CGI(
                                PX_PLMN_IDENTITY, 
                                PX_CELL_ID
                            ),
garciay's avatar
garciay committed
                            mw_cause_ran
                    ));
                }
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                // Postamble
                f_rABSetupRelease();
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_eNB_NAS_01
            
            /**
             * @desc Testcase function for TC_S1AP_eNB_NAS_02
             */
            function f_TC_S1AP_eNB_NAS_02() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                // Preamble action: E-RAB Setup is exchanged.
                f_rABSetupRequest();
                // And a NAS procedure is initiated
                fx_eNB_Initiate_NAS_transport_procedure();
                f_recv_Initial_UE_Message(
                    mw_initial_uE_MessageIEs(
                        vc_eNB_UE_ID,
                        -,
                        mw_TAI(
                            PX_PLMN_IDENTITY, 
                            PX_TAC
                        ),
                        mw_eUTRAN_CGI(
                            PX_PLMN_IDENTITY, 
                            PX_CELL_ID
                        ),
garciay's avatar
garciay committed
                        mw_cause_ran
                ));
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                // 1. to indicate an ongoing NAS Transport procedure
                if (fx_eNB_NAS_transport_procedure() == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends an UPLINK_NAS_TRANSPORT
                    f_recv_Uplink_NAS_Transport(
                        mw_uplink_nAS_TransportIEs(
                            vc_MME_UE_ID,
                            vc_eNB_UE_ID,
                            -,
                            mw_eUTRAN_CGI(
                                PX_PLMN_IDENTITY, 
                                PX_CELL_ID
                            ),
                            mw_TAI(
                                PX_PLMN_IDENTITY, 
                                PX_TAC
                    )));
                }
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                // Postamble
                f_rABSetupRelease();
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_eNB_NAS_02
            
            /**
             * @desc Testcase function for TC_S1AP_eNB_NAS_03
             */
            function f_TC_S1AP_eNB_NAS_03() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                // Preamble action: E-RAB Setup is exchanged.
                f_rABSetupRequest();
                // And UE is not exchanged
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                // 1. to indicate a UE has not received a INITIAL_UE_MESSAGE
                if (fx_eNB_NAS_transport_procedure() == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a NAS_NON_DELIVERY_INDICATION
                    f_recv_NAS_Non_Delivery_Indication(
                        mw_nAS_Non_Delivery_IndicationIEs(
                            vc_MME_UE_ID,
                            vc_eNB_UE_ID,
                            -,
                            mw_cause_ran(
garciay's avatar
garciay committed
                                unspecified // Check the value to be used
                            )
                    ));
                }
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                // Postamble
                f_rABSetupRelease();
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_eNB_NAS_03
            
        } // End of group NAS_transport_group
        
        /**
         * @desc Management group
         * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.7 Management group
         */
        group Management_group {
            
            /**
garciay's avatar
garciay committed
             * @desc Testcase function for TC_S1AP_eNB_TRP_01
garciay's avatar
garciay committed
            function f_TC_S1AP_eNB_MNP_01() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                f_send_Reset(
                    m_resetIEs(
                        m_cause_nas(
garciay's avatar
garciay committed
                            unspecified // Check the value to be used
                        ),
                        m_resetType_all
                ));
                
                f_recv_Reset_Acknowledge(
                    mw_reset_AcknowledgeIEs(
                        {
                            ?/*mw_uE_associatedLogicalS1_ConnectionItemResAck_IE(
                                mw_uE_associatedLogicalS1_ConnectionItem(
                                    vc_MME_UE_ID,
garciay's avatar
garciay committed
                                    vc_eNB_UE_ID
                            ))*/
                        }
                ));
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                // Postamble
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
garciay's avatar
garciay committed
            } // End of function f_TC_S1AP_eNB_MNP_01
garciay's avatar
garciay committed
             * @desc Testcase function for TC_S1AP_eNB_TRP_02
garciay's avatar
garciay committed
            function f_TC_S1AP_eNB_MNP_02() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                // 1. to indicate a Reset procedure initiated from the E-UTRAN
garciay's avatar
garciay committed
                if (fx_eNB_Reset_procedure() == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a RESET
                    f_recv_Reset(
                        mw_resetIEs(
                            mw_cause_nas(
garciay's avatar
garciay committed
                                unspecified // Check the value to be used
                            ),
                            m_resetType_all
                    ));
                }
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                // Postamble
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
garciay's avatar
garciay committed
            } // End of function f_TC_S1AP_eNB_MNP_02
garciay's avatar
garciay committed
             * @desc Testcase function for TC_S1AP_eNB_TRP_03
garciay's avatar
garciay committed
            function f_TC_S1AP_eNB_MNP_03() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                f_send_Reset(
                    m_resetIEs(
                        m_cause_nas(
garciay's avatar
garciay committed
                            unspecified // Check the value to be used
                        ),
                        m_resetType_partOfS1_Interface(
                            {
                                m_uE_associatedLogicalS1_ConnectionItemResAck_IE(
                                    m_uE_associatedLogicalS1_ConnectionItem(
                                        0,
                                        0
                                ))
                            }
                        )
                ));
                
                f_recv_Reset_Acknowledge(
                    mw_reset_AcknowledgeIEs(
                        {
                            ?/*mw_uE_associatedLogicalS1_ConnectionItemResAck_IE(
                                mw_uE_associatedLogicalS1_ConnectionItem(
                                    vc_MME_UE_ID,
garciay's avatar
garciay committed
                                    vc_eNB_UE_ID
                            ))*/
                        }
                ));
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                // Postamble
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
garciay's avatar
garciay committed
            } // End of function f_TC_S1AP_eNB_MNP_03
            
            /**
             * @desc Testcase function for TC_S1AP_eNB_TRP_04
             */
            function f_TC_S1AP_eNB_MNP_04() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                // 1. to indicate an Error Indication procedure
                if (fx_eNB_Error_Indication_procedure() == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a ERROR_INDICATION
                    f_recv_Error_Indication(
                        superset (
                            all from 
                                mw_error_IndicationIEs(
                                    vc_MME_UE_ID,
                                    vc_eNB_UE_ID, 
                                    mw_cause_IE(
                                        -
                                    )
                                ),
                                mw_error_IndicationIEs(
                                    vc_MME_UE_ID,
                                    vc_eNB_UE_ID, 
                                    mw_criticalityDiagnostics_IE(
                                        -
                                    )
                                )
                        )
                    );
garciay's avatar
garciay committed
                }
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                // Postamble
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_eNB_MNP_04
            
            /**
             * @desc Testcase function for TC_S1AP_eNB_TRP_05
             */
            function f_TC_S1AP_eNB_MNP_05() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                // 1. to indicate a S1 Setup procedure
                if (fx_eNB_S1_Setup_Request_procedure() == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a S1 SETUP REQUEST
                    f_recv_S1_Setup_Request(
                        mw_s1_Setup_RequestIEs(
                            mw_Global_eNB_ID(
                                PX_PLMN_IDENTITY, 
                                PX_eNB_ID
                            ),
                            {
                                mw_supportedTAs_Item(
                                    PX_TAC,
                                    {
                                        PX_PLMN_IDENTITY
                                    } 
                                )
                            },
                            PX_PAGING_DRX
                    ));
                    // Send the response to finalyse the procedure
                    f_send_S1_Setup_Response(
                        m_s1_Setup_ResponseIEs(
                            {
                                m_servedGUMMEIsItem(
                                    { PX_PLMN_IDENTITY },
                                    { PX_MME_GROUP_ID },
                                    { PX_MME_CODE }
                                )
                            }, 
                            PX_RELATIVE_MME_CAPAVCITY
                    ));
                }
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                // Postamble
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_eNB_MNP_05
            /**
             * @desc Testcase function for TC_S1AP_eNB_TRP_06
             */
            function f_TC_S1AP_eNB_MNP_06() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                // 1. to indicate an eNB Configuration Update procedure
                if (fx_eNB_Configuration_Update_procedure() == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends an ENB_CONFIGURATION_UPDATE
                    f_recv_eNB_Configuration_Update(
                        mw_eNB_Configuration_UpdateIEs(
                            mw_Global_eNB_ID(
                                PX_PLMN_IDENTITY, 
                                PX_eNB_ID
                            ),
                            {
                                mw_supportedTAs_Item(
                                    PX_TAC,
                                    {
                                        PX_PLMN_IDENTITY
                                    } 
                                )
                            }
                    ));
                    // Send the acknowledge to finalyse the procedure
                    f_send_eNB_Configuration_Update_Acknowledge(
                        m_eNB_Configuration_Update_AcknowledgeIEs
                    );
                }
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                // Postamble
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_eNB_MNP_06
            
            /**
             * @desc Testcase function for TC_S1AP_eNB_TRP_07
             */
            function f_TC_S1AP_eNB_MNP_07() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                f_send_MME_Configuration_Update(
                    m_mME_Configuration_UpdateIEs(
                        {
                            m_servedGUMMEIsItem(
                                { PX_PLMN_IDENTITY },
                                { PX_MME_GROUP_ID },
                                { PX_MME_CODE }
                            )
                        } 
                ));
                
                f_recv_MME_Configuration_Update_Acknowledge(
                    mw_mME_Configuration_Update_AcknowledgeIEs
                );
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                // Postamble
                f_postamble_S1AP_eNB();