Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
ITS - Intelligent Transport Systems
ITS
Commits
459b9b62
Commit
459b9b62
authored
Jul 21, 2016
by
garciay
Browse files
Implement termination test cases
parent
300fed64
Changes
2
Hide whitespace changes
Inline
Side-by-side
ttcn/AtsIVIM/ItsIvim_TestCases.ttcn
View file @
459b9b62
...
...
@@ -418,8 +418,159 @@ module ItsIvim_TestCases {
group
iviEventTermination
{
/**
* @desc Check that the IUT terminates IVM genration on validity duration expery
* <pre>
* Pics Selection: PICS_IVIM_UPDATE
* Initial conditions:
* with {
* the IUT being in the "initial state"
* and the IUT having generated several IVIM
* containing ivi
* containing mandatory
* containing iviIdentificationNumber
* indicating IVIM_ID_1
* and containing validTo
* indicating CLT + 10 seconds
* and containing iviStatus
* indicating 'new'
* }
* Expected behaviour:
* ensure that {
* when {
* the IUT is alerted of expiration of the time associated with validTo
* }
* then {
* the IUT stops ending IVIM associated with IVIM_ID_1
* }
* }
* </pre>
*
* @version 1.0.4
* @see ETSI TS 103 191-2 v0.0.1 TP_IS_IVIM_EVTR_BV_01
* @reference ETSI TS 103 301 V1.0.4 Clause 7.4.2
*/
testcase
TC_IS_IVIM_EVTR_BV_01
()
runs
on
ItsIvim
system
ItsIvimSystem
{
f_IS_IVIM_EVTR_BV_01
();
}
// End of testcase TC_IS_IVIM_EVTR_BV_01
/**
* @desc Check that the IUT terminates IVM genration on termination request
* <pre>
* Pics Selection: PICS_IVIM_UPDATE
* Initial conditions:
* with {
* the IUT being in the "initial state"
* and the IUT having generated several IVIM
* containing ivi
* containing mandatory
* containing iviIdentificationNumber
* indicating IVIM_ID_1
* and not containing validTo
* and containing iviStatus
* indicating 'new'
* }
* Expected behaviour:
* ensure that {
* when {
* the IUT receives an AppIVIM_termination request associated with IVIM_ID_1
* }
* then {
* the IUT stops ending IVIM associated with IVIM_ID_1
* }
* }
* </pre>
*
* @version 1.0.4
* @see ETSI TS 103 191-2 v0.0.1 TP_IS_IVIM_EVTR_BV_02
* @reference ETSI TS 103 301 V1.0.4 Clause 7.4.2
*/
testcase
TC_IS_IVIM_EVTR_BV_02
()
runs
on
ItsIvim
system
ItsIvimSystem
{
f_IS_IVIM_EVTR_BV_02
();
}
// End of testcase TC_IS_IVIM_EVTR_BV_02
}
// End of group iviEventTermination
group
iviMessageRepetition
{
/**
* @desc Check that the IUT activates repetition on reception of a valid AppIVIM_Update request
* <pre>
* Pics Selection: PICS_IVIM_UPDATE
* Initial conditions:
* with {
* the IUT being in the "initial state"
* and the IUT having generated several IVIM
* containing ivi
* containing mandatory
* containing iviIdentificationNumber
* indicating IVIM_ID_1
* }
* Expected behaviour:
* ensure that {
* when {
* the IUT receives an AppIVIM_Update indicating 'repetition interval' RI_1
* }
* then {
* the IUT sends IVIM with respect to the 'repetition interval' RI_1
* containing ivi
* containing mandatory
* containing iviIdentificationNumber
* indicating IVIM_ID_1
* }
* }
* </pre>
*
* @version 1.0.4
* @see ETSI TS 103 191-2 v0.0.1 TP_IS_IVIM_EVRP_BV_01
* @reference ETSI TS 103 301 V1.0.4 Clause 7.4.2
*/
testcase
TC_IS_IVIM_EVRP_BV_01
()
runs
on
ItsIvim
system
ItsIvimSystem
{
f_IS_IVIM_EVRP_BV_01
();
}
// End of testcase TC_IS_IVIM_EVRP_BV_01
/**
* @desc Check that the IUT activates repetition on reception of a valid AppIVIM_Update request
* <pre>
* Pics Selection: PICS_IVIM_UPDATE
* Initial conditions:
* with {
* the IUT being in the "initial state"
* and the IUT having generated several IVIM
* containing ivi
* containing mandatory
* containing iviIdentificationNumber
* indicating IVIM_ID_1
* }
* Expected behaviour:
* ensure that {
* when {
* the IUT receives an AppIVIM_Update indicating 'repetition interval' 0
* }
* then {
* the IUT stops sending IVIM associated with IVIM_ID_1
* }
* }
* </pre>
*
* @version 1.0.4
* @see ETSI TS 103 191-2 v0.0.1 TP_IS_IVIM_EVRP_BV_02
* @reference ETSI TS 103 301 V1.0.4 Clause 7.4.2
*/
testcase
TC_IS_IVIM_EVRP_BV_02
()
runs
on
ItsIvim
system
ItsIvimSystem
{
f_IS_IVIM_EVRP_BV_02
();
}
// End of testcase TC_IS_IVIM_EVRP_BV_02
}
// End of group iviMessageRepetition
group
iviGenerationFrequency
{
/**
...
...
ttcn/AtsIVIM/ItsIvim_TpFunctions.ttcn
View file @
459b9b62
...
...
@@ -117,8 +117,10 @@ module ItsIvim_TpFunctions {
mw_anyIvimPdu
(
mw_itsPduHeader
,
mw_ivimStructure
(
mw_iviManagementContainer
))))
{
mw_iviManagementContainer
(
-
,
v_iviIdentificationNumber
)))))
{
tc_ac
.
stop
;
log
(
"*** "
&
testcasename
()
&
": PASS: Successfully received IVIM. ***"
);
f_selfOrClientSyncAndVerdict
(
c_tbDone
,
e_success
);
...
...
@@ -253,7 +255,8 @@ module ItsIvim_TpFunctions {
mw_ivimStructure
(
mw_iviManagementContainer
(
-
,
v_iviIdentificationNumber
+
1
v_iviIdentificationNumber
+
1
,
IviStatus_new_
)))))
->
value
v_ivimInd
{
tc_ac
.
stop
;
log
(
"*** "
&
testcasename
()
&
": PASS: Successfully received expected IVIM. ***"
);
...
...
@@ -825,8 +828,305 @@ module ItsIvim_TpFunctions {
}
// End of group iviEventUpdate
group
iviMessageRepetition
{
function
f_IS_IVIM_EVRP_BV_01
()
runs
on
ItsIvim
{
// Local variables
const
integer
c_maxLoopValue
:=
10
;
const
TimestampIts
c_repetitionInterval
:=
c_duration_4sec
;
var
integer
v_counter
:=
0
;
var
boolean
v_ivimReceived
:=
false
;
timer
t_minTransInterval
:=
int2float
(
c_repetitionInterval
)
*
0.90
;
timer
t_maxTransInterval
:=
int2float
(
c_repetitionInterval
)
*
1.10
;
var
IviIdentificationNumber
v_iviIdentificationNumber
;
var
IvimInd
v_rcvdMsg
;
// Test control
if
(
not
PICS_IVIM_UPDATE
)
{
log
(
"*** "
&
testcasename
()
&
": PICS_IVIM_UPDATE required for executing the TC ***"
);
setverdict
(
inconc
);
stop
;
}
// Test component configuration
f_cfUp
();
// Test adapter configuration
// Preamble
f_prInitialState
();
v_iviIdentificationNumber
:=
f_utTriggerEvent
(
m_utTriggerEvent
(
c_repetition_interval_deactivated
));
f_awaitIviMessage
(
mw_ivimInd
(
mw_anyIvimPdu
(
mw_itsPduHeader
,
mw_ivimStructure
(
mw_iviManagementContainer
(
-
,
v_iviIdentificationNumber
,
IviStatus_new_
)))),
v_rcvdMsg
);
f_selfOrClientSyncAndVerdictPreamble
(
c_prDone
,
e_success
);
// Test Body
f_utUpdateEvent
(
m_utUpdateEvent
(
v_iviIdentificationNumber
,
c_duration_4sec
));
tc_ac
.
start
;
ivimPort
.
clear
;
alt
{
[]
ivimPort
.
receive
(
mw_ivimInd
(
mw_anyIvimPdu
(
mw_itsPduHeader
,
mw_ivimStructure
(
mw_iviManagementContainer
(
-
,
v_iviIdentificationNumber
,
IviStatus_update_
)))))
{
tc_ac
.
stop
;
v_ivimReceived
:=
true
;
tc_ac
.
start
;
}
[]
t_minTransInterval
.
timeout
{
if
(
v_ivimReceived
==
true
)
{
log
(
"*** "
&
testcasename
()
&
": FAIL: IVIM received BEFORE expiry of the minimum generation timer interval. ***"
);
f_selfOrClientSyncAndVerdict
(
c_tbDone
,
e_error
);
}
else
{
repeat
;
}
}
[]
t_maxTransInterval
.
timeout
{
if
(
v_ivimReceived
==
false
)
{
log
(
"*** "
&
testcasename
()
&
": FAIL: IVIM received AFTER expiry of the maximum generation timer interval. ***"
);
f_selfOrClientSyncAndVerdict
(
c_tbDone
,
e_error
);
}
else
{
v_counter
:=
v_counter
+
1
;
if
(
v_counter
<
c_maxLoopValue
)
{
v_ivimReceived
:=
false
;
t_minTransInterval
.
start
;
t_maxTransInterval
.
start
;
repeat
;
}
else
{
log
(
"*** "
&
testcasename
()
&
": PASS: Generation of IVIMs was successful ***"
);
f_selfOrClientSyncAndVerdict
(
c_tbDone
,
e_success
);
}
}
}
[]
tc_ac
.
timeout
{
log
(
"*** "
&
testcasename
()
&
": INCONC: Timeout while awaiting the reception of a message. ***"
);
f_selfOrClientSyncAndVerdict
(
c_tbDone
,
e_timeout
);
}
}
// Postamble
f_poCancelEvent
(
e_iut
,
v_iviIdentificationNumber
);
f_cfDown
();
}
// End of function f_IS_IVIM_EVRP_BV_01
function
f_IS_IVIM_EVRP_BV_02
()
runs
on
ItsIvim
{
// Local variables
var
IviIdentificationNumber
v_iviIdentificationNumber
;
var
IvimInd
v_rcvdMsg
;
// Test control
if
(
not
PICS_IVIM_UPDATE
)
{
log
(
"*** "
&
testcasename
()
&
": PICS_IVIM_UPDATE required for executing the TC ***"
);
setverdict
(
inconc
);
stop
;
}
// Test component configuration
f_cfUp
();
// Test adapter configuration
// Preamble
f_prInitialState
();
v_iviIdentificationNumber
:=
f_utTriggerEvent
(
m_utTriggerEvent
());
f_awaitIviMessage
(
mw_ivimInd
(
mw_anyIvimPdu
(
mw_itsPduHeader
,
mw_ivimStructure
(
mw_iviManagementContainer
(
-
,
v_iviIdentificationNumber
,
IviStatus_new_
)))),
v_rcvdMsg
);
f_selfOrClientSyncAndVerdictPreamble
(
c_prDone
,
e_success
);
// Test Body
f_utUpdateEvent
(
m_utUpdateEvent
(
v_iviIdentificationNumber
,
c_repetition_interval_deactivated
));
ivimPort
.
clear
;
tc_noac
.
start
;
alt
{
[]
ivimPort
.
receive
(
mw_ivimInd
(
mw_anyIvimPdu
(
mw_itsPduHeader
,
mw_ivimStructure
(
mw_iviManagementContainer
(
-
,
v_iviIdentificationNumber
,
IviStatus_update_
)))))
{
tc_noac
.
stop
;
log
(
"*** "
&
testcasename
()
&
": FAIL: No more IVIM shall be sent. ***"
);
f_selfOrClientSyncAndVerdict
(
c_tbDone
,
e_error
);
}
[]
tc_noac
.
timeout
{
log
(
"*** "
&
testcasename
()
&
": PASS: No more IVIM was sent. ***"
);
f_selfOrClientSyncAndVerdict
(
c_tbDone
,
e_success
);
}
}
// Postamble
f_poCancelEvent
(
e_iut
,
v_iviIdentificationNumber
);
f_cfDown
();
}
// End of function f_IS_IVIM_EVRP_BV_02
}
// End of group iviMessageRepetition
group
iviEventTermination
{
function
f_IS_IVIM_EVTR_BV_01
()
runs
on
ItsIvim
{
// Local variables
var
IviIdentificationNumber
v_iviIdentificationNumber
;
var
IvimInd
v_rcvdMsg
;
// Test control
if
(
not
PICS_IVIM_GENERATION
)
{
log
(
"*** "
&
testcasename
()
&
": PICS_IVIM_GENERATION required for executing the TC ***"
);
setverdict
(
inconc
);
stop
;
}
// Test component configuration
f_cfUp
();
// Test adapter configuration
// Preamble
f_prInitialState
();
v_iviIdentificationNumber
:=
f_utTriggerEvent
(
m_utTriggerEvent
(
c_repetition_interval_deactivated
,
-
,
f_getCurrentTime
()
+
1000
*
c_duration_4sec
));
f_awaitIviMessage
(
mw_ivimInd
(
mw_anyIvimPdu
(
mw_itsPduHeader
,
mw_ivimStructure
(
mw_iviManagementContainer
(
-
,
v_iviIdentificationNumber
,
IviStatus_new_
)))),
v_rcvdMsg
);
f_selfOrClientSyncAndVerdictPreamble
(
c_prDone
,
e_success
);
// Test Body
f_sleep
(
int2float
(
f_getCurrentTime
()
+
1000
*
c_duration_4sec
));
tc_noac
.
start
;
alt
{
[]
ivimPort
.
receive
(
mw_ivimInd
(
mw_anyIvimPdu
(
mw_itsPduHeader
,
mw_ivimStructure
(
mw_iviManagementContainer
(
-
,
v_iviIdentificationNumber
,
IviStatus_new_
)))))
{
log
(
"*** "
&
testcasename
()
&
": INFO: No more IVIM shall be set. ***"
);
f_selfOrClientSyncAndVerdict
(
c_tbDone
,
e_error
);
}
[]
tc_noac
.
timeout
{
log
(
"*** "
&
testcasename
()
&
": PASS: No more IVIM was sent. ***"
);
f_selfOrClientSyncAndVerdict
(
c_tbDone
,
e_success
);
}
}
// Postamble
f_cfDown
();
}
// End of function f_IS_IVIM_EVTR_BV_01
function
f_IS_IVIM_EVTR_BV_02
()
runs
on
ItsIvim
{
// Local variables
var
IviIdentificationNumber
v_iviIdentificationNumber
;
var
IvimInd
v_rcvdMsg
;
// Test control
if
(
not
PICS_IVIM_GENERATION
)
{
log
(
"*** "
&
testcasename
()
&
": PICS_IVIM_GENERATION required for executing the TC ***"
);
setverdict
(
inconc
);
stop
;
}
// Test component configuration
f_cfUp
();
// Test adapter configuration
// Preamble
f_prInitialState
();
v_iviIdentificationNumber
:=
f_utTriggerEvent
(
m_utTriggerEvent
());
f_awaitIviMessage
(
mw_ivimInd
(
mw_anyIvimPdu
(
mw_itsPduHeader
,
mw_ivimStructure
(
mw_iviManagementContainer
(
-
,
v_iviIdentificationNumber
,
IviStatus_new_
)))),
v_rcvdMsg
);
f_selfOrClientSyncAndVerdictPreamble
(
c_prDone
,
e_success
);
// Test Body
f_utTerminateEvent
(
m_utEventCancellation
(
v_iviIdentificationNumber
));
tc_ac
.
start
;
alt
{
[]
ivimPort
.
receive
(
mw_ivimInd
(
mw_anyIvimPdu
(
mw_itsPduHeader
,
mw_ivimStructure
(
mw_iviManagementContainer
(
-
,
v_iviIdentificationNumber
,
IviStatus_new_
)))))
{
log
(
"*** "
&
testcasename
()
&
": INFO: No more IVIM shall be set. ***"
);
f_selfOrClientSyncAndVerdict
(
c_tbDone
,
e_error
);
}
[]
tc_noac
.
timeout
{
log
(
"*** "
&
testcasename
()
&
": PASS: No more IVIM was sent. ***"
);
f_selfOrClientSyncAndVerdict
(
c_tbDone
,
e_success
);
}
}
// Postamble
f_cfDown
();
}
// End of function f_IS_IVIM_EVTR_BV_02
}
// End of group iviEventTermination
group
iviGenerationFrequency
{
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment