Commit d9492d69 authored by berge's avatar berge
Browse files

Added TC_COR_1082_02 (STF320/mantis#367)

parent 014cad4f
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -44,6 +44,7 @@
			if ( PX_TEST_CAMPAIGN == e_testCampaignable and PX_CONFIGURATION_ID == e_cfCore01 ) { execute ( TC_COR_9030_01() ); }
				//Group 1.2.1.1 'Process Fragment Packets (PFP)'
				if ( PX_TEST_CAMPAIGN == e_testCampaignable and PX_CONFIGURATION_ID == e_cfCore01 ) { execute ( TC_COR_1082_01() ); }
				if ( PX_TEST_CAMPAIGN == e_testCampaignable and PX_CONFIGURATION_ID == e_cfCore01 ) { execute ( TC_COR_1082_02() ); }
				if ( PX_TEST_CAMPAIGN == e_testCampaignable and PX_CONFIGURATION_ID == e_cfCore01 ) { execute ( TC_COR_1083_01() ); }
				if ( PX_TEST_CAMPAIGN == e_testCampaignable and PX_CONFIGURATION_ID == e_cfCore01 ) { execute ( TC_COR_1085_01() ); }
				//Group 1.2.1.2 'Process Routing Header (PRH)'
+103 −3
Original line number Diff line number Diff line
@@ -1291,7 +1291,7 @@

		/*
		 * @desc 	Sends an Echo Request in two segments, the fragment id is
		 *			the same in both segments, so the packet must be discarded.
		 *			the same in both segments, so the packet must be accepted.
		 * @param	p_paramsRt01 Address Information of Testing Node
		 * @param	p_paramsIut Address Information of Node Under Test
		*/
@@ -1326,7 +1326,7 @@
				p_paramsRt01.lla,
				p_paramsIut.lla,
				c_defId,
				c_defSeqNo,
				c_defSeqNo + 1,
				c_8ZeroBytes ));

			// checksum (bug 0000112)				
@@ -1375,6 +1375,106 @@

		} // end f_TP_twoFragmentsWithSameId

		/*
		 * @desc 	Sends an Echo Request in three segments, the fragment id is
		 *			the same in both segments, so the packet must be accepted.
		 * @param	p_paramsRt01 Address Information of Testing Node
		 * @param	p_paramsIut Address Information of Node Under Test
		*/
		function f_TP_threeFragmentsWithSameId(template Ipv6NodeParams p_paramsRt01, template Ipv6NodeParams p_paramsIut)
		runs on Ipv6Node {

			var FncRetCode v_ret;
			var Ipv6Packet v_completeEchoRequest;
			var Ipv6Packet v_firstFragment;						
			
			// complete packet 
			v_completeEchoRequest := valueof(m_echoRequest_noExtHdr_data (
				p_paramsRt01.lla,
				p_paramsIut.lla,
				c_defId,
				c_defSeqNo,
				c_24ZeroBytes ));

			if(f_setExtensionHeaders( v_completeEchoRequest ) != e_success) {
				log(" **** f_TP_threeFragmentsWithSameId: Error when calculating length of extension headers ****");
			}					

			// First fragment
			v_firstFragment := valueof(m_echoRequest_extHdr_data (
				c_fragHdr,
				m_extHdrList_1Elem (
					m_extHdr_fragmentHeader (
						c_icmpHdr,
						c_fragOffset0,
						c_moreFragments,
						c_fragmentId1 ) ),
				p_paramsRt01.lla,
				p_paramsIut.lla,
				c_defId,
				c_defSeqNo + 1,
				c_8ZeroBytes ));

			v_firstFragment.ipv6Payload.echoRequestMsg.checksum := v_completeEchoRequest.ipv6Payload.echoRequestMsg.checksum;

			if(f_setExtensionHeaders( 	v_firstFragment ) != e_success) {
				log(" **** f_TP_threeFragmentsWithSameId: Error when calculating length of extension headers ****");
			}	

			//send
			ipPort.send(v_firstFragment);			

			//Second fragment
			f_sendGeneralIpv6 (
				m_generalIpv6_extHdr_data (
					c_fragHdr,
					p_paramsRt01.lla,
					p_paramsIut.lla,
					m_extHdrList_1Elem (
						m_extHdr_fragmentHeader (
							c_noNextHdr,
							c_fragOffset2,
							c_moreFragments,
							c_fragmentId1 ) ),
					c_8ZeroBytes ) );

			//Third fragment
			f_sendGeneralIpv6 (
				m_generalIpv6_extHdr_data (
					c_fragHdr,
					p_paramsRt01.lla,
					p_paramsIut.lla,
					m_extHdrList_1Elem (
						m_extHdr_fragmentHeader (
							c_noNextHdr,
							c_fragOffset3,
							c_noMoreFragments,
							c_fragmentId1 ) ),
					c_8ZeroBytes ) );

			// receive Echo Reply (bug 0000113)
			tc_ac.start;
			alt {
				[] ipPort.receive ( mw_echoReply_noExtHdr_data (
						p_paramsIut.lla,
						p_paramsRt01.lla,
						c_defId,
						c_defSeqNo,
						c_24ZeroBytes) ) {
					tc_ac.stop;
					v_ret := e_success;
				}
				[] tc_ac.timeout {
					log(" **** f_TP_threeFragmentsWithSameId: Echo Reply not received ****");
					v_ret := e_error;
				}				
			}// end alt

			f_selfOrClientSyncAndVerdict(c_tbDone, v_ret);

		} // end f_TP_threeFragmentsWithSameId


		/*
		 * @desc 	Sends the first segment of a fragmented Echo Request.
		 *			Since the last segment is not sent, a Time Exceeded
+30 −0
Original line number Diff line number Diff line
@@ -212,6 +212,36 @@ module AtsIpv6_ProcessIpv6Packets_Testcases {

				} // end TC_COR_1082_01

				/*
				 * @desc	Tests acceptance of (three) correctly fragmented packets.
				 *			Uses test configuration 0.
				*/
				testcase TC_COR_1082_02() runs on Ipv6Node system NodeTestAdapter {
					//Variables
					var CfMessage v_cfMsg;

					//Configuration
					f_cfCore01Up(v_cfMsg);

					activate(a_tn_nut(v_cfMsg, v_cfMsg.paramsRt01, v_cfMsg.paramsIut));

					//Preamble
					f_PR_tn_nut(v_cfMsg, e_cleanGla, v_cfMsg.paramsRt01, v_cfMsg.paramsIut);

					// test body
					f_TP_threeFragmentsWithSameId(
						v_cfMsg.paramsRt01,
						v_cfMsg.paramsIut);

					// postamble
					f_PO_tn_nut(v_cfMsg, c_cleanOnlyLla, v_cfMsg.paramsRt01, v_cfMsg.paramsIut);

					deactivate;

					f_cfPtcDown();

				} // end TC_COR_1082_02

				/*
				 * @desc	Tests reaction of interrupted receipt of fragmented packets.
				 *			Uses test configuration 0.