Loading ttcn/AtsDSlite/AtsDSLite_TestCases.ttcn3 +75 −7 Original line number Diff line number Diff line Loading @@ -15,6 +15,7 @@ module AtsDSLite_TestCases { import from LibIpv6_Interface_Templates { template m_generalIpv6_extHdr_data }; import from LibIpv6_Interface_Functions all; // AtsCommon import from AtsCommon_TypesAndValues all; Loading Loading @@ -655,7 +656,7 @@ module AtsDSLite_TestCases { alt { [] aftrPort.receive( mdw_generalIpv6_extHdr_dst_ipv4Payload( c_tunneledIpHdr, c_ipv4Hdr, PX_AFTR_GW_ADDRESS, // containing destination address indicating IPv6 AFTR GW address ?, ? // containing unchanged IPv4 packet Loading Loading @@ -742,9 +743,13 @@ module AtsDSLite_TestCases { // Local variables var integer v_host := 0; var template (value) TcpPacket v_tcpMsg := m_tcp_packet(50000, 80, { httpPayload := int2oct(0, PX_DS_MTU) }); //TODO adapt values var template (value) TcpPacket v_tcpMsg := m_tcp_packet(50000, 80, { httpPayload := int2oct(0, PX_DS_MTU) }); //leads to 2 fragments //TODO adapt values? var template(value) Ipv4Packet v_ipv4Packet := m_ipv4Packet_df(0, PX_HOST_V4_LIST_B4[v_host].srcAddress, PX_HOST_V4_LIST_B4[v_host].dstAddress, v_tcpMsg); var octetstring v_encTcpMsg := v_ipv4Packet.ipv4Payload.rawPacket; f_finalyzeIpv4Packet( v_ipv4Packet, v_ipv4Packet ); // Test control Loading @@ -756,8 +761,8 @@ module AtsDSLite_TestCases { // Test adapter configuration // Start all components vc_aftrComponent.start(f_TC_DSLITE_B4_FRAG_BV_001_aftr()); vc_hostComponents[0].start(f_TC_DSLITE_B4_FRAG_BV_001_host(v_host)); vc_aftrComponent.start(f_TC_DSLITE_B4_FRAG_BV_001_aftr(v_ipv4Packet)); vc_hostComponents[0].start(f_TC_DSLITE_B4_FRAG_BV_001_host(v_host, v_ipv4Packet)); // Test Body // Clause 'when': Loading @@ -774,9 +779,15 @@ module AtsDSLite_TestCases { group f_TC_DSLITE_B4_FRAG_BV_001 { function f_TC_DSLITE_B4_FRAG_BV_001_aftr() runs on AFTRComponent { type record of octetstring OctetstringList; function f_TC_DSLITE_B4_FRAG_BV_001_aftr(in template(value) Ipv4Packet p_ipv4Packet) runs on AFTRComponent { // Local variables var boolean v_firstReceived := false; var boolean v_lastReceived := false; var template(present) Ipv4Packet v_firstFragment; var template(present) Ipv4Packet v_lastFragment; // Preamble // Clause 'Initial conditions' Loading @@ -786,6 +797,60 @@ module AtsDSLite_TestCases { // Test Body // Clause 'when': //construct encapsulated fragments v_firstFragment := p_ipv4Packet; v_firstFragment.ipv4Hdr.totalLength := PX_DS_MTU; v_firstFragment.ipv4Hdr.hcs := ?; v_firstFragment.ipv4Hdr.moreFragsFlag := c_moreFragsFlag1; v_firstFragment.ipv4Payload.rawPacket := substr(p_ipv4Packet.ipv4Payload.rawPacket, 0, PX_DS_MTU - p_ipv4Packet.ipv4Hdr.headerLength); v_lastFragment := p_ipv4Packet; v_lastFragment.ipv4Hdr.totalLength := p_ipv4Packet.ipv4Hdr.headerLength + p_ipv4Packet.ipv4Hdr.headerLength; v_lastFragment.ipv4Hdr.hcs := ?; v_firstFragment.ipv4Hdr.moreFragsFlag := c_moreFragsFlag0; v_lastFragment.ipv4Hdr.fragmentOffset := PX_DS_MTU - p_ipv4Packet.ipv4Hdr.headerLength; v_lastFragment.ipv4Payload.rawPacket := substr(p_ipv4Packet.ipv4Payload.rawPacket, v_lastFragment.ipv4Hdr.fragmentOffset, p_ipv4Packet.ipv4Hdr.headerLength); //receive encapsulated fragments tc_ac.start; alt { [v_firstReceived==false] aftrPort.receive( mdw_generalIpv6_extHdr_dst_ipv4Payload( c_ipv4Hdr, PX_AFTR_GW_ADDRESS, // containing destination address indicating IPv6 AFTR GW address ?, v_firstFragment // containing fragment 1 )) { log("*** " & __SCOPE__ & ": First fragmented packet received. ***"); tc_ac.stop; v_firstReceived := true; if (v_lastReceived == false) { tc_ac.start; repeat; } } [v_lastReceived==false] aftrPort.receive( mdw_generalIpv6_extHdr_dst_ipv4Payload( c_ipv4Hdr, PX_AFTR_GW_ADDRESS, // containing destination address indicating IPv6 AFTR GW address ?, v_lastFragment // containing last fragment )) { log("*** " & __SCOPE__ & ": Last fragmented packet received. ***"); tc_ac.stop; v_lastReceived := true; if (v_firstReceived == false) { tc_ac.start; repeat; } } [] tc_ac.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); log("*** " & __SCOPE__ & ": INCONC: Message was not received in time. ***"); } } f_selfOrClientSyncAndVerdict(c_tbDone, e_success); log("*** " & __SCOPE__ & ": PASS: IUT correctly forwarded fragmented packets. ***"); // Postamble f_postamble_aftr(); Loading @@ -794,9 +859,10 @@ module AtsDSLite_TestCases { } // End of fucntion f_TC_DSLITE_B4_FRAG_BV_001_aftr function f_TC_DSLITE_B4_FRAG_BV_001_host(in integer p_hostId) runs on HostComponent { function f_TC_DSLITE_B4_FRAG_BV_001_host(in integer p_hostId, in template(value) Ipv4Packet p_ipv4Packet) runs on HostComponent { // Local variables var Ipv4Packet v_ipv4Packet; // Preamble // Clause 'Initial conditions' Loading @@ -806,6 +872,8 @@ module AtsDSLite_TestCases { // Test Body // Clause 'when': ipv4Port.send(p_ipv4Packet); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // Postamble f_postamble_host(); Loading Loading
ttcn/AtsDSlite/AtsDSLite_TestCases.ttcn3 +75 −7 Original line number Diff line number Diff line Loading @@ -15,6 +15,7 @@ module AtsDSLite_TestCases { import from LibIpv6_Interface_Templates { template m_generalIpv6_extHdr_data }; import from LibIpv6_Interface_Functions all; // AtsCommon import from AtsCommon_TypesAndValues all; Loading Loading @@ -655,7 +656,7 @@ module AtsDSLite_TestCases { alt { [] aftrPort.receive( mdw_generalIpv6_extHdr_dst_ipv4Payload( c_tunneledIpHdr, c_ipv4Hdr, PX_AFTR_GW_ADDRESS, // containing destination address indicating IPv6 AFTR GW address ?, ? // containing unchanged IPv4 packet Loading Loading @@ -742,9 +743,13 @@ module AtsDSLite_TestCases { // Local variables var integer v_host := 0; var template (value) TcpPacket v_tcpMsg := m_tcp_packet(50000, 80, { httpPayload := int2oct(0, PX_DS_MTU) }); //TODO adapt values var template (value) TcpPacket v_tcpMsg := m_tcp_packet(50000, 80, { httpPayload := int2oct(0, PX_DS_MTU) }); //leads to 2 fragments //TODO adapt values? var template(value) Ipv4Packet v_ipv4Packet := m_ipv4Packet_df(0, PX_HOST_V4_LIST_B4[v_host].srcAddress, PX_HOST_V4_LIST_B4[v_host].dstAddress, v_tcpMsg); var octetstring v_encTcpMsg := v_ipv4Packet.ipv4Payload.rawPacket; f_finalyzeIpv4Packet( v_ipv4Packet, v_ipv4Packet ); // Test control Loading @@ -756,8 +761,8 @@ module AtsDSLite_TestCases { // Test adapter configuration // Start all components vc_aftrComponent.start(f_TC_DSLITE_B4_FRAG_BV_001_aftr()); vc_hostComponents[0].start(f_TC_DSLITE_B4_FRAG_BV_001_host(v_host)); vc_aftrComponent.start(f_TC_DSLITE_B4_FRAG_BV_001_aftr(v_ipv4Packet)); vc_hostComponents[0].start(f_TC_DSLITE_B4_FRAG_BV_001_host(v_host, v_ipv4Packet)); // Test Body // Clause 'when': Loading @@ -774,9 +779,15 @@ module AtsDSLite_TestCases { group f_TC_DSLITE_B4_FRAG_BV_001 { function f_TC_DSLITE_B4_FRAG_BV_001_aftr() runs on AFTRComponent { type record of octetstring OctetstringList; function f_TC_DSLITE_B4_FRAG_BV_001_aftr(in template(value) Ipv4Packet p_ipv4Packet) runs on AFTRComponent { // Local variables var boolean v_firstReceived := false; var boolean v_lastReceived := false; var template(present) Ipv4Packet v_firstFragment; var template(present) Ipv4Packet v_lastFragment; // Preamble // Clause 'Initial conditions' Loading @@ -786,6 +797,60 @@ module AtsDSLite_TestCases { // Test Body // Clause 'when': //construct encapsulated fragments v_firstFragment := p_ipv4Packet; v_firstFragment.ipv4Hdr.totalLength := PX_DS_MTU; v_firstFragment.ipv4Hdr.hcs := ?; v_firstFragment.ipv4Hdr.moreFragsFlag := c_moreFragsFlag1; v_firstFragment.ipv4Payload.rawPacket := substr(p_ipv4Packet.ipv4Payload.rawPacket, 0, PX_DS_MTU - p_ipv4Packet.ipv4Hdr.headerLength); v_lastFragment := p_ipv4Packet; v_lastFragment.ipv4Hdr.totalLength := p_ipv4Packet.ipv4Hdr.headerLength + p_ipv4Packet.ipv4Hdr.headerLength; v_lastFragment.ipv4Hdr.hcs := ?; v_firstFragment.ipv4Hdr.moreFragsFlag := c_moreFragsFlag0; v_lastFragment.ipv4Hdr.fragmentOffset := PX_DS_MTU - p_ipv4Packet.ipv4Hdr.headerLength; v_lastFragment.ipv4Payload.rawPacket := substr(p_ipv4Packet.ipv4Payload.rawPacket, v_lastFragment.ipv4Hdr.fragmentOffset, p_ipv4Packet.ipv4Hdr.headerLength); //receive encapsulated fragments tc_ac.start; alt { [v_firstReceived==false] aftrPort.receive( mdw_generalIpv6_extHdr_dst_ipv4Payload( c_ipv4Hdr, PX_AFTR_GW_ADDRESS, // containing destination address indicating IPv6 AFTR GW address ?, v_firstFragment // containing fragment 1 )) { log("*** " & __SCOPE__ & ": First fragmented packet received. ***"); tc_ac.stop; v_firstReceived := true; if (v_lastReceived == false) { tc_ac.start; repeat; } } [v_lastReceived==false] aftrPort.receive( mdw_generalIpv6_extHdr_dst_ipv4Payload( c_ipv4Hdr, PX_AFTR_GW_ADDRESS, // containing destination address indicating IPv6 AFTR GW address ?, v_lastFragment // containing last fragment )) { log("*** " & __SCOPE__ & ": Last fragmented packet received. ***"); tc_ac.stop; v_lastReceived := true; if (v_firstReceived == false) { tc_ac.start; repeat; } } [] tc_ac.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); log("*** " & __SCOPE__ & ": INCONC: Message was not received in time. ***"); } } f_selfOrClientSyncAndVerdict(c_tbDone, e_success); log("*** " & __SCOPE__ & ": PASS: IUT correctly forwarded fragmented packets. ***"); // Postamble f_postamble_aftr(); Loading @@ -794,9 +859,10 @@ module AtsDSLite_TestCases { } // End of fucntion f_TC_DSLITE_B4_FRAG_BV_001_aftr function f_TC_DSLITE_B4_FRAG_BV_001_host(in integer p_hostId) runs on HostComponent { function f_TC_DSLITE_B4_FRAG_BV_001_host(in integer p_hostId, in template(value) Ipv4Packet p_ipv4Packet) runs on HostComponent { // Local variables var Ipv4Packet v_ipv4Packet; // Preamble // Clause 'Initial conditions' Loading @@ -806,6 +872,8 @@ module AtsDSLite_TestCases { // Test Body // Clause 'when': ipv4Port.send(p_ipv4Packet); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // Postamble f_postamble_host(); Loading