diff --git a/ItsPki_TestCases.ttcn b/ItsPki_TestCases.ttcn index 2856597f8bd8a466367c98594d2e63ded90ba06c..a54732c172530e1f28b99d66650f711e8b67f18b 100644 --- a/ItsPki_TestCases.ttcn +++ b/ItsPki_TestCases.ttcn @@ -808,13 +808,13 @@ module ItsPki_TestCases { tc_noac.start; alt { [] geoNetworkingPort.receive { - log("No CA message expected"); + log("*** " & testcasename() & "itss: FAIL: Unexpected GeoNet message received ***"); f_selfOrClientSyncAndVerdict(c_prDone, e_error); } [] tc_noac.timeout { - log("*** " & testcasename() & ": INFO: No CA message received ***"); + log("*** " & testcasename() & "itss: INFO: No GeoNet message received. Continue ***"); f_selfOrClientSyncAndVerdict(c_prDone, e_success); - } + } } // End of 'alt' statement // Test Body @@ -826,18 +826,18 @@ module ItsPki_TestCases { log("*** " & testcasename() & "itss: INFO: IUT is in enrolment state ***"); } [] tc_ac.timeout { - log("*** " & testcasename() & ": DBG: IUT state update not recieved ***"); + log("*** " & testcasename() & "itss: DBG: IUT state update not recieved. Assuming it was OK... ***"); //f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // End of 'alt' statement tc_noac.start; alt { [] geoNetworkingPort.receive { - log("No CA message expected"); + log("*** " & testcasename() & "itss: FAIL: Unexpected GeoNet message received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_noac.timeout { - log("*** " & testcasename() & ": PASS: Enrolment trigger sent succesfully ***"); + log("*** " & testcasename() & "itss: PASS: Enrolment trigger sent succesfully ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } } // End of 'alt' statement @@ -1136,13 +1136,13 @@ module ItsPki_TestCases { tc_noac.start; alt { [] geoNetworkingPort.receive { - log("No CA message expected"); + log("*** " & testcasename() & "_itss: ERROR: Unexpected GeoNet message received ***"); f_selfOrClientSyncAndVerdict(c_prDone, e_error); } [] tc_noac.timeout { // Trigger the first enrolment + log("*** " & testcasename() & "_itss: INFO: No GeoNet message received. Continue ***"); f_sendUtTriggerEnrolmentRequestPrimitive(); - log("*** " & testcasename() & "_itss: INFO: No CA message received ***"); f_selfOrClientSyncAndVerdict(c_prDone, e_success); } } // End of 'alt' statement @@ -1156,7 +1156,7 @@ module ItsPki_TestCases { log("*** " & testcasename() & "_itss: INFO: IUT is in enrolment state ***"); } [] tc_ac.timeout { - log("*** " & testcasename() & "_itss: DBG: IUT state update not recieved ***"); + log("*** " & testcasename() & "_itss: DBG: IUT state update not recieved. Assuming it was OK... ***"); //f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // End of 'alt' statement @@ -1879,9 +1879,9 @@ module ItsPki_TestCases { // Start components if(p_itss_state == c_stEnrolled) { - v_itss.start(f_TC_SECPKI_ITSS_ENR_01_BV_itss()); - } else { v_itss.start(f_TC_SECPKI_ITSS_ENR_03_BV_itss()); + } else { + v_itss.start(f_TC_SECPKI_ITSS_ENR_01_BV_itss()); } v_ea.start(f_TC_SECPKI_ITSS_ENR_08_BV_pki(p_itss_state)); @@ -2944,7 +2944,7 @@ module ItsPki_TestCases { f_cfMtcUp01(v_itss, v_ea); // Start component - v_itss.start(f_TC_SECPKI_ITSS_ENR_01_BV_itss()); // reuse from ENR group + v_itss.start(f_TC_SECPKI_ITSS_ENR_REP_01_BV_itss()); v_ea.start(f_TC_SECPKI_ITSS_ENR_REP_01_BV_pki()); // Synchronization @@ -2955,6 +2955,40 @@ module ItsPki_TestCases { } // End of testcase TC_SECPKI_ITSS_ENR_REP_01_BV + function f_TC_SECPKI_ITSS_ENR_REP_01_BV_itss() + runs on ItsPkiItss system ItsPkiItssSystem { + // Test component configuration + // vc_hashedId8ToBeUsed := PX_IUT_DEFAULT_CERTIFICATE; + vc_hashedId8ToBeUsed := ""; + f_cfUp_itss(); + + // Test adapter configuration + + // Preamble + // Initial state: No CAM shall be emitted + geoNetworkingPort.clear; + tc_noac.start; + alt { + [] geoNetworkingPort.receive { + log("*** " & testcasename() & "_itss: ERROR: Unexpected GeoNet message received ***"); + f_selfOrClientSyncAndVerdict(c_prDone, e_error); + } + [] tc_noac.timeout { + // Trigger the first enrolment + log("*** " & testcasename() & "_itss: INFO: No GeoNet message received. Continue ***"); + f_sendUtTriggerEnrolmentRequestPrimitive(-, -, -, -, -, false); + f_selfOrClientSyncAndVerdict(c_prDone, e_success); + } + } // End of 'alt' statement + + // Test Body + // Nothing to do in test body. Just wait for ENR repetition in PKI component + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + + // Postamble + f_cfDown_itss(); + } // End of function f_TC_SECPKI_ITSS_ENR_REP_01_BV_itss + function f_TC_SECPKI_ITSS_ENR_REP_01_BV_pki() runs on ItsPkiHttp system ItsPkiItssSystem { // Local variable var Headers v_headers; @@ -2977,7 +3011,7 @@ module ItsPki_TestCases { f_http_restart("inner_ec_request"); } [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: First enrolment request not received received ***"); + log("*** " & testcasename() & ": INCONC: First enrolment request not received ***"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout); } } // End of 'alt' statement @@ -3042,7 +3076,7 @@ module ItsPki_TestCases { f_cfMtcUp01(v_itss, v_ea); // Start component - v_itss.start(f_TC_SECPKI_ITSS_ENR_01_BV_itss()); + v_itss.start(f_TC_SECPKI_ITSS_ENR_REP_01_BV_itss()); v_ea.start(f_TC_SECPKI_ITSS_ENR_REP_02_BV_pki()); // Synchronization @@ -3154,7 +3188,7 @@ module ItsPki_TestCases { f_cfMtcUp01(v_itss, v_ea); // Start component - v_itss.start(f_TC_SECPKI_ITSS_ENR_01_BV_itss()); // reused from ENR group + v_itss.start(f_TC_SECPKI_ITSS_ENR_REP_01_BV_itss()); v_ea.start(f_TC_SECPKI_ITSS_ENR_REP_03_BV_pki()); // Synchronization @@ -3172,6 +3206,8 @@ module ItsPki_TestCases { var Headers v_headers; var HttpMessage v_request; var HttpMessage v_initial_request; + var integer v_rep_count := 0; + var integer c_rep_answer := 2; // answer to the n-th request repetition // Test component configuration f_cfHttpUp(PICS_TS_EA_CERTIFICATE_ID, PICS_TS_AA_CERTIFICATE_ID); @@ -3199,18 +3235,31 @@ module ItsPki_TestCases { // Test Body tc_ac.start; alt { - [] a_await_ec_http_request_from_iut(mw_http_ec_request_generic, v_request) { - log("*** " & testcasename() & ": EC repetition has been received ***"); - var HttpMessage v_response; - var integer v_result; - var InnerEcRequest v_inner_ec_request; - var InnerEcResponse v_inner_ec_response; - + // match initial request + [] a_await_ec_http_request_from_iut( + mw_http_ec_request_generic( + v_initial_request.request.body.binary_body.ieee1609dot2_data + ), + v_request + ) { + v_rep_count := v_rep_count + 1; tc_ac.stop; + if (v_rep_count < c_rep_answer) { + // skip repetition + log("*** " & testcasename() & ": ", v_rep_count, " EC repetition has been received. Continue ***"); + f_http_restart("inner_ec_request"); + tc_ac.start; + repeat; + } + + if(v_rep_count == c_rep_answer) { + // answer this repetition + log("*** " & testcasename() & ": ", v_rep_count, " EC repetition has been received. Respond ***"); + var InnerEcRequest v_inner_ec_request; + var InnerEcResponse v_inner_ec_response; + var HttpMessage v_response; + var integer v_result; - // Verify IUT response - // Generate response when requests are same - if (match(v_request, v_initial_request)) { f_verify_http_ec_request_from_iut_itss(v_request.request, v_headers, v_inner_ec_request, v_inner_ec_response, v_response, v_result); // Send response if (isvalue(v_response)) { @@ -3224,14 +3273,28 @@ module ItsPki_TestCases { } else { log("*** " & testcasename() & ": FAIL: Failed to verify EA an EnrolmentRequestMessage ***"); } - } else { - log("*** " & testcasename() & ": FAIL: Repetition request is different ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_error); - } - repeat; - } + repeat; + } + + // repetition request received after sending the response + log("*** " & testcasename() & ": FAIL: Repetition request received after response ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + + [] a_await_ec_http_request_from_iut( mw_http_ec_request_generic, v_request ) { + tc_ac.stop; + f_send_500_Internal_Error(v_headers); + log("*** " & testcasename() & ": INCONC: New request received during repetition period ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + [] tc_ac.timeout { - log("*** " & testcasename() & ": PASS: EC repetition request was not received ***"); + if(v_rep_count < c_rep_answer) { + log("*** " & testcasename() & ": INCONC: Timeout occured during the repetition period ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + + log("*** " & testcasename() & ": PASS: EC repetition request was not received after response ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } } // End of alt statment @@ -3280,7 +3343,7 @@ module ItsPki_TestCases { f_cfMtcUp01(v_itss, v_ea); // Start component - v_itss.start(f_TC_SECPKI_ITSS_ENR_01_BV_itss()); // reused from ENR group + v_itss.start(f_TC_SECPKI_ITSS_ENR_REP_01_BV_itss()); v_ea.start(f_TC_SECPKI_ITSS_ENR_REP_04_BV_pki()); // Synchronization @@ -3376,7 +3439,7 @@ module ItsPki_TestCases { f_cfMtcUp01(v_itss, v_ea); // Start component - v_itss.start(f_TC_SECPKI_ITSS_ENR_01_BV_itss()); // reused from ENR group + v_itss.start(f_TC_SECPKI_ITSS_ENR_REP_01_BV_itss()); v_ea.start(f_TC_SECPKI_ITSS_ENR_REP_05_BV_pki()); // Synchronization diff --git a/lib_system/LibItsPki_Functions.ttcn b/lib_system/LibItsPki_Functions.ttcn index 51af903083b414faec767a7e4d5ea1ca92d5b92b..501e91cf320ea0a0bbb6ddbbace8a184c8fb8ffb 100644 --- a/lib_system/LibItsPki_Functions.ttcn +++ b/lib_system/LibItsPki_Functions.ttcn @@ -562,7 +562,8 @@ module LibItsPki_Functions { in Oct1 p_enc_algorithm := '00'O, in octetstring p_private_key := ''O, in octetstring p_public_key_compressed := ''O, - in integer p_compressed_mode := 0 + in integer p_compressed_mode := 0, + in boolean p_check_result := true ) runs on ItsPkiItss { var TriggerEnrolmentRequest v_ut_trigger_enrolment_request; var octetstring v_compressed_public_key; @@ -576,23 +577,27 @@ module LibItsPki_Functions { utPort.clear; v_ut_trigger_enrolment_request := { p_canonical_id, p_enc_algorithm, p_private_key, v_compressed_public_key }; utPort.send(UtPkiTrigger: { triggerEnrolmentRequest := v_ut_trigger_enrolment_request }); - tc_ac.start; + tc_ac.start(20.0); alt { [] utPort.receive(UtPkiResults: { utPkiTriggerResult := true }) { tc_ac.stop; } [] utPort.receive(UtPkiResults: { utPkiTriggerResult := false }) { tc_ac.stop; - log("*** f_sendUtTriggerEnrolmentRequestPrimitive: ERROR: Received unexpected message ***"); + log("*** f_sendUtTriggerEnrolmentRequestPrimitive: ERROR: Unsuccessful trugger result received in UT port. Stop ***"); f_selfOrClientSyncAndVerdict("error", e_error); } [] utPort.receive { - log("*** f_sendUtTriggerEnrolmentRequestPrimitive: INFO: Some message received in UT Port ***"); + log("*** f_sendUtTriggerEnrolmentRequestPrimitive: INFO: Unexpected message received in UT Port. Keep waiting. ***"); repeat; } [] tc_ac.timeout { - log("*** f_sendAcPkiPrimitive: ERROR: Timeout while waiting for adapter control event result ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); + if(p_check_result){ + log("*** f_sendAcPkiPrimitive: ERROR: Timeout while waiting for adapter control event result ***"); + f_selfOrClientSyncAndVerdict("error", e_timeout); + }else{ + log("*** f_sendAcPkiPrimitive: INFO: Timeout while waiting for adapter control event result. Assume OK. ***"); + } } } // End of 'alt' statement } // End of function f_sendUtTriggerEnrolmentRequestPrimitive @@ -5352,16 +5357,17 @@ module LibItsPki_Functions { group PredefinedRequests { - template (present) HttpMessage mw_http_ec_request_generic := - mw_http_request( - mw_http_request_post( - PICS_HTTP_POST_URI_EC, - -, - mw_http_message_body_binary( - mw_binary_body_ieee1609dot2_data( - mw_enrolmentRequestMessage( - mw_encryptedData() - ))))); + template (present) HttpMessage mw_http_ec_request_generic ( + template (present) Ieee1609Dot2Data p_ieee1609dot2_data := mw_enrolmentRequestMessage(mw_encryptedData()) + ) := + mw_http_request( + mw_http_request_post( + PICS_HTTP_POST_URI_EC, + -, + mw_http_message_body_binary( + mw_binary_body_ieee1609dot2_data( p_ieee1609dot2_data) + + ))); } // End of predefined requests function f_await_ec_request_send_response(