Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Eclipse Projects » Eclipse Titan » Porting the ETSI IPv6 test suite to Titan part III
Porting the ETSI IPv6 test suite to Titan part III [message #1783459] Tue, 13 March 2018 10:55
Elemer Lelik is currently offline Elemer LelikFriend
Messages: 807
Registered: January 2015
Senior Member
Dear all,

OK, let's go ahead and throw in AtsCommon:

#!/bin/bash

ln -s ../EtsiLibrary/LibCommon/LibCommon_AbstractData.ttcn     .
ln -s ../EtsiLibrary/LibCommon/LibCommon_BasicTypesAndValues.ttcn     .
ln -s ../EtsiLibrary/LibCommon/LibCommon_DataStrings.ttcn     .
ln -s ../EtsiLibrary/LibCommon/LibCommon_SyncExamples.ttcn     .
ln -s ../EtsiLibrary/LibCommon/LibCommon_Sync.ttcn     .
ln -s ../EtsiLibrary/LibCommon/LibCommon_TextStrings.ttcn     .
ln -s ../EtsiLibrary/LibCommon/LibCommon_Time.ttcn     .
ln -s ../EtsiLibrary/LibCommon/LibCommon_VerdictControl.ttcn     .


ln -s ../EtsiLibrary/LibScop/LibScop_CodecTests.ttcn  .
ln -s ../EtsiLibrary/LibScop/LibScop_Codec.ttcn  .
ln -s ../EtsiLibrary/LibScop/LibScop_Functions.ttcn  .
ln -s ../EtsiLibrary/LibScop/LibScop_Interface.ttcn  .
ln -s ../EtsiLibrary/LibScop/LibScop_Templates.ttcn  .
ln -s ../EtsiLibrary/LibScop/LibScop_TypesAndValues.ttcn  .


ln -s ../EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_CommonRfcs_Functions.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_CommonRfcs_Templates.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_CommonRfcs_TypesAndValues.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_ExternalFunctions.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_Interface_Functions.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_Interface_Templates.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_Interface_TypesAndValues.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_ModuleParameters.ttcn     .


ln -s ../EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2461NeighborDiscovery_Functions.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2461NeighborDiscovery_Templates.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2461NeighborDiscovery_TypesAndValues.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2462StatelessAddressAutoconf_Functions.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2462StatelessAddressAutoconf_Templates.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2462StatelessAddressAutoconf_TypesAndValues.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2463Icmpv6_Functions.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2463Icmpv6_Templates.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2463Icmpv6_TypesAndValues.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2894RouterRenumbering_Functions.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2894RouterRenumbering_TypesAndValues.ttcn     .

ln -s ../EtsiLibrary/LibIpv6/LibMobility/LibIpv6_Rfc3775Mipv6_Functions.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibMobility/LibIpv6_Rfc3775Mipv6_Templates.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibMobility/LibIpv6_Rfc3775Mipv6_TypesAndValues.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibMobility/LibIpv6_Rfc4068FastHandovers_Functions.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibMobility/LibIpv6_Rfc4068FastHandovers_Templates.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibMobility/LibIpv6_Rfc4068FastHandovers_TypesAndValues.ttcn     .

ln -s ../EtsiLibrary/LibIpv6/LibMultiRfcs/LibIpv6_MultiRfcs_Functions.ttcn     .



ln -s ../EtsiLibrary/LibIpv6/LibSec/LibIpv6_Rfc4306Ikev2_Functions.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibSec/LibIpv6_Rfc4306Ikev2_Templates.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibSec/LibIpv6_Rfc4306Ikev2_TypesAndValues.ttcn     .


ln -s ../EtsiLibrary/LibIpv6/LibTransitioning/LibIpv6_CommonTrans_Functions.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibTransitioning/LibIpv6_Rfc792Icmpv4_Functions.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibTransitioning/LibIpv6_Rfc792Icmpv4_Templates.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibTransitioning/LibIpv6_Rfc792Icmpv4_TypesAndValues.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibTransitioning/LibIpv6_Rfc826Arp_Functions.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibTransitioning/LibIpv6_Rfc826Arp_Templates.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibTransitioning/LibIpv6_Rfc826Arp_TypesAndValues.ttcn     .



ln -s ../EtsiLibrary/LibIpv6/LibUdp/LibIpv6_Rfc0768Udp_Templates.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibUdp/LibIpv6_Rfc0768Udp_TypesAndValues.ttcn .


ln -s ../EtsiAts/AtsIpv6/AtsCommon/AtsIpv6_Common_Functions.ttcn     .
ln -s ../EtsiAts/AtsIpv6/AtsCommon/AtsIpv6_Defaults.ttcn     .
ln -s ../EtsiAts/AtsIpv6/AtsCommon/AtsIpv6_ModuleParameters.ttcn     .
ln -s ../EtsiAts/AtsIpv6/AtsCommon/AtsIpv6_Postambles.ttcn     .
ln -s ../EtsiAts/AtsIpv6/AtsCommon/AtsIpv6_Preambles.ttcn     .
ln -s ../EtsiAts/AtsIpv6/AtsCommon/AtsIpv6_TestConfiguration.ttcn     .
ln -s ../EtsiAts/AtsIpv6/AtsCommon/AtsIpv6_TestConfiguration_TypesAndValues.ttcn     .
ln -s ../EtsiAts/AtsIpv6/AtsCommon/AtsIpv6_TestSystem.ttcn     . 

and the errors:


1. Component type compatibility
       AtsIpv6_Postambles.ttcn:375.3-476.5: In function definition `f_commonTestCleanup':
        AtsIpv6_Postambles.ttcn:386.3-392.51: In variable assignment:
         AtsIpv6_Postambles.ttcn:386.12-392.51: error: Runs on clause mismatch: A definition that runs on component type `@AtsIpv6_TestSystem.Ipv6Node' cannot call function `@LibIpv6_Rfc2461NeighborDiscovery_Functions.f_sendNbrAdv', which runs on `@LibIpv6_Interface_TypesAndValues.LibIpv6Node' 



the definitions in AtsIpv6_TestSystem:
type component Ipv6Node {
		// definitions required for LibIpv6COmp type compatibility
		port Ipv4Port ipv4Port;
		port Ipv6Port ipPort;
		port ArpPort arpPort;
		port CfPort cfPort;
		timer tc_ac:= PX_TAC;
		timer tc_noAc:= PX_TNOAC;
		timer tc_wait:= PX_TWAIT;
		timer tc_loop := PX_LOOP ;
		// parts needed for Client,SelfSyncComp type compatibility
		var StringStack v_stateStack:= c_initStringStack;
		port SyncPort syncSendPort;
		port SyncPort syncPort;
		timer tc_sync := PX_TSYNC_TIME_LIMIT;
		timer tc_shutDown := PX_TSHUT_DOWN_TIME_LIMIT;
		var Ipv6NodeVars vc_ipv6NodeVars := {
			replyToNbrSol := true
		};
		var MipSec vc_mobileSec;
		var Sad vc_sad;
		var IkeSad vc_ikeSad;
		var CleanupLevel vc_cleanup := e_cleanGla;
	}
	


	type component LibIpv6Node extends SelfSyncComp {
			port Ipv4Port ipv4Port;
			port Ipv6Port ipPort;
			port ArpPort arpPort;
			timer tc_ac:= PX_TAC;
			timer tc_noAc:= PX_TNOAC;
			timer tc_wait:= PX_TWAIT;
			var MipSec vc_mobileSec;
			var Sad vc_sad;
			var IkeSad vc_ikeSad;
			timer tc_loop := PX_LOOP ;
		/*	var StringStack v_stateStack:= c_initStringStack;
			port SyncPort syncSendPort;
			port SyncPort syncPort;
			timer tc_sync := PX_TSYNC_TIME_LIMIT;
		*/} 



so Ipv6Node has to be defined as below to get around the problem:
 type component Ipv6Node extends LibIpv6Node {
		// definitions required for LibIpv6COmp type compatibility
	/*	port Ipv4Port ipv4Port;
		port Ipv6Port ipPort;
		port ArpPort arpPort; */
		port CfPort cfPort;
	/*	timer tc_ac:= PX_TAC;
		timer tc_noAc:= PX_TNOAC;
		timer tc_wait:= PX_TWAIT; 
		timer tc_loop := PX_LOOP ; */
		// parts needed for Client,SelfSyncComp type compatibility
	/*	var StringStack v_stateStack:= c_initStringStack;
		port SyncPort syncSendPort;
		port SyncPort syncPort;
		timer tc_sync := PX_TSYNC_TIME_LIMIT;  */
		timer tc_shutDown := PX_TSHUT_DOWN_TIME_LIMIT;
		var Ipv6NodeVars vc_ipv6NodeVars := {
			replyToNbrSol := true
		};
	/*	var MipSec vc_mobileSec;
		var Sad vc_sad;
		var IkeSad vc_ikeSad; */
		var CleanupLevel vc_cleanup := e_cleanGla;
	}

2. Wrong template
AtsIpv6_Defaults.ttcn: In TTCN-3 module `AtsIpv6_Defaults':
 AtsIpv6_Defaults.ttcn:384.2-432.2: In altstep definition `a_mobile':
  AtsIpv6_Defaults.ttcn:395.5-415.61: In function instance:
   AtsIpv6_Defaults.ttcn:395.23-415.61: In actual parameter list of function `@LibIpv6_Rfc3775Mipv6_Functions.f_sendMipPrefixAdv':
    AtsIpv6_Defaults.ttcn:395.24-415.60: In parameter #1 for `p_mobilePrefixAdv':
     AtsIpv6_Defaults.ttcn:395.41-415.60: In actual parameter list of template `@LibIpv6_Rfc3775Mipv6_Templates.m_mobilePrefixAdv':
      AtsIpv6_Defaults.ttcn:407.11-415.59: In parameter #6 for `p_mobilePrefixInfoList':
       AtsIpv6_Defaults.ttcn:407.11-415.59: error: Type mismatch: a value or template of type `@LibIpv6_Rfc3775Mipv6_TypesAndValues.MipPrefixInfoList' was expected instead of `@LibIpv6_Rfc2461NeighborDiscovery_TypesAndValues.PrefixInfoList'
	 

in AtsIpv6_Defaults.ttcn the m_mobilePrefixInfoList_1Elem is wrongly used, this has to be investigated but for teh moment I have replaced it with a ?


[]	ipPort.receive(mw_mobilePrefixSol(?, ?)) -> value v_mobilePrefixSol {
				f_sendMipPrefixAdv(m_mobilePrefixAdv(
										c_routeHdr,
										v_mobilePrefixSol.ipv6Hdr.destinationAddress, 
										v_mobilePrefixSol.ipv6Hdr.sourceAddress,
										m_extHdrList_1Elem(
										m_extHdr_routingHeader(
											c_icmpHdr,
											c_routeHdrLen2,
											c_routeHdrType2,
											c_routeHdrSegmentsLeft1,
											m_routingHeaderData_homeAddress(p_paramsIut.mnHoa))),
										v_mobilePrefixSol.ipv6Payload.mobilePrefixSolMsg.identifier,
										m_mobilePrefixInfoList_1Elem(
											m_mobilePrefixInfo(
												p_paramsTn.prefixLength,
												c_lFlag1,
												c_aFlag1,
												c_rtAddrFlag1,
												c_infinitePrefixLifetime,
												c_infinitePrefixLifetime,
												v_mobilePrefixSol.ipv6Hdr.destinationAddress )))); 	 
	 



changed to
		[]	ipPort.receive(mw_mobilePrefixSol(?, ?)) -> value v_mobilePrefixSol {
				f_sendMipPrefixAdv(m_mobilePrefixAdv(
										c_routeHdr,
										v_mobilePrefixSol.ipv6Hdr.destinationAddress, 
										v_mobilePrefixSol.ipv6Hdr.sourceAddress,
										m_extHdrList_1Elem(
										m_extHdr_routingHeader(
											c_icmpHdr,
											c_routeHdrLen2,
											c_routeHdrType2,
											c_routeHdrSegmentsLeft1,
											m_routingHeaderData_homeAddress(p_paramsIut.mnHoa))),
										v_mobilePrefixSol.ipv6Payload.mobilePrefixSolMsg.identifier,
									/*	m_mobilePrefixInfoList_1Elem(
											m_mobilePrefixInfo(
												p_paramsTn.prefixLength,
												c_lFlag1,
												c_aFlag1,
												c_rtAddrFlag1,
												c_infinitePrefixLifetime,
												c_infinitePrefixLifetime,
												v_mobilePrefixSol.ipv6Hdr.destinationAddress   ))  */ ?  )); //FIXME!!!
												


3. Component type compatibility again

	
	AtsIpv6_Preambles.ttcn:185.2-190.2: In function definition `f_PR_ut_uta_init':
  AtsIpv6_Preambles.ttcn:188.3-39: In variable assignment:
   AtsIpv6_Preambles.ttcn:188.12-39: error: Runs on clause mismatch: A definition that runs on component type `@AtsIpv6_TestSystem.Ipv6Utc' cannot call function `@LibScop_Functions.f_requestIutInit', which runs on `@LibScop_Interface.ScopComp'
 

  type component Ipv6Utc {
		// definitions required for ScopComp type compatibility
		port ScopPort scopPort;
		port EncodedScopPort escopPort;
		timer tc_ac:= PX_TAC;
		timer tc_noAc:= PX_TNOAC;
		timer tc_wait:= PX_TWAIT;
		// parts needed for Client/SelfSyncComp type compatibility
		var StringStack v_stateStack:= c_initStringStack;
		port SyncPort syncSendPort;
		port SyncPort syncPort;
		timer tc_sync := PX_TSYNC_TIME_LIMIT;
		timer tc_shutDown := PX_TSHUT_DOWN_TIME_LIMIT;
	}


 

	type component ScopComp {
			var StringStack v_stateStack:= c_initStringStack;
			port SyncPort syncPort;
			port ScopPort  scopPort;
			port EncodedScopPort escopPort;
			timer tc_ac := PX_TAC;
			timer tc_noAc := PX_TNOAC;
			timer tc_wait := PX_TWAIT;
			timer tc_sync := PX_TSYNC_TIME_LIMIT;
			timer tc_shutDown := PX_TSHUT_DOWN_TIME_LIMIT;
		}

Ipv6Utc declaration changed to :
  type component Ipv6Utc extends ScopComp  {
		// definitions required for ScopComp type compatibility
	//	port ScopPort scopPort;
	//	port EncodedScopPort escopPort;
	//	timer tc_ac:= PX_TAC;
	//	timer tc_noAc:= PX_TNOAC;
	//	timer tc_wait:= PX_TWAIT;
		// parts needed for Client/SelfSyncComp type compatibility
	//	var StringStack v_stateStack:= c_initStringStack;
		port SyncPort syncSendPort;
	//	port SyncPort syncPort;
	//	timer tc_sync := PX_TSYNC_TIME_LIMIT;
	//	timer tc_shutDown := PX_TSHUT_DOWN_TIME_LIMIT;
	} 

4. Component type compatibility once more
	
 AtsIpv6_Preambles.ttcn:185.2-190.2: In function definition `f_PR_ut_uta_init':
  AtsIpv6_Preambles.ttcn:189.3-51: In function instance:
   AtsIpv6_Preambles.ttcn:189.3-51: error: Runs on clause mismatch: A definition that runs on component type `@AtsIpv6_TestSystem.Ipv6Utc' cannot call function `@LibCommon_Sync.f_clientSyncAndVerdictPreamble', which runs on `@LibCommon_Sync.ClientSyncComp'
   

 	type component ClientSyncComp {
					var StringStack v_stateStack:= c_initStringStack;
					port SyncPort syncPort;
					timer tc_sync := PX_TSYNC_TIME_LIMIT;
				}
				
		type component ScopComp {
			var StringStack v_stateStack:= c_initStringStack;
			port SyncPort syncPort;
			port ScopPort  scopPort;
			port EncodedScopPort escopPort;
			timer tc_ac := PX_TAC;
			timer tc_noAc := PX_TNOAC;
			timer tc_wait := PX_TWAIT;
			timer tc_sync := PX_TSYNC_TIME_LIMIT;
			timer tc_shutDown := PX_TSHUT_DOWN_TIME_LIMIT;
		} 


ScompComp redeclared as
			
		type component ScopComp extends ClientSyncComp {
			//var StringStack v_stateStack:= c_initStringStack;
			//port SyncPort syncPort;
			port ScopPort  scopPort;
			port EncodedScopPort escopPort;
			timer tc_ac := PX_TAC;
			timer tc_noAc := PX_TNOAC;
			timer tc_wait := PX_TWAIT;
		//	timer tc_sync := PX_TSYNC_TIME_LIMIT;
			timer tc_shutDown := PX_TSHUT_DOWN_TIME_LIMIT;
		} 

fixes it


5. Missing test port
	
In file included from AtsIpv6_TestSystem.hh:21:0,
                 from AtsIpv6_Common_Functions.hh:22,
                 from AtsIpv6_Common_Functions.cc:11:
AtsIpv6_TestConfiguration_TypesAndValues.hh:956:21: fatal error: CfPort.hh: No such file or directory
compilation terminated. 

the referred port declared as internal:

	
	type port CfPort message {
			inout
			CfMessage
		}  with {extension "internal"}





Now the mix compiles. Let's go ahead and add AtsCore:
	
 #!/bin/bash

ln -s ../EtsiLibrary/LibCommon/LibCommon_AbstractData.ttcn     .
ln -s ../EtsiLibrary/LibCommon/LibCommon_BasicTypesAndValues.ttcn     .
ln -s ../EtsiLibrary/LibCommon/LibCommon_DataStrings.ttcn     .
ln -s ../EtsiLibrary/LibCommon/LibCommon_SyncExamples.ttcn     .
ln -s ../EtsiLibrary/LibCommon/LibCommon_Sync.ttcn     .
ln -s ../EtsiLibrary/LibCommon/LibCommon_TextStrings.ttcn     .
ln -s ../EtsiLibrary/LibCommon/LibCommon_Time.ttcn     .
ln -s ../EtsiLibrary/LibCommon/LibCommon_VerdictControl.ttcn     .


ln -s ../EtsiLibrary/LibScop/LibScop_CodecTests.ttcn  .
ln -s ../EtsiLibrary/LibScop/LibScop_Codec.ttcn  .
ln -s ../EtsiLibrary/LibScop/LibScop_Functions.ttcn  .
ln -s ../EtsiLibrary/LibScop/LibScop_Interface.ttcn  .
ln -s ../EtsiLibrary/LibScop/LibScop_Templates.ttcn  .
ln -s ../EtsiLibrary/LibScop/LibScop_TypesAndValues.ttcn  .


ln -s ../EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_CommonRfcs_Functions.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_CommonRfcs_Templates.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_CommonRfcs_TypesAndValues.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_ExternalFunctions.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_Interface_Functions.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_Interface_Templates.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_Interface_TypesAndValues.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_ModuleParameters.ttcn     .


ln -s ../EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2461NeighborDiscovery_Functions.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2461NeighborDiscovery_Templates.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2461NeighborDiscovery_TypesAndValues.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2462StatelessAddressAutoconf_Functions.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2462StatelessAddressAutoconf_Templates.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2462StatelessAddressAutoconf_TypesAndValues.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2463Icmpv6_Functions.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2463Icmpv6_Templates.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2463Icmpv6_TypesAndValues.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2894RouterRenumbering_Functions.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2894RouterRenumbering_TypesAndValues.ttcn     .

ln -s ../EtsiLibrary/LibIpv6/LibMobility/LibIpv6_Rfc3775Mipv6_Functions.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibMobility/LibIpv6_Rfc3775Mipv6_Templates.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibMobility/LibIpv6_Rfc3775Mipv6_TypesAndValues.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibMobility/LibIpv6_Rfc4068FastHandovers_Functions.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibMobility/LibIpv6_Rfc4068FastHandovers_Templates.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibMobility/LibIpv6_Rfc4068FastHandovers_TypesAndValues.ttcn     .

ln -s ../EtsiLibrary/LibIpv6/LibMultiRfcs/LibIpv6_MultiRfcs_Functions.ttcn     .



ln -s ../EtsiLibrary/LibIpv6/LibSec/LibIpv6_Rfc4306Ikev2_Functions.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibSec/LibIpv6_Rfc4306Ikev2_Templates.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibSec/LibIpv6_Rfc4306Ikev2_TypesAndValues.ttcn     .


ln -s ../EtsiLibrary/LibIpv6/LibTransitioning/LibIpv6_CommonTrans_Functions.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibTransitioning/LibIpv6_Rfc792Icmpv4_Functions.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibTransitioning/LibIpv6_Rfc792Icmpv4_Templates.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibTransitioning/LibIpv6_Rfc792Icmpv4_TypesAndValues.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibTransitioning/LibIpv6_Rfc826Arp_Functions.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibTransitioning/LibIpv6_Rfc826Arp_Templates.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibTransitioning/LibIpv6_Rfc826Arp_TypesAndValues.ttcn     .



ln -s ../EtsiLibrary/LibIpv6/LibUdp/LibIpv6_Rfc0768Udp_Templates.ttcn     .
ln -s ../EtsiLibrary/LibIpv6/LibUdp/LibIpv6_Rfc0768Udp_TypesAndValues.ttcn .


ln -s ../EtsiAts/AtsIpv6/AtsCommon/AtsIpv6_Common_Functions.ttcn     .
ln -s ../EtsiAts/AtsIpv6/AtsCommon/AtsIpv6_Defaults.ttcn     .
ln -s ../EtsiAts/AtsIpv6/AtsCommon/AtsIpv6_ModuleParameters.ttcn     .
ln -s ../EtsiAts/AtsIpv6/AtsCommon/AtsIpv6_Postambles.ttcn     .
ln -s ../EtsiAts/AtsIpv6/AtsCommon/AtsIpv6_Preambles.ttcn     .
ln -s ../EtsiAts/AtsIpv6/AtsCommon/AtsIpv6_TestConfiguration.ttcn     .
ln -s ../EtsiAts/AtsIpv6/AtsCommon/AtsIpv6_TestConfiguration_TypesAndValues.ttcn     .
ln -s ../EtsiAts/AtsIpv6/AtsCommon/AtsIpv6_TestSystem.ttcn     .



ln -s ../EtsiAts/AtsIpv6/AtsCore/AtsIpv6_Core_TestControl.ttcn     .
ln -s ../EtsiAts/AtsIpv6/AtsCore/AtsIpv6_Core_Tp_Functions.ttcn     .
ln -s ../EtsiAts/AtsIpv6/AtsCore/AtsIpv6_GenerateIpv6Packets_Testcases.ttcn     .
ln -s ../EtsiAts/AtsIpv6/AtsCore/AtsIpv6_Icmpv6Functions_Testcases.ttcn     .
ln -s ../EtsiAts/AtsIpv6/AtsCore/AtsIpv6_Initialize_Testcases.ttcn     .
ln -s ../EtsiAts/AtsIpv6/AtsCore/AtsIpv6_Jumbograms_Testcases.ttcn     .
ln -s ../EtsiAts/AtsIpv6/AtsCore/AtsIpv6_NeighborDiscovery_Testcases.ttcn     .
ln -s ../EtsiAts/AtsIpv6/AtsCore/AtsIpv6_ProcessIpv6Packets_Testcases.ttcn     .
 


and the errors:


1. Wrong template

	
 AtsIpv6_Core_Tp_Functions.ttcn: In TTCN-3 module `AtsIpv6_Core_Tp_Functions':
 AtsIpv6_Core_Tp_Functions.ttcn:13541.2-13581.2: In function definition `f_TP_processRouterSolicitation_unspecSrcAddr':
  AtsIpv6_Core_Tp_Functions.ttcn:13554.3-13557.47: In variable assignment:
   AtsIpv6_Core_Tp_Functions.ttcn:13554.24-13557.47: In actual parameter list of function `@LibIpv6_Rfc2461NeighborDiscovery_Functions.f_sendRtSol':
    AtsIpv6_Core_Tp_Functions.ttcn:13554.26-13557.45: In parameter #1 for `p_rtrSol':
     AtsIpv6_Core_Tp_Functions.ttcn:13554.43-13557.45: In actual parameter list of template `@LibIpv6_Rfc2461NeighborDiscovery_Templates.m_rtSol_noExtHdr':
      AtsIpv6_Core_Tp_Functions.ttcn:13557.4-43: In parameter #3 for `p_rtSolOptions':
       AtsIpv6_Core_Tp_Functions.ttcn:13557.4-43: error: Type mismatch: a value or template of type `@LibIpv6_Rfc2461NeighborDiscovery_TypesAndValues.RtSolOptions' was expected instead of `@LibIpv6_Rfc2461NeighborDiscovery_TypesAndValues.NbrSolOptions'
 


in AtsIpv6_Core_Tp_Functions.ttcn the following code:
	
		v_ret := f_sendRtSol ( m_rtSol_noExtHdr (
			c_unspecifiedAdd,
			p_paramsIut.lla,
			m_nbrSolOpt_sllaOpt(p_paramsRt01.macUca) ) );


changed to:
				
		v_ret := f_sendRtSol ( m_rtSol_noExtHdr (
			c_unspecifiedAdd,
			p_paramsIut.lla,
			/*m_nbrSolOpt_sllaOpt(p_paramsRt01.macUca)*/  ? ) ); //FIXME!!!


2. Component type compatibility yet again



	 						
	AtsIpv6_Icmpv6Functions_Testcases.ttcn: In TTCN-3 module `AtsIpv6_Icmpv6Functions_Testcases':
 AtsIpv6_Icmpv6Functions_Testcases.ttcn:235.7-253.7: In testcase definition `TC_COR_1468_01':
  AtsIpv6_Icmpv6Functions_Testcases.ttcn:242.8-66: In function instance:
   AtsIpv6_Icmpv6Functions_Testcases.ttcn:242.8-66: error: Runs on clause mismatch: A definition that runs on component type `@AtsIpv6_TestSystem.Ipv6Node' cannot call function `@AtsIpv6_TestConfiguration.f_cfCore01WithUpperTesterUp', which runs on `@LibCommon_Sync.ServerSyncComp'


		
							type component ClientSyncComp  {
					var StringStack v_stateStack:= c_initStringStack;
					port SyncPort syncPort;
					timer tc_sync := PX_TSYNC_TIME_LIMIT;
				}

changed to:
					
					type component ClientSyncComp extends ServerSyncComp {
					var StringStack v_stateStack:= c_initStringStack;
					//port SyncPort syncPort;
					//timer tc_sync := PX_TSYNC_TIME_LIMIT;
				}

3. And some side-effects of the same compatibility
		
 LibScop_Interface.ttcn: In TTCN-3 module `LibScop_Interface':
 LibScop_Interface.ttcn:46.9-56.3: In type definition `ScopComp':
  LibScop_Interface.ttcn:46.14-56.3: While checking uniqueness of inherited component element definitions:
   LibScop_Interface.ttcn:55.10-48: error: Local definition `tc_shutDown' collides with definition inherited from component type `@LibCommon_Sync.ServerSyncComp'
   LibCommon_Sync.ttcn:84.12-50: note: Inherited definition of `tc_shutDown' is here
AtsIpv6_TestSystem.ttcn: In TTCN-3 module `AtsIpv6_TestSystem':
 AtsIpv6_TestSystem.ttcn:53.3-76.2: In type definition `Ipv6Node':
  AtsIpv6_TestSystem.ttcn:53.8-76.2: While checking uniqueness of inherited component element definitions:
   AtsIpv6_TestSystem.ttcn:68.9-47: error: Local definition `tc_shutDown' collides with definition inherited from component type `@LibCommon_Sync.ServerSyncComp'
   LibCommon_Sync.ttcn:84.12-50: note: Inherited definition of `tc_shutDown' is here 
 

remove tc_shutDown from the ScopComp and Ipv6Node declarations, as it is already inherited from parents:
	
   type component ScopComp extends ClientSyncComp {
			//var StringStack v_stateStack:= c_initStringStack;
			//port SyncPort syncPort;
			port ScopPort  scopPort;
			port EncodedScopPort escopPort;
			timer tc_ac := PX_TAC;
			timer tc_noAc := PX_TNOAC;
			timer tc_wait := PX_TWAIT;
		//	timer tc_sync := PX_TSYNC_TIME_LIMIT;
		//	timer tc_shutDown := PX_TSHUT_DOWN_TIME_LIMIT;
		}


 type component Ipv6Node extends LibIpv6Node {
		// definitions required for LibIpv6COmp type compatibility
	/*	port Ipv4Port ipv4Port;
		port Ipv6Port ipPort;
		port ArpPort arpPort; */
		port CfPort cfPort;
	/*	timer tc_ac:= PX_TAC;
		timer tc_noAc:= PX_TNOAC;
		timer tc_wait:= PX_TWAIT; 
		timer tc_loop := PX_LOOP ; */
		// parts needed for Client,SelfSyncComp type compatibility
	/*	var StringStack v_stateStack:= c_initStringStack;
		port SyncPort syncSendPort;
		port SyncPort syncPort;
		timer tc_sync := PX_TSYNC_TIME_LIMIT;  */
	//	timer tc_shutDown := PX_TSHUT_DOWN_TIME_LIMIT;
		var Ipv6NodeVars vc_ipv6NodeVars := {
			replyToNbrSol := true
		};
	/*	var MipSec vc_mobileSec;
		var Sad vc_sad;
		var IkeSad vc_ikeSad; */
		var CleanupLevel vc_cleanup := e_cleanGla;
	}


with this, everything should compile.



OK, so let's summarize now:

- the original code can be downloaded from http://www.ttcn-3.org/index.php/downloads/publicts/publicts-etsi/25-publicts-ipv6
- the "Titanized" , compileable code is attached to the first episode in the series:
https://www.eclipse.org/forums/index.php/t/1092000/

- we have seen three categories of errors that stopped compilation:

1. Errors connected to non-standardized parts (test ports, external functions, codecs)
2. Errors related to Titan non-conformities
If I'm not mistaken , there were two such categories : first , Titan does not acknowledge implicit type compatibility of components; compatibility
has to be obtained with aliases or extensions; second, Titan does not acknowledge aliases in port declarations.
3. Other, various faults in the original TTCN-3 code.



All right , we managed to compile, but that's only halfway: we need a code that can be executed; what's next?

The following things are outstanding and if someone wishes to use the test suite, will have to invest some energy into it:
- external functions will have to be written in C/C++ ; I think this is rather straightforward;
- code of IPv6 and IPv4 ports will have to be added; the associated port declarations will have to be redeclared external (by removing the "internal" declaration, d'oh )
I believe here the LANL2 port with appropriate translation to IPv6, IPV4 packets will fit nicely; It will take some experimentation though.
Also there's some internal coordination port that needs to be looked at.
- and the hardest part: the RAW codec instructions will have to be added and validated; I see here a quite large volume of work;
-to crown you efforts, a sensible config file will have to be assembled with all relevant test port parameters etc.

so anyone who thought will just lift the code off the shelf and just run it will be disappointed, but hey, I did not promise any freebies.
Anyhow, compared to the alternative of writing everything from scratch in some other language perhaps, a reasonable investment in the above
should appear attractive. But then again, it's your call.


I should mention here a useless fun fact: IPV6 conformance testing was one of the first applications of Titan, some fifteen plus years ago.

With that, I declare this issue closed. Thank you for your patience in joining me in this long and boring journey.

Best regards
Elemer




[Updated on: Thu, 15 March 2018 08:43]

Report message to a moderator

Previous Topic:Porting the ETSI IPv6 test suite to Titan part II
Next Topic:gRPC/ProtoBuff support in Titan
Goto Forum:
  


Current Time: Sun Sep 23 02:33:11 GMT 2018

Powered by FUDForum. Page generated in 0.01529 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top