diff --git a/part1-examples/Example-1-3GPP-7.1.3.tdlan2 b/part1-examples/Example-1-3GPP-7.1.3.tdlan2 new file mode 100644 index 0000000000000000000000000000000000000000..f10efd5d5c50e5921d8b0b44b5d7b8bd1d5edbd5 --- /dev/null +++ b/part1-examples/Example-1-3GPP-7.1.3.tdlan2 @@ -0,0 +1,148 @@ +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" ; +} diff --git a/part1-examples/Example-1-3GPP-7.1.3.tdlan2.tdl b/part1-examples/Example-1-3GPP-7.1.3.tdlan2.tdl new file mode 100644 index 0000000000000000000000000000000000000000..bad18c36bdeedf2013d9bc73f1f1334ba47bb1d8 --- /dev/null +++ b/part1-examples/Example-1-3GPP-7.1.3.tdlan2.tdl @@ -0,0 +1,129 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tdl:Package xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tdl="http://www.etsi.org/spec/TDL/1.4.1" name="Layer_2_DL_SCH_Data_Transfer"> + <comment body=""Taken from 3GPP TS 36.523-1 V10.2.0 (2012-09)""/> + <annotation value=""Correct handling of DL assignment / Dynamic case"" key="//@packagedElement.5"/> + <packagedElement xsi:type="tdl:Action" name="preCondition" body=""Pre-test Conditions: 
 RRC Connection Reconfiguration""/> + <packagedElement xsi:type="tdl:Action" name="preamble" body=""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""/> + <packagedElement xsi:type="tdl:SimpleDataType" name="Verdict"/> + <packagedElement xsi:type="tdl:SimpleDataInstance" name="PASS" dataType="//@packagedElement.2"/> + <packagedElement xsi:type="tdl:SimpleDataInstance" name="FAIL" dataType="//@packagedElement.2"/> + <packagedElement xsi:type="tdl:AnnotationType" name="TITLE"/> + <packagedElement xsi:type="tdl:AnnotationType" name="STEP"/> + <packagedElement xsi:type="tdl:AnnotationType" name="PROCEDURE"/> + <packagedElement xsi:type="tdl:AnnotationType" name="PRECONDITION"/> + <packagedElement xsi:type="tdl:AnnotationType" name="PREAMBLE"/> + <packagedElement xsi:type="tdl:TestObjective" name="TP1" 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 }
 }""> + <objectiveURI>"36523-1-a20_s07_01.doc::7.1.3.1.1 (1)"</objectiveURI> + </packagedElement> + <packagedElement xsi:type="tdl:TestObjective" name="TP2" 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 }
 }""> + <objectiveURI>"36523-1-a20_s07_01.doc::7.1.3.1.1 (2)"</objectiveURI> + </packagedElement> + <packagedElement xsi:type="tdl:SimpleDataType" name="PDU"/> + <packagedElement xsi:type="tdl:SimpleDataInstance" name="mac_pdu" dataType="//@packagedElement.12"/> + <packagedElement xsi:type="tdl:SimpleDataType" name="ACK"/> + <packagedElement xsi:type="tdl:SimpleDataInstance" name="harq_ack" dataType="//@packagedElement.14"/> + <packagedElement xsi:type="tdl:SimpleDataType" name="C_RNTI"/> + <packagedElement xsi:type="tdl:SimpleDataInstance" name="ue" dataType="//@packagedElement.16"/> + <packagedElement xsi:type="tdl:SimpleDataInstance" name="unknown" dataType="//@packagedElement.16"/> + <packagedElement xsi:type="tdl:StructuredDataType" name="PDCCH"> + <member name="c_rnti" dataType="//@packagedElement.16" isOptional="true"/> + </packagedElement> + <packagedElement xsi:type="tdl:StructuredDataInstance" name="pdcch" dataType="//@packagedElement.19"/> + <packagedElement xsi:type="tdl:SimpleDataType" name="CONFIGURATION"/> + <packagedElement xsi:type="tdl:SimpleDataInstance" name="RRCConnectionReconfiguration" dataType="//@packagedElement.21"/> + <packagedElement xsi:type="tdl:Time" name="Second"/> + <packagedElement xsi:type="tdl:SimpleDataInstance" name="five" dataType="//@packagedElement.23"/> + <packagedElement xsi:type="tdl:GateType" name="defaultGT" dataType="//@packagedElement.14 //@packagedElement.12 //@packagedElement.19 //@packagedElement.16 //@packagedElement.21"/> + <packagedElement xsi:type="tdl:ComponentType" name="defaultCT"> + <gateInstance name="g" type="//@packagedElement.25"/> + </packagedElement> + <packagedElement xsi:type="tdl:TestConfiguration" name="defaultTC"> + <componentInstance name="SS" type="//@packagedElement.26" role="Tester"/> + <componentInstance name="UE" type="//@packagedElement.26"/> + <connection> + <endPoint component="//@packagedElement.27/@componentInstance.1" gate="//@packagedElement.26/@gateInstance.0"/> + <endPoint component="//@packagedElement.27/@componentInstance.0" gate="//@packagedElement.26/@gateInstance.0"/> + </connection> + </packagedElement> + <packagedElement xsi:type="tdl:TestDescription" name="TD_7_1_3_1" testConfiguration="//@packagedElement.27"> + <behaviourDescription> + <behaviour xsi:type="tdl:CompoundBehaviour"> + <comment body=""Note 1: For TDD, the timing of ACK/NACK is not
 constant as FDD, see Table 10.1-1 of TS 36.213.""/> + <block> + <behaviour xsi:type="tdl:ActionReference" action="//@packagedElement.0"> + <annotation key="//@packagedElement.8"/> + </behaviour> + <behaviour xsi:type="tdl:ActionReference" action="//@packagedElement.1"> + <annotation key="//@packagedElement.9"/> + </behaviour> + <behaviour xsi:type="tdl:Message" sourceGate="//@packagedElement.27/@connection.0/@endPoint.1"> + <target targetGate="//@packagedElement.27/@connection.0/@endPoint.0"> + <annotation value=""1"" key="//@packagedElement.6"/> + <annotation value=""SS transmits a downlink assignment 
 including the C-RNTI assigned to 
 the UE"" key="//@packagedElement.7"/> + </target> + <argument xsi:type="tdl:DataInstanceUse" dataInstance="//@packagedElement.20"> + <argument parameter="//@packagedElement.19/@member.0"> + <dataUse xsi:type="tdl:DataInstanceUse" dataInstance="//@packagedElement.17"/> + </argument> + </argument> + </behaviour> + <behaviour xsi:type="tdl:Message" sourceGate="//@packagedElement.27/@connection.0/@endPoint.1"> + <target targetGate="//@packagedElement.27/@connection.0/@endPoint.0"> + <annotation value=""2"" key="//@packagedElement.6"/> + <annotation value=""SS transmits in the indicated 
 downlink assignment a RLC PDU in 
 a MAC PDU"" key="//@packagedElement.7"/> + </target> + <argument xsi:type="tdl:DataInstanceUse" dataInstance="//@packagedElement.13"/> + </behaviour> + <behaviour xsi:type="tdl:Message" testObjective="//@packagedElement.10" sourceGate="//@packagedElement.27/@connection.0/@endPoint.0"> + <annotation value=""3"" key="//@packagedElement.6"/> + <annotation value=""Check: Does the UE transmit an 
 HARQ ACK on PUCCH?"" key="//@packagedElement.7"/> + <target targetGate="//@packagedElement.27/@connection.0/@endPoint.1"/> + <argument xsi:type="tdl:DataInstanceUse" dataInstance="//@packagedElement.15"/> + </behaviour> + <behaviour xsi:type="tdl:VerdictAssignment"> + <verdict xsi:type="tdl:DataInstanceUse" dataInstance="//@packagedElement.3"/> + </behaviour> + <behaviour xsi:type="tdl:Message" sourceGate="//@packagedElement.27/@connection.0/@endPoint.1"> + <target targetGate="//@packagedElement.27/@connection.0/@endPoint.0"> + <annotation value=""4"" key="//@packagedElement.6"/> + <annotation value=""SS transmits a downlink assignment 
 to including a C-RNTI different from 
 the assigned to the UE"" key="//@packagedElement.7"/> + </target> + <argument xsi:type="tdl:DataInstanceUse" dataInstance="//@packagedElement.20"> + <argument parameter="//@packagedElement.19/@member.0"> + <dataUse xsi:type="tdl:DataInstanceUse" dataInstance="//@packagedElement.18"/> + </argument> + </argument> + </behaviour> + <behaviour xsi:type="tdl:Message" sourceGate="//@packagedElement.27/@connection.0/@endPoint.1"> + <target targetGate="//@packagedElement.27/@connection.0/@endPoint.0"> + <annotation value=""5"" key="//@packagedElement.6"/> + <annotation value=""SS transmits in the indicated 
 downlink assignment a RLC PDU in 
 a MAC PDU"" key="//@packagedElement.7"/> + </target> + <argument xsi:type="tdl:DataInstanceUse" dataInstance="//@packagedElement.13"/> + </behaviour> + <behaviour xsi:type="tdl:AlternativeBehaviour" testObjective="//@packagedElement.11"> + <annotation value=""6"" key="//@packagedElement.6"/> + <annotation value=""Check: Does the UE send any HARQ ACK 
 on PUCCH?"" key="//@packagedElement.7"/> + <block> + <behaviour xsi:type="tdl:Message" sourceGate="//@packagedElement.27/@connection.0/@endPoint.0"> + <target targetGate="//@packagedElement.27/@connection.0/@endPoint.1"/> + <argument xsi:type="tdl:DataInstanceUse" dataInstance="//@packagedElement.15"/> + </behaviour> + <behaviour xsi:type="tdl:VerdictAssignment"> + <verdict xsi:type="tdl:DataInstanceUse" dataInstance="//@packagedElement.4"/> + </behaviour> + </block> + <block> + <behaviour xsi:type="tdl:Quiescence" gateReference="//@packagedElement.27/@connection.0/@endPoint.1"> + <period xsi:type="tdl:DataInstanceUse" dataInstance="//@packagedElement.24"/> + </behaviour> + <behaviour xsi:type="tdl:VerdictAssignment"> + <verdict xsi:type="tdl:DataInstanceUse" dataInstance="//@packagedElement.3"/> + </behaviour> + </block> + </behaviour> + </block> + </behaviour> + </behaviourDescription> + </packagedElement> +</tdl:Package> diff --git a/part1-examples/Example-2-IMS-4.5.1.tdlan2 b/part1-examples/Example-2-IMS-4.5.1.tdlan2 new file mode 100644 index 0000000000000000000000000000000000000000..a79317921f0a983ff3b7fef79562675a0e6476ee --- /dev/null +++ b/part1-examples/Example-2-IMS-4.5.1.tdlan2 @@ -0,0 +1,129 @@ +//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" ; +} diff --git a/part1-examples/Example-2-IMS-4.5.1.tdlan2.tdl b/part1-examples/Example-2-IMS-4.5.1.tdlan2.tdl new file mode 100644 index 0000000000000000000000000000000000000000..5505f4f2b6b3bdb854f87bdaf8a8467debd93755 --- /dev/null +++ b/part1-examples/Example-2-IMS-4.5.1.tdlan2.tdl @@ -0,0 +1,187 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tdl:Package xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tdl="http://www.etsi.org/spec/TDL/1.4.1" name="IMS_NNI_General_Capabilities"> + <comment body=""Taken from ETSI TS 186 011-2 [i.3] V3.1.1 (2011-06)""/> + <annotation value=""SIP messages longer than 1 500 bytes"" key="//@packagedElement.4"/> + <packagedElement xsi:type="tdl:Action" name="preConditions" body=""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)""/> + <packagedElement xsi:type="tdl:SimpleDataType" name="Verdict"/> + <packagedElement xsi:type="tdl:SimpleDataInstance" name="PASS" dataType="//@packagedElement.1"/> + <packagedElement xsi:type="tdl:SimpleDataInstance" name="FAIL" dataType="//@packagedElement.1"/> + <packagedElement xsi:type="tdl:AnnotationType" name="TITLE"/> + <packagedElement xsi:type="tdl:AnnotationType" name="STEP"/> + <packagedElement xsi:type="tdl:AnnotationType" name="PROCEDURE"/> + <packagedElement xsi:type="tdl:AnnotationType" name="PRECONDITION"/> + <packagedElement xsi:type="tdl:AnnotationType" name="PREAMBLE"/> + <packagedElement xsi:type="tdl:AnnotationType" name="SUMMARY"/> + <packagedElement xsi:type="tdl:TestObjective" name="TP_IMS_4002_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 }
 }""> + <objectiveURI>"ts_18601102v030101p.pdf::4.5.1.1 (CC 1)"</objectiveURI> + <objectiveURI>"ETSI TS 124 229 [1], clause 4.2A, paragraph 1"</objectiveURI> + </packagedElement> + <packagedElement xsi:type="tdl:TestObjective" name="UC_05_I"> + <objectiveURI>"ts_18601102v030101p.pdf::4.4.4.2"</objectiveURI> + </packagedElement> + <packagedElement xsi:type="tdl:StructuredDataType" name="MSG"> + <member name="TCP" dataType="//@packagedElement.17" isOptional="true"/> + </packagedElement> + <packagedElement xsi:type="tdl:StructuredDataInstance" name="MESSAGE" dataType="//@packagedElement.12"/> + <packagedElement xsi:type="tdl:StructuredDataInstance" name="DING" dataType="//@packagedElement.12"/> + <packagedElement xsi:type="tdl:StructuredDataInstance" name="DELIVERY_REPORT" dataType="//@packagedElement.12"/> + <packagedElement xsi:type="tdl:StructuredDataInstance" name="M_200_OK" dataType="//@packagedElement.12"/> + <packagedElement xsi:type="tdl:SimpleDataType" name="CONTENT"/> + <packagedElement xsi:type="tdl:SimpleDataInstance" name="tcp" dataType="//@packagedElement.17"/> + <packagedElement xsi:type="tdl:Time" name="SECONDS"/> + <packagedElement xsi:type="tdl:SimpleDataInstance" name="default_timeout" dataType="//@packagedElement.19"/> + <packagedElement xsi:type="tdl:GateType" name="defaultGT" dataType="//@packagedElement.12 //@packagedElement.17"/> + <packagedElement xsi:type="tdl:ComponentType" name="USER"> + <gateInstance name="g" type="//@packagedElement.21"/> + </packagedElement> + <packagedElement xsi:type="tdl:ComponentType" name="UE"> + <gateInstance name="g" type="//@packagedElement.21"/> + </packagedElement> + <packagedElement xsi:type="tdl:ComponentType" name="IMS"> + <gateInstance name="g" type="//@packagedElement.21"/> + </packagedElement> + <packagedElement xsi:type="tdl:ComponentType" name="IBCF"> + <gateInstance name="g" type="//@packagedElement.21"/> + </packagedElement> + <packagedElement xsi:type="tdl:TestConfiguration" name="CF_INT_CALL"> + <componentInstance name="USER_A" type="//@packagedElement.22" role="Tester"/> + <componentInstance name="UE_A" type="//@packagedElement.23" role="Tester"/> + <componentInstance name="IMS_A" type="//@packagedElement.24" role="Tester"/> + <componentInstance name="IBCF_A" type="//@packagedElement.25" role="Tester"/> + <componentInstance name="IBCF_B" type="//@packagedElement.25" role="Tester"/> + <componentInstance name="IMS_B" type="//@packagedElement.24"/> + <componentInstance name="UE_B" type="//@packagedElement.23" role="Tester"/> + <componentInstance name="USER_B" type="//@packagedElement.22" role="Tester"/> + <connection> + <endPoint component="//@packagedElement.26/@componentInstance.0" gate="//@packagedElement.22/@gateInstance.0"/> + <endPoint component="//@packagedElement.26/@componentInstance.1" gate="//@packagedElement.23/@gateInstance.0"/> + </connection> + <connection> + <endPoint component="//@packagedElement.26/@componentInstance.1" gate="//@packagedElement.23/@gateInstance.0"/> + <endPoint component="//@packagedElement.26/@componentInstance.2" gate="//@packagedElement.24/@gateInstance.0"/> + </connection> + <connection> + <endPoint component="//@packagedElement.26/@componentInstance.2" gate="//@packagedElement.24/@gateInstance.0"/> + <endPoint component="//@packagedElement.26/@componentInstance.3" gate="//@packagedElement.25/@gateInstance.0"/> + </connection> + <connection> + <endPoint component="//@packagedElement.26/@componentInstance.3" gate="//@packagedElement.25/@gateInstance.0"/> + <endPoint component="//@packagedElement.26/@componentInstance.4" gate="//@packagedElement.25/@gateInstance.0"/> + </connection> + <connection> + <endPoint component="//@packagedElement.26/@componentInstance.4" gate="//@packagedElement.25/@gateInstance.0"/> + <endPoint component="//@packagedElement.26/@componentInstance.5" gate="//@packagedElement.24/@gateInstance.0"/> + </connection> + <connection> + <endPoint component="//@packagedElement.26/@componentInstance.5" gate="//@packagedElement.24/@gateInstance.0"/> + <endPoint component="//@packagedElement.26/@componentInstance.6" gate="//@packagedElement.23/@gateInstance.0"/> + </connection> + <connection> + <endPoint component="//@packagedElement.26/@componentInstance.6" gate="//@packagedElement.23/@gateInstance.0"/> + <endPoint component="//@packagedElement.26/@componentInstance.7" gate="//@packagedElement.22/@gateInstance.0"/> + </connection> + </packagedElement> + <packagedElement xsi:type="tdl:TestDescription" name="TD_IMS_MESS_0001" testConfiguration="//@packagedElement.26"> + <behaviourDescription> + <behaviour xsi:type="tdl:CompoundBehaviour"> + <annotation value=""IMS network shall support SIP messages greater than
 1 500 bytes"" key="//@packagedElement.9"/> + <block> + <behaviour xsi:type="tdl:ActionReference" action="//@packagedElement.0"> + <annotation key="//@packagedElement.7"/> + </behaviour> + <behaviour xsi:type="tdl:Message" sourceGate="//@packagedElement.26/@connection.0/@endPoint.0"> + <target targetGate="//@packagedElement.26/@connection.0/@endPoint.1"> + <annotation value=""1"" key="//@packagedElement.5"/> + </target> + <argument xsi:type="tdl:DataInstanceUse" dataInstance="//@packagedElement.13"/> + </behaviour> + <behaviour xsi:type="tdl:Message" sourceGate="//@packagedElement.26/@connection.1/@endPoint.0"> + <target targetGate="//@packagedElement.26/@connection.1/@endPoint.1"> + <annotation value=""2"" key="//@packagedElement.5"/> + </target> + <argument xsi:type="tdl:DataInstanceUse" dataInstance="//@packagedElement.13"/> + </behaviour> + <behaviour xsi:type="tdl:Message" sourceGate="//@packagedElement.26/@connection.2/@endPoint.0"> + <target targetGate="//@packagedElement.26/@connection.2/@endPoint.1"> + <annotation value=""3"" key="//@packagedElement.5"/> + </target> + <argument xsi:type="tdl:DataInstanceUse" dataInstance="//@packagedElement.13"/> + </behaviour> + <behaviour xsi:type="tdl:Message" sourceGate="//@packagedElement.26/@connection.3/@endPoint.0"> + <target targetGate="//@packagedElement.26/@connection.3/@endPoint.1"> + <annotation value=""4"" key="//@packagedElement.5"/> + </target> + <argument xsi:type="tdl:DataInstanceUse" dataInstance="//@packagedElement.13"/> + </behaviour> + <behaviour xsi:type="tdl:Message" sourceGate="//@packagedElement.26/@connection.4/@endPoint.0"> + <target targetGate="//@packagedElement.26/@connection.4/@endPoint.1"> + <annotation value=""5"" key="//@packagedElement.5"/> + </target> + <argument xsi:type="tdl:DataInstanceUse" dataInstance="//@packagedElement.13"> + <argument parameter="//@packagedElement.12/@member.0"> + <dataUse xsi:type="tdl:DataInstanceUse" dataInstance="//@packagedElement.18"/> + </argument> + </argument> + </behaviour> + <behaviour xsi:type="tdl:Message" sourceGate="//@packagedElement.26/@connection.5/@endPoint.0"> + <target targetGate="//@packagedElement.26/@connection.5/@endPoint.1"> + <annotation value=""6"" key="//@packagedElement.5"/> + </target> + <argument xsi:type="tdl:DataInstanceUse" dataInstance="//@packagedElement.13"/> + </behaviour> + <behaviour xsi:type="tdl:Message" sourceGate="//@packagedElement.26/@connection.6/@endPoint.0"> + <target targetGate="//@packagedElement.26/@connection.6/@endPoint.1"> + <annotation value=""7"" key="//@packagedElement.5"/> + </target> + <argument xsi:type="tdl:DataInstanceUse" dataInstance="//@packagedElement.14"/> + </behaviour> + <behaviour xsi:type="tdl:Message" sourceGate="//@packagedElement.26/@connection.5/@endPoint.1"> + <target targetGate="//@packagedElement.26/@connection.5/@endPoint.0"> + <annotation value=""8"" key="//@packagedElement.5"/> + </target> + <argument xsi:type="tdl:DataInstanceUse" dataInstance="//@packagedElement.16"/> + </behaviour> + <behaviour xsi:type="tdl:Message" sourceGate="//@packagedElement.26/@connection.4/@endPoint.1"> + <target targetGate="//@packagedElement.26/@connection.4/@endPoint.0"> + <annotation value=""9"" key="//@packagedElement.5"/> + </target> + <argument xsi:type="tdl:DataInstanceUse" dataInstance="//@packagedElement.16"/> + </behaviour> + <behaviour xsi:type="tdl:Message" sourceGate="//@packagedElement.26/@connection.3/@endPoint.1"> + <target targetGate="//@packagedElement.26/@connection.3/@endPoint.0"> + <annotation value=""10"" key="//@packagedElement.5"/> + </target> + <argument xsi:type="tdl:DataInstanceUse" dataInstance="//@packagedElement.16"/> + </behaviour> + <behaviour xsi:type="tdl:Message" sourceGate="//@packagedElement.26/@connection.2/@endPoint.1"> + <target targetGate="//@packagedElement.26/@connection.2/@endPoint.0"> + <annotation value=""11"" key="//@packagedElement.5"/> + </target> + <argument xsi:type="tdl:DataInstanceUse" dataInstance="//@packagedElement.16"/> + </behaviour> + <behaviour xsi:type="tdl:Message" sourceGate="//@packagedElement.26/@connection.1/@endPoint.1"> + <target targetGate="//@packagedElement.26/@connection.1/@endPoint.0"> + <annotation value=""12"" key="//@packagedElement.5"/> + </target> + <argument xsi:type="tdl:DataInstanceUse" dataInstance="//@packagedElement.16"/> + </behaviour> + <behaviour xsi:type="tdl:AlternativeBehaviour"> + <block> + <behaviour xsi:type="tdl:Message" sourceGate="//@packagedElement.26/@connection.0/@endPoint.1"> + <target targetGate="//@packagedElement.26/@connection.0/@endPoint.0"> + <annotation value=""13"" key="//@packagedElement.5"/> + </target> + <argument xsi:type="tdl:DataInstanceUse" dataInstance="//@packagedElement.15"/> + </behaviour> + </block> + <block> + <behaviour xsi:type="tdl:Quiescence" gateReference="//@packagedElement.26/@connection.0/@endPoint.0"> + <period xsi:type="tdl:DataInstanceUse" dataInstance="//@packagedElement.20"/> + </behaviour> + </block> + </behaviour> + </block> + </behaviour> + </behaviourDescription> + </packagedElement> +</tdl:Package> diff --git a/part1-examples/Example-3-Data.tdlan2 b/part1-examples/Example-3-Data.tdlan2 new file mode 100644 index 0000000000000000000000000000000000000000..01a9e15da77dfd4b1501d2de94e24e852fa2b387 --- /dev/null +++ b/part1-examples/Example-3-Data.tdlan2 @@ -0,0 +1,133 @@ +//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 ; + } + } +} diff --git a/part1-examples/Example-3-Data.tdlan2.tdl b/part1-examples/Example-3-Data.tdlan2.tdl new file mode 100644 index 0000000000000000000000000000000000000000..46680064e43931ffe67d0d72fd91631566f76899 --- /dev/null +++ b/part1-examples/Example-3-Data.tdlan2.tdl @@ -0,0 +1,172 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tdl:Package xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tdl="http://www.etsi.org/spec/TDL/1.4.1" name="DataExample"> + <packagedElement xsi:type="tdl:SimpleDataType" name="Verdict"/> + <packagedElement xsi:type="tdl:SimpleDataInstance" name="PASS" dataType="//@packagedElement.0"/> + <packagedElement xsi:type="tdl:SimpleDataInstance" name="FAIL" dataType="//@packagedElement.0"/> + <packagedElement xsi:type="tdl:TestObjective" name="CHECK_SESSION_ID_IS_MAINTAINED" description=""Check whether the session id is maintained 
 after the first response.""/> + <packagedElement xsi:type="tdl:SimpleDataType" name="SESSION_ID"/> + <packagedElement xsi:type="tdl:SimpleDataInstance" name="SESSION_ID_1" dataType="//@packagedElement.4"/> + <packagedElement xsi:type="tdl:SimpleDataInstance" name="SESSION_ID_2" dataType="//@packagedElement.4"/> + <packagedElement xsi:type="tdl:StructuredDataType" name="MSG"> + <member name="session" dataType="//@packagedElement.4" isOptional="true"/> + </packagedElement> + <packagedElement xsi:type="tdl:StructuredDataInstance" name="REQUEST_SESSION_ID" dataType="//@packagedElement.7"> + <memberAssignment member="//@packagedElement.7/@member.0"> + <memberSpec xsi:type="tdl:OmitValue"/> + </memberAssignment> + </packagedElement> + <packagedElement xsi:type="tdl:StructuredDataInstance" name="RESPONSE" dataType="//@packagedElement.7"> + <memberAssignment member="//@packagedElement.7/@member.0"> + <memberSpec xsi:type="tdl:AnyValue" name="?"/> + </memberAssignment> + </packagedElement> + <packagedElement xsi:type="tdl:StructuredDataInstance" name="MESSAGE" dataType="//@packagedElement.7"> + <memberAssignment member="//@packagedElement.7/@member.0"> + <memberSpec xsi:type="tdl:AnyValue" name="?"/> + </memberAssignment> + </packagedElement> + <packagedElement xsi:type="tdl:DataResourceMapping" name="TTCN_MAPPING" resourceURI=""resource.ttcn3""/> + <packagedElement xsi:type="tdl:DataElementMapping" name="MSG_mapping" mappableDataElement="//@packagedElement.7" elementURI=""record_message"" dataResourceMapping="//@packagedElement.11"> + <parameterMapping parameterURI=""session_id"" parameter="//@packagedElement.7/@member.0"/> + </packagedElement> + <packagedElement xsi:type="tdl:DataElementMapping" name="REQUEST_mapping" mappableDataElement="//@packagedElement.8" elementURI=""template_message_request"" dataResourceMapping="//@packagedElement.11"/> + <packagedElement xsi:type="tdl:DataElementMapping" name="RESPONSE_mapping" mappableDataElement="//@packagedElement.9" elementURI=""template_response"" dataResourceMapping="//@packagedElement.11"/> + <packagedElement xsi:type="tdl:DataElementMapping" name="MESSAGE_mapping" mappableDataElement="//@packagedElement.10" elementURI=""template_message"" dataResourceMapping="//@packagedElement.11"/> + <packagedElement xsi:type="tdl:DataResourceMapping" name="RUNTIME_MAPPING" resourceURI=""runtime://sessions/""/> + <packagedElement xsi:type="tdl:DataElementMapping" name="SESSION_ID_1_mapping" mappableDataElement="//@packagedElement.5" elementURI=""id_1"" dataResourceMapping="//@packagedElement.16"/> + <packagedElement xsi:type="tdl:DataElementMapping" name="SESSION_ID_2_mapping" mappableDataElement="//@packagedElement.6" elementURI=""id_2"" dataResourceMapping="//@packagedElement.16"/> + <packagedElement xsi:type="tdl:GateType" name="defaultGT" dataType="//@packagedElement.7 //@packagedElement.4"/> + <packagedElement xsi:type="tdl:ComponentType" name="defaultCT"> + <gateInstance name="g" type="//@packagedElement.19"/> + </packagedElement> + <packagedElement xsi:type="tdl:TestConfiguration" name="defaultTC"> + <componentInstance name="UE" type="//@packagedElement.20"/> + <componentInstance name="SS" type="//@packagedElement.20" role="Tester"/> + <connection> + <endPoint component="//@packagedElement.21/@componentInstance.1" gate="//@packagedElement.20/@gateInstance.0"/> + <endPoint component="//@packagedElement.21/@componentInstance.0" gate="//@packagedElement.20/@gateInstance.0"/> + </connection> + </packagedElement> + <packagedElement xsi:type="tdl:TestDescription" name="exampleTD" testConfiguration="//@packagedElement.21"> + <behaviourDescription> + <behaviour xsi:type="tdl:CompoundBehaviour"> + <block> + <behaviour xsi:type="tdl:Message" sourceGate="//@packagedElement.21/@connection.0/@endPoint.0"> + <target targetGate="//@packagedElement.21/@connection.0/@endPoint.1"/> + <argument xsi:type="tdl:DataInstanceUse" dataInstance="//@packagedElement.8"/> + </behaviour> + <behaviour xsi:type="tdl:Message" sourceGate="//@packagedElement.21/@connection.0/@endPoint.1"> + <target targetGate="//@packagedElement.21/@connection.0/@endPoint.0"/> + <argument xsi:type="tdl:DataInstanceUse" dataInstance="//@packagedElement.9"> + <argument parameter="//@packagedElement.7/@member.0"> + <dataUse xsi:type="tdl:DataInstanceUse" dataInstance="//@packagedElement.5"/> + </argument> + </argument> + </behaviour> + <behaviour xsi:type="tdl:Message" sourceGate="//@packagedElement.21/@connection.0/@endPoint.0"> + <target targetGate="//@packagedElement.21/@connection.0/@endPoint.1"/> + <argument xsi:type="tdl:DataInstanceUse" dataInstance="//@packagedElement.10"> + <argument parameter="//@packagedElement.7/@member.0"> + <dataUse xsi:type="tdl:DataInstanceUse" dataInstance="//@packagedElement.5"/> + </argument> + </argument> + </behaviour> + <behaviour xsi:type="tdl:AlternativeBehaviour" testObjective="//@packagedElement.3"> + <block> + <behaviour xsi:type="tdl:Message" sourceGate="//@packagedElement.21/@connection.0/@endPoint.1"> + <target targetGate="//@packagedElement.21/@connection.0/@endPoint.0"/> + <argument xsi:type="tdl:DataInstanceUse" dataInstance="//@packagedElement.9"> + <argument parameter="//@packagedElement.7/@member.0"> + <dataUse xsi:type="tdl:DataInstanceUse" dataInstance="//@packagedElement.5"/> + </argument> + </argument> + </behaviour> + <behaviour xsi:type="tdl:VerdictAssignment"> + <verdict xsi:type="tdl:DataInstanceUse" dataInstance="//@packagedElement.1"/> + </behaviour> + </block> + <block> + <behaviour xsi:type="tdl:Message" sourceGate="//@packagedElement.21/@connection.0/@endPoint.1"> + <target targetGate="//@packagedElement.21/@connection.0/@endPoint.0"/> + <argument xsi:type="tdl:DataInstanceUse" dataInstance="//@packagedElement.9"> + <argument parameter="//@packagedElement.7/@member.0"> + <dataUse xsi:type="tdl:DataInstanceUse" dataInstance="//@packagedElement.6"/> + </argument> + </argument> + </behaviour> + <behaviour xsi:type="tdl:VerdictAssignment"> + <verdict xsi:type="tdl:DataInstanceUse" dataInstance="//@packagedElement.2"/> + </behaviour> + </block> + </behaviour> + </block> + </behaviour> + </behaviourDescription> + </packagedElement> + <packagedElement xsi:type="tdl:ComponentType" name="defaultCTwithVariable"> + <gateInstance name="g" type="//@packagedElement.19"/> + <variable name="v" dataType="//@packagedElement.7"/> + </packagedElement> + <packagedElement xsi:type="tdl:TestConfiguration" name="defaultTCwithVariables"> + <componentInstance name="UE" type="//@packagedElement.20"/> + <componentInstance name="SS" type="//@packagedElement.23" role="Tester"/> + <connection> + <endPoint component="//@packagedElement.24/@componentInstance.1" gate="//@packagedElement.23/@gateInstance.0"/> + <endPoint component="//@packagedElement.24/@componentInstance.0" gate="//@packagedElement.20/@gateInstance.0"/> + </connection> + </packagedElement> + <packagedElement xsi:type="tdl:TestDescription" name="exampleTD" testConfiguration="//@packagedElement.24"> + <behaviourDescription> + <behaviour xsi:type="tdl:CompoundBehaviour"> + <block> + <behaviour xsi:type="tdl:Message" sourceGate="//@packagedElement.24/@connection.0/@endPoint.0"> + <target targetGate="//@packagedElement.24/@connection.0/@endPoint.1"/> + <argument xsi:type="tdl:DataInstanceUse" dataInstance="//@packagedElement.8"/> + </behaviour> + <behaviour xsi:type="tdl:Message" sourceGate="//@packagedElement.24/@connection.0/@endPoint.1"> + <target targetGate="//@packagedElement.24/@connection.0/@endPoint.0"> + <valueAssignment variable="//@packagedElement.23/@variable.0"/> + </target> + <argument xsi:type="tdl:DataInstanceUse" dataInstance="//@packagedElement.9"/> + </behaviour> + <behaviour xsi:type="tdl:Message" sourceGate="//@packagedElement.24/@connection.0/@endPoint.0"> + <target targetGate="//@packagedElement.24/@connection.0/@endPoint.1"/> + <argument xsi:type="tdl:DataInstanceUse" dataInstance="//@packagedElement.10"> + <argument parameter="//@packagedElement.7/@member.0"> + <dataUse xsi:type="tdl:VariableUse" componentInstance="//@packagedElement.24/@componentInstance.1" variable="//@packagedElement.23/@variable.0"> + <reduction member="//@packagedElement.7/@member.0"/> + </dataUse> + </argument> + </argument> + </behaviour> + <behaviour xsi:type="tdl:AlternativeBehaviour" testObjective="//@packagedElement.3"> + <block> + <behaviour xsi:type="tdl:Message" sourceGate="//@packagedElement.24/@connection.0/@endPoint.1"> + <target targetGate="//@packagedElement.24/@connection.0/@endPoint.0"/> + <argument xsi:type="tdl:DataInstanceUse" dataInstance="//@packagedElement.9"> + <argument parameter="//@packagedElement.7/@member.0"> + <dataUse xsi:type="tdl:VariableUse" componentInstance="//@packagedElement.24/@componentInstance.1" variable="//@packagedElement.23/@variable.0"> + <reduction member="//@packagedElement.7/@member.0"/> + </dataUse> + </argument> + </argument> + </behaviour> + <behaviour xsi:type="tdl:VerdictAssignment"> + <verdict xsi:type="tdl:DataInstanceUse" dataInstance="//@packagedElement.1"/> + </behaviour> + </block> + <block> + <behaviour xsi:type="tdl:Message" sourceGate="//@packagedElement.24/@connection.0/@endPoint.1"> + <target targetGate="//@packagedElement.24/@connection.0/@endPoint.0"/> + <argument xsi:type="tdl:DataInstanceUse" dataInstance="//@packagedElement.9"/> + </behaviour> + <behaviour xsi:type="tdl:VerdictAssignment"> + <verdict xsi:type="tdl:DataInstanceUse" dataInstance="//@packagedElement.2"/> + </behaviour> + </block> + </behaviour> + </block> + </behaviour> + </behaviourDescription> + </packagedElement> +</tdl:Package>