Loading ItsMbr_TestCases.ttcn +40 −21 Original line number Diff line number Diff line Loading @@ -8,12 +8,15 @@ module ItsMbr_TestCases { import from LibCommon_DataStrings all; // LibIts import from ETSI_ITS_CDD language "ASN.1:1997" all; import from CAM_PDU_Descriptions language "ASN.1:1997" all; import from EtsiTs103759Core language "ASN.1:1997" all; import from EtsiTs103759BaseTypes language "ASN.1:1997" all; import from EtsiTs103759CommonObservations language "ASN.1:1997" all; import from EtsiTs103759AsrCam language "ASN.1:1997" all; import from Ieee1609Dot2BaseTypes language "ASN.1:1997" all; import from Ieee1609Dot2 language "ASN.1:1997" all; import from EtsiTs103097Module language "ASN.1:1997" all; // LibItsCommon import from LibItsCommon_TypesAndValues all; Loading Loading @@ -219,6 +222,7 @@ module ItsMbr_TestCases { var octetstring v_enc_cam; var EtsiTs103759Data v_misbehaviour_report_data; var Ieee1609Dot2Data v_ieee1609dot2_signed_and_encrypted_data; var Headers v_headers; var HttpMessage v_response; // Test control Loading Loading @@ -257,14 +261,21 @@ module ItsMbr_TestCases { { m_v2x_pdu_stream( c_ObsPdu_etsiGn, v_enc_cam, -, v_certificate v_enc_cam ) } )))); f_http_build_ma_request(v_misbehaviour_report_data, v_ieee1609dot2_signed_and_encrypted_data); f_http_send(v_ieee1609dot2_signed_and_encrypted_data); f_init_default_headers_list(-, "mbr_request", v_headers); httpPort.send( m_http_request( m_http_request_post( PICS_HTTP_POST_URI_MBR, v_headers, m_http_message_body_binary( m_binary_body_ieee1609dot2_data( v_ieee1609dot2_signed_and_encrypted_data ))))); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body Loading @@ -281,7 +292,7 @@ module ItsMbr_TestCases { } [] tc_ac.timeout { log("*** " & testcasename() & "INCONC: No response ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_inconc); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // End of 'altstep' statement Loading @@ -299,6 +310,7 @@ module ItsMbr_TestCases { var octetstring v_enc_cam; var EtsiTs103759Data v_misbehaviour_report_data; var Ieee1609Dot2Data v_ieee1609dot2_signed_and_encrypted_data; var Headers v_headers; var HttpMessage v_response; // Test control Loading Loading @@ -337,14 +349,21 @@ module ItsMbr_TestCases { { m_v2x_pdu_stream( c_ObsPdu_etsiGn, v_enc_cam, -, v_certificate v_enc_cam ) } )))); f_http_build_ma_request(v_misbehaviour_report_data, v_ieee1609dot2_signed_and_encrypted_data); f_http_send(v_ieee1609dot2_signed_and_encrypted_data); f_init_default_headers_list(-, "mbr_request", v_headers); httpPort.send( m_http_request( m_http_request_post( PICS_HTTP_POST_URI_MBR, v_headers, m_http_message_body_binary( m_binary_body_ieee1609dot2_data( v_ieee1609dot2_signed_and_encrypted_data ))))); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body Loading @@ -361,7 +380,7 @@ module ItsMbr_TestCases { } [] tc_ac.timeout { log("*** " & testcasename() & "INCONC: No response ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_inconc); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // End of 'altstep' statement Loading Loading @@ -437,7 +456,7 @@ module ItsMbr_TestCases { mw_geoNwShbPacket ))) { log("*** " & testcasename() & "INFO: CA message received ***"); f_sendUtMbrTrigger(c_CamTgt_SecurityCommon, c_Obs_Security_MessageIdIncWithHeaderInfo); f_sendUtMbrTrigger(c_CamTgt_SecurityCommon, c_ObsSecurity_MessageIdIncWithHeaderInfo); f_selfOrClientSyncAndVerdict(c_prDone, e_success); } [] tc_ac.timeout { Loading Loading @@ -602,7 +621,7 @@ module ItsMbr_TestCases { mw_geoNwShbPacket ))) { log("*** " & testcasename() & "INFO: CA message received ***"); f_sendUtMbrTrigger(c_CamTgt_SecurityCommon, c_Obs_Security_HeaderIncWithSecurityProfile); f_sendUtMbrTrigger(c_CamTgt_SecurityCommon, c_ObsSecurity_HeaderIncWithSecurityProfile); f_selfOrClientSyncAndVerdict(c_prDone, e_success); } [] tc_ac.timeout { Loading Loading @@ -767,7 +786,7 @@ module ItsMbr_TestCases { mw_geoNwShbPacket ))) { log("*** " & testcasename() & "INFO: CA message received ***"); f_sendUtMbrTrigger(c_CamTgt_SecurityCommon, c_Obs_Security_HeaderPsidIncWithCertificate); f_sendUtMbrTrigger(c_CamTgt_SecurityCommon, c_ObsSecurity_HeaderPsidIncWithCertificate); f_selfOrClientSyncAndVerdict(c_prDone, e_success); } [] tc_ac.timeout { Loading Loading @@ -932,7 +951,7 @@ module ItsMbr_TestCases { mw_geoNwShbPacket ))) { log("*** " & testcasename() & "INFO: CA message received ***"); f_sendUtMbrTrigger(c_CamTgt_SecurityCommon, c_Obs_Security_MessageIncWithSsp); f_sendUtMbrTrigger(c_CamTgt_SecurityCommon, c_ObsSecurity_MessageIncWithSsp); f_selfOrClientSyncAndVerdict(c_prDone, e_success); } [] tc_ac.timeout { Loading @@ -944,7 +963,7 @@ module ItsMbr_TestCases { // Test Body // Send CAM message with inconsistent speed value for (var integer i := 0; i < PX_REPEAT_INCONSISTENT_MESSAGE; i := i + 1) { v_inconsistantMessages[lengthof(v_inconsistantMessages)] := f_prepare_inconsistent_cam(cc_iutCert_A_NO_EMERGENCY_CONTAINER, -,-, -, -, -, -, -, true); v_inconsistantMessages[lengthof(v_inconsistantMessages)] := f_prepare_inconsistent_cam(cc_iutCert_A_NO_EMERGENCY_CONTAINER, -,-, -, -, -, -, true); } // End of 'for' statement log("InfoPort: ", InfoPortData: { data := v_inconsistantMessages }); infoPort.send(InfoPortData: { data := v_inconsistantMessages }); Loading Loading @@ -1097,7 +1116,7 @@ module ItsMbr_TestCases { mw_geoNwShbPacket ))) { log("*** " & testcasename() & "INFO: CA message received ***"); f_sendUtMbrTrigger(c_CamTgt_SecurityCommon, c_Obs_Security_HeaderTimeOutsideCertificateValidity); f_sendUtMbrTrigger(c_CamTgt_SecurityCommon, c_ObsSecurity_HeaderTimeOutsideCertificateValidity); f_selfOrClientSyncAndVerdict(c_prDone, e_success); } [] tc_ac.timeout { Loading Loading @@ -1262,7 +1281,7 @@ module ItsMbr_TestCases { mw_geoNwShbPacket ))) { log("*** " & testcasename() & "INFO: CA message received ***"); f_sendUtMbrTrigger(c_CamTgt_SecurityCommon, c_Obs_Security_HeaderTimeOutsideCertificateValidity); f_sendUtMbrTrigger(c_CamTgt_SecurityCommon, c_ObsSecurity_HeaderTimeOutsideCertificateValidity); f_selfOrClientSyncAndVerdict(c_prDone, e_success); } [] tc_ac.timeout { Loading Loading @@ -1339,8 +1358,8 @@ module ItsMbr_TestCases { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } // Validate MR content log("Validate MR content: ", match(v_etsiTs103759_data.report, mw_cam_specific_report(mw_asr_cam_report_security(m_mb_obs_cam_security_header_time_outside_certificate_validity, { mw_v2x_pdu_stream(1, substr(v_info_port_data.data[0].gnPacket.packet.payload, 4/*BTP layer*/, lengthof(v_info_port_data.data[0].gnPacket.packet.payload) - 4), PX_REPEAT_INCONSISTENT_MESSAGE - 1) }, {})))); if (not(match(v_etsiTs103759_data.report, mw_cam_specific_report(mw_asr_cam_report_security(m_mb_obs_cam_security_header_time_outside_certificate_validity, { mw_v2x_pdu_stream(1, substr(v_info_port_data.data[0].gnPacket.packet.payload, 4/*BTP layer*/, lengthof(v_info_port_data.data[0].gnPacket.packet.payload) - 4), PX_REPEAT_INCONSISTENT_MESSAGE - 1) }, {}))))) { log("Validate MR content: ", match(v_etsiTs103759_data.report, mw_cam_specific_report(mw_asr_cam_report_security(m_mb_obs_cam_security_message_location_outside_certificate_validity, { mw_v2x_pdu_stream(1, substr(v_info_port_data.data[0].gnPacket.packet.payload, 4/*BTP layer*/, lengthof(v_info_port_data.data[0].gnPacket.packet.payload) - 4), PX_REPEAT_INCONSISTENT_MESSAGE - 1) }, {})))); if (not(match(v_etsiTs103759_data.report, mw_cam_specific_report(mw_asr_cam_report_security(m_mb_obs_cam_security_message_location_outside_certificate_validity, { mw_v2x_pdu_stream(1, substr(v_info_port_data.data[0].gnPacket.packet.payload, 4/*BTP layer*/, lengthof(v_info_port_data.data[0].gnPacket.packet.payload) - 4), PX_REPEAT_INCONSISTENT_MESSAGE - 1) }, {}))))) { log("*** " & testcasename() & ": FAIL: MR content mismatch ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { Loading Loading @@ -1448,7 +1467,7 @@ module ItsMbr_TestCases { // Test Body // Send CAM message with inconsistent speed value for (var integer i := 0; i < PX_REPEAT_INCONSISTENT_MESSAGE; i := i + 1) { f_sendGeoNetMessage(valueof(m_geoNwReq_linkLayerBroadcast(f_prepare_inconsistent_cam(false, true)))); f_sendGeoNetMessage(valueof(m_geoNwReq_linkLayerBroadcast(f_prepare_inconsistent_cam(-, false, true)))); f_sleepIgnoreDef(PX_REPEAT_INCONSISTENT_MESSAGE_TIMEOUT); } // End of 'for' statement log("*** " & testcasename() & ": PASS: MR triggered ***"); Loading Loading @@ -2045,7 +2064,7 @@ module ItsMbr_TestCases { } // End of group class1 group class2 group class2 { } // End of group class2 Loading ItsMbr_TestControl.ttcn +21 −3 Original line number Diff line number Diff line Loading @@ -10,15 +10,33 @@ module ItsMbr_TestControl { if (PICS_IUT_ITS_S) { execute(TC_MRS_ITSS_SEC_BV_001()); execute(TC_MRS_ITSS_SEC_BV_01()); if (PICS_DETECTOR_CAM_SECURITY) { execute(TC_MRS_ITSS_SEC_MESSAGES_CLASS1_CAM_BV_01()); execute(TC_MRS_ITSS_SEC_MESSAGES_CLASS1_CAM_BV_02()); execute(TC_MRS_ITSS_SEC_MESSAGES_CLASS1_CAM_BV_03()); execute(TC_MRS_ITSS_SEC_MESSAGES_CLASS1_CAM_BV_04()); execute(TC_MRS_ITSS_SEC_MESSAGES_CLASS1_CAM_BV_05()); execute(TC_MRS_ITSS_SEC_MESSAGES_CLASS1_CAM_BV_06()); } // PICS_DETECTOR_CAM_SECURITY if (PICS_DETECTOR_CAM_SPEED) { execute(TC_MRS_ITSS_MESSAGES_001()); execute(TC_MRS_ITSS_MESSAGES_CLASS1_CAM_001()); execute(TC_MRS_ITSS_MESSAGES_BV_01()); execute(TC_MRS_ITSS_MESSAGES_CLASS1_CAM_BV_01()); execute(TC_MRS_ITSS_MESSAGES_CLASS1_CAM_BV_02()); } // PICS_DETECTOR_CAM_SPEED if (PICS_DETECTOR_CAM_LONG_ACC) { execute(TC_MRS_ITSS_MESSAGES_CLASS1_CAM_BV_03()); } // PICS_DETECTOR_CAM_LONG_ACC } // PICS_IUT_ITS_S if (PICS_IUT_MA) { execute(TC_MRS_MA_SEC_BO_01()); } } // End of 'control' statement } // End of module ItsMbr_TestControl lib/LibItsMbr_Pics.ttcn +8 −0 Original line number Diff line number Diff line Loading @@ -2,8 +2,16 @@ module LibItsMbr_Pics { modulepar boolean PICS_IUT_ITS_S := true; modulepar boolean PICS_IUT_MA := true; modulepar boolean PICS_DETECTOR_CAM_SPEED := true; modulepar boolean PICS_DETECTOR_CAM_POSITION := true; modulepar boolean PICS_DETECTOR_CAM_LONG_ACC := true; modulepar boolean PICS_DETECTOR_CAM_SECURITY := true; modulepar charstring PICS_HTTP_POST_URI_MBR := "/misbehavior-report"; /** Loading lib/LibItsMbr_Templates.ttcn +21 −11 Original line number Diff line number Diff line Loading @@ -299,7 +299,7 @@ module LibItsMbr_Templates { nonV2xPduEvidence := p_nonV2xPduEvidence } // End of template mw_asr_cam_report_long_acc template (value) MbObsCamSpeed m_mb_obs_cam_long_acc_value_too_large := { template (value) MbObsCamLongAcc m_mb_obs_cam_long_acc_value_too_large := { obsId := c_ObsLongAcc_ValueTooLarge, obs := { longAcc_ValueTooLarge := NULL } } // End of template m_mb_obs_cam_long_acc_value_too_large Loading Loading @@ -338,30 +338,40 @@ module LibItsMbr_Templates { } // End of template mw_asr_cam_report_security template (value) MbObsCamSecurity m_mb_obs_cam_security_message_id_inc_with_header_info := { obsId := c_Obs_Security_MessageIdIncWithHeaderInfo, obs := { obs_Position_ChangeTooLarge := NULL } obsId := c_ObsSecurity_MessageIdIncWithHeaderInfo, obs := { security_MessageIdIncWithHeaderInfo := NULL } } // End of template m_mb_obs_cam_security_message_id_inc_with_header_info template (value) MbObsCamSecurity m_mb_obs_cam_security_header_inc_with_security_profile := { obsId := c_Obs_Security_HeaderIncWithSecurityProfile, obs := { obs_Position_ChangeTooLarge := NULL } obsId := c_ObsSecurity_HeaderIncWithSecurityProfile, obs := { security_HeaderIncWithSecurityProfile := NULL } } // End of template m_mb_obs_cam_security_header_inc_with_security_profile template (value) MbObsCamSecurity m_mb_obs_cam_security_header_psid_inc_with_certificate := { obsId := c_Obs_Security_HeaderPsidIncWithCertificate, obs := { obs_Position_ChangeTooLarge := NULL } obsId := c_ObsSecurity_HeaderPsidIncWithCertificate, obs := { security_HeaderPsidIncWithCertificate := NULL } } // End of template m_mb_obs_cam_security_header_psid_inc_with_certificate template (value) MbObsCamSecurity m_mb_obs_cam_security_message_inc_with_ssp := { obsId := c_Obs_Security_MessageIncWithSsp, obs := { obs_Position_ChangeTooLarge := NULL } obsId := c_ObsSecurity_MessageIncWithSsp, obs := { security_MessageIncWithSsp := NULL } } // End of template m_mb_obs_cam_security_message_inc_with_ssp template (value) MbObsCamSecurity m_mb_obs_cam_security_header_time_outside_certificate_validity := { obsId := c_Obs_Security_MessageIncWithSsp, obs := { obs_Position_ChangeTooLarge := NULL } obsId := c_ObsSecurity_HeaderTimeOutsideCertificateValidity, obs := { security_HeaderTimeOutsideCertificateValidity := NULL } } // End of template m_mb_obs_cam_security_header_time_outside_certificate_validity template (value) MbObsCamSecurity m_mb_obs_cam_security_message_location_outside_certificate_validity := { obsId := c_ObsSecurity_MessageLocationOutsideCertificateValidity, obs := { security_MessageLocationOutsideCertificateValidity := NULL } } // End of template m_mb_obs_cam_security_message_location_outside_certificate_validity template (value) MbObsCamSecurity m_mb_obs_cam_security_header_location_time_outside_certificate_validity := { obsId := c_ObsSecurity_HeaderLocationOutsideCertificateValidity, obs := { security_HeaderLocationOutsideCertificateValidity := NULL } } // End of template m_mb_obs_cam_security_header_location_time_outside_certificate_validity } // End of group security } // End of group camObservation Loading lib_system/LibItsMbr_Functions.ttcn +3 −3 Original line number Diff line number Diff line Loading @@ -700,11 +700,11 @@ module LibItsMbr_Functions { } // End of 'select'statement } else if (p_alter_cam_speed_drive_direction_reverse) { v_cam.cam.camParameters.highFrequencyContainer.basicVehicleContainerHighFrequency.speed.speedValue := PX_MBR_PASSENGER_CAR_SPEED_THRESHOLD + 1000; v_cam.cam.camParameters.highFrequencyContainer.basicVehicleContainerHighFrequency.driveDirection := backward1; v_cam.cam.camParameters.highFrequencyContainer.basicVehicleContainerHighFrequency.driveDirection := backward;//DriveDirection_speedLimiterEngaged_backward_; } else if (p_alter_cam_long_acc) { v_cam.cam.camParameters.highFrequencyContainer.basicVehicleContainerHighFrequency.longitudinalAcceleration := m_longitudinalAcceleration(PX_MBR_PASSENGER_CAR_LONG_ACC_THRESHOLD, ); v_cam.cam.camParameters.highFrequencyContainer.basicVehicleContainerHighFrequency.longitudinalAcceleration := valueof(m_longitudinalAcceleration(PX_MBR_PASSENGER_CAR_LONG_ACC_THRESHOLD, 102)); } else if (p_add_emergency_containers) { v_cam.cam.camParameters.specialVehicleContainer.emergencyContainer := m_emergencyContainer; v_cam.cam.camParameters.specialVehicleContainer.emergencyContainer := valueof(m_emergencyContainer); } // Encode CAM payload Loading Loading
ItsMbr_TestCases.ttcn +40 −21 Original line number Diff line number Diff line Loading @@ -8,12 +8,15 @@ module ItsMbr_TestCases { import from LibCommon_DataStrings all; // LibIts import from ETSI_ITS_CDD language "ASN.1:1997" all; import from CAM_PDU_Descriptions language "ASN.1:1997" all; import from EtsiTs103759Core language "ASN.1:1997" all; import from EtsiTs103759BaseTypes language "ASN.1:1997" all; import from EtsiTs103759CommonObservations language "ASN.1:1997" all; import from EtsiTs103759AsrCam language "ASN.1:1997" all; import from Ieee1609Dot2BaseTypes language "ASN.1:1997" all; import from Ieee1609Dot2 language "ASN.1:1997" all; import from EtsiTs103097Module language "ASN.1:1997" all; // LibItsCommon import from LibItsCommon_TypesAndValues all; Loading Loading @@ -219,6 +222,7 @@ module ItsMbr_TestCases { var octetstring v_enc_cam; var EtsiTs103759Data v_misbehaviour_report_data; var Ieee1609Dot2Data v_ieee1609dot2_signed_and_encrypted_data; var Headers v_headers; var HttpMessage v_response; // Test control Loading Loading @@ -257,14 +261,21 @@ module ItsMbr_TestCases { { m_v2x_pdu_stream( c_ObsPdu_etsiGn, v_enc_cam, -, v_certificate v_enc_cam ) } )))); f_http_build_ma_request(v_misbehaviour_report_data, v_ieee1609dot2_signed_and_encrypted_data); f_http_send(v_ieee1609dot2_signed_and_encrypted_data); f_init_default_headers_list(-, "mbr_request", v_headers); httpPort.send( m_http_request( m_http_request_post( PICS_HTTP_POST_URI_MBR, v_headers, m_http_message_body_binary( m_binary_body_ieee1609dot2_data( v_ieee1609dot2_signed_and_encrypted_data ))))); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body Loading @@ -281,7 +292,7 @@ module ItsMbr_TestCases { } [] tc_ac.timeout { log("*** " & testcasename() & "INCONC: No response ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_inconc); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // End of 'altstep' statement Loading @@ -299,6 +310,7 @@ module ItsMbr_TestCases { var octetstring v_enc_cam; var EtsiTs103759Data v_misbehaviour_report_data; var Ieee1609Dot2Data v_ieee1609dot2_signed_and_encrypted_data; var Headers v_headers; var HttpMessage v_response; // Test control Loading Loading @@ -337,14 +349,21 @@ module ItsMbr_TestCases { { m_v2x_pdu_stream( c_ObsPdu_etsiGn, v_enc_cam, -, v_certificate v_enc_cam ) } )))); f_http_build_ma_request(v_misbehaviour_report_data, v_ieee1609dot2_signed_and_encrypted_data); f_http_send(v_ieee1609dot2_signed_and_encrypted_data); f_init_default_headers_list(-, "mbr_request", v_headers); httpPort.send( m_http_request( m_http_request_post( PICS_HTTP_POST_URI_MBR, v_headers, m_http_message_body_binary( m_binary_body_ieee1609dot2_data( v_ieee1609dot2_signed_and_encrypted_data ))))); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body Loading @@ -361,7 +380,7 @@ module ItsMbr_TestCases { } [] tc_ac.timeout { log("*** " & testcasename() & "INCONC: No response ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_inconc); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // End of 'altstep' statement Loading Loading @@ -437,7 +456,7 @@ module ItsMbr_TestCases { mw_geoNwShbPacket ))) { log("*** " & testcasename() & "INFO: CA message received ***"); f_sendUtMbrTrigger(c_CamTgt_SecurityCommon, c_Obs_Security_MessageIdIncWithHeaderInfo); f_sendUtMbrTrigger(c_CamTgt_SecurityCommon, c_ObsSecurity_MessageIdIncWithHeaderInfo); f_selfOrClientSyncAndVerdict(c_prDone, e_success); } [] tc_ac.timeout { Loading Loading @@ -602,7 +621,7 @@ module ItsMbr_TestCases { mw_geoNwShbPacket ))) { log("*** " & testcasename() & "INFO: CA message received ***"); f_sendUtMbrTrigger(c_CamTgt_SecurityCommon, c_Obs_Security_HeaderIncWithSecurityProfile); f_sendUtMbrTrigger(c_CamTgt_SecurityCommon, c_ObsSecurity_HeaderIncWithSecurityProfile); f_selfOrClientSyncAndVerdict(c_prDone, e_success); } [] tc_ac.timeout { Loading Loading @@ -767,7 +786,7 @@ module ItsMbr_TestCases { mw_geoNwShbPacket ))) { log("*** " & testcasename() & "INFO: CA message received ***"); f_sendUtMbrTrigger(c_CamTgt_SecurityCommon, c_Obs_Security_HeaderPsidIncWithCertificate); f_sendUtMbrTrigger(c_CamTgt_SecurityCommon, c_ObsSecurity_HeaderPsidIncWithCertificate); f_selfOrClientSyncAndVerdict(c_prDone, e_success); } [] tc_ac.timeout { Loading Loading @@ -932,7 +951,7 @@ module ItsMbr_TestCases { mw_geoNwShbPacket ))) { log("*** " & testcasename() & "INFO: CA message received ***"); f_sendUtMbrTrigger(c_CamTgt_SecurityCommon, c_Obs_Security_MessageIncWithSsp); f_sendUtMbrTrigger(c_CamTgt_SecurityCommon, c_ObsSecurity_MessageIncWithSsp); f_selfOrClientSyncAndVerdict(c_prDone, e_success); } [] tc_ac.timeout { Loading @@ -944,7 +963,7 @@ module ItsMbr_TestCases { // Test Body // Send CAM message with inconsistent speed value for (var integer i := 0; i < PX_REPEAT_INCONSISTENT_MESSAGE; i := i + 1) { v_inconsistantMessages[lengthof(v_inconsistantMessages)] := f_prepare_inconsistent_cam(cc_iutCert_A_NO_EMERGENCY_CONTAINER, -,-, -, -, -, -, -, true); v_inconsistantMessages[lengthof(v_inconsistantMessages)] := f_prepare_inconsistent_cam(cc_iutCert_A_NO_EMERGENCY_CONTAINER, -,-, -, -, -, -, true); } // End of 'for' statement log("InfoPort: ", InfoPortData: { data := v_inconsistantMessages }); infoPort.send(InfoPortData: { data := v_inconsistantMessages }); Loading Loading @@ -1097,7 +1116,7 @@ module ItsMbr_TestCases { mw_geoNwShbPacket ))) { log("*** " & testcasename() & "INFO: CA message received ***"); f_sendUtMbrTrigger(c_CamTgt_SecurityCommon, c_Obs_Security_HeaderTimeOutsideCertificateValidity); f_sendUtMbrTrigger(c_CamTgt_SecurityCommon, c_ObsSecurity_HeaderTimeOutsideCertificateValidity); f_selfOrClientSyncAndVerdict(c_prDone, e_success); } [] tc_ac.timeout { Loading Loading @@ -1262,7 +1281,7 @@ module ItsMbr_TestCases { mw_geoNwShbPacket ))) { log("*** " & testcasename() & "INFO: CA message received ***"); f_sendUtMbrTrigger(c_CamTgt_SecurityCommon, c_Obs_Security_HeaderTimeOutsideCertificateValidity); f_sendUtMbrTrigger(c_CamTgt_SecurityCommon, c_ObsSecurity_HeaderTimeOutsideCertificateValidity); f_selfOrClientSyncAndVerdict(c_prDone, e_success); } [] tc_ac.timeout { Loading Loading @@ -1339,8 +1358,8 @@ module ItsMbr_TestCases { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } // Validate MR content log("Validate MR content: ", match(v_etsiTs103759_data.report, mw_cam_specific_report(mw_asr_cam_report_security(m_mb_obs_cam_security_header_time_outside_certificate_validity, { mw_v2x_pdu_stream(1, substr(v_info_port_data.data[0].gnPacket.packet.payload, 4/*BTP layer*/, lengthof(v_info_port_data.data[0].gnPacket.packet.payload) - 4), PX_REPEAT_INCONSISTENT_MESSAGE - 1) }, {})))); if (not(match(v_etsiTs103759_data.report, mw_cam_specific_report(mw_asr_cam_report_security(m_mb_obs_cam_security_header_time_outside_certificate_validity, { mw_v2x_pdu_stream(1, substr(v_info_port_data.data[0].gnPacket.packet.payload, 4/*BTP layer*/, lengthof(v_info_port_data.data[0].gnPacket.packet.payload) - 4), PX_REPEAT_INCONSISTENT_MESSAGE - 1) }, {}))))) { log("Validate MR content: ", match(v_etsiTs103759_data.report, mw_cam_specific_report(mw_asr_cam_report_security(m_mb_obs_cam_security_message_location_outside_certificate_validity, { mw_v2x_pdu_stream(1, substr(v_info_port_data.data[0].gnPacket.packet.payload, 4/*BTP layer*/, lengthof(v_info_port_data.data[0].gnPacket.packet.payload) - 4), PX_REPEAT_INCONSISTENT_MESSAGE - 1) }, {})))); if (not(match(v_etsiTs103759_data.report, mw_cam_specific_report(mw_asr_cam_report_security(m_mb_obs_cam_security_message_location_outside_certificate_validity, { mw_v2x_pdu_stream(1, substr(v_info_port_data.data[0].gnPacket.packet.payload, 4/*BTP layer*/, lengthof(v_info_port_data.data[0].gnPacket.packet.payload) - 4), PX_REPEAT_INCONSISTENT_MESSAGE - 1) }, {}))))) { log("*** " & testcasename() & ": FAIL: MR content mismatch ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { Loading Loading @@ -1448,7 +1467,7 @@ module ItsMbr_TestCases { // Test Body // Send CAM message with inconsistent speed value for (var integer i := 0; i < PX_REPEAT_INCONSISTENT_MESSAGE; i := i + 1) { f_sendGeoNetMessage(valueof(m_geoNwReq_linkLayerBroadcast(f_prepare_inconsistent_cam(false, true)))); f_sendGeoNetMessage(valueof(m_geoNwReq_linkLayerBroadcast(f_prepare_inconsistent_cam(-, false, true)))); f_sleepIgnoreDef(PX_REPEAT_INCONSISTENT_MESSAGE_TIMEOUT); } // End of 'for' statement log("*** " & testcasename() & ": PASS: MR triggered ***"); Loading Loading @@ -2045,7 +2064,7 @@ module ItsMbr_TestCases { } // End of group class1 group class2 group class2 { } // End of group class2 Loading
ItsMbr_TestControl.ttcn +21 −3 Original line number Diff line number Diff line Loading @@ -10,15 +10,33 @@ module ItsMbr_TestControl { if (PICS_IUT_ITS_S) { execute(TC_MRS_ITSS_SEC_BV_001()); execute(TC_MRS_ITSS_SEC_BV_01()); if (PICS_DETECTOR_CAM_SECURITY) { execute(TC_MRS_ITSS_SEC_MESSAGES_CLASS1_CAM_BV_01()); execute(TC_MRS_ITSS_SEC_MESSAGES_CLASS1_CAM_BV_02()); execute(TC_MRS_ITSS_SEC_MESSAGES_CLASS1_CAM_BV_03()); execute(TC_MRS_ITSS_SEC_MESSAGES_CLASS1_CAM_BV_04()); execute(TC_MRS_ITSS_SEC_MESSAGES_CLASS1_CAM_BV_05()); execute(TC_MRS_ITSS_SEC_MESSAGES_CLASS1_CAM_BV_06()); } // PICS_DETECTOR_CAM_SECURITY if (PICS_DETECTOR_CAM_SPEED) { execute(TC_MRS_ITSS_MESSAGES_001()); execute(TC_MRS_ITSS_MESSAGES_CLASS1_CAM_001()); execute(TC_MRS_ITSS_MESSAGES_BV_01()); execute(TC_MRS_ITSS_MESSAGES_CLASS1_CAM_BV_01()); execute(TC_MRS_ITSS_MESSAGES_CLASS1_CAM_BV_02()); } // PICS_DETECTOR_CAM_SPEED if (PICS_DETECTOR_CAM_LONG_ACC) { execute(TC_MRS_ITSS_MESSAGES_CLASS1_CAM_BV_03()); } // PICS_DETECTOR_CAM_LONG_ACC } // PICS_IUT_ITS_S if (PICS_IUT_MA) { execute(TC_MRS_MA_SEC_BO_01()); } } // End of 'control' statement } // End of module ItsMbr_TestControl
lib/LibItsMbr_Pics.ttcn +8 −0 Original line number Diff line number Diff line Loading @@ -2,8 +2,16 @@ module LibItsMbr_Pics { modulepar boolean PICS_IUT_ITS_S := true; modulepar boolean PICS_IUT_MA := true; modulepar boolean PICS_DETECTOR_CAM_SPEED := true; modulepar boolean PICS_DETECTOR_CAM_POSITION := true; modulepar boolean PICS_DETECTOR_CAM_LONG_ACC := true; modulepar boolean PICS_DETECTOR_CAM_SECURITY := true; modulepar charstring PICS_HTTP_POST_URI_MBR := "/misbehavior-report"; /** Loading
lib/LibItsMbr_Templates.ttcn +21 −11 Original line number Diff line number Diff line Loading @@ -299,7 +299,7 @@ module LibItsMbr_Templates { nonV2xPduEvidence := p_nonV2xPduEvidence } // End of template mw_asr_cam_report_long_acc template (value) MbObsCamSpeed m_mb_obs_cam_long_acc_value_too_large := { template (value) MbObsCamLongAcc m_mb_obs_cam_long_acc_value_too_large := { obsId := c_ObsLongAcc_ValueTooLarge, obs := { longAcc_ValueTooLarge := NULL } } // End of template m_mb_obs_cam_long_acc_value_too_large Loading Loading @@ -338,30 +338,40 @@ module LibItsMbr_Templates { } // End of template mw_asr_cam_report_security template (value) MbObsCamSecurity m_mb_obs_cam_security_message_id_inc_with_header_info := { obsId := c_Obs_Security_MessageIdIncWithHeaderInfo, obs := { obs_Position_ChangeTooLarge := NULL } obsId := c_ObsSecurity_MessageIdIncWithHeaderInfo, obs := { security_MessageIdIncWithHeaderInfo := NULL } } // End of template m_mb_obs_cam_security_message_id_inc_with_header_info template (value) MbObsCamSecurity m_mb_obs_cam_security_header_inc_with_security_profile := { obsId := c_Obs_Security_HeaderIncWithSecurityProfile, obs := { obs_Position_ChangeTooLarge := NULL } obsId := c_ObsSecurity_HeaderIncWithSecurityProfile, obs := { security_HeaderIncWithSecurityProfile := NULL } } // End of template m_mb_obs_cam_security_header_inc_with_security_profile template (value) MbObsCamSecurity m_mb_obs_cam_security_header_psid_inc_with_certificate := { obsId := c_Obs_Security_HeaderPsidIncWithCertificate, obs := { obs_Position_ChangeTooLarge := NULL } obsId := c_ObsSecurity_HeaderPsidIncWithCertificate, obs := { security_HeaderPsidIncWithCertificate := NULL } } // End of template m_mb_obs_cam_security_header_psid_inc_with_certificate template (value) MbObsCamSecurity m_mb_obs_cam_security_message_inc_with_ssp := { obsId := c_Obs_Security_MessageIncWithSsp, obs := { obs_Position_ChangeTooLarge := NULL } obsId := c_ObsSecurity_MessageIncWithSsp, obs := { security_MessageIncWithSsp := NULL } } // End of template m_mb_obs_cam_security_message_inc_with_ssp template (value) MbObsCamSecurity m_mb_obs_cam_security_header_time_outside_certificate_validity := { obsId := c_Obs_Security_MessageIncWithSsp, obs := { obs_Position_ChangeTooLarge := NULL } obsId := c_ObsSecurity_HeaderTimeOutsideCertificateValidity, obs := { security_HeaderTimeOutsideCertificateValidity := NULL } } // End of template m_mb_obs_cam_security_header_time_outside_certificate_validity template (value) MbObsCamSecurity m_mb_obs_cam_security_message_location_outside_certificate_validity := { obsId := c_ObsSecurity_MessageLocationOutsideCertificateValidity, obs := { security_MessageLocationOutsideCertificateValidity := NULL } } // End of template m_mb_obs_cam_security_message_location_outside_certificate_validity template (value) MbObsCamSecurity m_mb_obs_cam_security_header_location_time_outside_certificate_validity := { obsId := c_ObsSecurity_HeaderLocationOutsideCertificateValidity, obs := { security_HeaderLocationOutsideCertificateValidity := NULL } } // End of template m_mb_obs_cam_security_header_location_time_outside_certificate_validity } // End of group security } // End of group camObservation Loading
lib_system/LibItsMbr_Functions.ttcn +3 −3 Original line number Diff line number Diff line Loading @@ -700,11 +700,11 @@ module LibItsMbr_Functions { } // End of 'select'statement } else if (p_alter_cam_speed_drive_direction_reverse) { v_cam.cam.camParameters.highFrequencyContainer.basicVehicleContainerHighFrequency.speed.speedValue := PX_MBR_PASSENGER_CAR_SPEED_THRESHOLD + 1000; v_cam.cam.camParameters.highFrequencyContainer.basicVehicleContainerHighFrequency.driveDirection := backward1; v_cam.cam.camParameters.highFrequencyContainer.basicVehicleContainerHighFrequency.driveDirection := backward;//DriveDirection_speedLimiterEngaged_backward_; } else if (p_alter_cam_long_acc) { v_cam.cam.camParameters.highFrequencyContainer.basicVehicleContainerHighFrequency.longitudinalAcceleration := m_longitudinalAcceleration(PX_MBR_PASSENGER_CAR_LONG_ACC_THRESHOLD, ); v_cam.cam.camParameters.highFrequencyContainer.basicVehicleContainerHighFrequency.longitudinalAcceleration := valueof(m_longitudinalAcceleration(PX_MBR_PASSENGER_CAR_LONG_ACC_THRESHOLD, 102)); } else if (p_add_emergency_containers) { v_cam.cam.camParameters.specialVehicleContainer.emergencyContainer := m_emergencyContainer; v_cam.cam.camParameters.specialVehicleContainer.emergencyContainer := valueof(m_emergencyContainer); } // Encode CAM payload Loading