From 773d859e1be6a6195bbcf01d09f28f71a8c16c28 Mon Sep 17 00:00:00 2001 From: Benedetta Arena Date: Thu, 12 Feb 2026 15:22:43 +0100 Subject: [PATCH 1/3] feat: add new inclusive test for purge entities --- .../Entities/PurgeEntities/D017_01_inc.robot | 53 +++++++++++++++ .../ContextInformationConsumption.resource | 67 +++++++++++++++++++ 2 files changed, 120 insertions(+) create mode 100644 TP/NGSI-LD/DistributedOperations/Provision/Entities/PurgeEntities/D017_01_inc.robot diff --git a/TP/NGSI-LD/DistributedOperations/Provision/Entities/PurgeEntities/D017_01_inc.robot b/TP/NGSI-LD/DistributedOperations/Provision/Entities/PurgeEntities/D017_01_inc.robot new file mode 100644 index 00000000..e0af7854 --- /dev/null +++ b/TP/NGSI-LD/DistributedOperations/Provision/Entities/PurgeEntities/D017_01_inc.robot @@ -0,0 +1,53 @@ +*** Settings *** +Documentation Verify that, when one has an inclusive registration on a Context Broker, one is able to purge entities based on type on both Context Broker and Context Source + +Resource ${EXECDIR}/resources/ApiUtils/Common.resource +Resource ${EXECDIR}/resources/ApiUtils/ContextInformationConsumption.resource +Resource ${EXECDIR}/resources/ApiUtils/ContextInformationProvision.resource +Resource ${EXECDIR}/resources/ApiUtils/ContextSourceDiscovery.resource +Resource ${EXECDIR}/resources/ApiUtils/ContextSourceRegistration.resource +Resource ${EXECDIR}/resources/AssertionUtils.resource +Resource ${EXECDIR}/resources/JsonUtils.resource +Resource ${EXECDIR}/resources/MockServerUtils.resource + +Test Setup Create Entity And Registration On The Context Broker And Start Context Source Mock Server +Test Teardown Delete Registrations And Stop Context Source Mock Server + +*** Variables *** +${entity_payload_filename} vehicle-simple-attributes.jsonld +${registration_payload_file_path} csourceRegistrations/context-source-registration-vehicle-redirection-ops.jsonld + +*** Test Cases *** +D017_01_inc Purge Entities On Both Context Broker And Context Source + [Documentation] Verify that, when one has an inclusive registration on a Context Broker, one is able to purge entities based on type on both Context Broker and Context Source + [Tags] since_v1.6.1 dist-ops 4_3_3 cf_06 additive-inclusive 4_3_6_2 5_6_21 + + Set Stub Reply DELETE /ngsi-ld/v1/entities?type=Vehicle 204 + ${response}= Purge Entities entity_types=Vehicle context=${ngsild_test_suite_context} + Check Response Status Code 204 ${response.status_code} + + ${stub_count}= Get Stub Count DELETE /ngsi-ld/v1/entities?type=Vehicle + Should Be True ${stub_count} > 0 + + ${response}= Retrieve Entity ${entity_id} + Check Response Status Code 404 ${response.status_code} + +*** Keywords *** +Create Entity And Registration On The Context Broker And Start Context Source Mock Server + ${entity_id}= Generate Random Vehicle Entity Id + Set Suite Variable ${entity_id} + ${response}= Create Entity ${entity_payload_filename} ${entity_id} + Check Response Status Code 201 ${response.status_code} + + ${registration_id}= Generate Random CSR Id + Set Suite Variable ${registration_id} + ${registration_payload}= Prepare Context Source Registration From File + ... ${registration_id} + ... ${registration_payload_file_path} + ${response1}= Create Context Source Registration With Return ${registration_payload} + Check Response Status Code 201 ${response1.status_code} + Start Context Source Mock Server + +Delete Registrations And Stop Context Source Mock Server + Delete Context Source Registration ${registration_id} + Stop Context Source Mock Server diff --git a/resources/ApiUtils/ContextInformationConsumption.resource b/resources/ApiUtils/ContextInformationConsumption.resource index c93c91f8..f05e451c 100755 --- a/resources/ApiUtils/ContextInformationConsumption.resource +++ b/resources/ApiUtils/ContextInformationConsumption.resource @@ -287,3 +287,70 @@ Retrieve Entity Types ... expected_status=any Output ${response} Retrieve Entity Types RETURN ${response} + +Purge Entities + [Arguments] + ... ${entity_types}=${EMPTY} + ... ${entity_ids}=${EMPTY} + ... ${attrs}=${EMPTY} + ... ${attrs_exclude}=${EMPTY} + ... ${entity_id_pattern}=${EMPTY} + ... ${q}=${EMPTY} + ... ${georel}=${EMPTY} + ... ${geometry}=${EMPTY} + ... ${geoproperty}=${EMPTY} + ... ${scopeq}=${EMPTY} + ... ${datasetId}=${EMPTY} + ... ${context}=${EMPTY} + ... ${broker_url}=${EMPTY} + ${attrs_length}= Get Length ${attrs} + ${attrs_exclude_length}= Get Length ${attrs_exclude} + ${entity_ids_length}= Get Length ${entity_ids} + ${entity_types_length}= Get Length ${entity_types} + &{headers}= Create Dictionary + &{params}= Create Dictionary + IF '${context}'!='' + ${context_link}= Build Context Link ${context} + Set To Dictionary ${headers} Link=${context_link} + END + IF ${attrs_length}>0 + Set To Dictionary ${params} attrs=${attrs} + END + IF ${attrs_exclude_length}>0 + Set To Dictionary ${params} excludedAttrs=${attrs_exclude} + END + IF ${entity_ids_length}>0 + Set To Dictionary ${params} id=${entity_ids} + END + IF ${entity_types_length}>0 + Set To Dictionary ${params} type=${entity_types} + END + IF '${entity_id_pattern}'!='' + Set To Dictionary ${params} idPattern=${entity_id_pattern} + END + IF '${q}'!='' + Set To Dictionary ${params} q=${q} + END + IF '${georel}'!='' + Set To Dictionary ${params} georel=${georel} + END + IF '${geometry}'!='' + Set To Dictionary ${params} geometry=${geometry} + END + IF '${geoproperty}'!='' + Set To Dictionary ${params} geoproperty=${geoproperty} + END + IF '${scopeq}'!='' + Set To Dictionary ${params} scopeQ=${scopeq} + END + IF '${datasetId}'!='' + Set To Dictionary ${params} datasetId=${datasetId} + END + ${final_url}= Set Variable If '${broker_url}' != '' ${broker_url} ${url} + ${response}= DELETE + ... url=${final_url}/${ENTITIES_ENDPOINT_PATH} + ... headers=${headers} + ... params=${params} + ... expected_status=any + Output ${response} Purge Entities + RETURN ${response} \ No newline at end of file -- GitLab From 2eb43f1d11f7fa6f96cea29a33654809ffe8ffc7 Mon Sep 17 00:00:00 2001 From: Benedetta Arena Date: Thu, 12 Feb 2026 16:41:02 +0100 Subject: [PATCH 2/3] feat: add new test for exclusive --- .../Entities/PurgeEntities/D017_01_exc.robot | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 TP/NGSI-LD/DistributedOperations/Provision/Entities/PurgeEntities/D017_01_exc.robot diff --git a/TP/NGSI-LD/DistributedOperations/Provision/Entities/PurgeEntities/D017_01_exc.robot b/TP/NGSI-LD/DistributedOperations/Provision/Entities/PurgeEntities/D017_01_exc.robot new file mode 100644 index 00000000..f1f39a64 --- /dev/null +++ b/TP/NGSI-LD/DistributedOperations/Provision/Entities/PurgeEntities/D017_01_exc.robot @@ -0,0 +1,59 @@ +*** Settings *** +Documentation Verify that, when one has an exclusive registration on a Context Broker, one is able to purge entities based on type on both Context Broker and Context Source + +Resource ${EXECDIR}/resources/ApiUtils/Common.resource +Resource ${EXECDIR}/resources/ApiUtils/ContextInformationConsumption.resource +Resource ${EXECDIR}/resources/ApiUtils/ContextInformationProvision.resource +Resource ${EXECDIR}/resources/ApiUtils/ContextSourceDiscovery.resource +Resource ${EXECDIR}/resources/ApiUtils/ContextSourceRegistration.resource +Resource ${EXECDIR}/resources/AssertionUtils.resource +Resource ${EXECDIR}/resources/JsonUtils.resource +Resource ${EXECDIR}/resources/MockServerUtils.resource + +Test Setup Create Entity And Registration On The Context Broker And Start Context Source Mock Server +Test Teardown Delete Registrations And Stop Context Source Mock Server + +*** Variables *** +${entity_payload_filename} vehicle-simple-attributes.jsonld +${speed_entity_filename} vehicle-speed-attribute.jsonld +${registration_payload_file_path} csourceRegistrations/context-source-registration-vehicle-speed-with-redirection-ops.jsonld + +*** Test Cases *** +D017_01_exc Purge Entities On Both Context Broker And Context Source + [Documentation] Verify that, when one has an exclusive registration on a Context Broker, one is able to purge entities based on type on both Context Broker and Context Source + [Tags] since_v1.6.1 dist-ops 4_3_3 cf_06 proxy-exclusive 4_3_6_3 5_6_21 + + Set Stub Reply POST /broker1/ngsi-ld/v1/entities 201 + ${speed_entity}= Create Entity ${speed_entity_filename} ${entity_id} + + Set Stub Reply DELETE /broker1/ngsi-ld/v1/entities?type=Vehicle 204 + ${response}= Purge Entities entity_types=Vehicle context=${ngsild_test_suite_context} + Check Response Status Code 204 ${response.status_code} + + ${stub_count}= Get Stub Count DELETE /broker1/ngsi-ld/v1/entities?type=Vehicle + Should Be True ${stub_count} > 0 + + ${response}= Retrieve Entity ${entity_id} + Check Response Status Code 404 ${response.status_code} + +*** Keywords *** +Create Entity And Registration On The Context Broker And Start Context Source Mock Server + ${entity_id}= Generate Random Vehicle Entity Id + Set Suite Variable ${entity_id} + ${response}= Create Entity ${entity_payload_filename} ${entity_id} local=true + Check Response Status Code 201 ${response.status_code} + + ${registration_id}= Generate Random CSR Id + Set Suite Variable ${registration_id} + ${registration_payload}= Prepare Context Source Registration From File + ... ${registration_id} + ... ${registration_payload_file_path} + ... endpoint=/broker1 + ... mode=exclusive + ${response1}= Create Context Source Registration With Return ${registration_payload} + Check Response Status Code 201 ${response1.status_code} + Start Context Source Mock Server + +Delete Registrations And Stop Context Source Mock Server + Delete Context Source Registration ${registration_id} + Stop Context Source Mock Server -- GitLab From 4f9b13579f7f397b06a976136dd8d37ecc28facf Mon Sep 17 00:00:00 2001 From: Benedetta Arena Date: Thu, 12 Feb 2026 17:23:12 +0100 Subject: [PATCH 3/3] feat: add test case for purging entities with redirect --- .../Entities/PurgeEntities/D017_01_red.robot | 72 +++++++++++++++++++ .../ContextInformationConsumption.resource | 2 +- 2 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 TP/NGSI-LD/DistributedOperations/Provision/Entities/PurgeEntities/D017_01_red.robot diff --git a/TP/NGSI-LD/DistributedOperations/Provision/Entities/PurgeEntities/D017_01_red.robot b/TP/NGSI-LD/DistributedOperations/Provision/Entities/PurgeEntities/D017_01_red.robot new file mode 100644 index 00000000..61adddbb --- /dev/null +++ b/TP/NGSI-LD/DistributedOperations/Provision/Entities/PurgeEntities/D017_01_red.robot @@ -0,0 +1,72 @@ +*** Settings *** +Documentation Verify that, when one has a redirect registration on a Context Broker, one is able to purge entities based on type on the Context Source + +Resource ${EXECDIR}/resources/ApiUtils/Common.resource +Resource ${EXECDIR}/resources/ApiUtils/ContextInformationConsumption.resource +Resource ${EXECDIR}/resources/ApiUtils/ContextInformationProvision.resource +Resource ${EXECDIR}/resources/ApiUtils/ContextSourceDiscovery.resource +Resource ${EXECDIR}/resources/ApiUtils/ContextSourceRegistration.resource +Resource ${EXECDIR}/resources/AssertionUtils.resource +Resource ${EXECDIR}/resources/JsonUtils.resource +Resource ${EXECDIR}/resources/MockServerUtils.resource + +Test Setup Create Entity And Registration On The Context Broker And Start Context Source Mock Server +Test Teardown Delete Registrations And Stop Context Source Mock Server + +*** Variables *** +${entity_payload_filename} vehicle-simple-attributes.jsonld +${registration_payload_file_path} csourceRegistrations/context-source-registration-vehicle-redirection-ops.jsonld + +*** Test Cases *** +D017_01_red Purge Entities On The Context Source + [Documentation] Verify that, when one has a redirect registration on a Context Broker, one is able to purge entities based on type on the Context Source + [Tags] since_v1.6.1 dist-ops 4_3_3 cf_06 proxy-redirect 4_3_6_3 5_6_21 + + Set Stub Reply POST /broker1/ngsi-ld/v1/entities 201 + Set Stub Reply POST /broker2/ngsi-ld/v1/entities 201 + ${response}= Create Entity ${entity_payload_filename} ${entity_id} + Check Response Status Code 201 ${response.status_code} + + Set Stub Reply DELETE /broker1/ngsi-ld/v1/entities?type=Vehicle 204 + Set Stub Reply DELETE /broker2/ngsi-ld/v1/entities?type=Vehicle 204 + ${response}= Purge Entities entity_types=Vehicle context=${ngsild_test_suite_context} + Check Response Status Code 204 ${response.status_code} + + ${stub_count}= Get Stub Count DELETE /broker1/ngsi-ld/v1/entities?type=Vehicle + Should Be True ${stub_count} > 0 + ${stub_count}= Get Stub Count DELETE /broker2/ngsi-ld/v1/entities?type=Vehicle + Should Be True ${stub_count} > 0 + + ${response}= Retrieve Entity ${entity_id} + Check Response Status Code 404 ${response.status_code} + +*** Keywords *** +Create Entity And Registration On The Context Broker And Start Context Source Mock Server + ${entity_id}= Generate Random Vehicle Entity Id + Set Suite Variable ${entity_id} + + ${registration_id1}= Generate Random CSR Id + Set Suite Variable ${registration_id1} + ${registration_payload}= Prepare Context Source Registration From File + ... ${registration_id1} + ... ${registration_payload_file_path} + ... endpoint=/broker1 + ... mode=redirect + ${response}= Create Context Source Registration With Return ${registration_payload} + Check Response Status Code 201 ${response.status_code} + + ${registration_id2}= Generate Random CSR Id + Set Suite Variable ${registration_id2} + ${registration_payload}= Prepare Context Source Registration From File + ... ${registration_id2} + ... ${registration_payload_file_path} + ... endpoint=/broker2 + ... mode=redirect + ${response}= Create Context Source Registration With Return ${registration_payload} + Check Response Status Code 201 ${response.status_code} + Start Context Source Mock Server + +Delete Registrations And Stop Context Source Mock Server + Delete Context Source Registration ${registration_id1} + Delete Context Source Registration ${registration_id2} + Stop Context Source Mock Server diff --git a/resources/ApiUtils/ContextInformationConsumption.resource b/resources/ApiUtils/ContextInformationConsumption.resource index f05e451c..9a4db457 100755 --- a/resources/ApiUtils/ContextInformationConsumption.resource +++ b/resources/ApiUtils/ContextInformationConsumption.resource @@ -348,7 +348,7 @@ Purge Entities END ${final_url}= Set Variable If '${broker_url}' != '' ${broker_url} ${url} ${response}= DELETE - ... url=${final_url}/${ENTITIES_ENDPOINT_PATH} + ... url=${final_url}${ENTITIES_ENDPOINT_PATH} ... headers=${headers} ... params=${params} ... expected_status=any -- GitLab