Commit c0515021 authored by Philip Makedonski's avatar Philip Makedonski

+ migrated part 1 examples

parent 41ac339c
Package Layer_2_DL_SCH_Data_Transfer {
//Procedures carried out by a component of a test configuration
//or an actor during test execution
Action preCondition : "Pre-test Conditions:
RRC Connection Reconfiguration" ;
Action preamble : "Preamble:
The generic procedure to get UE in test state Loopback
Activated (State 4) according to TS 36.508 clause 4.5
is executed, with all the parameters as specified in the
procedure except that the RLC SDU size is set to return no
data in uplink.
(reference corresponding behavior once implemented" ;
//User-defined verdicts
//Alternatively the predefined verdicts may be used as well
Type Verdict ;
Verdict PASS;
Verdict FAIL;
//User-defined annotation types
Annotation TITLE ; //Test description title
Annotation STEP ; //Step identifiers in source documents
Annotation PROCEDURE ; //Informal textual description of a test step
Annotation PRECONDITION ; //Identify pre-condition behaviour
Annotation PREAMBLE ; //Identify preamble behaviour.
//Test objectives (copied verbatim from source document)
Test Objective TP1 {
from : "36523-1-a20_s07_01.doc::7.1.3.1.1 (1)" ;
description : "with { UE in E-UTRA RRC_CONNECTED state }
ensure that {
when { UE receives downlink assignment on the PDCCH
for the UE's C-RNTI and receives data in the
associated subframe and UE performs HARQ
operation }
then { UE sends a HARQ feedback on the HARQ
process }
}" ;
}
Test Objective TP2 {
from : "36523-1-a20_s07_01.doc::7.1.3.1.1 (2)" ;
description : "with { UE in E-UTRA RRC_CONNECTED state }
ensure that {
when { UE receives downlink assignment on the PDCCH
with a C-RNTI unknown by the UE and data is
available in the associated subframe }
then { UE does not send any HARQ feedback on the
HARQ process }
}" ;
}
//Relevant data definitions
Type PDU;
PDU mac_pdu ;
Type ACK ;
ACK harq_ack ;
Type C_RNTI;
C_RNTI ue;
C_RNTI unknown;
Type PDCCH (optional c_rnti of type C_RNTI);
PDCCH pdcch();
Type CONFIGURATION;
CONFIGURATION RRCConnectionReconfiguration ;
//User-defined time units
Time Second;
Second five;
//Gate type definitions
Gate Type defaultGT accepts ACK, PDU, PDCCH, C_RNTI, CONFIGURATION ;
//Component type definitions
Component Type defaultCT having {
gate g of type defaultGT;
}
//Test configuration definition
Test Configuration defaultTC {
create Tester SS of type defaultCT;
create SUT UE of type defaultCT ;
connect UE.g to SS.g ;
}
//Test description definition
Test Description TD_7_1_3_1 uses configuration defaultTC {
//Pre-conditions and preamble from the source document
perform action preCondition with { PRECONDITION ; } ;
perform action preamble with { PREAMBLE ; } ;
//Test sequence
SS.g sends pdcch (c_rnti=ue) to UE.g with {
STEP : "1" ;
PROCEDURE : "SS transmits a downlink assignment
including the C-RNTI assigned to
the UE" ;
} ;
SS.g sends mac_pdu to UE.g with {
STEP : "2" ;
PROCEDURE : "SS transmits in the indicated
downlink assignment a RLC PDU in
a MAC PDU" ;
} ;
UE.g sends harq_ack to SS.g with {
STEP : "3" ;
PROCEDURE : "Check: Does the UE transmit an
HARQ ACK on PUCCH?" ;
test objectives : TP1 ;
} ;
set verdict to PASS ;
SS.g sends pdcch (c_rnti=unknown) to UE.g with {
STEP : "4" ;
PROCEDURE : "SS transmits a downlink assignment
to including a C-RNTI different from
the assigned to the UE" ;
} ;
SS.g sends mac_pdu to UE.g with {
STEP : "5" ;
PROCEDURE : "SS transmits in the indicated
downlink assignment a RLC PDU in
a MAC PDU" ;
} ;
//Interpolated original step 6 into an alternative behaviour,
//covering both the incorrect and the correct behaviours of the UE
alternatively {
UE.g sends harq_ack to SS.g ;
set verdict to FAIL ;
} or {
gate SS.g is quiet for five ;
set verdict to PASS ;
} with {
STEP : "6" ;
PROCEDURE : "Check: Does the UE send any HARQ ACK
on PUCCH?" ;
test objectives : TP2 ;
}
} with {
Note : "Note 1: For TDD, the timing of ACK/NACK is not
constant as FDD, see Table 10.1-1 of TS 36.213." ;
}
} with {
Note : "Taken from 3GPP TS 36.523-1 V10.2.0 (2012-09)" ;
TITLE : "Correct handling of DL assignment / Dynamic case" ;
}
This diff is collapsed.
//Translated from [i.6], Section 4.5.1.
Package IMS_NNI_General_Capabilities {
//Procedures carried out by a component of a test configuration
//or an actor during test execution
Action preConditions : "Pre-test conditions:
- HSS of IMS_A and of IMS B is configured according to table 1
- UE_A and UE_B have IP bearers established to their respective
IMS networks as per clause 4.2.1
- UE_A and IMS_A configured to use TCP for transport
- UE_A is registered in IMS_A using any user identity
- UE_B is registered user of IMS_B using any user identity
- MESSAGE request and response has to be supported at II-NNI
(ETSI TS 129 165 [16]
see tables 6.1 and 6.3)" ;
//User-defined verdicts
//Alternatively the predefined verdicts may be used as well
Type Verdict ;
Verdict PASS ;
Verdict FAIL ;
//User-defined annotation types
Annotation TITLE ; //Test description title
Annotation STEP ; //Step identifiers in source documents
Annotation PROCEDURE ; //Informal textual description of a test step
Annotation PRECONDITION ; //Identify pre-condition behaviour
Annotation PREAMBLE ; //Identify preamble behaviour.
Annotation SUMMARY ; //Informal textual description of test sequence
//Test objectives (copied verbatim from source document)
Test Objective TP_IMS_4002_1 {
//Location in source document
from : "ts_18601102v030101p.pdf::4.5.1.1 (CC 1)" ;
//Further reference to another document
from : "ETSI TS 124 229 [1], clause 4.2A, paragraph 1" ;
description : "ensure that {
when { UE_A sends a MESSAGE to UE_B
containing a Message_Body greater than 1 300
bytes }
then { IMS_B receives the MESSAGE containing the
Message_Body greater than 1 300 bytes }
}" ;
}
Test Objective UC_05_I {
//Only a reference to corresponding section in the source document
from : "ts_18601102v030101p.pdf::4.4.4.2" ;
}
//Relevant data definitions
Type MSG (optional TCP of type CONTENT);
MSG MESSAGE() ;
MSG DING() ;
MSG DELIVERY_REPORT() ;
MSG M_200_OK() ;
Type CONTENT ;
CONTENT tcp;
Time SECONDS;
SECONDS default_timeout;
//Gate type definitions.
Gate Type defaultGT accepts MSG, CONTENT ;
//Component type definitions
//In this case they may also be reduced to a single component type
Component Type USER having {
gate g of type defaultGT ;
}
Component Type UE having {
gate g of type defaultGT ;
}
Component Type IMS having {
gate g of type defaultGT ;
}
Component Type IBCF having {
gate g of type defaultGT ;
}
//Test configuration definition
Test Configuration CF_INT_CALL {
create Tester USER_A of type USER;
create Tester UE_A of type UE;
create Tester IMS_A of type IMS;
create Tester IBCF_A of type IBCF;
create Tester IBCF_B of type IBCF;
create SUT IMS_B of type IMS;
create Tester UE_B of type UE;
create Tester USER_B of type USER;
connect USER_A.g to UE_A.g ;
connect UE_A.g to IMS_A.g ;
connect IMS_A.g to IBCF_A.g ;
connect IBCF_A.g to IBCF_B.g ;
connect IBCF_B.g to IMS_B.g ;
connect IMS_B.g to UE_B.g ;
connect UE_B.g to USER_B.g ;
}
//Test description definition
Test Description TD_IMS_MESS_0001 uses configuration CF_INT_CALL {
//Pre-conditions from the source document
perform action preConditions with { PRECONDITION ; };
//Test sequence
USER_A.g sends MESSAGE to UE_A.g with { STEP : "1" ; } ;
UE_A.g sends MESSAGE to IMS_A.g with { STEP : "2" ; } ;
IMS_A.g sends MESSAGE to IBCF_A.g with { STEP : "3" ; } ;
IBCF_A.g sends MESSAGE to IBCF_B.g with { STEP : "4" ; } ;
IBCF_B.g sends MESSAGE (TCP = tcp) to IMS_B.g with { STEP : "5" ; } ;
IMS_B.g sends MESSAGE to UE_B.g with { STEP : "6" ; } ;
UE_B.g sends DING to USER_B.g with { STEP : "7" ; } ;
UE_B.g sends M_200_OK to IMS_B.g with { STEP : "8" ; } ;
IMS_B.g sends M_200_OK to IBCF_B.g with { STEP : "9" ; } ;
IBCF_B.g sends M_200_OK to IBCF_A.g with { STEP : "10" ; } ;
IBCF_A.g sends M_200_OK to IMS_A.g with { STEP : "11" ; } ;
IMS_A.g sends M_200_OK to UE_A.g with { STEP : "12" ; } ;
alternatively {
UE_A.g sends DELIVERY_REPORT to USER_A.g with { STEP : "13" ; } ;
} or {
gate USER_A.g is quiet for default_timeout;
}
} with {
SUMMARY : "IMS network shall support SIP messages greater than
1 500 bytes" ;
}
} with {
Note : "Taken from ETSI TS 186 011-2 [i.3] V3.1.1 (2011-06)" ;
TITLE : "SIP messages longer than 1 500 bytes" ;
}
This diff is collapsed.
//A manually constructed example illustrating the data mapping concepts
Package DataExample {
//User-defined verdicts
//Alternatively the predefined verdicts may be used as well
Type Verdict ;
Verdict PASS ;
Verdict FAIL ;
//Test objectives
Test Objective CHECK_SESSION_ID_IS_MAINTAINED {
//Only a description
description : "Check whether the session id is maintained
after the first response." ;
}
//Data definitions
Type SESSION_ID;
SESSION_ID SESSION_ID_1 ;
SESSION_ID SESSION_ID_2 ;
Type MSG (optional session of type SESSION_ID);
MSG REQUEST_SESSION_ID(session = omit);
MSG RESPONSE(session = ?);
MSG MESSAGE(session = ?);
//Data mappings
//Load resource.ttcn3
Use "resource.ttcn3" as TTCN_MAPPING ;
//Map types and instances to TTCN-3 records and templates, respectively
//(located in the used TTCN-3 file)
Map MSG to "record_message" in TTCN_MAPPING as MSG_mapping with {
session mapped to "session_id";
};
Map REQUEST_SESSION_ID to "template_message_request" in TTCN_MAPPING as REQUEST_mapping ;
Map RESPONSE to "template_response" in TTCN_MAPPING as RESPONSE_mapping ;
Map MESSAGE to "template_message" in TTCN_MAPPING as MESSAGE_mapping ;
//Use a runtime URI for dynamic data available at runtime, such as
//session IDs
Use "runtime://sessions/" as RUNTIME_MAPPING ;
//Map session ID data instances to locations within the runtime URI
Map SESSION_ID_1 to "id_1" in RUNTIME_MAPPING as SESSION_ID_1_mapping ;
Map SESSION_ID_2 to "id_2" in RUNTIME_MAPPING as SESSION_ID_2_mapping ;
//Gate type definitions
Gate Type defaultGT accepts MSG , SESSION_ID;
//Component type definitions
Component Type defaultCT having {
gate g of type defaultGT ;
}
//Test configuration definition
Test Configuration defaultTC {
create SUT UE of type defaultCT;
create Tester SS of type defaultCT;
connect SS.g to UE.g ;
}
//Test description definition
Test Description exampleTD uses configuration defaultTC {
//Tester requests a session id
SS.g sends REQUEST_SESSION_ID to UE.g ;
//SUT responds with a session id that is assigned to the URI
//provided by the execution environment
UE.g sends RESPONSE (session=SESSION_ID_1) to SS.g ;
//Tester sends a message with the session id
//from the runtime URI
SS.g sends MESSAGE (session=SESSION_ID_1) to UE.g ;
alternatively {
//SUT responds with the same session id
UE.g sends RESPONSE (session=SESSION_ID_1) to SS.g ;
set verdict to PASS;
} or {
//SUT responds with a new session id
UE.g sends RESPONSE (session=SESSION_ID_2) to SS.g ;
set verdict to FAIL;
} with {
test objectives : CHECK_SESSION_ID_IS_MAINTAINED ;
}
}
//Alternative approach with variables
//Component type definitions
Component Type defaultCTwithVariable having {
variable v of type MSG;
gate g of type defaultGT ;
}
//Test configuration definition
Test Configuration defaultTCwithVariables {
create SUT UE of type defaultCT;
create Tester SS of type defaultCTwithVariable;
connect SS.g to UE.g ;
}
Test Description exampleTD uses configuration defaultTCwithVariables {
//Tester requests a session id
SS.g sends REQUEST_SESSION_ID to UE.g ;
//SUT responds with a response message containing a session ID
//The response could contain any of the known session IDs
//The received response is stored in the variable v of the SS
UE.g sends RESPONSE to SS.g where it is assigned to v;
//Tester sends a message with the session ID
//from the response stored in the variable v of the SS
SS.g sends MESSAGE(session=SS->v.session) to UE.g ;
alternatively {
//SUT responds with the same session ID that is stored in
//the variable v of the SS from the previous response
UE.g sends RESPONSE(session=SS->v.session) to SS.g ;
set verdict to PASS;
} or {
//SUT responds with a any session ID, including the one from the
//previous response stored in v. The ordering of evaluation will
//always select the first alternative in that case. Alternatively
//a function can be defined and called that checks explicitly that
//a the specific session ID from the previous response stored in v
//is not received e.g.
// UE.g sends RESPONSE(session=not(SS->v.session)) to SS.g;
UE.g sends RESPONSE to SS.g ;
set verdict to FAIL;
} with {
test objectives : CHECK_SESSION_ID_IS_MAINTAINED ;
}
}
}
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment