Rev

Rev 2230 | Details | Compare with Previous | Last modification | View Log | SVN | Bug Tracker

Rev Author Line No. Line
169 berge 1
/**
2
 *  @author   ETSI / STF405
3
 *  @version  $URL: file:///D:/RepositoriesNew/ITS/trunk/ttcn/AtsBTP/ItsBtp_TestCases.ttcn $
4
 *            $Id: ItsBtp_TestCases.ttcn 2655 2017-01-26 10:46:08Z filatov $
266 berge 5
 *  @desc     Testcases for Basic Transport Protocol (TP version: 0.0.3)
2655 filatov 6
 *  @copyright   ETSI Copyright Notification
7
 *               No part may be reproduced except as authorized by written permission.
8
 *               The copyright and the foregoing restriction extend to reproduction in all media.
9
 *               All rights reserved.
169 berge 10
 *
11
 */
12
module ItsBtp_TestCases {
13
 
230 berge 14
    // LibCommon
15
    import from LibCommon_Sync all;
2230 mullers 16
    import from LibCommon_Time all;
250 tepelmann 17
    import from LibCommon_VerdictControl all;
230 berge 18
 
170 berge 19
    // LibIts
813 reinaorteg 20
    import from LibItsBtp_TestSystem all;
171 fischer 21
    import from LibItsBtp_Functions all;
22
    import from LibItsBtp_Templates all;
23
    import from LibItsBtp_Pixits all;
170 berge 24
    import from LibItsBtp_TypesAndValues all;
250 tepelmann 25
    import from LibItsCommon_Functions all;
170 berge 26
 
174 fischer 27
    group btpPacketGeneration {
169 berge 28
 
29
        group btpBtpA {
170 berge 30
 
31
        /**
174 fischer 32
         * @desc    Checks that BTP-A packets is well-formatted
170 berge 33
         * <pre>        
34
         * PICS Selection: none
35
         * Initial conditions:
36
         *  with {
223 berge 37
         *      the IUT being in the "initial state"
170 berge 38
         *  }
39
         * Expected behaviour:
40
         *  ensure that {
2230 mullers 41
         *      when {
42
         *          the IUT is requested to send a BTP packet via a BTP-data request
43
         *              containing BTP Type
44
         *                  indicationg value 'BTP-A'
45
         *              containing Source PorT
46
         *                  indicating value 'SOURCE_PORT'
47
         *              containing Destination Port
48
         *                  indicating value 'DESTINATION_PORT'
49
         *      }
50
         *      then {
51
         *          the IUT sends a valid BTP-A packet
52
         *              containing source port
53
         *                  indicating 'SOURCE_PORT',
54
         *              containing destination port
55
         *                  indicating 'DESTINATION_PORT',
56
         *              containing the Upper Layer payload
57
         *      }
170 berge 58
         *  }
59
         * </pre>
60
         *
234 fischer 61
         * @version 0.0.3
274 berge 62
         * @see     ETSI TS 102 870-2 v1.1.1 TP/BTP/PGA/BV/01
170 berge 63
         */
813 reinaorteg 64
        testcase TC_BTP_PGA_BV_01() runs on ItsBtp system ItsBtpSystem {
170 berge 65
 
66
            // Local variables
67
 
68
            // Test control
69
 
70
            // Test component configuration
230 berge 71
            f_cfUp();
170 berge 72
 
73
            // Test adapter configuration
74
 
75
            // Preamble
230 berge 76
            f_prInitialState();
77
            f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
171 fischer 78
 
79
            // Test Body
267 berge 80
            f_utTriggerEvent(m_generateBtpA(f_getBtpDstPort(), f_getBtpSrcPort()));
171 fischer 81
            tc_ac.start;
82
            alt {
2230 mullers 83
                [] btpPort.receive( mw_btpInd( mw_btpA (f_getBtpDstPort(), f_getBtpSrcPort(), *)))  {
230 berge 84
                    tc_ac.stop;
265 berge 85
                    log("*** TC_BTP_PGA_BV_01: PASS: BTP-A packet correclty received ***");
86
                    f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
171 fischer 87
                }
2230 mullers 88
 
171 fischer 89
                [] tc_ac.timeout {
265 berge 90
                    log("*** TC_BTP_PGA_BV_01: INCONC: Expected BTP packet not received ***");
91
                    f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
171 fischer 92
                }  
93
             }
230 berge 94
 
170 berge 95
            // Postamble
247 tepelmann 96
            f_poDefault();
230 berge 97
            f_cfDown();
170 berge 98
 
174 fischer 99
        }// end TC_BTP_PGA_BV_0
169 berge 100
 
101
        } // end btpBtpA
102
 
103
        group btpBtpB {
104
 
171 fischer 105
        /**
174 fischer 106
         * @desc    Checks that BTP-B packets is well-formatted if Destination Port info is provided
171 fischer 107
         * <pre>        
108
         * PICS Selection: none
109
         * Initial conditions:
110
         *  with {
223 berge 111
         *      the IUT being in the "initial state"
171 fischer 112
         *  }
113
         * Expected behaviour:
114
         *  ensure that {
2230 mullers 115
         *      when {
116
         *          the IUT is requested to send a BTP packet via a BTP-data request
117
         *              containing BTP Type
118
         *                  indicationg value 'BTP-B'
119
         *              containing Destination Port
120
         *                  indicating value 'DESTINATION_PORT'
121
         *              containing Destination Port Info
122
         *                  indicating value 'DESTINATION_PORT_INFO'
123
         *      }
124
         *      then {
125
         *          the IUT sends a valid BTP-B packet
126
         *              containing Destination Port
127
         *                  indicating value 'DESTINATION_PORT'
128
         *              containing Destination Port Info
129
         *                  indicating value 'DESTINATION_PORT_INFO'
130
         *              containing the Upper Layer payload
131
         *      }
171 fischer 132
         *  }
133
         * </pre>
134
         *
234 fischer 135
         * @version 0.0.3
274 berge 136
         * @see     ETSI TS 102 870-2 v1.1.1 TP/BTP/PGB/BV/01
171 fischer 137
         */
813 reinaorteg 138
        testcase TC_BTP_PGB_BV_01() runs on ItsBtp system ItsBtpSystem {
171 fischer 139
 
140
            // Local variables
141
 
142
            // Test control
143
 
144
            // Test component configuration
230 berge 145
            f_cfUp();
171 fischer 146
 
147
            // Test adapter configuration
148
 
149
            // Preamble
230 berge 150
            f_prInitialState();
151
            f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
171 fischer 152
 
153
            // Test Body
267 berge 154
            f_utTriggerEvent(m_generateBtpB(f_getBtpDstPort(), f_getBtpDstPortInfo()));
171 fischer 155
            tc_ac.start;
156
            alt {
2230 mullers 157
                [] btpPort.receive( mw_btpInd( mw_btpB (f_getBtpDstPort(), f_getBtpDstPortInfo(), *))) {
158
                    tc_ac.stop;
159
                    log("*** TC_BTP_PGB_BV_01: PASS: BTP-B packet correclty received ***");
160
                    f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
171 fischer 161
                }
2230 mullers 162
 
171 fischer 163
                [] tc_ac.timeout {
265 berge 164
                    log("*** TC_BTP_PGB_BV_01: INCONC: Expected BTP packet not received ***");
165
                    f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
171 fischer 166
                }  
167
             }
168
 
169
            // Postamble
247 tepelmann 170
            f_poDefault();
230 berge 171
            f_cfDown();
171 fischer 172
 
174 fischer 173
        }// end TC_BTP_PGB_BV_01
171 fischer 174
 
175
        /**
174 fischer 176
         * @desc    Checks that BTP-B packets are well-formatted if no Destination Port Info is provided
171 fischer 177
         * <pre>        
178
         * PICS Selection: none
179
         * Initial conditions:
180
         *  with {
223 berge 181
         *      the IUT being in the "initial state"
171 fischer 182
         *  }
183
         * Expected behaviour:
184
         *  ensure that {
2230 mullers 185
         *      when {
186
         *          the IUT is requested to send a BTP packet via a BTP-data request
187
         *              containing BTP Type
188
         *                  indicationg value 'BTP-B'
189
         *              containing Destination Port
190
         *                  indicating value 'DESTINATION_PORT'
191
         *              not containing Destination Port Info parameter
192
         *      }
193
         *      then {
194
         *          the IUT sends a valid BTP-B packet
195
         *              containing Destination Port
196
         *                  indicating value 'DESTINATION_PORT'
197
         *              containing Destination Port Info
198
         *                  indicating '0'
199
         *              containing the Upper Layer payload
200
         *      }
171 fischer 201
         *  }
202
         * </pre>
203
         *
234 fischer 204
         * @version 0.0.3
274 berge 205
         * @see     ETSI TS 102 870-2 v1.1.1 TP/BTP/PGB/BV/02
171 fischer 206
         */
813 reinaorteg 207
        testcase TC_BTP_PGB_BV_02() runs on ItsBtp system ItsBtpSystem {
171 fischer 208
 
209
            // Local variables
210
 
211
            // Test control
212
 
213
            // Test component configuration
230 berge 214
            f_cfUp();
171 fischer 215
 
216
            // Test adapter configuration
217
 
218
            // Preamble
230 berge 219
            f_prInitialState();
220
            f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
171 fischer 221
 
222
            // Test Body
267 berge 223
            f_utTriggerEvent(m_generateBtpB(f_getBtpDstPort(), 0));
171 fischer 224
            tc_ac.start;
225
            alt {
2230 mullers 226
                [] btpPort.receive( mw_btpInd( mw_btpB (f_getBtpDstPort(), 0, *))) {
227
                    tc_ac.stop;
228
                    log("*** TC_BTP_PGB_BV_02: PASS: BTP-B packet correclty received ***");
229
                    f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
171 fischer 230
                }
2230 mullers 231
 
171 fischer 232
                [] tc_ac.timeout {
265 berge 233
                    log("*** TC_BTP_PGB_BV_02: INCONC: Expected BTP packet not received ***");
234
                    f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
2230 mullers 235
                }
171 fischer 236
             }
237
 
238
            // Postamble
247 tepelmann 239
            f_poDefault();
230 berge 240
            f_cfDown();
171 fischer 241
 
174 fischer 242
        }// end TC_BTP_PGB_BV_02
171 fischer 243
 
169 berge 244
        } // end btpBtpB
245
 
174 fischer 246
    } // end btpPacketGeneration
169 berge 247
 
174 fischer 248
    group btpPacketProcessing {
169 berge 249
 
250
        group btpValid {
251
 
171 fischer 252
        /**
174 fischer 253
         * @desc    Checks that BTP passes a valid BTP-A packets to the upper protocol entity
171 fischer 254
         * <pre>        
255
         * PICS Selection: none
256
         * Initial conditions:
257
         *  with {
223 berge 258
         *      the IUT being in the "initial state"
171 fischer 259
         *  }
260
         * Expected behaviour:
261
         *  ensure that {
2230 mullers 262
         *      when {
263
         *          the IUT receives a valid BTP-A packet
264
         *              containing Source Port
265
         *                  indicating 'SOURCE_PORT'
266
         *              containing Destination Port
267
         *                  indicating'DESTINATION_PORT'
268
         *              containing the payload
269
         *      }
270
         *      then {
271
         *          the IUT passes the payload to the upper layer
272
         *      }
171 fischer 273
         *  }
274
         * </pre>
275
         *
234 fischer 276
         * @version 0.0.3
274 berge 277
         * @see     ETSI TS 102 870-2 v1.1.1 TP/BTP/PP/BV/01
171 fischer 278
         */
813 reinaorteg 279
        testcase TC_BTP_PP_BV_01() runs on ItsBtp system ItsBtpSystem {
171 fischer 280
 
281
            // Local variables
2230 mullers 282
            var BtpReq v_btpReq;
283
            var integer i;
284
 
171 fischer 285
            // Test control
286
 
287
            // Test component configuration
230 berge 288
            f_cfUp();
171 fischer 289
 
290
            // Test adapter configuration
291
 
292
            // Preamble
230 berge 293
            f_prInitialState();
294
            f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
2230 mullers 295
 
171 fischer 296
            // Test Body
2230 mullers 297
            v_btpReq := valueof(m_btpReq( m_btpAWithPorts (f_getBtpDstPort(), f_getBtpSrcPort(), f_getBtpPayload())));
298
            btpPort.send(v_btpReq);
171 fischer 299
 
2230 mullers 300
            f_sleep(PX_TNOAC);
301
            for(i:=0; i < lengthof(vc_utEvents) and not match(v_btpReq.msgOut.payload.rawPayload, vc_utEvents[i].rawPayload); i:=i+1) {
302
                // empty on purpose 
303
            }
304
            if(i < lengthof(vc_utEvents)) {
305
                log("*** " & testcasename() & ": PASS: BTP was transmitted to upper layer ***");
306
                f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
307
            }
308
            else {
309
                log("*** " & testcasename() & ": FAIL: BTP was not transmitted to upper layer ***");
310
                f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
311
            }
171 fischer 312
 
313
            // Postamble
247 tepelmann 314
            f_poDefault();
230 berge 315
            f_cfDown();
171 fischer 316
 
174 fischer 317
        }// end TC_BTP_PP_BV_01
171 fischer 318
 
319
        /**
174 fischer 320
         * @desc    Checks that BTP passes a valid BTP-B packets to the upper protocol entity
171 fischer 321
         * <pre>        
322
         * PICS Selection: none
323
         * Initial conditions:
324
         *  with {
223 berge 325
         *      the IUT being in the "initial state"
171 fischer 326
         *  }
327
         * Expected behaviour:
328
         *  ensure that {
2230 mullers 329
         *      when {
330
         *          the IUT receives a valid BTP-B packet
331
         *              containing Destination Port
332
         *                  indicating'DESTINATION_PORT'
333
         *              containing Destination Port Info
334
         *                  indicating'DESTINATION_PORT_INFO'
335
         *              containing the payload
336
         *      }
337
         *      then {
338
         *          the IUT passes the payload to the upper layer
339
         *      }
171 fischer 340
         *  }
341
         * </pre>
342
         *
234 fischer 343
         * @version 0.0.3
274 berge 344
         * @see     ETSI TS 102 870-2 v1.1.1 TP/BTP/PP/BV/02
171 fischer 345
         */
813 reinaorteg 346
        testcase TC_BTP_PP_BV_02() runs on ItsBtp system ItsBtpSystem {
171 fischer 347
 
348
            // Local variables
2230 mullers 349
            var BtpReq v_btpReq;
350
            var integer i;
351
 
171 fischer 352
            // Test control
353
 
354
            // Test component configuration
230 berge 355
            f_cfUp();
171 fischer 356
 
357
            // Test adapter configuration
358
 
359
            // Preamble
230 berge 360
            f_prInitialState();
361
            f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
171 fischer 362
 
363
            // Test Body
2230 mullers 364
            v_btpReq := valueof(m_btpReq( m_btpBWithPorts (f_getBtpDstPort(), f_getBtpDstPortInfo(), f_getBtpPayload())));
365
            btpPort.send(v_btpReq);
171 fischer 366
 
2230 mullers 367
            f_sleep(PX_TNOAC);
368
            for(i:=0; i < lengthof(vc_utEvents) and not match(v_btpReq.msgOut.payload.rawPayload, vc_utEvents[i].rawPayload); i:=i+1) {
369
                // empty on purpose 
370
            }
371
            if(i < lengthof(vc_utEvents)) {
372
                log("*** " & testcasename() & ": PASS: BTP was transmitted to upper layer ***");
373
                f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
374
            }
375
            else {
376
                log("*** " & testcasename() & ": FAIL: BTP was not transmitted to upper layer ***");
377
                f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
378
            }
171 fischer 379
 
380
            // Postamble
247 tepelmann 381
            f_poDefault();
230 berge 382
            f_cfDown();
171 fischer 383
 
174 fischer 384
        }// end TC_BTP_PP_BV_02
171 fischer 385
 
169 berge 386
        } // end btpValid
387
 
174 fischer 388
    } // end btpPacketProcessing
169 berge 389
 
390
} // end ItsBtp_TestCases