From ec279ec04eb37bd005f31d64d6767181986a2d66 Mon Sep 17 00:00:00 2001 From: Houcem Kacem Date: Wed, 20 Jan 2021 09:24:32 +0100 Subject: [PATCH 01/30] test: add http server from httpctrl to check notification behaviour --- .../NotificationBehaviour/037_01.robot | 44 +++++++++++++++++++ .../context-source-registration-sample.jsonld | 18 ++++++++ .../subscription-timeInterval-sample.jsonld | 21 +++++++++ requirements.txt | 1 + resources/ApiUtils.resource | 22 +++++++++- resources/HTTP.resource | 38 ++++++++++++++++ 6 files changed, 143 insertions(+), 1 deletion(-) create mode 100644 TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_01.robot create mode 100644 data/csourceRegistrations/context-source-registration-sample.jsonld create mode 100644 data/csourceSubscriptions/subscription-timeInterval-sample.jsonld create mode 100644 resources/HTTP.resource diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_01.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_01.robot new file mode 100644 index 00000000..373877d4 --- /dev/null +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_01.robot @@ -0,0 +1,44 @@ +*** Settings *** +Documentation Check that if the created context source registration subscription defines a timeInterval member, a cSourceNotification will be sent periodically, initially on subscription and when the time interval is reached +Resource ${EXECDIR}/resources/ApiUtils.resource +Resource ${EXECDIR}/resources/AssertionUtils.resource +Resource ${EXECDIR}/resources/JsonUtils.resource +Resource ${EXECDIR}/resources/HTTP.resource + +#Suite Setup Setup Initial Context Source Registrations +#Suite Teardown Delete Created Context Source Registrations + +*** Variable *** +${context_source_registration_id_prefix}= urn:ngsi-ld:ContextSourceRegistration: +${subscription_id_prefix}= urn:ngsi-ld:Subscription: +${context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-sample.jsonld +${subscription_payload_file_path}= csourceSubscriptions/subscription-timeInterval-sample.jsonld + +*** Test Case *** +Receive cSourceNotification Periodically + [Documentation] Check that you can create a minimal context source registration subscription + [Tags] mandatory + + Connect to broker + + # a notification will be sent to the endpoint mentionned in the subscription + ${subscription_id}= Generate Random Entity Id ${subscription_id_prefix} + ${subscription_payload}= Load Test Sample ${subscription_payload_file_path} ${subscription_id} + Create Context Source Registration Subscription ${subscription_payload} + ${context_source_registration_id}= Generate Random Entity Id ${context_source_registration_id_prefix} + ${context_source_registration_payload}= Load Test Sample ${context_source_registration_payload_file_path} ${context_source_registration_id} + Create Context Source Registration ${context_source_registration_payload} + + # When using the Notify broker keyword, a request will be received on 0.0.0.0:8085 + # Otherwise the Wait For Request will wait until timeout while the server is running on 0.0.0.0:8085 but not responsing to requests (with httpie) + #Notify broker + Wait for notification and validate it + Discconect from broker + + Set Suite Variable ${subscription_id} + Set Suite Variable ${context_source_registration_id} + +*** Keywords *** +Delete Created Context Source Registrations + Delete Context Source Registration ${context_source_registration_id} + Delete Context Source Registration Subscription ${subscription_id} diff --git a/data/csourceRegistrations/context-source-registration-sample.jsonld b/data/csourceRegistrations/context-source-registration-sample.jsonld new file mode 100644 index 00000000..771073bb --- /dev/null +++ b/data/csourceRegistrations/context-source-registration-sample.jsonld @@ -0,0 +1,18 @@ +{ + "id":"urn:ngsi-ld:ContextSourceRegistration:randomUUID", + "type":"ContextSourceRegistration", + "information":[ + { + "entities":[ + { + "type":"Building" + } + ] + } + ], + "endpoint":"http://10.5.1.217:8080", + "@context":[ + "https://raw.githubusercontent.com/easy-global-market/ngsild-api-data-models/feature/add-json-ld-context-for-ngsi-ld-test-suite/ngsi-ld-test-suite/ngsi-ld-test-suite-context.jsonld", + "https://uri.etsi.org/ngsi-ld/v1/ngsi-ld-core-context.jsonld" + ] +} \ No newline at end of file diff --git a/data/csourceSubscriptions/subscription-timeInterval-sample.jsonld b/data/csourceSubscriptions/subscription-timeInterval-sample.jsonld new file mode 100644 index 00000000..e609c650 --- /dev/null +++ b/data/csourceSubscriptions/subscription-timeInterval-sample.jsonld @@ -0,0 +1,21 @@ +{ + "id":"urn:ngsi-ld:Subscription:randomUUID", + "type":"Subscription", + "timeInterval": 10, + "entities":[ + { + "type":"Building" + } + ], + "notification":{ + "format":"keyValues", + "endpoint":{ + "uri":"http://10.5.3.77:8085/post", + "accept":"application/json" + } + }, + "@context":[ + "https://raw.githubusercontent.com/easy-global-market/ngsild-api-data-models/feature/add-json-ld-context-for-ngsi-ld-test-suite/ngsi-ld-test-suite/ngsi-ld-test-suite-context.jsonld", + "https://uri.etsi.org/ngsi-ld/v1/ngsi-ld-core-context.jsonld" + ] +} \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index a0b25556..c62307ce 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,3 +4,4 @@ robotframework-jsonschemalibrary==1.0 robotframework-jsonlibrary==0.3.1 robotframework-requests==0.8.0 deepdiff==5.2.1 +robotframework-httpctrl==0.1.6 diff --git a/resources/ApiUtils.resource b/resources/ApiUtils.resource index 0c4ec21f..f04bbd67 100755 --- a/resources/ApiUtils.resource +++ b/resources/ApiUtils.resource @@ -257,7 +257,7 @@ Batch Request Entities From File [Arguments] ${batchOperation} ${filename} ${file_content}= Get File ${EXECDIR}/data/entities/${filename} ${endpoint_url}= Get From Dictionary ${BATCH_OPERATION_ENDPOINT_MAPPING} ${batchOperation} - Create Session BatchRequest ${url} + Create Session BatchRequest ${url}/home/houcem/Desktop/egm/ngsi-ld-test-suite/results/log.html &{headers}= Create Dictionary Content-Type=application/ld+json ${response}= POST On Session BatchRequest ${endpoint_url} data=${file_content} headers=${headers} expected_status=any Set Test Variable ${response} @@ -336,6 +336,26 @@ Delete Temporal Representation Of Entity Output request Output response +Create Context Source Registration + [Arguments] ${context_source_registration_payload} + + &{headers}= Create Dictionary Content-Type=application/ld+json + ${response}= POST ${CONTEXT_SOURCE_REGISTRATION_ENDPOINT_PATH} body=${context_source_registration_payload} headers=${headers} + ${request}= Output request + Output response + + Set Suite Variable ${request} + Set Suite Variable ${response} + +Delete Context Source Registration + [Arguments] ${context_source_registration_id} + + ${response}= DELETE ${CONTEXT_SOURCE_REGISTRATION_ENDPOINT_PATH}/${context_source_registration_id} + Output request + Output response + + Set Suite Variable ${response} + Create Context Source Registration Subscription [Arguments] ${subscription_payload} diff --git a/resources/HTTP.resource b/resources/HTTP.resource new file mode 100644 index 00000000..b202cfd2 --- /dev/null +++ b/resources/HTTP.resource @@ -0,0 +1,38 @@ +*** Settings *** +Documentation Check Notification Behaviour +Library HttpCtrl.Client +Library HttpCtrl.Server + +*** Keywords *** +Connect to broker + #Initialize HTTP Client And Server + Initialize Client 0.0.0.0 8085 + Start Server 0.0.0.0 8085 + +Notify broker + #HTTP client sends POST request to HTTP server + #.. "Send HTTP Request Async" + #.... Non-blocking function to send request that waits for reply using separate thread. + #.... Further details: https://annoviko.github.io/robotframework-httpctrl/client.html#Send%20Http%20Request%20Async + ${request body}= Set Variable { "message": "Hello!" } + ${connection}= Send HTTP Request Async POST /post ${request body} + Set Test Variable ${request body} + Set Test Variable ${connection} + +Wait for notification and validate it + #HTTP server receives it and checks incoming request for correctness + #.. "Wait For Request" + #.... This call is blocked until HTTP request arrives or timeout. + #.... Further detaills: https://annoviko.github.io/robotframework-httpctrl/server.html#Wait%20For%20Request + Wait For Request timeout=4000 + log received request + ${received_req_method}= Get Request Method + ${received_req_url}= Get Request Url + ${received_req_body}= Get Request Body + Should Be Equal ${received_req_method} POST + Should Be Equal ${received_req_url} /post + Should Be Equal ${received_req_body} ${request body} + +Discconect from broker + #Terminate HTTP Server + Stop Server -- GitLab From feebd92f815b1cdd309475fff72d50164612b354 Mon Sep 17 00:00:00 2001 From: Houcem Kacem Date: Wed, 20 Jan 2021 09:26:54 +0100 Subject: [PATCH 02/30] fix: fix code --- resources/ApiUtils.resource | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/ApiUtils.resource b/resources/ApiUtils.resource index f04bbd67..075a503d 100755 --- a/resources/ApiUtils.resource +++ b/resources/ApiUtils.resource @@ -257,7 +257,7 @@ Batch Request Entities From File [Arguments] ${batchOperation} ${filename} ${file_content}= Get File ${EXECDIR}/data/entities/${filename} ${endpoint_url}= Get From Dictionary ${BATCH_OPERATION_ENDPOINT_MAPPING} ${batchOperation} - Create Session BatchRequest ${url}/home/houcem/Desktop/egm/ngsi-ld-test-suite/results/log.html + Create Session BatchRequest ${url} &{headers}= Create Dictionary Content-Type=application/ld+json ${response}= POST On Session BatchRequest ${endpoint_url} data=${file_content} headers=${headers} expected_status=any Set Test Variable ${response} -- GitLab From cf7fb497c382af0d94207bee6fa21a2aedf70bd4 Mon Sep 17 00:00:00 2001 From: Houcem Kacem Date: Wed, 20 Jan 2021 11:24:58 +0100 Subject: [PATCH 03/30] feat: add tp 037_01 --- .../NotificationBehaviour/037_01.robot | 27 ++++++++++--------- .../subscription-timeInterval-sample.jsonld | 2 +- resources/HTTP.resource | 25 +++-------------- 3 files changed, 19 insertions(+), 35 deletions(-) diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_01.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_01.robot index 373877d4..f8aabc5c 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_01.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_01.robot @@ -5,8 +5,8 @@ Resource ${EXECDIR}/resources/AssertionUtils.resource Resource ${EXECDIR}/resources/JsonUtils.resource Resource ${EXECDIR}/resources/HTTP.resource -#Suite Setup Setup Initial Context Source Registrations -#Suite Teardown Delete Created Context Source Registrations +Suite Setup Setup Initial Context Source Registrations +Suite Teardown Delete Created Context Source Registrations And Subscriptions *** Variable *** ${context_source_registration_id_prefix}= urn:ngsi-ld:ContextSourceRegistration: @@ -19,26 +19,27 @@ Receive cSourceNotification Periodically [Documentation] Check that you can create a minimal context source registration subscription [Tags] mandatory - Connect to broker + Start Local Server - # a notification will be sent to the endpoint mentionned in the subscription ${subscription_id}= Generate Random Entity Id ${subscription_id_prefix} ${subscription_payload}= Load Test Sample ${subscription_payload_file_path} ${subscription_id} Create Context Source Registration Subscription ${subscription_payload} - ${context_source_registration_id}= Generate Random Entity Id ${context_source_registration_id_prefix} - ${context_source_registration_payload}= Load Test Sample ${context_source_registration_payload_file_path} ${context_source_registration_id} - Create Context Source Registration ${context_source_registration_payload} + Set Suite Variable ${subscription_id} - # When using the Notify broker keyword, a request will be received on 0.0.0.0:8085 - # Otherwise the Wait For Request will wait until timeout while the server is running on 0.0.0.0:8085 but not responsing to requests (with httpie) - #Notify broker Wait for notification and validate it + + # Wait with timeout of 15 seconds to check that another notification will be sent after 10 seconds + Wait for notification and validate it ${15} + Discconect from broker - Set Suite Variable ${subscription_id} +*** Keywords *** +Setup Initial Context Source Registrations + ${context_source_registration_id}= Generate Random Entity Id ${context_source_registration_id_prefix} + ${context_source_registration_payload}= Load Test Sample ${context_source_registration_payload_file_path} ${context_source_registration_id} + Create Context Source Registration ${context_source_registration_payload} Set Suite Variable ${context_source_registration_id} -*** Keywords *** -Delete Created Context Source Registrations +Delete Created Context Source Registrations And Subscriptions Delete Context Source Registration ${context_source_registration_id} Delete Context Source Registration Subscription ${subscription_id} diff --git a/data/csourceSubscriptions/subscription-timeInterval-sample.jsonld b/data/csourceSubscriptions/subscription-timeInterval-sample.jsonld index e609c650..4f7e60c8 100644 --- a/data/csourceSubscriptions/subscription-timeInterval-sample.jsonld +++ b/data/csourceSubscriptions/subscription-timeInterval-sample.jsonld @@ -10,7 +10,7 @@ "notification":{ "format":"keyValues", "endpoint":{ - "uri":"http://10.5.3.77:8085/post", + "uri":"http://10.5.3.61:8085/post", "accept":"application/json" } }, diff --git a/resources/HTTP.resource b/resources/HTTP.resource index b202cfd2..5d1eb9c5 100644 --- a/resources/HTTP.resource +++ b/resources/HTTP.resource @@ -1,37 +1,20 @@ *** Settings *** Documentation Check Notification Behaviour -Library HttpCtrl.Client Library HttpCtrl.Server *** Keywords *** -Connect to broker +Start Local Server #Initialize HTTP Client And Server - Initialize Client 0.0.0.0 8085 Start Server 0.0.0.0 8085 -Notify broker - #HTTP client sends POST request to HTTP server - #.. "Send HTTP Request Async" - #.... Non-blocking function to send request that waits for reply using separate thread. - #.... Further details: https://annoviko.github.io/robotframework-httpctrl/client.html#Send%20Http%20Request%20Async - ${request body}= Set Variable { "message": "Hello!" } - ${connection}= Send HTTP Request Async POST /post ${request body} - Set Test Variable ${request body} - Set Test Variable ${connection} - Wait for notification and validate it + [Arguments] ${timeout}=${5} #HTTP server receives it and checks incoming request for correctness #.. "Wait For Request" #.... This call is blocked until HTTP request arrives or timeout. #.... Further detaills: https://annoviko.github.io/robotframework-httpctrl/server.html#Wait%20For%20Request - Wait For Request timeout=4000 - log received request - ${received_req_method}= Get Request Method - ${received_req_url}= Get Request Url - ${received_req_body}= Get Request Body - Should Be Equal ${received_req_method} POST - Should Be Equal ${received_req_url} /post - Should Be Equal ${received_req_body} ${request body} + Wait For Request ${timeout} + Reply By 200 Discconect from broker #Terminate HTTP Server -- GitLab From 00f09a44e168c29a5177e4fa88c4881c69345302 Mon Sep 17 00:00:00 2001 From: Houcem Kacem Date: Wed, 20 Jan 2021 11:32:27 +0100 Subject: [PATCH 04/30] fix: fix tp 037_01 description --- .../NotificationBehaviour/037_01.robot | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_01.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_01.robot index f8aabc5c..afc89435 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_01.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_01.robot @@ -15,8 +15,8 @@ ${context_source_registration_payload_file_path}= csourceRegistrations/context ${subscription_payload_file_path}= csourceSubscriptions/subscription-timeInterval-sample.jsonld *** Test Case *** -Receive cSourceNotification Periodically - [Documentation] Check that you can create a minimal context source registration subscription +Receive cSourceNotification Periodically And Initially On Subscription + [Documentation] Check that if the created context source registration subscription defines a timeInterval member, a cSourceNotification will be sent periodically, initially on subscription and when the time interval is reached [Tags] mandatory Start Local Server -- GitLab From 993877f4ce3e630d59db86297eb12bffedcd4b47 Mon Sep 17 00:00:00 2001 From: Houcem Kacem Date: Wed, 20 Jan 2021 11:50:23 +0100 Subject: [PATCH 05/30] feat: add tps 037_06 and 037_07 + refactor code --- .../NotificationBehaviour/037_01.robot | 13 +++--- .../NotificationBehaviour/037_06.robot | 45 +++++++++++++++++++ .../NotificationBehaviour/037_07.robot | 45 +++++++++++++++++++ .../subscription-timeInterval-sample.jsonld | 0 ...TP.resource => NotificationUtils.resource} | 12 ++++- resources/variables.py | 4 +- 6 files changed, 110 insertions(+), 9 deletions(-) create mode 100644 TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_06.robot create mode 100644 TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_07.robot rename data/csourceSubscriptions/{ => withReachableEndpoints}/subscription-timeInterval-sample.jsonld (100%) rename resources/{HTTP.resource => NotificationUtils.resource} (56%) diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_01.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_01.robot index afc89435..236d8795 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_01.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_01.robot @@ -3,7 +3,7 @@ Documentation Check that if the created context source registration subscripti Resource ${EXECDIR}/resources/ApiUtils.resource Resource ${EXECDIR}/resources/AssertionUtils.resource Resource ${EXECDIR}/resources/JsonUtils.resource -Resource ${EXECDIR}/resources/HTTP.resource +Resource ${EXECDIR}/resources/NotificationUtils.resource Suite Setup Setup Initial Context Source Registrations Suite Teardown Delete Created Context Source Registrations And Subscriptions @@ -12,15 +12,13 @@ Suite Teardown Delete Created Context Source Registrations And Subscription ${context_source_registration_id_prefix}= urn:ngsi-ld:ContextSourceRegistration: ${subscription_id_prefix}= urn:ngsi-ld:Subscription: ${context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-sample.jsonld -${subscription_payload_file_path}= csourceSubscriptions/subscription-timeInterval-sample.jsonld +${subscription_payload_file_path}= csourceSubscriptions/withReachableEndpoints/subscription-timeInterval-sample.jsonld *** Test Case *** Receive cSourceNotification Periodically And Initially On Subscription [Documentation] Check that if the created context source registration subscription defines a timeInterval member, a cSourceNotification will be sent periodically, initially on subscription and when the time interval is reached [Tags] mandatory - Start Local Server - ${subscription_id}= Generate Random Entity Id ${subscription_id_prefix} ${subscription_payload}= Load Test Sample ${subscription_payload_file_path} ${subscription_id} Create Context Source Registration Subscription ${subscription_payload} @@ -31,15 +29,18 @@ Receive cSourceNotification Periodically And Initially On Subscription # Wait with timeout of 15 seconds to check that another notification will be sent after 10 seconds Wait for notification and validate it ${15} - Discconect from broker - *** Keywords *** Setup Initial Context Source Registrations + Start Local Server + ${context_source_registration_id}= Generate Random Entity Id ${context_source_registration_id_prefix} ${context_source_registration_payload}= Load Test Sample ${context_source_registration_payload_file_path} ${context_source_registration_id} Create Context Source Registration ${context_source_registration_payload} + Set Suite Variable ${context_source_registration_id} Delete Created Context Source Registrations And Subscriptions Delete Context Source Registration ${context_source_registration_id} Delete Context Source Registration Subscription ${subscription_id} + + Stop Local Server diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_06.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_06.robot new file mode 100644 index 00000000..7e528048 --- /dev/null +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_06.robot @@ -0,0 +1,45 @@ +*** Settings *** +Documentation Check that if a cSourceNotification is sent successfully to the "endpoint" member, the "notification.timesSent" member shall be incremented by one and the "notification.lastNotification" member shall be updated with the current timestamp +Resource ${EXECDIR}/resources/ApiUtils.resource +Resource ${EXECDIR}/resources/AssertionUtils.resource +Resource ${EXECDIR}/resources/JsonUtils.resource +Resource ${EXECDIR}/resources/NotificationUtils.resource + +Suite Setup Setup Initial Context Source Registration Subscriptions +Suite Teardown Delete Created Context Source Registration Subscriptions + +*** Variable *** +${context_source_registration_id_prefix}= urn:ngsi-ld:ContextSourceRegistration: +${subscription_id_prefix}= urn:ngsi-ld:Subscription: +${context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-sample.jsonld +${subscription_payload_file_path}= csourceSubscriptions/withReachableEndpoints/subscription-timeInterval-sample.jsonld + +*** Test Case *** +If A cSourceNotification Is Successfully Sent The Notification Member Shall Be Updated + [Documentation] Check that if a cSourceNotification is sent successfully to the "endpoint" member, the "notification.timesSent" member shall be incremented by one and the "notification.lastNotification" member shall be updated with the current timestamp + [Tags] mandatory + + ${context_source_registration_id}= Generate Random Entity Id ${context_source_registration_id_prefix} + ${context_source_registration_payload}= Load Test Sample ${context_source_registration_payload_file_path} ${context_source_registration_id} + Create Context Source Registration ${context_source_registration_payload} + Set Suite Variable ${context_source_registration_id} + + Wait for notification and validate it + + # TODO: Retrieve context source registration subscription and check notification member + +*** Keywords *** +Setup Initial Context Source Registration Subscriptions + Start Local Server + + ${subscription_id}= Generate Random Entity Id ${subscription_id_prefix} + ${subscription_payload}= Load Test Sample ${subscription_payload_file_path} ${subscription_id} + Create Context Source Registration Subscription ${subscription_payload} + + Set Suite Variable ${subscription_id} + +Delete Created Context Source Registration Subscriptions + Delete Context Source Registration ${context_source_registration_id} + Delete Context Source Registration Subscription ${subscription_id} + + Stop Local Server diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_07.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_07.robot new file mode 100644 index 00000000..a3a5b604 --- /dev/null +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_07.robot @@ -0,0 +1,45 @@ +*** Settings *** +Documentation Check that if a cSourceNotification is not sent successfully, the notification.lastFailure" member shall be updated with the current timestamp and the status of the context source registration subscription shall be updated to "failed" +Resource ${EXECDIR}/resources/ApiUtils.resource +Resource ${EXECDIR}/resources/AssertionUtils.resource +Resource ${EXECDIR}/resources/JsonUtils.resource +Resource ${EXECDIR}/resources/NotificationUtils.resource + +Suite Setup Setup Initial Context Source Registration Subscriptions +Suite Teardown Delete Created Context Source Registration Subscriptions + +*** Variable *** +${context_source_registration_id_prefix}= urn:ngsi-ld:ContextSourceRegistration: +${subscription_id_prefix}= urn:ngsi-ld:Subscription: +${context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-sample.jsonld +${subscription_payload_file_path}= csourceSubscriptions/subscription-sample.jsonld + +*** Test Case *** +If A cSourceNotification Is Not Successfully Sent The Notification Member Shall Be Updated + [Documentation] Check that if a cSourceNotification is not sent successfully, the notification.lastFailure" member shall be updated with the current timestamp and the status of the context source registration subscription shall be updated to "failed" + [Tags] mandatory + + ${context_source_registration_id}= Generate Random Entity Id ${context_source_registration_id_prefix} + ${context_source_registration_payload}= Load Test Sample ${context_source_registration_payload_file_path} ${context_source_registration_id} + Create Context Source Registration ${context_source_registration_payload} + Set Suite Variable ${context_source_registration_id} + + Wait for no notification + + # TODO: Retrieve context source registration subscription and check notification member + +*** Keywords *** +Setup Initial Context Source Registration Subscriptions + Start Local Server + + ${subscription_id}= Generate Random Entity Id ${subscription_id_prefix} + ${subscription_payload}= Load Test Sample ${subscription_payload_file_path} ${subscription_id} + Create Context Source Registration Subscription ${subscription_payload} + + Set Suite Variable ${subscription_id} + +Delete Created Context Source Registration Subscriptions + Delete Context Source Registration ${context_source_registration_id} + Delete Context Source Registration Subscription ${subscription_id} + + Stop Local Server diff --git a/data/csourceSubscriptions/subscription-timeInterval-sample.jsonld b/data/csourceSubscriptions/withReachableEndpoints/subscription-timeInterval-sample.jsonld similarity index 100% rename from data/csourceSubscriptions/subscription-timeInterval-sample.jsonld rename to data/csourceSubscriptions/withReachableEndpoints/subscription-timeInterval-sample.jsonld diff --git a/resources/HTTP.resource b/resources/NotificationUtils.resource similarity index 56% rename from resources/HTTP.resource rename to resources/NotificationUtils.resource index 5d1eb9c5..8d5b052a 100644 --- a/resources/HTTP.resource +++ b/resources/NotificationUtils.resource @@ -5,7 +5,7 @@ Library HttpCtrl.Server *** Keywords *** Start Local Server #Initialize HTTP Client And Server - Start Server 0.0.0.0 8085 + Start Server ${notification_server_host} ${notification_server_port} Wait for notification and validate it [Arguments] ${timeout}=${5} @@ -16,6 +16,14 @@ Wait for notification and validate it Wait For Request ${timeout} Reply By 200 -Discconect from broker +Wait for no notification + [Arguments] ${timeout}=${5} + #HTTP server receives it and checks incoming request for correctness + #.. "Wait For Request" + #.... This call is blocked until HTTP request arrives or timeout. + #.... Further detaills: https://annoviko.github.io/robotframework-httpctrl/server.html#Wait%20For%20Request + Wait For No Request ${timeout} + +Stop Local Server #Terminate HTTP Server Stop Server diff --git a/resources/variables.py b/resources/variables.py index 3b9e617a..8cbd37d4 100644 --- a/resources/variables.py +++ b/resources/variables.py @@ -1,7 +1,9 @@ def get_variables(arg=None): variables = { 'url': 'https://broker-ngsi-ld.demeter.ubiwhere.com/ngsi-ld/v1', - 'ngsild_test_suite_context': 'https://raw.githubusercontent.com/easy-global-market/ngsild-api-data-models/feature/add-json-ld-context-for-ngsi-ld-test-suite/ngsi-ld-test-suite/ngsi-ld-test-suite-context.jsonld' + 'ngsild_test_suite_context': 'https://raw.githubusercontent.com/easy-global-market/ngsild-api-data-models/feature/add-json-ld-context-for-ngsi-ld-test-suite/ngsi-ld-test-suite/ngsi-ld-test-suite-context.jsonld', + 'notification_server_host': '0.0.0.0', + 'notification_server_port': 8085 } return variables \ No newline at end of file -- GitLab From db531827179cebc377adc2a5eac8dc731baa9d04 Mon Sep 17 00:00:00 2001 From: Houcem Kacem Date: Wed, 20 Jan 2021 16:07:25 +0100 Subject: [PATCH 06/30] feat: wip --- .../NotificationBehaviour/037_01.robot | 4 +- .../NotificationBehaviour/037_06.robot | 4 +- .../{037_07.robot => 037_08.robot} | 4 +- .../NotificationBehaviour/037_09.robot | 48 +++++++++++++++++++ .../subscription-timeInterval-sample.jsonld | 2 +- 5 files changed, 55 insertions(+), 7 deletions(-) rename TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/{037_07.robot => 037_08.robot} (100%) create mode 100644 TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_09.robot diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_01.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_01.robot index 236d8795..b4a6cc4c 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_01.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_01.robot @@ -21,11 +21,11 @@ Receive cSourceNotification Periodically And Initially On Subscription ${subscription_id}= Generate Random Entity Id ${subscription_id_prefix} ${subscription_payload}= Load Test Sample ${subscription_payload_file_path} ${subscription_id} - Create Context Source Registration Subscription ${subscription_payload} Set Suite Variable ${subscription_id} - Wait for notification and validate it + Create Context Source Registration Subscription ${subscription_payload} + Wait for notification and validate it # Wait with timeout of 15 seconds to check that another notification will be sent after 10 seconds Wait for notification and validate it ${15} diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_06.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_06.robot index 7e528048..5c4513a5 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_06.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_06.robot @@ -21,11 +21,11 @@ If A cSourceNotification Is Successfully Sent The Notification Member Shall Be U ${context_source_registration_id}= Generate Random Entity Id ${context_source_registration_id_prefix} ${context_source_registration_payload}= Load Test Sample ${context_source_registration_payload_file_path} ${context_source_registration_id} - Create Context Source Registration ${context_source_registration_payload} Set Suite Variable ${context_source_registration_id} - Wait for notification and validate it + Create Context Source Registration ${context_source_registration_payload} + Wait for notification and validate it # TODO: Retrieve context source registration subscription and check notification member *** Keywords *** diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_07.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_08.robot similarity index 100% rename from TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_07.robot rename to TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_08.robot index a3a5b604..222693fa 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_07.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_08.robot @@ -21,11 +21,11 @@ If A cSourceNotification Is Not Successfully Sent The Notification Member Shall ${context_source_registration_id}= Generate Random Entity Id ${context_source_registration_id_prefix} ${context_source_registration_payload}= Load Test Sample ${context_source_registration_payload_file_path} ${context_source_registration_id} - Create Context Source Registration ${context_source_registration_payload} Set Suite Variable ${context_source_registration_id} - Wait for no notification + Create Context Source Registration ${context_source_registration_payload} + Wait for no notification # TODO: Retrieve context source registration subscription and check notification member *** Keywords *** diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_09.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_09.robot new file mode 100644 index 00000000..0152f8c4 --- /dev/null +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_09.robot @@ -0,0 +1,48 @@ +*** Settings *** +Documentation Check that a cSourceNotification shall only be sent if and only if the status of the corresponding subscription is active not paused nor expired +Resource ${EXECDIR}/resources/ApiUtils.resource +Resource ${EXECDIR}/resources/AssertionUtils.resource +Resource ${EXECDIR}/resources/JsonUtils.resource +Resource ${EXECDIR}/resources/NotificationUtils.resource + +Suite Teardown Delete Created Context Source Registration Subscriptions + +*** Variable *** +${context_source_registration_id_prefix}= urn:ngsi-ld:ContextSourceRegistration: +${subscription_id_prefix}= urn:ngsi-ld:Subscription: +${context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-sample.jsonld +${subscription_payload_file_path}= csourceSubscriptions/subscription-sample.jsonld + +*** Test Cases *** FILEPATH +PausedSubscription csourceSubscriptions/subscription-update-invalid-type-sample.json +ExpiredSubscription csourceSubscriptions/subscription-update-invalid-notification-sample.json + +*** Test Case *** +Do Not Receive cSourceNotification If Subscription Status Is Not Active + [Documentation] Check that a cSourceNotification shall only be sent if and only if the status of the corresponding subscription is active not paused nor expired + [Tags] mandatory + + ${context_source_registration_id}= Generate Random Entity Id ${context_source_registration_id_prefix} + ${context_source_registration_payload}= Load Test Sample ${context_source_registration_payload_file_path} ${context_source_registration_id} + Set Suite Variable ${context_source_registration_id} + + Create Context Source Registration ${context_source_registration_payload} + + Wait for no notification + # TODO: Retrieve context source registration subscription and check notification member + +*** Keywords *** +Setup Initial Context Source Registration Subscriptions + Start Local Server + + ${subscription_id}= Generate Random Entity Id ${subscription_id_prefix} + ${subscription_payload}= Load Test Sample ${subscription_payload_file_path} ${subscription_id} + Create Context Source Registration Subscription ${subscription_payload} + + Set Suite Variable ${subscription_id} + +Delete Created Context Source Registration Subscriptions + Delete Context Source Registration ${context_source_registration_id} + Delete Context Source Registration Subscription ${subscription_id} + + Stop Local Server diff --git a/data/csourceSubscriptions/withReachableEndpoints/subscription-timeInterval-sample.jsonld b/data/csourceSubscriptions/withReachableEndpoints/subscription-timeInterval-sample.jsonld index 4f7e60c8..02f47e43 100644 --- a/data/csourceSubscriptions/withReachableEndpoints/subscription-timeInterval-sample.jsonld +++ b/data/csourceSubscriptions/withReachableEndpoints/subscription-timeInterval-sample.jsonld @@ -10,7 +10,7 @@ "notification":{ "format":"keyValues", "endpoint":{ - "uri":"http://10.5.3.61:8085/post", + "uri":"http://10.5.3.69:8085/post", "accept":"application/json" } }, -- GitLab From 03e76865a71326df5c101cf6ef2474726638c572 Mon Sep 17 00:00:00 2001 From: Houcem Kacem Date: Wed, 20 Jan 2021 16:37:31 +0100 Subject: [PATCH 07/30] feat: add tp 037_09 + refactor code --- .../subscription-expiresAt-update-sample.json | 3 +++ .../subscription-isActive-update-sample.json | 9 +++++++++ .../subscription-sample.jsonld | 20 +++++++++++++++++++ 3 files changed, 32 insertions(+) create mode 100644 data/csourceSubscriptions/fragments/subscription-expiresAt-update-sample.json create mode 100644 data/csourceSubscriptions/fragments/subscription-isActive-update-sample.json create mode 100644 data/csourceSubscriptions/withReachableEndpoints/subscription-sample.jsonld diff --git a/data/csourceSubscriptions/fragments/subscription-expiresAt-update-sample.json b/data/csourceSubscriptions/fragments/subscription-expiresAt-update-sample.json new file mode 100644 index 00000000..b432cbae --- /dev/null +++ b/data/csourceSubscriptions/fragments/subscription-expiresAt-update-sample.json @@ -0,0 +1,3 @@ +{ + "isActive": false +} \ No newline at end of file diff --git a/data/csourceSubscriptions/fragments/subscription-isActive-update-sample.json b/data/csourceSubscriptions/fragments/subscription-isActive-update-sample.json new file mode 100644 index 00000000..81f39078 --- /dev/null +++ b/data/csourceSubscriptions/fragments/subscription-isActive-update-sample.json @@ -0,0 +1,9 @@ +{ + "notification":{ + "format":"keyValues", + "endpoint":{ + "uri":"http://my.second.endpoint.org/notify", + "accept":"application/json" + } + } +} \ No newline at end of file diff --git a/data/csourceSubscriptions/withReachableEndpoints/subscription-sample.jsonld b/data/csourceSubscriptions/withReachableEndpoints/subscription-sample.jsonld new file mode 100644 index 00000000..7ca438fd --- /dev/null +++ b/data/csourceSubscriptions/withReachableEndpoints/subscription-sample.jsonld @@ -0,0 +1,20 @@ +{ + "id":"urn:ngsi-ld:Subscription:randomUUID", + "type":"Subscription", + "entities":[ + { + "type":"Building" + } + ], + "notification":{ + "format":"keyValues", + "endpoint":{ + "uri":"http://my.endpoint.org/notify", + "accept":"application/json" + } + }, + "@context":[ + "https://raw.githubusercontent.com/easy-global-market/ngsild-api-data-models/feature/add-json-ld-context-for-ngsi-ld-test-suite/ngsi-ld-test-suite/ngsi-ld-test-suite-context.jsonld", + "https://uri.etsi.org/ngsi-ld/v1/ngsi-ld-core-context.jsonld" + ] +} \ No newline at end of file -- GitLab From 39bc0d832441d6f412c6e42189f6721805d0b368 Mon Sep 17 00:00:00 2001 From: Houcem Kacem Date: Wed, 20 Jan 2021 16:38:02 +0100 Subject: [PATCH 08/30] feat: add tp 037_09 + refactor code --- .../NotificationBehaviour/037_01.robot | 4 ++-- .../NotificationBehaviour/037_06.robot | 6 +++--- .../NotificationBehaviour/037_08.robot | 4 ++-- .../NotificationBehaviour/037_09.robot | 19 ++++++++++++------- .../subscription-expiresAt-update-sample.json | 2 +- .../subscription-isActive-update-sample.json | 8 +------- .../subscription-sample.jsonld | 2 +- 7 files changed, 22 insertions(+), 23 deletions(-) diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_01.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_01.robot index b4a6cc4c..36a745e4 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_01.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_01.robot @@ -40,7 +40,7 @@ Setup Initial Context Source Registrations Set Suite Variable ${context_source_registration_id} Delete Created Context Source Registrations And Subscriptions + Stop Local Server + Delete Context Source Registration ${context_source_registration_id} Delete Context Source Registration Subscription ${subscription_id} - - Stop Local Server diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_06.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_06.robot index 5c4513a5..63e90a9d 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_06.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_06.robot @@ -12,7 +12,7 @@ Suite Teardown Delete Created Context Source Registration Subscriptions ${context_source_registration_id_prefix}= urn:ngsi-ld:ContextSourceRegistration: ${subscription_id_prefix}= urn:ngsi-ld:Subscription: ${context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-sample.jsonld -${subscription_payload_file_path}= csourceSubscriptions/withReachableEndpoints/subscription-timeInterval-sample.jsonld +${subscription_payload_file_path}= csourceSubscriptions/withReachableEndpoints/subscription-sample.jsonld *** Test Case *** If A cSourceNotification Is Successfully Sent The Notification Member Shall Be Updated @@ -39,7 +39,7 @@ Setup Initial Context Source Registration Subscriptions Set Suite Variable ${subscription_id} Delete Created Context Source Registration Subscriptions + Stop Local Server + Delete Context Source Registration ${context_source_registration_id} Delete Context Source Registration Subscription ${subscription_id} - - Stop Local Server diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_08.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_08.robot index 222693fa..af6efeb2 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_08.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_08.robot @@ -39,7 +39,7 @@ Setup Initial Context Source Registration Subscriptions Set Suite Variable ${subscription_id} Delete Created Context Source Registration Subscriptions + Stop Local Server + Delete Context Source Registration ${context_source_registration_id} Delete Context Source Registration Subscription ${subscription_id} - - Stop Local Server diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_09.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_09.robot index 0152f8c4..61593364 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_09.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_09.robot @@ -5,23 +5,29 @@ Resource ${EXECDIR}/resources/AssertionUtils.resource Resource ${EXECDIR}/resources/JsonUtils.resource Resource ${EXECDIR}/resources/NotificationUtils.resource +Test Template Do Not Receive cSourceNotification If Subscription Status Is Not Active +Suite Setup Setup Initial Context Source Registration Subscriptions Suite Teardown Delete Created Context Source Registration Subscriptions *** Variable *** ${context_source_registration_id_prefix}= urn:ngsi-ld:ContextSourceRegistration: ${subscription_id_prefix}= urn:ngsi-ld:Subscription: ${context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-sample.jsonld -${subscription_payload_file_path}= csourceSubscriptions/subscription-sample.jsonld +${subscription_payload_file_path}= csourceSubscriptions/withReachableEndpoints/subscription-sample.jsonld *** Test Cases *** FILEPATH -PausedSubscription csourceSubscriptions/subscription-update-invalid-type-sample.json -ExpiredSubscription csourceSubscriptions/subscription-update-invalid-notification-sample.json +PausedSubscription csourceSubscriptions/fragments/subscription-isActive-update-sample.json +ExpiredSubscription csourceSubscriptions/fragments/subscription-expiresAt-update-sample.json -*** Test Case *** +*** Keywords *** Do Not Receive cSourceNotification If Subscription Status Is Not Active + [Arguments] ${filepath} [Documentation] Check that a cSourceNotification shall only be sent if and only if the status of the corresponding subscription is active not paused nor expired [Tags] mandatory + ${subscription_update_fragment}= Load Test Sample ${filepath} + Update Context Source Registration Subscription ${subscription_id} ${subscription_update_fragment} + ${context_source_registration_id}= Generate Random Entity Id ${context_source_registration_id_prefix} ${context_source_registration_payload}= Load Test Sample ${context_source_registration_payload_file_path} ${context_source_registration_id} Set Suite Variable ${context_source_registration_id} @@ -29,7 +35,6 @@ Do Not Receive cSourceNotification If Subscription Status Is Not Active Create Context Source Registration ${context_source_registration_payload} Wait for no notification - # TODO: Retrieve context source registration subscription and check notification member *** Keywords *** Setup Initial Context Source Registration Subscriptions @@ -42,7 +47,7 @@ Setup Initial Context Source Registration Subscriptions Set Suite Variable ${subscription_id} Delete Created Context Source Registration Subscriptions + Stop Local Server + Delete Context Source Registration ${context_source_registration_id} Delete Context Source Registration Subscription ${subscription_id} - - Stop Local Server diff --git a/data/csourceSubscriptions/fragments/subscription-expiresAt-update-sample.json b/data/csourceSubscriptions/fragments/subscription-expiresAt-update-sample.json index b432cbae..237d2180 100644 --- a/data/csourceSubscriptions/fragments/subscription-expiresAt-update-sample.json +++ b/data/csourceSubscriptions/fragments/subscription-expiresAt-update-sample.json @@ -1,3 +1,3 @@ { - "isActive": false + "expiresAt": "2020-08-01T22:07:00Z" } \ No newline at end of file diff --git a/data/csourceSubscriptions/fragments/subscription-isActive-update-sample.json b/data/csourceSubscriptions/fragments/subscription-isActive-update-sample.json index 81f39078..b432cbae 100644 --- a/data/csourceSubscriptions/fragments/subscription-isActive-update-sample.json +++ b/data/csourceSubscriptions/fragments/subscription-isActive-update-sample.json @@ -1,9 +1,3 @@ { - "notification":{ - "format":"keyValues", - "endpoint":{ - "uri":"http://my.second.endpoint.org/notify", - "accept":"application/json" - } - } + "isActive": false } \ No newline at end of file diff --git a/data/csourceSubscriptions/withReachableEndpoints/subscription-sample.jsonld b/data/csourceSubscriptions/withReachableEndpoints/subscription-sample.jsonld index 7ca438fd..3bf7eb61 100644 --- a/data/csourceSubscriptions/withReachableEndpoints/subscription-sample.jsonld +++ b/data/csourceSubscriptions/withReachableEndpoints/subscription-sample.jsonld @@ -9,7 +9,7 @@ "notification":{ "format":"keyValues", "endpoint":{ - "uri":"http://my.endpoint.org/notify", + "uri":"http://10.5.3.69:8085/post", "accept":"application/json" } }, -- GitLab From c552426c14dadcb2a1076ddfd92578ce15bef6a6 Mon Sep 17 00:00:00 2001 From: Houcem Kacem Date: Wed, 20 Jan 2021 16:59:32 +0100 Subject: [PATCH 09/30] feat: add tp 037_10 --- .../NotificationBehaviour/037_10.robot | 48 +++++++++++++++++++ ...ext-source-registration-update-sample.json | 3 ++ resources/ApiUtils.resource | 9 ++++ 3 files changed, 60 insertions(+) create mode 100644 TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_10.robot create mode 100644 data/csourceRegistrations/fragments/context-source-registration-update-sample.json diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_10.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_10.robot new file mode 100644 index 00000000..864ba339 --- /dev/null +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_10.robot @@ -0,0 +1,48 @@ +*** Settings *** +Documentation Check if a context source registration subscription does not define a temporalQ member, a CsourceNotification will be triggered from matching context source registrations for context sources providing latest information +Resource ${EXECDIR}/resources/ApiUtils.resource +Resource ${EXECDIR}/resources/AssertionUtils.resource +Resource ${EXECDIR}/resources/JsonUtils.resource +Resource ${EXECDIR}/resources/NotificationUtils.resource + +Suite Setup Setup Initial Context Source Registration Subscriptions +Suite Teardown Delete Created Context Source Registration Subscriptions + +*** Variable *** +${context_source_registration_id_prefix}= urn:ngsi-ld:ContextSourceRegistration: +${subscription_id_prefix}= urn:ngsi-ld:Subscription: +${context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-sample.jsonld +${subscription_payload_file_path}= csourceSubscriptions/withReachableEndpoints/subscription-sample.jsonld +${update_fragment_file_path}= csourceRegistrations/fragments/context-source-registration-update-sample.json + +*** Test Case *** +Receive cSourceNotification For Matching Matching Context Source Registrations Providing Latest Information + [Documentation] Check if a context source registration subscription does not define a temporalQ member, a CsourceNotification will be triggered from matching context source registrations for context sources providing latest information + [Tags] mandatory + + ${update_fragment}= Load Test Sample ${update_fragment_file_path} + Update Context Source Registration ${context_source_registration_id} ${update_fragment} + + Wait for notification and validate it + # TODO: check notification content + +*** Keywords *** +Setup Initial Context Source Registration Subscriptions + Start Local Server + + ${context_source_registration_id}= Generate Random Entity Id ${context_source_registration_id_prefix} + ${subscription_id}= Generate Random Entity Id ${subscription_id_prefix} + ${context_source_registration_payload}= Load Test Sample ${context_source_registration_payload_file_path} ${context_source_registration_id} + ${subscription_payload}= Load Test Sample ${subscription_payload_file_path} ${subscription_id} + + Create Context Source Registration ${context_source_registration_payload} + Create Context Source Registration Subscription ${subscription_payload} + + Set Suite Variable ${context_source_registration_id} + Set Suite Variable ${subscription_id} + +Delete Created Context Source Registration Subscriptions + Stop Local Server + + Delete Context Source Registration ${context_source_registration_id} + Delete Context Source Registration Subscription ${subscription_id} diff --git a/data/csourceRegistrations/fragments/context-source-registration-update-sample.json b/data/csourceRegistrations/fragments/context-source-registration-update-sample.json new file mode 100644 index 00000000..830b1c11 --- /dev/null +++ b/data/csourceRegistrations/fragments/context-source-registration-update-sample.json @@ -0,0 +1,3 @@ +{ + "endpoint":"http://127.0.0.1:8080" +} \ No newline at end of file diff --git a/resources/ApiUtils.resource b/resources/ApiUtils.resource index 075a503d..9d069ef5 100755 --- a/resources/ApiUtils.resource +++ b/resources/ApiUtils.resource @@ -347,6 +347,15 @@ Create Context Source Registration Set Suite Variable ${request} Set Suite Variable ${response} +Update Context Source Registration + [Arguments] ${context_source_registration_id} ${update_fragment} + + ${response}= PATCH ${CONTEXT_SOURCE_REGISTRATION_ENDPOINT_PATH}/${context_source_registration_id} body=${update_fragment} + Output request + Output response + + Set Test Variable ${response} + Delete Context Source Registration [Arguments] ${context_source_registration_id} -- GitLab From 1dedb11e43717858715afab333016ea06a64fa8d Mon Sep 17 00:00:00 2001 From: Houcem Kacem Date: Wed, 20 Jan 2021 17:24:34 +0100 Subject: [PATCH 10/30] feat: add tp 037_11 --- .../NotificationBehaviour/037_10.robot | 2 +- .../NotificationBehaviour/037_11.robot | 48 +++++++++++++++++++ ...egistration-update-information-sample.json | 11 +++++ 3 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_11.robot create mode 100644 data/csourceRegistrations/fragments/context-source-registration-update-information-sample.json diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_10.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_10.robot index 864ba339..f66d1887 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_10.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_10.robot @@ -16,7 +16,7 @@ ${subscription_payload_file_path}= csourceSubscriptions/withReachableEndpoints ${update_fragment_file_path}= csourceRegistrations/fragments/context-source-registration-update-sample.json *** Test Case *** -Receive cSourceNotification For Matching Matching Context Source Registrations Providing Latest Information +Receive cSourceNotification For Matching Context Source Registrations Providing Latest Information [Documentation] Check if a context source registration subscription does not define a temporalQ member, a CsourceNotification will be triggered from matching context source registrations for context sources providing latest information [Tags] mandatory diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_11.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_11.robot new file mode 100644 index 00000000..b1f71066 --- /dev/null +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_11.robot @@ -0,0 +1,48 @@ +*** Settings *** +Documentation Check if a context source registration subscription defines an entities member, a CsourceNotification will be triggered from context source registrations with information member matching the described entities +Resource ${EXECDIR}/resources/ApiUtils.resource +Resource ${EXECDIR}/resources/AssertionUtils.resource +Resource ${EXECDIR}/resources/JsonUtils.resource +Resource ${EXECDIR}/resources/NotificationUtils.resource + +Suite Setup Setup Initial Context Source Registration Subscriptions +Suite Teardown Delete Created Context Source Registration Subscriptions + +*** Variable *** +${context_source_registration_id_prefix}= urn:ngsi-ld:ContextSourceRegistration: +${subscription_id_prefix}= urn:ngsi-ld:Subscription: +${context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-sample.jsonld +${subscription_payload_file_path}= csourceSubscriptions/withReachableEndpoints/subscription-sample.jsonld +${update_fragment_file_path}= csourceRegistrations/fragments/context-source-registration-update-information-sample.json + +*** Test Case *** +Receive cSourceNotification For No Longer Matching Context Source Registrations Providing Latest Information + [Documentation] Check if a context source registration subscription defines an entities member, a CsourceNotification will be triggered from context source registrations with information member matching the described entities + [Tags] mandatory + + ${update_fragment}= Load Test Sample ${update_fragment_file_path} + Update Context Source Registration ${context_source_registration_id} ${update_fragment} + + Wait for notification and validate it + # TODO: check notification content + +*** Keywords *** +Setup Initial Context Source Registration Subscriptions + Start Local Server + + ${context_source_registration_id}= Generate Random Entity Id ${context_source_registration_id_prefix} + ${subscription_id}= Generate Random Entity Id ${subscription_id_prefix} + ${context_source_registration_payload}= Load Test Sample ${context_source_registration_payload_file_path} ${context_source_registration_id} + ${subscription_payload}= Load Test Sample ${subscription_payload_file_path} ${subscription_id} + + Create Context Source Registration ${context_source_registration_payload} + Create Context Source Registration Subscription ${subscription_payload} + + Set Suite Variable ${context_source_registration_id} + Set Suite Variable ${subscription_id} + +Delete Created Context Source Registration Subscriptions + Stop Local Server + + Delete Context Source Registration ${context_source_registration_id} + Delete Context Source Registration Subscription ${subscription_id} diff --git a/data/csourceRegistrations/fragments/context-source-registration-update-information-sample.json b/data/csourceRegistrations/fragments/context-source-registration-update-information-sample.json new file mode 100644 index 00000000..5d6df96b --- /dev/null +++ b/data/csourceRegistrations/fragments/context-source-registration-update-information-sample.json @@ -0,0 +1,11 @@ +{ + "information":[ + { + "entities":[ + { + "type":"NewType" + } + ] + } + ] +} \ No newline at end of file -- GitLab From d20fa4d9386bb5c694a6ea8dacde7ef8a44f100d Mon Sep 17 00:00:00 2001 From: Houcem Kacem Date: Wed, 20 Jan 2021 17:30:38 +0100 Subject: [PATCH 11/30] feat: update tps sequence numbers --- .../{037_11.robot => 037_07.robot} | 25 +++++++------- .../NotificationBehaviour/037_08.robot | 20 +++++++---- .../NotificationBehaviour/037_09.robot | 33 ++++++++----------- .../NotificationBehaviour/037_10.robot | 8 ++--- 4 files changed, 43 insertions(+), 43 deletions(-) rename TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/{037_11.robot => 037_07.robot} (62%) diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_11.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_07.robot similarity index 62% rename from TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_11.robot rename to TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_07.robot index b1f71066..af6efeb2 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_11.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_07.robot @@ -1,5 +1,5 @@ *** Settings *** -Documentation Check if a context source registration subscription defines an entities member, a CsourceNotification will be triggered from context source registrations with information member matching the described entities +Documentation Check that if a cSourceNotification is not sent successfully, the notification.lastFailure" member shall be updated with the current timestamp and the status of the context source registration subscription shall be updated to "failed" Resource ${EXECDIR}/resources/ApiUtils.resource Resource ${EXECDIR}/resources/AssertionUtils.resource Resource ${EXECDIR}/resources/JsonUtils.resource @@ -12,33 +12,30 @@ Suite Teardown Delete Created Context Source Registration Subscriptions ${context_source_registration_id_prefix}= urn:ngsi-ld:ContextSourceRegistration: ${subscription_id_prefix}= urn:ngsi-ld:Subscription: ${context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-sample.jsonld -${subscription_payload_file_path}= csourceSubscriptions/withReachableEndpoints/subscription-sample.jsonld -${update_fragment_file_path}= csourceRegistrations/fragments/context-source-registration-update-information-sample.json +${subscription_payload_file_path}= csourceSubscriptions/subscription-sample.jsonld *** Test Case *** -Receive cSourceNotification For No Longer Matching Context Source Registrations Providing Latest Information - [Documentation] Check if a context source registration subscription defines an entities member, a CsourceNotification will be triggered from context source registrations with information member matching the described entities +If A cSourceNotification Is Not Successfully Sent The Notification Member Shall Be Updated + [Documentation] Check that if a cSourceNotification is not sent successfully, the notification.lastFailure" member shall be updated with the current timestamp and the status of the context source registration subscription shall be updated to "failed" [Tags] mandatory - ${update_fragment}= Load Test Sample ${update_fragment_file_path} - Update Context Source Registration ${context_source_registration_id} ${update_fragment} + ${context_source_registration_id}= Generate Random Entity Id ${context_source_registration_id_prefix} + ${context_source_registration_payload}= Load Test Sample ${context_source_registration_payload_file_path} ${context_source_registration_id} + Set Suite Variable ${context_source_registration_id} + + Create Context Source Registration ${context_source_registration_payload} - Wait for notification and validate it - # TODO: check notification content + Wait for no notification + # TODO: Retrieve context source registration subscription and check notification member *** Keywords *** Setup Initial Context Source Registration Subscriptions Start Local Server - ${context_source_registration_id}= Generate Random Entity Id ${context_source_registration_id_prefix} ${subscription_id}= Generate Random Entity Id ${subscription_id_prefix} - ${context_source_registration_payload}= Load Test Sample ${context_source_registration_payload_file_path} ${context_source_registration_id} ${subscription_payload}= Load Test Sample ${subscription_payload_file_path} ${subscription_id} - - Create Context Source Registration ${context_source_registration_payload} Create Context Source Registration Subscription ${subscription_payload} - Set Suite Variable ${context_source_registration_id} Set Suite Variable ${subscription_id} Delete Created Context Source Registration Subscriptions diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_08.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_08.robot index af6efeb2..61593364 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_08.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_08.robot @@ -1,10 +1,11 @@ *** Settings *** -Documentation Check that if a cSourceNotification is not sent successfully, the notification.lastFailure" member shall be updated with the current timestamp and the status of the context source registration subscription shall be updated to "failed" +Documentation Check that a cSourceNotification shall only be sent if and only if the status of the corresponding subscription is active not paused nor expired Resource ${EXECDIR}/resources/ApiUtils.resource Resource ${EXECDIR}/resources/AssertionUtils.resource Resource ${EXECDIR}/resources/JsonUtils.resource Resource ${EXECDIR}/resources/NotificationUtils.resource +Test Template Do Not Receive cSourceNotification If Subscription Status Is Not Active Suite Setup Setup Initial Context Source Registration Subscriptions Suite Teardown Delete Created Context Source Registration Subscriptions @@ -12,13 +13,21 @@ Suite Teardown Delete Created Context Source Registration Subscriptions ${context_source_registration_id_prefix}= urn:ngsi-ld:ContextSourceRegistration: ${subscription_id_prefix}= urn:ngsi-ld:Subscription: ${context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-sample.jsonld -${subscription_payload_file_path}= csourceSubscriptions/subscription-sample.jsonld +${subscription_payload_file_path}= csourceSubscriptions/withReachableEndpoints/subscription-sample.jsonld -*** Test Case *** -If A cSourceNotification Is Not Successfully Sent The Notification Member Shall Be Updated - [Documentation] Check that if a cSourceNotification is not sent successfully, the notification.lastFailure" member shall be updated with the current timestamp and the status of the context source registration subscription shall be updated to "failed" +*** Test Cases *** FILEPATH +PausedSubscription csourceSubscriptions/fragments/subscription-isActive-update-sample.json +ExpiredSubscription csourceSubscriptions/fragments/subscription-expiresAt-update-sample.json + +*** Keywords *** +Do Not Receive cSourceNotification If Subscription Status Is Not Active + [Arguments] ${filepath} + [Documentation] Check that a cSourceNotification shall only be sent if and only if the status of the corresponding subscription is active not paused nor expired [Tags] mandatory + ${subscription_update_fragment}= Load Test Sample ${filepath} + Update Context Source Registration Subscription ${subscription_id} ${subscription_update_fragment} + ${context_source_registration_id}= Generate Random Entity Id ${context_source_registration_id_prefix} ${context_source_registration_payload}= Load Test Sample ${context_source_registration_payload_file_path} ${context_source_registration_id} Set Suite Variable ${context_source_registration_id} @@ -26,7 +35,6 @@ If A cSourceNotification Is Not Successfully Sent The Notification Member Shall Create Context Source Registration ${context_source_registration_payload} Wait for no notification - # TODO: Retrieve context source registration subscription and check notification member *** Keywords *** Setup Initial Context Source Registration Subscriptions diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_09.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_09.robot index 61593364..f66d1887 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_09.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_09.robot @@ -1,11 +1,10 @@ *** Settings *** -Documentation Check that a cSourceNotification shall only be sent if and only if the status of the corresponding subscription is active not paused nor expired +Documentation Check if a context source registration subscription does not define a temporalQ member, a CsourceNotification will be triggered from matching context source registrations for context sources providing latest information Resource ${EXECDIR}/resources/ApiUtils.resource Resource ${EXECDIR}/resources/AssertionUtils.resource Resource ${EXECDIR}/resources/JsonUtils.resource Resource ${EXECDIR}/resources/NotificationUtils.resource -Test Template Do Not Receive cSourceNotification If Subscription Status Is Not Active Suite Setup Setup Initial Context Source Registration Subscriptions Suite Teardown Delete Created Context Source Registration Subscriptions @@ -14,36 +13,32 @@ ${context_source_registration_id_prefix}= urn:ngsi-ld:ContextSourceRegistration ${subscription_id_prefix}= urn:ngsi-ld:Subscription: ${context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-sample.jsonld ${subscription_payload_file_path}= csourceSubscriptions/withReachableEndpoints/subscription-sample.jsonld +${update_fragment_file_path}= csourceRegistrations/fragments/context-source-registration-update-sample.json -*** Test Cases *** FILEPATH -PausedSubscription csourceSubscriptions/fragments/subscription-isActive-update-sample.json -ExpiredSubscription csourceSubscriptions/fragments/subscription-expiresAt-update-sample.json - -*** Keywords *** -Do Not Receive cSourceNotification If Subscription Status Is Not Active - [Arguments] ${filepath} - [Documentation] Check that a cSourceNotification shall only be sent if and only if the status of the corresponding subscription is active not paused nor expired +*** Test Case *** +Receive cSourceNotification For Matching Context Source Registrations Providing Latest Information + [Documentation] Check if a context source registration subscription does not define a temporalQ member, a CsourceNotification will be triggered from matching context source registrations for context sources providing latest information [Tags] mandatory - ${subscription_update_fragment}= Load Test Sample ${filepath} - Update Context Source Registration Subscription ${subscription_id} ${subscription_update_fragment} + ${update_fragment}= Load Test Sample ${update_fragment_file_path} + Update Context Source Registration ${context_source_registration_id} ${update_fragment} - ${context_source_registration_id}= Generate Random Entity Id ${context_source_registration_id_prefix} - ${context_source_registration_payload}= Load Test Sample ${context_source_registration_payload_file_path} ${context_source_registration_id} - Set Suite Variable ${context_source_registration_id} - - Create Context Source Registration ${context_source_registration_payload} - - Wait for no notification + Wait for notification and validate it + # TODO: check notification content *** Keywords *** Setup Initial Context Source Registration Subscriptions Start Local Server + ${context_source_registration_id}= Generate Random Entity Id ${context_source_registration_id_prefix} ${subscription_id}= Generate Random Entity Id ${subscription_id_prefix} + ${context_source_registration_payload}= Load Test Sample ${context_source_registration_payload_file_path} ${context_source_registration_id} ${subscription_payload}= Load Test Sample ${subscription_payload_file_path} ${subscription_id} + + Create Context Source Registration ${context_source_registration_payload} Create Context Source Registration Subscription ${subscription_payload} + Set Suite Variable ${context_source_registration_id} Set Suite Variable ${subscription_id} Delete Created Context Source Registration Subscriptions diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_10.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_10.robot index f66d1887..b1f71066 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_10.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_10.robot @@ -1,5 +1,5 @@ *** Settings *** -Documentation Check if a context source registration subscription does not define a temporalQ member, a CsourceNotification will be triggered from matching context source registrations for context sources providing latest information +Documentation Check if a context source registration subscription defines an entities member, a CsourceNotification will be triggered from context source registrations with information member matching the described entities Resource ${EXECDIR}/resources/ApiUtils.resource Resource ${EXECDIR}/resources/AssertionUtils.resource Resource ${EXECDIR}/resources/JsonUtils.resource @@ -13,11 +13,11 @@ ${context_source_registration_id_prefix}= urn:ngsi-ld:ContextSourceRegistration ${subscription_id_prefix}= urn:ngsi-ld:Subscription: ${context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-sample.jsonld ${subscription_payload_file_path}= csourceSubscriptions/withReachableEndpoints/subscription-sample.jsonld -${update_fragment_file_path}= csourceRegistrations/fragments/context-source-registration-update-sample.json +${update_fragment_file_path}= csourceRegistrations/fragments/context-source-registration-update-information-sample.json *** Test Case *** -Receive cSourceNotification For Matching Context Source Registrations Providing Latest Information - [Documentation] Check if a context source registration subscription does not define a temporalQ member, a CsourceNotification will be triggered from matching context source registrations for context sources providing latest information +Receive cSourceNotification For No Longer Matching Context Source Registrations Providing Latest Information + [Documentation] Check if a context source registration subscription defines an entities member, a CsourceNotification will be triggered from context source registrations with information member matching the described entities [Tags] mandatory ${update_fragment}= Load Test Sample ${update_fragment_file_path} -- GitLab From af4781d216caddcb9ea5a8680ec109a5351b352e Mon Sep 17 00:00:00 2001 From: Houcem Kacem Date: Wed, 20 Jan 2021 18:25:31 +0100 Subject: [PATCH 12/30] feat: add tp 037_11 + refactor code --- .../NotificationBehaviour/037_06.robot | 4 +- .../NotificationBehaviour/037_07.robot | 4 +- .../NotificationBehaviour/037_08.robot | 4 +- .../NotificationBehaviour/037_09.robot | 8 ++-- .../NotificationBehaviour/037_10.robot | 8 ++-- .../NotificationBehaviour/037_11.robot | 47 +++++++++++++++++++ ...tration-temporal-information-sample.jsonld | 22 +++++++++ .../subscription-temporalQ-sample.jsonld | 25 ++++++++++ 8 files changed, 108 insertions(+), 14 deletions(-) create mode 100644 TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_11.robot create mode 100644 data/csourceRegistrations/context-source-registration-temporal-information-sample.jsonld create mode 100644 data/csourceSubscriptions/withReachableEndpoints/subscription-temporalQ-sample.jsonld diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_06.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_06.robot index 63e90a9d..dd479f12 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_06.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_06.robot @@ -6,7 +6,7 @@ Resource ${EXECDIR}/resources/JsonUtils.resource Resource ${EXECDIR}/resources/NotificationUtils.resource Suite Setup Setup Initial Context Source Registration Subscriptions -Suite Teardown Delete Created Context Source Registration Subscriptions +Suite Teardown Delete Created Context Source Registrations And Subscriptions *** Variable *** ${context_source_registration_id_prefix}= urn:ngsi-ld:ContextSourceRegistration: @@ -38,7 +38,7 @@ Setup Initial Context Source Registration Subscriptions Set Suite Variable ${subscription_id} -Delete Created Context Source Registration Subscriptions +Delete Created Context Source Registrations And Subscriptions Stop Local Server Delete Context Source Registration ${context_source_registration_id} diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_07.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_07.robot index af6efeb2..3afba7b3 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_07.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_07.robot @@ -6,7 +6,7 @@ Resource ${EXECDIR}/resources/JsonUtils.resource Resource ${EXECDIR}/resources/NotificationUtils.resource Suite Setup Setup Initial Context Source Registration Subscriptions -Suite Teardown Delete Created Context Source Registration Subscriptions +Suite Teardown Delete Created Context Source Registrations And Subscriptions *** Variable *** ${context_source_registration_id_prefix}= urn:ngsi-ld:ContextSourceRegistration: @@ -38,7 +38,7 @@ Setup Initial Context Source Registration Subscriptions Set Suite Variable ${subscription_id} -Delete Created Context Source Registration Subscriptions +Delete Created Context Source Registrations And Subscriptions Stop Local Server Delete Context Source Registration ${context_source_registration_id} diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_08.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_08.robot index 61593364..830c8c5f 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_08.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_08.robot @@ -7,7 +7,7 @@ Resource ${EXECDIR}/resources/NotificationUtils.resource Test Template Do Not Receive cSourceNotification If Subscription Status Is Not Active Suite Setup Setup Initial Context Source Registration Subscriptions -Suite Teardown Delete Created Context Source Registration Subscriptions +Suite Teardown Delete Created Context Source Registrations And Subscriptions *** Variable *** ${context_source_registration_id_prefix}= urn:ngsi-ld:ContextSourceRegistration: @@ -46,7 +46,7 @@ Setup Initial Context Source Registration Subscriptions Set Suite Variable ${subscription_id} -Delete Created Context Source Registration Subscriptions +Delete Created Context Source Registrations And Subscriptions Stop Local Server Delete Context Source Registration ${context_source_registration_id} diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_09.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_09.robot index f66d1887..fdf6aa60 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_09.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_09.robot @@ -5,8 +5,8 @@ Resource ${EXECDIR}/resources/AssertionUtils.resource Resource ${EXECDIR}/resources/JsonUtils.resource Resource ${EXECDIR}/resources/NotificationUtils.resource -Suite Setup Setup Initial Context Source Registration Subscriptions -Suite Teardown Delete Created Context Source Registration Subscriptions +Suite Setup Setup Initial Context Source Registrations And Subscriptions +Suite Teardown Delete Created Context Source Registrations And Subscriptions *** Variable *** ${context_source_registration_id_prefix}= urn:ngsi-ld:ContextSourceRegistration: @@ -27,7 +27,7 @@ Receive cSourceNotification For Matching Context Source Registrations Providing # TODO: check notification content *** Keywords *** -Setup Initial Context Source Registration Subscriptions +Setup Initial Context Source Registrations And Subscriptions Start Local Server ${context_source_registration_id}= Generate Random Entity Id ${context_source_registration_id_prefix} @@ -41,7 +41,7 @@ Setup Initial Context Source Registration Subscriptions Set Suite Variable ${context_source_registration_id} Set Suite Variable ${subscription_id} -Delete Created Context Source Registration Subscriptions +Delete Created Context Source Registrations And Subscriptions Stop Local Server Delete Context Source Registration ${context_source_registration_id} diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_10.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_10.robot index b1f71066..7deda0ab 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_10.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_10.robot @@ -5,8 +5,8 @@ Resource ${EXECDIR}/resources/AssertionUtils.resource Resource ${EXECDIR}/resources/JsonUtils.resource Resource ${EXECDIR}/resources/NotificationUtils.resource -Suite Setup Setup Initial Context Source Registration Subscriptions -Suite Teardown Delete Created Context Source Registration Subscriptions +Suite Setup Setup Initial Context Source Registrations And Subscriptions +Suite Teardown Delete Created Context Source Registrations And Subscriptions *** Variable *** ${context_source_registration_id_prefix}= urn:ngsi-ld:ContextSourceRegistration: @@ -27,7 +27,7 @@ Receive cSourceNotification For No Longer Matching Context Source Registrations # TODO: check notification content *** Keywords *** -Setup Initial Context Source Registration Subscriptions +Setup Initial Context Source Registrations And Subscriptions Start Local Server ${context_source_registration_id}= Generate Random Entity Id ${context_source_registration_id_prefix} @@ -41,7 +41,7 @@ Setup Initial Context Source Registration Subscriptions Set Suite Variable ${context_source_registration_id} Set Suite Variable ${subscription_id} -Delete Created Context Source Registration Subscriptions +Delete Created Context Source Registrations And Subscriptions Stop Local Server Delete Context Source Registration ${context_source_registration_id} diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_11.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_11.robot new file mode 100644 index 00000000..d1658b56 --- /dev/null +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_11.robot @@ -0,0 +1,47 @@ +*** Settings *** +Documentation Check if a context source registration subscription defines temporalQ member with timeproperty observedAt, the temporal query is matched against the observationInterval of matching context source registrations +Resource ${EXECDIR}/resources/ApiUtils.resource +Resource ${EXECDIR}/resources/AssertionUtils.resource +Resource ${EXECDIR}/resources/JsonUtils.resource +Resource ${EXECDIR}/resources/NotificationUtils.resource + +Suite Setup Setup Initial Context Source Registration Subscriptions +Suite Teardown Delete Created Context Source Registrations And Subscriptions + +*** Variable *** +${context_source_registration_id_prefix}= urn:ngsi-ld:ContextSourceRegistration: +${subscription_id_prefix}= urn:ngsi-ld:Subscription: +${context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-temporal-information-sample.jsonld +${subscription_payload_file_path}= csourceSubscriptions/withReachableEndpoints/subscription-temporalQ-sample.jsonld +${update_fragment_file_path}= csourceRegistrations/fragments/context-source-registration-update-information-sample.json + +*** Test Case *** +Receive cSourceNotification For Matching Context Source Registrations Providing Temporal Information + [Documentation] Check if a context source registration subscription defines temporalQ member with timeproperty observedAt, the temporal query is matched against the observationInterval of matching context source registrations + [Tags] mandatory + + ${context_source_registration_id}= Generate Random Entity Id ${context_source_registration_id_prefix} + ${context_source_registration_payload}= Load Test Sample ${context_source_registration_payload_file_path} ${context_source_registration_id} + Set Suite Variable ${context_source_registration_id} + + Create Context Source Registration ${context_source_registration_payload} + + Wait for notification and validate it + # TODO: check notification content + +*** Keywords *** +Setup Initial Context Source Registration Subscriptions + Start Local Server + + ${subscription_id}= Generate Random Entity Id ${subscription_id_prefix} + ${subscription_payload}= Load Test Sample ${subscription_payload_file_path} ${subscription_id} + + Create Context Source Registration Subscription ${subscription_payload} + + Set Suite Variable ${subscription_id} + +Delete Created Context Source Registrations And Subscriptions + Stop Local Server + + Delete Context Source Registration ${context_source_registration_id} + Delete Context Source Registration Subscription ${subscription_id} diff --git a/data/csourceRegistrations/context-source-registration-temporal-information-sample.jsonld b/data/csourceRegistrations/context-source-registration-temporal-information-sample.jsonld new file mode 100644 index 00000000..504b06ac --- /dev/null +++ b/data/csourceRegistrations/context-source-registration-temporal-information-sample.jsonld @@ -0,0 +1,22 @@ +{ + "id":"urn:ngsi-ld:ContextSourceRegistration:randomUUID", + "type":"ContextSourceRegistration", + "information":[ + { + "entities":[ + { + "type":"Building" + } + ] + } + ], + "observationInterval":{ + "startAt":"2020-08-01T22:07:00Z", + "endAt":"2021-08-01T21:07:00Z" + }, + "endpoint":"http://10.5.1.217:8080", + "@context":[ + "https://raw.githubusercontent.com/easy-global-market/ngsild-api-data-models/feature/add-json-ld-context-for-ngsi-ld-test-suite/ngsi-ld-test-suite/ngsi-ld-test-suite-context.jsonld", + "https://uri.etsi.org/ngsi-ld/v1/ngsi-ld-core-context.jsonld" + ] +} \ No newline at end of file diff --git a/data/csourceSubscriptions/withReachableEndpoints/subscription-temporalQ-sample.jsonld b/data/csourceSubscriptions/withReachableEndpoints/subscription-temporalQ-sample.jsonld new file mode 100644 index 00000000..21f02bf8 --- /dev/null +++ b/data/csourceSubscriptions/withReachableEndpoints/subscription-temporalQ-sample.jsonld @@ -0,0 +1,25 @@ +{ + "id":"urn:ngsi-ld:Subscription:randomUUID", + "type":"Subscription", + "entities":[ + { + "type":"Building" + } + ], + "notification":{ + "format":"keyValues", + "endpoint":{ + "uri":"http://10.5.3.69:8085/post", + "accept":"application/json" + } + }, + "temporalQ": { + "timerel": "after", + "timeAt": "2020-06-01T22:07:00Z", + "timeproperty": "observedAt" + }, + "@context":[ + "https://raw.githubusercontent.com/easy-global-market/ngsild-api-data-models/feature/add-json-ld-context-for-ngsi-ld-test-suite/ngsi-ld-test-suite/ngsi-ld-test-suite-context.jsonld", + "https://uri.etsi.org/ngsi-ld/v1/ngsi-ld-core-context.jsonld" + ] +} \ No newline at end of file -- GitLab From 49c597582c770bebe2bca24c972b4e5b43421675 Mon Sep 17 00:00:00 2001 From: Houcem Kacem Date: Thu, 21 Jan 2021 12:16:53 +0100 Subject: [PATCH 13/30] feat: add tps 037_12 037_13 037_14 --- .../NotificationBehaviour/037_11.robot | 5 +- .../NotificationBehaviour/037_12.robot | 45 ++++++++++++++++++ .../NotificationBehaviour/037_13.robot | 46 +++++++++++++++++++ .../NotificationBehaviour/037_14.robot | 46 +++++++++++++++++++ ...tration-detailed-information-sample.jsonld | 20 ++++++++ ...istration-managementInterval-sample.jsonld | 22 +++++++++ ...tration-observationInterval-sample.jsonld} | 0 .../subscription-sample.jsonld | 2 +- ...cription-temporalQ-createdAt-sample.jsonld | 25 ++++++++++ ...ription-temporalQ-modifiedAt-sample.jsonld | 25 ++++++++++ .../subscription-temporalQ-sample.jsonld | 2 +- .../subscription-timeInterval-sample.jsonld | 2 +- ...bscription-watchedAttributes-sample.jsonld | 21 +++++++++ 13 files changed, 255 insertions(+), 6 deletions(-) create mode 100644 TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_12.robot create mode 100644 TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_13.robot create mode 100644 TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_14.robot create mode 100644 data/csourceRegistrations/context-source-registration-detailed-information-sample.jsonld create mode 100644 data/csourceRegistrations/context-source-registration-managementInterval-sample.jsonld rename data/csourceRegistrations/{context-source-registration-temporal-information-sample.jsonld => context-source-registration-observationInterval-sample.jsonld} (100%) create mode 100644 data/csourceSubscriptions/withReachableEndpoints/subscription-temporalQ-createdAt-sample.jsonld create mode 100644 data/csourceSubscriptions/withReachableEndpoints/subscription-temporalQ-modifiedAt-sample.jsonld create mode 100644 data/csourceSubscriptions/withReachableEndpoints/subscription-watchedAttributes-sample.jsonld diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_11.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_11.robot index d1658b56..0d1c2983 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_11.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_11.robot @@ -11,12 +11,11 @@ Suite Teardown Delete Created Context Source Registrations And Subscription *** Variable *** ${context_source_registration_id_prefix}= urn:ngsi-ld:ContextSourceRegistration: ${subscription_id_prefix}= urn:ngsi-ld:Subscription: -${context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-temporal-information-sample.jsonld +${context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-observationInterval-sample.jsonld ${subscription_payload_file_path}= csourceSubscriptions/withReachableEndpoints/subscription-temporalQ-sample.jsonld -${update_fragment_file_path}= csourceRegistrations/fragments/context-source-registration-update-information-sample.json *** Test Case *** -Receive cSourceNotification For Matching Context Source Registrations Providing Temporal Information +Receive cSourceNotification For Matching Context Source Registrations On Observation Interval [Documentation] Check if a context source registration subscription defines temporalQ member with timeproperty observedAt, the temporal query is matched against the observationInterval of matching context source registrations [Tags] mandatory diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_12.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_12.robot new file mode 100644 index 00000000..46d8ffe8 --- /dev/null +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_12.robot @@ -0,0 +1,45 @@ +*** Settings *** +Documentation Check if a context source registration subscription defines temporalQ member with timeproperty createdAt or modifiedAt, the temporal query is matched against the managementInterval of matching context source registrations +Resource ${EXECDIR}/resources/ApiUtils.resource +Resource ${EXECDIR}/resources/AssertionUtils.resource +Resource ${EXECDIR}/resources/JsonUtils.resource +Resource ${EXECDIR}/resources/NotificationUtils.resource + +Test Template Receive cSourceNotification For Matching Context Source Registrations On Management Interval +Suite Setup Start Local Server +Suite Teardown Delete Created Context Source Registrations And Subscriptions + +*** Variable *** +${context_source_registration_id_prefix}= urn:ngsi-ld:ContextSourceRegistration: +${subscription_id_prefix}= urn:ngsi-ld:Subscription: +${context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-managementInterval-sample.jsonld + +*** Test Cases *** FILEPATH +CreatedAt csourceSubscriptions/withReachableEndpoints/subscription-temporalQ-createdAt-sample.jsonld +ModifiedAt csourceSubscriptions/withReachableEndpoints/subscription-temporalQ-modifiedAt-sample.jsonld + +*** Keywords *** +Receive cSourceNotification For Matching Context Source Registrations On Management Interval + [Arguments] ${filepath} + [Documentation] Check if a context source registration subscription defines temporalQ member with timeproperty createdAt or modifiedAt, the temporal query is matched against the managementInterval of matching context source registrations + [Tags] mandatory + + ${subscription_id}= Generate Random Entity Id ${subscription_id_prefix} + ${subscription_payload}= Load Test Sample ${filepath} ${subscription_id} + Create Context Source Registration Subscription ${subscription_payload} + Set Suite Variable ${subscription_id} + + ${context_source_registration_id}= Generate Random Entity Id ${context_source_registration_id_prefix} + ${context_source_registration_payload}= Load Test Sample ${context_source_registration_payload_file_path} ${context_source_registration_id} + Set Suite Variable ${context_source_registration_id} + + Create Context Source Registration ${context_source_registration_payload} + + Wait for notification and validate it + # TODO: check notification content + +Delete Created Context Source Registrations And Subscriptions + Stop Local Server + + Delete Context Source Registration ${context_source_registration_id} + Delete Context Source Registration Subscription ${subscription_id} diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_13.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_13.robot new file mode 100644 index 00000000..d77c684b --- /dev/null +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_13.robot @@ -0,0 +1,46 @@ +*** Settings *** +Documentation Check if a context source registrations subscription defines entities member and watchedAttributes member, a CsourceNotification will be triggered from context source registrations with information member matching the described entities and attributes +Resource ${EXECDIR}/resources/ApiUtils.resource +Resource ${EXECDIR}/resources/AssertionUtils.resource +Resource ${EXECDIR}/resources/JsonUtils.resource +Resource ${EXECDIR}/resources/NotificationUtils.resource + +Suite Setup Setup Initial Context Source Registration Subscriptions +Suite Teardown Delete Created Context Source Registrations And Subscriptions + +*** Variable *** +${context_source_registration_id_prefix}= urn:ngsi-ld:ContextSourceRegistration: +${subscription_id_prefix}= urn:ngsi-ld:Subscription: +${context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-detailed-information-sample.jsonld +${subscription_payload_file_path}= csourceSubscriptions/withReachableEndpoints/subscription-watchedAttributes-sample.jsonld + +*** Test Case *** +Receive cSourceNotification For Matching Context Source Registrations On Watched Attributes + [Documentation] Check if a context source registrations subscription defines entities member and watchedAttributes member, a CsourceNotification will be triggered from context source registrations with information member matching the described entities and attributes + [Tags] mandatory + + ${context_source_registration_id}= Generate Random Entity Id ${context_source_registration_id_prefix} + ${context_source_registration_payload}= Load Test Sample ${context_source_registration_payload_file_path} ${context_source_registration_id} + Set Suite Variable ${context_source_registration_id} + + Create Context Source Registration ${context_source_registration_payload} + + Wait for notification and validate it + # TODO: check notification content + +*** Keywords *** +Setup Initial Context Source Registration Subscriptions + Start Local Server + + ${subscription_id}= Generate Random Entity Id ${subscription_id_prefix} + ${subscription_payload}= Load Test Sample ${subscription_payload_file_path} ${subscription_id} + + Create Context Source Registration Subscription ${subscription_payload} + + Set Suite Variable ${subscription_id} + +Delete Created Context Source Registrations And Subscriptions + Stop Local Server + + Delete Context Source Registration ${context_source_registration_id} + Delete Context Source Registration Subscription ${subscription_id} diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_14.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_14.robot new file mode 100644 index 00000000..cfffb133 --- /dev/null +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_14.robot @@ -0,0 +1,46 @@ +*** Settings *** +Documentation Check if a context source registrations subscription does not define watchedAttributes member, a CsourceNotification will be triggered from context source registrations with information member matching all attributes of the described entities +Resource ${EXECDIR}/resources/ApiUtils.resource +Resource ${EXECDIR}/resources/AssertionUtils.resource +Resource ${EXECDIR}/resources/JsonUtils.resource +Resource ${EXECDIR}/resources/NotificationUtils.resource + +Suite Setup Setup Initial Context Source Registration Subscriptions +Suite Teardown Delete Created Context Source Registrations And Subscriptions + +*** Variable *** +${context_source_registration_id_prefix}= urn:ngsi-ld:ContextSourceRegistration: +${subscription_id_prefix}= urn:ngsi-ld:Subscription: +${context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-detailed-information-sample.jsonld +${subscription_payload_file_path}= csourceSubscriptions/withReachableEndpoints/subscription-sample.jsonld + +*** Test Case *** +Receive cSourceNotification For Matching Context Source Registrations On Any Attribute + [Documentation] Check if a context source registrations subscription does not define watchedAttributes member, a CsourceNotification will be triggered from context source registrations with information member matching all attributes of the described entities + [Tags] mandatory + + ${context_source_registration_id}= Generate Random Entity Id ${context_source_registration_id_prefix} + ${context_source_registration_payload}= Load Test Sample ${context_source_registration_payload_file_path} ${context_source_registration_id} + Set Suite Variable ${context_source_registration_id} + + Create Context Source Registration ${context_source_registration_payload} + + Wait for notification and validate it + # TODO: check notification content + +*** Keywords *** +Setup Initial Context Source Registration Subscriptions + Start Local Server + + ${subscription_id}= Generate Random Entity Id ${subscription_id_prefix} + ${subscription_payload}= Load Test Sample ${subscription_payload_file_path} ${subscription_id} + + Create Context Source Registration Subscription ${subscription_payload} + + Set Suite Variable ${subscription_id} + +Delete Created Context Source Registrations And Subscriptions + Stop Local Server + + Delete Context Source Registration ${context_source_registration_id} + Delete Context Source Registration Subscription ${subscription_id} diff --git a/data/csourceRegistrations/context-source-registration-detailed-information-sample.jsonld b/data/csourceRegistrations/context-source-registration-detailed-information-sample.jsonld new file mode 100644 index 00000000..5884fc06 --- /dev/null +++ b/data/csourceRegistrations/context-source-registration-detailed-information-sample.jsonld @@ -0,0 +1,20 @@ +{ + "id":"urn:ngsi-ld:ContextSourceRegistration:randomUUID", + "type":"ContextSourceRegistration", + "information":[ + { + "entities":[ + { + "type":"Building" + } + ], + "propertyNames":["name", "subCategory"], + "relationshipNames":["locatedAt"] + } + ], + "endpoint":"http://10.5.1.217:8080", + "@context":[ + "https://raw.githubusercontent.com/easy-global-market/ngsild-api-data-models/feature/add-json-ld-context-for-ngsi-ld-test-suite/ngsi-ld-test-suite/ngsi-ld-test-suite-context.jsonld", + "https://uri.etsi.org/ngsi-ld/v1/ngsi-ld-core-context.jsonld" + ] +} \ No newline at end of file diff --git a/data/csourceRegistrations/context-source-registration-managementInterval-sample.jsonld b/data/csourceRegistrations/context-source-registration-managementInterval-sample.jsonld new file mode 100644 index 00000000..3c20c189 --- /dev/null +++ b/data/csourceRegistrations/context-source-registration-managementInterval-sample.jsonld @@ -0,0 +1,22 @@ +{ + "id":"urn:ngsi-ld:ContextSourceRegistration:randomUUID", + "type":"ContextSourceRegistration", + "information":[ + { + "entities":[ + { + "type":"Building" + } + ] + } + ], + "managementInterval":{ + "startAt":"2020-08-01T22:07:00Z", + "endAt":"2021-08-01T21:07:00Z" + }, + "endpoint":"http://10.5.1.217:8080", + "@context":[ + "https://raw.githubusercontent.com/easy-global-market/ngsild-api-data-models/feature/add-json-ld-context-for-ngsi-ld-test-suite/ngsi-ld-test-suite/ngsi-ld-test-suite-context.jsonld", + "https://uri.etsi.org/ngsi-ld/v1/ngsi-ld-core-context.jsonld" + ] +} \ No newline at end of file diff --git a/data/csourceRegistrations/context-source-registration-temporal-information-sample.jsonld b/data/csourceRegistrations/context-source-registration-observationInterval-sample.jsonld similarity index 100% rename from data/csourceRegistrations/context-source-registration-temporal-information-sample.jsonld rename to data/csourceRegistrations/context-source-registration-observationInterval-sample.jsonld diff --git a/data/csourceSubscriptions/withReachableEndpoints/subscription-sample.jsonld b/data/csourceSubscriptions/withReachableEndpoints/subscription-sample.jsonld index 3bf7eb61..50e4fe1b 100644 --- a/data/csourceSubscriptions/withReachableEndpoints/subscription-sample.jsonld +++ b/data/csourceSubscriptions/withReachableEndpoints/subscription-sample.jsonld @@ -9,7 +9,7 @@ "notification":{ "format":"keyValues", "endpoint":{ - "uri":"http://10.5.3.69:8085/post", + "uri":"http://10.5.2.52:8085/post", "accept":"application/json" } }, diff --git a/data/csourceSubscriptions/withReachableEndpoints/subscription-temporalQ-createdAt-sample.jsonld b/data/csourceSubscriptions/withReachableEndpoints/subscription-temporalQ-createdAt-sample.jsonld new file mode 100644 index 00000000..2d5735db --- /dev/null +++ b/data/csourceSubscriptions/withReachableEndpoints/subscription-temporalQ-createdAt-sample.jsonld @@ -0,0 +1,25 @@ +{ + "id":"urn:ngsi-ld:Subscription:randomUUID", + "type":"Subscription", + "entities":[ + { + "type":"Building" + } + ], + "notification":{ + "format":"keyValues", + "endpoint":{ + "uri":"http://10.5.2.52:8085/post", + "accept":"application/json" + } + }, + "temporalQ": { + "timerel": "after", + "timeAt": "2020-06-01T22:07:00Z", + "timeproperty": "createdAt" + }, + "@context":[ + "https://raw.githubusercontent.com/easy-global-market/ngsild-api-data-models/feature/add-json-ld-context-for-ngsi-ld-test-suite/ngsi-ld-test-suite/ngsi-ld-test-suite-context.jsonld", + "https://uri.etsi.org/ngsi-ld/v1/ngsi-ld-core-context.jsonld" + ] +} \ No newline at end of file diff --git a/data/csourceSubscriptions/withReachableEndpoints/subscription-temporalQ-modifiedAt-sample.jsonld b/data/csourceSubscriptions/withReachableEndpoints/subscription-temporalQ-modifiedAt-sample.jsonld new file mode 100644 index 00000000..f911156d --- /dev/null +++ b/data/csourceSubscriptions/withReachableEndpoints/subscription-temporalQ-modifiedAt-sample.jsonld @@ -0,0 +1,25 @@ +{ + "id":"urn:ngsi-ld:Subscription:randomUUID", + "type":"Subscription", + "entities":[ + { + "type":"Building" + } + ], + "notification":{ + "format":"keyValues", + "endpoint":{ + "uri":"http://10.5.2.52:8085/post", + "accept":"application/json" + } + }, + "temporalQ": { + "timerel": "after", + "timeAt": "2020-06-01T22:07:00Z", + "timeproperty": "modifiedAt" + }, + "@context":[ + "https://raw.githubusercontent.com/easy-global-market/ngsild-api-data-models/feature/add-json-ld-context-for-ngsi-ld-test-suite/ngsi-ld-test-suite/ngsi-ld-test-suite-context.jsonld", + "https://uri.etsi.org/ngsi-ld/v1/ngsi-ld-core-context.jsonld" + ] +} \ No newline at end of file diff --git a/data/csourceSubscriptions/withReachableEndpoints/subscription-temporalQ-sample.jsonld b/data/csourceSubscriptions/withReachableEndpoints/subscription-temporalQ-sample.jsonld index 21f02bf8..5c6c8149 100644 --- a/data/csourceSubscriptions/withReachableEndpoints/subscription-temporalQ-sample.jsonld +++ b/data/csourceSubscriptions/withReachableEndpoints/subscription-temporalQ-sample.jsonld @@ -9,7 +9,7 @@ "notification":{ "format":"keyValues", "endpoint":{ - "uri":"http://10.5.3.69:8085/post", + "uri":"http://10.5.2.52:8085/post", "accept":"application/json" } }, diff --git a/data/csourceSubscriptions/withReachableEndpoints/subscription-timeInterval-sample.jsonld b/data/csourceSubscriptions/withReachableEndpoints/subscription-timeInterval-sample.jsonld index 02f47e43..2edbf650 100644 --- a/data/csourceSubscriptions/withReachableEndpoints/subscription-timeInterval-sample.jsonld +++ b/data/csourceSubscriptions/withReachableEndpoints/subscription-timeInterval-sample.jsonld @@ -10,7 +10,7 @@ "notification":{ "format":"keyValues", "endpoint":{ - "uri":"http://10.5.3.69:8085/post", + "uri":"http://10.5.2.52:8085/post", "accept":"application/json" } }, diff --git a/data/csourceSubscriptions/withReachableEndpoints/subscription-watchedAttributes-sample.jsonld b/data/csourceSubscriptions/withReachableEndpoints/subscription-watchedAttributes-sample.jsonld new file mode 100644 index 00000000..2e045dd1 --- /dev/null +++ b/data/csourceSubscriptions/withReachableEndpoints/subscription-watchedAttributes-sample.jsonld @@ -0,0 +1,21 @@ +{ + "id":"urn:ngsi-ld:Subscription:randomUUID", + "type":"Subscription", + "watchedAttributes": ["name", "subCategory"], + "entities":[ + { + "type":"Building" + } + ], + "notification":{ + "format":"keyValues", + "endpoint":{ + "uri":"http://10.5.2.52:8085/post", + "accept":"application/json" + } + }, + "@context":[ + "https://raw.githubusercontent.com/easy-global-market/ngsild-api-data-models/feature/add-json-ld-context-for-ngsi-ld-test-suite/ngsi-ld-test-suite/ngsi-ld-test-suite-context.jsonld", + "https://uri.etsi.org/ngsi-ld/v1/ngsi-ld-core-context.jsonld" + ] +} \ No newline at end of file -- GitLab From 15372b1326b4661a6e5d5d6dfabc0d934ea576c2 Mon Sep 17 00:00:00 2001 From: Houcem Kacem Date: Thu, 21 Jan 2021 15:37:19 +0100 Subject: [PATCH 14/30] feat: add tps 037_15 and 037_16 --- .../NotificationBehaviour/037_15.robot | 46 +++++++++++++++++++ .../NotificationBehaviour/037_16.robot | 46 +++++++++++++++++++ ...source-registration-location-sample.jsonld | 25 ++++++++++ .../subscription-geoQ-sample.jsonld | 26 +++++++++++ ...ion-geoQ-without-geoproperty-sample.jsonld | 25 ++++++++++ 5 files changed, 168 insertions(+) create mode 100644 TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_15.robot create mode 100644 TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_16.robot create mode 100644 data/csourceRegistrations/context-source-registration-location-sample.jsonld create mode 100644 data/csourceSubscriptions/withReachableEndpoints/subscription-geoQ-sample.jsonld create mode 100644 data/csourceSubscriptions/withReachableEndpoints/subscription-geoQ-without-geoproperty-sample.jsonld diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_15.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_15.robot new file mode 100644 index 00000000..ed7c7956 --- /dev/null +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_15.robot @@ -0,0 +1,46 @@ +*** Settings *** +Documentation Check if a context source registrations subscription defines a geoQ member, a CsourceNotification will be triggered from matching context source registrations with a matching location member +Resource ${EXECDIR}/resources/ApiUtils.resource +Resource ${EXECDIR}/resources/AssertionUtils.resource +Resource ${EXECDIR}/resources/JsonUtils.resource +Resource ${EXECDIR}/resources/NotificationUtils.resource + +Suite Setup Setup Initial Context Source Registration Subscriptions +Suite Teardown Delete Created Context Source Registrations And Subscriptions + +*** Variable *** +${context_source_registration_id_prefix}= urn:ngsi-ld:ContextSourceRegistration: +${subscription_id_prefix}= urn:ngsi-ld:Subscription: +${context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-location-sample.jsonld +${subscription_payload_file_path}= csourceSubscriptions/withReachableEndpoints/subscription-geoQ-sample.jsonld + +*** Test Case *** +Receive cSourceNotification For Matching Context Source Registrations On Location + [Documentation] Check if a context source registrations subscription defines a geoQ member, a CsourceNotification will be triggered from matching context source registrations with a matching location member + [Tags] mandatory + + ${context_source_registration_id}= Generate Random Entity Id ${context_source_registration_id_prefix} + ${context_source_registration_payload}= Load Test Sample ${context_source_registration_payload_file_path} ${context_source_registration_id} + Set Suite Variable ${context_source_registration_id} + + Create Context Source Registration ${context_source_registration_payload} + + Wait for notification and validate it + # TODO: check notification content + +*** Keywords *** +Setup Initial Context Source Registration Subscriptions + Start Local Server + + ${subscription_id}= Generate Random Entity Id ${subscription_id_prefix} + ${subscription_payload}= Load Test Sample ${subscription_payload_file_path} ${subscription_id} + + Create Context Source Registration Subscription ${subscription_payload} + + Set Suite Variable ${subscription_id} + +Delete Created Context Source Registrations And Subscriptions + Stop Local Server + + Delete Context Source Registration ${context_source_registration_id} + Delete Context Source Registration Subscription ${subscription_id} diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_16.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_16.robot new file mode 100644 index 00000000..128b372e --- /dev/null +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_16.robot @@ -0,0 +1,46 @@ +*** Settings *** +Documentation Check if a context source registrations subscription does not define a geoproperty in the geoQ member, a CsourceNotification will be triggered from matching context source registrations with a matching location member +Resource ${EXECDIR}/resources/ApiUtils.resource +Resource ${EXECDIR}/resources/AssertionUtils.resource +Resource ${EXECDIR}/resources/JsonUtils.resource +Resource ${EXECDIR}/resources/NotificationUtils.resource + +Suite Setup Setup Initial Context Source Registration Subscriptions +Suite Teardown Delete Created Context Source Registrations And Subscriptions + +*** Variable *** +${context_source_registration_id_prefix}= urn:ngsi-ld:ContextSourceRegistration: +${subscription_id_prefix}= urn:ngsi-ld:Subscription: +${context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-location-sample.jsonld +${subscription_payload_file_path}= csourceSubscriptions/withReachableEndpoints/subscription-geoQ-without-geoproperty-sample.jsonld + +*** Test Case *** +Receive cSourceNotification For Matching Context Source Registrations On Location As Default + [Documentation] Check if a context source registrations subscription does not define a geoproperty in the geoQ member, a CsourceNotification will be triggered from matching context source registrations with a matching location member + [Tags] mandatory + + ${context_source_registration_id}= Generate Random Entity Id ${context_source_registration_id_prefix} + ${context_source_registration_payload}= Load Test Sample ${context_source_registration_payload_file_path} ${context_source_registration_id} + Set Suite Variable ${context_source_registration_id} + + Create Context Source Registration ${context_source_registration_payload} + + Wait for notification and validate it + # TODO: check notification content + +*** Keywords *** +Setup Initial Context Source Registration Subscriptions + Start Local Server + + ${subscription_id}= Generate Random Entity Id ${subscription_id_prefix} + ${subscription_payload}= Load Test Sample ${subscription_payload_file_path} ${subscription_id} + + Create Context Source Registration Subscription ${subscription_payload} + + Set Suite Variable ${subscription_id} + +Delete Created Context Source Registrations And Subscriptions + Stop Local Server + + Delete Context Source Registration ${context_source_registration_id} + Delete Context Source Registration Subscription ${subscription_id} diff --git a/data/csourceRegistrations/context-source-registration-location-sample.jsonld b/data/csourceRegistrations/context-source-registration-location-sample.jsonld new file mode 100644 index 00000000..9a33d728 --- /dev/null +++ b/data/csourceRegistrations/context-source-registration-location-sample.jsonld @@ -0,0 +1,25 @@ +{ + "id":"urn:ngsi-ld:ContextSourceRegistration:randomUUID", + "type":"ContextSourceRegistration", + "information":[ + { + "entities":[ + { + "type":"Building" + } + ] + } + ], + "location":{ + "type":"GeoProperty", + "value":{ + "type":"Point", + "coordinates":[-8.521,41.2] + } + }, + "endpoint":"http://10.5.1.217:8080", + "@context":[ + "https://raw.githubusercontent.com/easy-global-market/ngsild-api-data-models/feature/add-json-ld-context-for-ngsi-ld-test-suite/ngsi-ld-test-suite/ngsi-ld-test-suite-context.jsonld", + "https://uri.etsi.org/ngsi-ld/v1/ngsi-ld-core-context.jsonld" + ] +} \ No newline at end of file diff --git a/data/csourceSubscriptions/withReachableEndpoints/subscription-geoQ-sample.jsonld b/data/csourceSubscriptions/withReachableEndpoints/subscription-geoQ-sample.jsonld new file mode 100644 index 00000000..f4fd2bce --- /dev/null +++ b/data/csourceSubscriptions/withReachableEndpoints/subscription-geoQ-sample.jsonld @@ -0,0 +1,26 @@ +{ + "id":"urn:ngsi-ld:Subscription:randomUUID", + "type":"Subscription", + "entities":[ + { + "type":"Building" + } + ], + "notification":{ + "format":"keyValues", + "endpoint":{ + "uri":"http://10.5.2.52:8085/post", + "accept":"application/json" + } + }, + "geoQ":{ + "georel":"near;maxDistance==2000", + "geometry":"Point", + "coordinates":[-8.52,41.2], + "geoproperty": "location" + }, + "@context":[ + "https://raw.githubusercontent.com/easy-global-market/ngsild-api-data-models/feature/add-json-ld-context-for-ngsi-ld-test-suite/ngsi-ld-test-suite/ngsi-ld-test-suite-context.jsonld", + "https://uri.etsi.org/ngsi-ld/v1/ngsi-ld-core-context.jsonld" + ] +} \ No newline at end of file diff --git a/data/csourceSubscriptions/withReachableEndpoints/subscription-geoQ-without-geoproperty-sample.jsonld b/data/csourceSubscriptions/withReachableEndpoints/subscription-geoQ-without-geoproperty-sample.jsonld new file mode 100644 index 00000000..2c8f9726 --- /dev/null +++ b/data/csourceSubscriptions/withReachableEndpoints/subscription-geoQ-without-geoproperty-sample.jsonld @@ -0,0 +1,25 @@ +{ + "id":"urn:ngsi-ld:Subscription:randomUUID", + "type":"Subscription", + "entities":[ + { + "type":"Building" + } + ], + "notification":{ + "format":"keyValues", + "endpoint":{ + "uri":"http://10.5.2.52:8085/post", + "accept":"application/json" + } + }, + "geoQ":{ + "georel":"near;maxDistance==2000", + "geometry":"Point", + "coordinates":[-8.52,41.2] + }, + "@context":[ + "https://raw.githubusercontent.com/easy-global-market/ngsild-api-data-models/feature/add-json-ld-context-for-ngsi-ld-test-suite/ngsi-ld-test-suite/ngsi-ld-test-suite-context.jsonld", + "https://uri.etsi.org/ngsi-ld/v1/ngsi-ld-core-context.jsonld" + ] +} \ No newline at end of file -- GitLab From 77b22c75f7b8af20ef677ee674358b2e804614f7 Mon Sep 17 00:00:00 2001 From: Houcem Kacem Date: Thu, 21 Jan 2021 16:51:54 +0100 Subject: [PATCH 15/30] feat: add tp 037_17 --- .../NotificationBehaviour/037_14.robot | 2 +- .../NotificationBehaviour/037_17.robot | 60 +++++++++++++++++++ ...ce-registration-bus-entities-sample.jsonld | 18 ++++++ ...egistration-vehicle-entities-sample.jsonld | 18 ++++++ .../subscription-bus-entities-sample.json | 7 +++ ...ption-vehicle-and-bus-entities-sample.json | 10 ++++ .../subscription-vehicle-entities-sample.json | 7 +++ 7 files changed, 121 insertions(+), 1 deletion(-) create mode 100644 TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_17.robot create mode 100644 data/csourceRegistrations/context-source-registration-bus-entities-sample.jsonld create mode 100644 data/csourceRegistrations/context-source-registration-vehicle-entities-sample.jsonld create mode 100644 data/csourceSubscriptions/fragments/subscription-bus-entities-sample.json create mode 100644 data/csourceSubscriptions/fragments/subscription-vehicle-and-bus-entities-sample.json create mode 100644 data/csourceSubscriptions/fragments/subscription-vehicle-entities-sample.json diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_14.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_14.robot index cfffb133..a67a330e 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_14.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_14.robot @@ -15,7 +15,7 @@ ${context_source_registration_payload_file_path}= csourceRegistrations/context ${subscription_payload_file_path}= csourceSubscriptions/withReachableEndpoints/subscription-sample.jsonld *** Test Case *** -Receive cSourceNotification For Matching Context Source Registrations On Any Attribute +Receive cSourceNotification For Matching Context Source Registrations On Any watchedAttribute [Documentation] Check if a context source registrations subscription does not define watchedAttributes member, a CsourceNotification will be triggered from context source registrations with information member matching all attributes of the described entities [Tags] mandatory diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_17.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_17.robot new file mode 100644 index 00000000..bbccc9b7 --- /dev/null +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_17.robot @@ -0,0 +1,60 @@ +*** Settings *** +Documentation Check if you update a context source registration subscription, a CsourceNotification will be sent with all currently matching context source registrations +Resource ${EXECDIR}/resources/ApiUtils.resource +Resource ${EXECDIR}/resources/AssertionUtils.resource +Resource ${EXECDIR}/resources/JsonUtils.resource +Resource ${EXECDIR}/resources/NotificationUtils.resource + +Test Template Receive cSourceNotification For Newly Matching Context Source Registrations +Suite Setup Setup Initial Context Source Registrations And Subscriptions +Suite Teardown Delete Created Context Source Registrations And Subscriptions + +*** Variable *** +${context_source_registration_id_prefix}= urn:ngsi-ld:ContextSourceRegistration: +${subscription_id_prefix}= urn:ngsi-ld:Subscription: +${first_context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-vehicle-entities-sample.jsonld +${second_context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-bus-entities-sample.jsonld +${subscription_payload_file_path}= csourceSubscriptions/withReachableEndpoints/subscription-sample.jsonld + +*** Test Cases *** FILEPATH +MatchFirstContextSourceRegistration csourceSubscriptions/fragments/subscription-vehicle-entities-sample.json +MatchSecondContextSourceRegistration csourceSubscriptions/fragments/subscription-bus-entities-sample.json +MatchBothContextSourceRegistrations csourceSubscriptions/fragments/subscription-vehicle-and-bus-entities-sample.json + +*** Keywords *** +Receive cSourceNotification For Newly Matching Context Source Registrations + [Arguments] ${filepath} + [Documentation] Check if you update a context source registration subscription, a CsourceNotification will be sent with all currently matching context source registrations + [Tags] mandatory + + ${subscription_update_fragment}= Load Test Sample ${filepath} + Update Context Source Registration Subscription ${subscription_id} ${subscription_update_fragment} + + Wait for notification and validate it + # TODO: check notification content + +Setup Initial Context Source Registrations And Subscriptions + Start Local Server + + ${subscription_id}= Generate Random Entity Id ${subscription_id_prefix} + ${first_context_source_registration_id}= Generate Random Entity Id ${context_source_registration_id_prefix} + ${second_context_source_registration_id}= Generate Random Entity Id ${context_source_registration_id_prefix} + + ${subscription_payload}= Load Test Sample ${subscription_payload_file_path} ${subscription_id} + ${first_context_source_registration_payload}= Load Test Sample ${first_context_source_registration_payload_file_path} ${first_context_source_registration_id} + ${second_context_source_registration_payload}= Load Test Sample ${second_context_source_registration_payload_file_path} ${second_context_source_registration_id} + + Create Context Source Registration Subscription ${subscription_payload} + Create Context Source Registration ${first_context_source_registration_payload} + Create Context Source Registration ${second_context_source_registration_payload} + + Set Suite Variable ${subscription_id} + Set Suite Variable ${first_context_source_registration_id} + Set Suite Variable ${second_context_source_registration_id} + +Delete Created Context Source Registrations And Subscriptions + Stop Local Server + + Delete Context Source Registration Subscription ${subscription_id} + Delete Context Source Registration ${first_context_source_registration_id} + Delete Context Source Registration ${second_context_source_registration_id} diff --git a/data/csourceRegistrations/context-source-registration-bus-entities-sample.jsonld b/data/csourceRegistrations/context-source-registration-bus-entities-sample.jsonld new file mode 100644 index 00000000..7dfd58f8 --- /dev/null +++ b/data/csourceRegistrations/context-source-registration-bus-entities-sample.jsonld @@ -0,0 +1,18 @@ +{ + "id":"urn:ngsi-ld:ContextSourceRegistration:randomUUID", + "type":"ContextSourceRegistration", + "information":[ + { + "entities":[ + { + "type":"Bus" + } + ] + } + ], + "endpoint":"http://10.5.1.217:8080", + "@context":[ + "https://raw.githubusercontent.com/easy-global-market/ngsild-api-data-models/feature/add-json-ld-context-for-ngsi-ld-test-suite/ngsi-ld-test-suite/ngsi-ld-test-suite-context.jsonld", + "https://uri.etsi.org/ngsi-ld/v1/ngsi-ld-core-context.jsonld" + ] +} \ No newline at end of file diff --git a/data/csourceRegistrations/context-source-registration-vehicle-entities-sample.jsonld b/data/csourceRegistrations/context-source-registration-vehicle-entities-sample.jsonld new file mode 100644 index 00000000..7ecfa0f1 --- /dev/null +++ b/data/csourceRegistrations/context-source-registration-vehicle-entities-sample.jsonld @@ -0,0 +1,18 @@ +{ + "id":"urn:ngsi-ld:ContextSourceRegistration:randomUUID", + "type":"ContextSourceRegistration", + "information":[ + { + "entities":[ + { + "type":"Vehicle" + } + ] + } + ], + "endpoint":"http://10.5.1.217:8080", + "@context":[ + "https://raw.githubusercontent.com/easy-global-market/ngsild-api-data-models/feature/add-json-ld-context-for-ngsi-ld-test-suite/ngsi-ld-test-suite/ngsi-ld-test-suite-context.jsonld", + "https://uri.etsi.org/ngsi-ld/v1/ngsi-ld-core-context.jsonld" + ] +} \ No newline at end of file diff --git a/data/csourceSubscriptions/fragments/subscription-bus-entities-sample.json b/data/csourceSubscriptions/fragments/subscription-bus-entities-sample.json new file mode 100644 index 00000000..97bb80ee --- /dev/null +++ b/data/csourceSubscriptions/fragments/subscription-bus-entities-sample.json @@ -0,0 +1,7 @@ +{ + "entities":[ + { + "type":"Bus" + } + ] +} \ No newline at end of file diff --git a/data/csourceSubscriptions/fragments/subscription-vehicle-and-bus-entities-sample.json b/data/csourceSubscriptions/fragments/subscription-vehicle-and-bus-entities-sample.json new file mode 100644 index 00000000..6040ffb6 --- /dev/null +++ b/data/csourceSubscriptions/fragments/subscription-vehicle-and-bus-entities-sample.json @@ -0,0 +1,10 @@ +{ + "entities":[ + { + "type":"Vehicle" + }, + { + "type":"Bus" + } + ] +} \ No newline at end of file diff --git a/data/csourceSubscriptions/fragments/subscription-vehicle-entities-sample.json b/data/csourceSubscriptions/fragments/subscription-vehicle-entities-sample.json new file mode 100644 index 00000000..ff01dca7 --- /dev/null +++ b/data/csourceSubscriptions/fragments/subscription-vehicle-entities-sample.json @@ -0,0 +1,7 @@ +{ + "entities":[ + { + "type":"Vehicle" + } + ] +} \ No newline at end of file -- GitLab From 868021f94aa849e6fd498875ff9475ef76c2e212 Mon Sep 17 00:00:00 2001 From: Houcem Kacem Date: Thu, 21 Jan 2021 17:42:33 +0100 Subject: [PATCH 16/30] feat: add check on notification content for tp 037_11 --- .../NotificationBehaviour/037_01.robot | 2 +- .../NotificationBehaviour/037_11.robot | 3 +-- resources/NotificationUtils.resource | 15 ++++++++++++++- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_01.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_01.robot index 36a745e4..2d1d8f96 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_01.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_01.robot @@ -26,7 +26,7 @@ Receive cSourceNotification Periodically And Initially On Subscription Create Context Source Registration Subscription ${subscription_payload} Wait for notification and validate it - # Wait with timeout of 15 seconds to check that another notification will be sent after 10 seconds + # Wait for 15 seconds to check if another notification was sent after 10 seconds Wait for notification and validate it ${15} *** Keywords *** diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_11.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_11.robot index 0d1c2983..610cfee4 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_11.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_11.robot @@ -25,8 +25,7 @@ Receive cSourceNotification For Matching Context Source Registrations On Observa Create Context Source Registration ${context_source_registration_payload} - Wait for notification and validate it - # TODO: check notification content + Wait for notification and validate it ${subscription_id} ${context_source_registration_id} newlyMatching *** Keywords *** Setup Initial Context Source Registration Subscriptions diff --git a/resources/NotificationUtils.resource b/resources/NotificationUtils.resource index 8d5b052a..5e4c3f4c 100644 --- a/resources/NotificationUtils.resource +++ b/resources/NotificationUtils.resource @@ -1,6 +1,10 @@ *** Settings *** Documentation Check Notification Behaviour Library HttpCtrl.Server +Library ${EXECDIR}/libraries/assertionUtils.py + +*** Variable *** +${notification_type}= ContextSource Notfication *** Keywords *** Start Local Server @@ -8,7 +12,7 @@ Start Local Server Start Server ${notification_server_host} ${notification_server_port} Wait for notification and validate it - [Arguments] ${timeout}=${5} + [Arguments] ${expected_subscription_id} ${expected_context_source_registration_id} ${expected_trigger_reason} ${timeout}=${5} #HTTP server receives it and checks incoming request for correctness #.. "Wait For Request" #.... This call is blocked until HTTP request arrives or timeout. @@ -16,6 +20,15 @@ Wait for notification and validate it Wait For Request ${timeout} Reply By 200 + ${received_req_body}= Get Request Body + ${dict} Evaluate json.loads('''${received_req_body}''') json + Should Be Equal ${dict}[type] ${notification_type} + Should Be Equal ${dict}[subscriptionId] ${expected_subscription_id} + # TODO Check if it's a timestamp + Should Not Be Empty ${dict}[notifiedAt] + Should Be Equal ${dict}[data][0][@id] ${expected_context_source_registration_id} + Should Be Equal ${dict}[triggerReason] ${expected_trigger_reason} + Wait for no notification [Arguments] ${timeout}=${5} #HTTP server receives it and checks incoming request for correctness -- GitLab From b4203f3e4babe2cefc44447a72aca7550c172abc Mon Sep 17 00:00:00 2001 From: Houcem Kacem Date: Fri, 22 Jan 2021 11:47:20 +0100 Subject: [PATCH 17/30] feat: add tp 037_05 + improve checks on notification --- .../NotificationBehaviour/037_05.robot | 46 +++++++++++++++++++ .../NotificationBehaviour/037_09.robot | 4 +- .../NotificationBehaviour/037_10.robot | 4 +- .../NotificationBehaviour/037_11.robot | 3 +- .../NotificationBehaviour/037_12.robot | 4 +- .../NotificationBehaviour/037_13.robot | 4 +- .../NotificationBehaviour/037_14.robot | 4 +- .../NotificationBehaviour/037_15.robot | 4 +- .../NotificationBehaviour/037_16.robot | 4 +- .../NotificationBehaviour/037_17.robot | 14 +++--- .../subscription-geoQ-sample.jsonld | 2 +- ...ion-geoQ-without-geoproperty-sample.jsonld | 2 +- .../subscription-sample.jsonld | 2 +- ...cription-temporalQ-createdAt-sample.jsonld | 2 +- ...ription-temporalQ-modifiedAt-sample.jsonld | 2 +- .../subscription-temporalQ-sample.jsonld | 2 +- .../subscription-timeInterval-sample.jsonld | 2 +- ...bscription-watchedAttributes-sample.jsonld | 2 +- resources/NotificationUtils.resource | 22 +++++---- 19 files changed, 90 insertions(+), 39 deletions(-) create mode 100644 TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_05.robot diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_05.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_05.robot new file mode 100644 index 00000000..a41c5305 --- /dev/null +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_05.robot @@ -0,0 +1,46 @@ +*** Settings *** +Documentation The structure of the csource notification message shall be as mandated by clause 5.3.2 +Resource ${EXECDIR}/resources/ApiUtils.resource +Resource ${EXECDIR}/resources/AssertionUtils.resource +Resource ${EXECDIR}/resources/JsonUtils.resource +Resource ${EXECDIR}/resources/NotificationUtils.resource + +Suite Setup Setup Initial Context Source Registration Subscriptions +Suite Teardown Delete Created Context Source Registrations And Subscriptions + +*** Variable *** +${context_source_registration_id_prefix}= urn:ngsi-ld:ContextSourceRegistration: +${subscription_id_prefix}= urn:ngsi-ld:Subscription: +${context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-sample.jsonld +${subscription_payload_file_path}= csourceSubscriptions/withReachableEndpoints/subscription-sample.jsonld + +*** Test Case *** +Receive cSourceNotification With Compliant Structure + [Documentation] The structure of the csource notification message shall be as mandated by clause 5.3.2 + [Tags] mandatory + + ${context_source_registration_id}= Generate Random Entity Id ${context_source_registration_id_prefix} + ${context_source_registration_payload}= Load Test Sample ${context_source_registration_payload_file_path} ${context_source_registration_id} + Set Suite Variable ${context_source_registration_id} + + Create Context Source Registration ${context_source_registration_payload} + + @{expected_context_source_registration_ids}= Create List ${context_source_registration_id} + Wait for notification and validate it ${subscription_id} ${expected_context_source_registration_ids} 1 newlyMatching + +*** Keywords *** +Setup Initial Context Source Registration Subscriptions + Start Local Server + + ${subscription_id}= Generate Random Entity Id ${subscription_id_prefix} + ${subscription_payload}= Load Test Sample ${subscription_payload_file_path} ${subscription_id} + + Create Context Source Registration Subscription ${subscription_payload} + + Set Suite Variable ${subscription_id} + +Delete Created Context Source Registrations And Subscriptions + Stop Local Server + + Delete Context Source Registration ${context_source_registration_id} + Delete Context Source Registration Subscription ${subscription_id} diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_09.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_09.robot index fdf6aa60..0861e2bd 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_09.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_09.robot @@ -23,8 +23,8 @@ Receive cSourceNotification For Matching Context Source Registrations Providing ${update_fragment}= Load Test Sample ${update_fragment_file_path} Update Context Source Registration ${context_source_registration_id} ${update_fragment} - Wait for notification and validate it - # TODO: check notification content + @{expected_context_source_registration_ids}= Create List ${context_source_registration_id} + Wait for notification and validate it ${subscription_id} ${expected_context_source_registration_ids} 1 updated *** Keywords *** Setup Initial Context Source Registrations And Subscriptions diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_10.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_10.robot index 7deda0ab..44d031c7 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_10.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_10.robot @@ -23,8 +23,8 @@ Receive cSourceNotification For No Longer Matching Context Source Registrations ${update_fragment}= Load Test Sample ${update_fragment_file_path} Update Context Source Registration ${context_source_registration_id} ${update_fragment} - Wait for notification and validate it - # TODO: check notification content + @{expected_context_source_registration_ids}= Create List ${context_source_registration_id} + Wait for notification and validate it ${subscription_id} ${expected_context_source_registration_ids} 1 noLongerMatching *** Keywords *** Setup Initial Context Source Registrations And Subscriptions diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_11.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_11.robot index 610cfee4..f8d4d95b 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_11.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_11.robot @@ -25,7 +25,8 @@ Receive cSourceNotification For Matching Context Source Registrations On Observa Create Context Source Registration ${context_source_registration_payload} - Wait for notification and validate it ${subscription_id} ${context_source_registration_id} newlyMatching + @{expected_context_source_registration_ids}= Create List ${context_source_registration_id} + Wait for notification and validate it ${subscription_id} ${expected_context_source_registration_ids} 1 newlyMatching *** Keywords *** Setup Initial Context Source Registration Subscriptions diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_12.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_12.robot index 46d8ffe8..2a3cc50a 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_12.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_12.robot @@ -35,8 +35,8 @@ Receive cSourceNotification For Matching Context Source Registrations On Managem Create Context Source Registration ${context_source_registration_payload} - Wait for notification and validate it - # TODO: check notification content + @{expected_context_source_registration_ids}= Create List ${context_source_registration_id} + Wait for notification and validate it ${subscription_id} ${expected_context_source_registration_ids} 1 newlyMatching Delete Created Context Source Registrations And Subscriptions Stop Local Server diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_13.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_13.robot index d77c684b..f326a9f8 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_13.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_13.robot @@ -25,8 +25,8 @@ Receive cSourceNotification For Matching Context Source Registrations On Watched Create Context Source Registration ${context_source_registration_payload} - Wait for notification and validate it - # TODO: check notification content + @{expected_context_source_registration_ids}= Create List ${context_source_registration_id} + Wait for notification and validate it ${subscription_id} ${expected_context_source_registration_ids} 1 newlyMatching *** Keywords *** Setup Initial Context Source Registration Subscriptions diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_14.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_14.robot index a67a330e..72198b69 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_14.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_14.robot @@ -25,8 +25,8 @@ Receive cSourceNotification For Matching Context Source Registrations On Any wat Create Context Source Registration ${context_source_registration_payload} - Wait for notification and validate it - # TODO: check notification content + @{expected_context_source_registration_ids}= Create List ${context_source_registration_id} + Wait for notification and validate it ${subscription_id} ${expected_context_source_registration_ids} 1 newlyMatching *** Keywords *** Setup Initial Context Source Registration Subscriptions diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_15.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_15.robot index ed7c7956..c3df23fb 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_15.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_15.robot @@ -25,8 +25,8 @@ Receive cSourceNotification For Matching Context Source Registrations On Locatio Create Context Source Registration ${context_source_registration_payload} - Wait for notification and validate it - # TODO: check notification content + @{expected_context_source_registration_ids}= Create List ${context_source_registration_id} + Wait for notification and validate it ${subscription_id} ${expected_context_source_registration_ids} 1 newlyMatching *** Keywords *** Setup Initial Context Source Registration Subscriptions diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_16.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_16.robot index 128b372e..49d3e4f5 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_16.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_16.robot @@ -25,8 +25,8 @@ Receive cSourceNotification For Matching Context Source Registrations On Locatio Create Context Source Registration ${context_source_registration_payload} - Wait for notification and validate it - # TODO: check notification content + @{expected_context_source_registration_ids}= Create List ${context_source_registration_id} + Wait for notification and validate it ${subscription_id} ${expected_context_source_registration_ids} 1 newlyMatching *** Keywords *** Setup Initial Context Source Registration Subscriptions diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_17.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_17.robot index bbccc9b7..949e43a0 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_17.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_17.robot @@ -16,22 +16,20 @@ ${first_context_source_registration_payload_file_path}= csourceRegistrations/c ${second_context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-bus-entities-sample.jsonld ${subscription_payload_file_path}= csourceSubscriptions/withReachableEndpoints/subscription-sample.jsonld -*** Test Cases *** FILEPATH -MatchFirstContextSourceRegistration csourceSubscriptions/fragments/subscription-vehicle-entities-sample.json -MatchSecondContextSourceRegistration csourceSubscriptions/fragments/subscription-bus-entities-sample.json -MatchBothContextSourceRegistrations csourceSubscriptions/fragments/subscription-vehicle-and-bus-entities-sample.json - +*** Test Cases *** FILEPATH NOTIFICATION_DATA_LENGTH NOTIFICATION_CSR_IDS +MatchFirstContextSourceRegistration csourceSubscriptions/fragments/subscription-vehicle-entities-sample.json 1 ${first_context_source_registration_id} +MatchSecondContextSourceRegistration csourceSubscriptions/fragments/subscription-bus-entities-sample.json 1 ${second_context_source_registration_id} +MatchBothContextSourceRegistrations csourceSubscriptions/fragments/subscription-vehicle-and-bus-entities-sample.json 2 ${first_context_source_registration_id} ${second_context_source_registration_id} *** Keywords *** Receive cSourceNotification For Newly Matching Context Source Registrations - [Arguments] ${filepath} + [Arguments] ${filepath} ${notification_data_length} @{notification_csr_ids} [Documentation] Check if you update a context source registration subscription, a CsourceNotification will be sent with all currently matching context source registrations [Tags] mandatory ${subscription_update_fragment}= Load Test Sample ${filepath} Update Context Source Registration Subscription ${subscription_id} ${subscription_update_fragment} - Wait for notification and validate it - # TODO: check notification content + Wait for notification and validate it ${subscription_id} ${notification_csr_ids} ${notification_data_length} newlyMatching Setup Initial Context Source Registrations And Subscriptions Start Local Server diff --git a/data/csourceSubscriptions/withReachableEndpoints/subscription-geoQ-sample.jsonld b/data/csourceSubscriptions/withReachableEndpoints/subscription-geoQ-sample.jsonld index f4fd2bce..0c558342 100644 --- a/data/csourceSubscriptions/withReachableEndpoints/subscription-geoQ-sample.jsonld +++ b/data/csourceSubscriptions/withReachableEndpoints/subscription-geoQ-sample.jsonld @@ -9,7 +9,7 @@ "notification":{ "format":"keyValues", "endpoint":{ - "uri":"http://10.5.2.52:8085/post", + "uri":"http://10.5.3.65:8085/post", "accept":"application/json" } }, diff --git a/data/csourceSubscriptions/withReachableEndpoints/subscription-geoQ-without-geoproperty-sample.jsonld b/data/csourceSubscriptions/withReachableEndpoints/subscription-geoQ-without-geoproperty-sample.jsonld index 2c8f9726..3fb21a22 100644 --- a/data/csourceSubscriptions/withReachableEndpoints/subscription-geoQ-without-geoproperty-sample.jsonld +++ b/data/csourceSubscriptions/withReachableEndpoints/subscription-geoQ-without-geoproperty-sample.jsonld @@ -9,7 +9,7 @@ "notification":{ "format":"keyValues", "endpoint":{ - "uri":"http://10.5.2.52:8085/post", + "uri":"http://10.5.3.65:8085/post", "accept":"application/json" } }, diff --git a/data/csourceSubscriptions/withReachableEndpoints/subscription-sample.jsonld b/data/csourceSubscriptions/withReachableEndpoints/subscription-sample.jsonld index 50e4fe1b..d2087954 100644 --- a/data/csourceSubscriptions/withReachableEndpoints/subscription-sample.jsonld +++ b/data/csourceSubscriptions/withReachableEndpoints/subscription-sample.jsonld @@ -9,7 +9,7 @@ "notification":{ "format":"keyValues", "endpoint":{ - "uri":"http://10.5.2.52:8085/post", + "uri":"http://10.5.3.65:8085/post", "accept":"application/json" } }, diff --git a/data/csourceSubscriptions/withReachableEndpoints/subscription-temporalQ-createdAt-sample.jsonld b/data/csourceSubscriptions/withReachableEndpoints/subscription-temporalQ-createdAt-sample.jsonld index 2d5735db..20a27b0a 100644 --- a/data/csourceSubscriptions/withReachableEndpoints/subscription-temporalQ-createdAt-sample.jsonld +++ b/data/csourceSubscriptions/withReachableEndpoints/subscription-temporalQ-createdAt-sample.jsonld @@ -9,7 +9,7 @@ "notification":{ "format":"keyValues", "endpoint":{ - "uri":"http://10.5.2.52:8085/post", + "uri":"http://10.5.3.65:8085/post", "accept":"application/json" } }, diff --git a/data/csourceSubscriptions/withReachableEndpoints/subscription-temporalQ-modifiedAt-sample.jsonld b/data/csourceSubscriptions/withReachableEndpoints/subscription-temporalQ-modifiedAt-sample.jsonld index f911156d..f262cfad 100644 --- a/data/csourceSubscriptions/withReachableEndpoints/subscription-temporalQ-modifiedAt-sample.jsonld +++ b/data/csourceSubscriptions/withReachableEndpoints/subscription-temporalQ-modifiedAt-sample.jsonld @@ -9,7 +9,7 @@ "notification":{ "format":"keyValues", "endpoint":{ - "uri":"http://10.5.2.52:8085/post", + "uri":"http://10.5.3.65:8085/post", "accept":"application/json" } }, diff --git a/data/csourceSubscriptions/withReachableEndpoints/subscription-temporalQ-sample.jsonld b/data/csourceSubscriptions/withReachableEndpoints/subscription-temporalQ-sample.jsonld index 5c6c8149..c0aaa6cc 100644 --- a/data/csourceSubscriptions/withReachableEndpoints/subscription-temporalQ-sample.jsonld +++ b/data/csourceSubscriptions/withReachableEndpoints/subscription-temporalQ-sample.jsonld @@ -9,7 +9,7 @@ "notification":{ "format":"keyValues", "endpoint":{ - "uri":"http://10.5.2.52:8085/post", + "uri":"http://10.5.3.65:8085/post", "accept":"application/json" } }, diff --git a/data/csourceSubscriptions/withReachableEndpoints/subscription-timeInterval-sample.jsonld b/data/csourceSubscriptions/withReachableEndpoints/subscription-timeInterval-sample.jsonld index 2edbf650..8123ea11 100644 --- a/data/csourceSubscriptions/withReachableEndpoints/subscription-timeInterval-sample.jsonld +++ b/data/csourceSubscriptions/withReachableEndpoints/subscription-timeInterval-sample.jsonld @@ -10,7 +10,7 @@ "notification":{ "format":"keyValues", "endpoint":{ - "uri":"http://10.5.2.52:8085/post", + "uri":"http://10.5.3.65:8085/post", "accept":"application/json" } }, diff --git a/data/csourceSubscriptions/withReachableEndpoints/subscription-watchedAttributes-sample.jsonld b/data/csourceSubscriptions/withReachableEndpoints/subscription-watchedAttributes-sample.jsonld index 2e045dd1..8ab0868c 100644 --- a/data/csourceSubscriptions/withReachableEndpoints/subscription-watchedAttributes-sample.jsonld +++ b/data/csourceSubscriptions/withReachableEndpoints/subscription-watchedAttributes-sample.jsonld @@ -10,7 +10,7 @@ "notification":{ "format":"keyValues", "endpoint":{ - "uri":"http://10.5.2.52:8085/post", + "uri":"http://10.5.3.65:8085/post", "accept":"application/json" } }, diff --git a/resources/NotificationUtils.resource b/resources/NotificationUtils.resource index 5e4c3f4c..93758d85 100644 --- a/resources/NotificationUtils.resource +++ b/resources/NotificationUtils.resource @@ -12,7 +12,7 @@ Start Local Server Start Server ${notification_server_host} ${notification_server_port} Wait for notification and validate it - [Arguments] ${expected_subscription_id} ${expected_context_source_registration_id} ${expected_trigger_reason} ${timeout}=${5} + [Arguments] ${expected_subscription_id} ${expected_context_source_registration_ids} ${expected_data_length} ${expected_trigger_reason} ${timeout}=${5} #HTTP server receives it and checks incoming request for correctness #.. "Wait For Request" #.... This call is blocked until HTTP request arrives or timeout. @@ -20,14 +20,20 @@ Wait for notification and validate it Wait For Request ${timeout} Reply By 200 - ${received_req_body}= Get Request Body - ${dict} Evaluate json.loads('''${received_req_body}''') json - Should Be Equal ${dict}[type] ${notification_type} - Should Be Equal ${dict}[subscriptionId] ${expected_subscription_id} + ${notification_payload}= Get Request Body + ${notification} Evaluate json.loads('''${notification_payload}''') json + ${notification_data_length}= Get length ${notification}[data] + Should Be Equal ${notification}[type] ${notification_type} + Should Be Equal ${notification}[subscriptionId] ${expected_subscription_id} # TODO Check if it's a timestamp - Should Not Be Empty ${dict}[notifiedAt] - Should Be Equal ${dict}[data][0][@id] ${expected_context_source_registration_id} - Should Be Equal ${dict}[triggerReason] ${expected_trigger_reason} + Should Not Be Empty ${notification}[notifiedAt] + ${index}= Set Variable 0 + FOR ${expected_context_source_registration_id} IN @{expected_context_source_registration_ids} + Should Be Equal ${notification}[data][${index}][@id] ${expected_context_source_registration_id} + ${index}= Evaluate ${index} + 1 + END + Should Be Equal '${notification_data_length}' '${expected_data_length}' + Should Be Equal ${notification}[triggerReason] ${expected_trigger_reason} Wait for no notification [Arguments] ${timeout}=${5} -- GitLab From c5ac4b4f47e4b3bce1442b98f48daa7328b643ed Mon Sep 17 00:00:00 2001 From: Houcem Kacem Date: Fri, 22 Jan 2021 12:31:57 +0100 Subject: [PATCH 18/30] feat: add tp 037_04 + refactor code --- .../NotificationBehaviour/037_01.robot | 4 +- .../NotificationBehaviour/037_04.robot | 46 +++++++++++++++++++ .../NotificationBehaviour/037_06.robot | 2 +- ...gistration-multiple-entities-sample.jsonld | 21 +++++++++ resources/NotificationUtils.resource | 17 ++++++- 5 files changed, 86 insertions(+), 4 deletions(-) create mode 100644 TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_04.robot create mode 100644 data/csourceRegistrations/context-source-registration-multiple-entities-sample.jsonld diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_01.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_01.robot index 2d1d8f96..4f8605ee 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_01.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_01.robot @@ -25,9 +25,9 @@ Receive cSourceNotification Periodically And Initially On Subscription Create Context Source Registration Subscription ${subscription_payload} - Wait for notification and validate it + Wait for notification # Wait for 15 seconds to check if another notification was sent after 10 seconds - Wait for notification and validate it ${15} + Wait for notification timeout=${15} *** Keywords *** Setup Initial Context Source Registrations diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_04.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_04.robot new file mode 100644 index 00000000..0706f50c --- /dev/null +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_04.robot @@ -0,0 +1,46 @@ +*** Settings *** +Documentation Check that instead of providing the original context source registration, implementations should return context source registration information relevant for the subscription, in particular only matching RegistrationInfo elements +Resource ${EXECDIR}/resources/ApiUtils.resource +Resource ${EXECDIR}/resources/AssertionUtils.resource +Resource ${EXECDIR}/resources/JsonUtils.resource +Resource ${EXECDIR}/resources/NotificationUtils.resource + +Suite Setup Setup Initial Context Source Registration Subscriptions +Suite Teardown Delete Created Context Source Registrations And Subscriptions + +*** Variable *** +${context_source_registration_id_prefix}= urn:ngsi-ld:ContextSourceRegistration: +${subscription_id_prefix}= urn:ngsi-ld:Subscription: +${context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-multiple-entities-sample.jsonld +${subscription_payload_file_path}= csourceSubscriptions/withReachableEndpoints/subscription-sample.jsonld + +*** Test Case *** +Receive cSourceNotification With Relevant Information + [Documentation] Check that instead of providing the original context source registration, implementations should return context source registration information relevant for the subscription, in particular only matching RegistrationInfo elements + [Tags] mandatory + + ${context_source_registration_id}= Generate Random Entity Id ${context_source_registration_id_prefix} + ${context_source_registration_payload}= Load Test Sample ${context_source_registration_payload_file_path} ${context_source_registration_id} + Set Suite Variable ${context_source_registration_id} + + Create Context Source Registration ${context_source_registration_payload} + + @{expected_context_source_registration_ids}= Create List ${context_source_registration_id} + Wait for notification and validate it ${subscription_id} ${expected_context_source_registration_ids} 1 newlyMatching Building + +*** Keywords *** +Setup Initial Context Source Registration Subscriptions + Start Local Server + + ${subscription_id}= Generate Random Entity Id ${subscription_id_prefix} + ${subscription_payload}= Load Test Sample ${subscription_payload_file_path} ${subscription_id} + + Create Context Source Registration Subscription ${subscription_payload} + + Set Suite Variable ${subscription_id} + +Delete Created Context Source Registrations And Subscriptions + Stop Local Server + + Delete Context Source Registration ${context_source_registration_id} + Delete Context Source Registration Subscription ${subscription_id} diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_06.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_06.robot index dd479f12..9aed03c0 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_06.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_06.robot @@ -25,7 +25,7 @@ If A cSourceNotification Is Successfully Sent The Notification Member Shall Be U Create Context Source Registration ${context_source_registration_payload} - Wait for notification and validate it + Wait for notification # TODO: Retrieve context source registration subscription and check notification member *** Keywords *** diff --git a/data/csourceRegistrations/context-source-registration-multiple-entities-sample.jsonld b/data/csourceRegistrations/context-source-registration-multiple-entities-sample.jsonld new file mode 100644 index 00000000..3c6ef292 --- /dev/null +++ b/data/csourceRegistrations/context-source-registration-multiple-entities-sample.jsonld @@ -0,0 +1,21 @@ +{ + "id":"urn:ngsi-ld:ContextSourceRegistration:randomUUID", + "type":"ContextSourceRegistration", + "information":[ + { + "entities":[ + { + "type":"Building" + }, + { + "type":"Bus" + } + ] + } + ], + "endpoint":"http://10.5.1.217:8080", + "@context":[ + "https://raw.githubusercontent.com/easy-global-market/ngsild-api-data-models/feature/add-json-ld-context-for-ngsi-ld-test-suite/ngsi-ld-test-suite/ngsi-ld-test-suite-context.jsonld", + "https://uri.etsi.org/ngsi-ld/v1/ngsi-ld-core-context.jsonld" + ] +} \ No newline at end of file diff --git a/resources/NotificationUtils.resource b/resources/NotificationUtils.resource index 93758d85..a0962332 100644 --- a/resources/NotificationUtils.resource +++ b/resources/NotificationUtils.resource @@ -11,8 +11,17 @@ Start Local Server #Initialize HTTP Client And Server Start Server ${notification_server_host} ${notification_server_port} +Wait for notification + [Arguments] ${timeout}=${5} + #HTTP server receives it and checks incoming request for correctness + #.. "Wait For Request" + #.... This call is blocked until HTTP request arrives or timeout. + #.... Further detaills: https://annoviko.github.io/robotframework-httpctrl/server.html#Wait%20For%20Request + Wait For Request ${timeout} + Reply By 200 + Wait for notification and validate it - [Arguments] ${expected_subscription_id} ${expected_context_source_registration_ids} ${expected_data_length} ${expected_trigger_reason} ${timeout}=${5} + [Arguments] ${expected_subscription_id} ${expected_context_source_registration_ids} ${expected_data_length} ${expected_trigger_reason} ${expected_notification_data_csr_entities}=${EMPTY} ${timeout}=${5} #HTTP server receives it and checks incoming request for correctness #.. "Wait For Request" #.... This call is blocked until HTTP request arrives or timeout. @@ -34,6 +43,8 @@ Wait for notification and validate it END Should Be Equal '${notification_data_length}' '${expected_data_length}' Should Be Equal ${notification}[triggerReason] ${expected_trigger_reason} + # FIXME Refactor this to check a list of entities types + Run Keyword If '${expected_notification_data_csr_entities}'!='' Check Notification Data Context Source Registration Entities ${notification}[data][0][information][0][entities][0] ${expected_notification_data_csr_entities} Wait for no notification [Arguments] ${timeout}=${5} @@ -43,6 +54,10 @@ Wait for no notification #.... Further detaills: https://annoviko.github.io/robotframework-httpctrl/server.html#Wait%20For%20Request Wait For No Request ${timeout} +Check Notification Data Context Source Registration Entities + [Arguments] ${notification_data_csr_entities} ${expected_notification_data_csr_entities} + Should Be Equal ${notification_data_csr_entities}[type][0] ${expected_notification_data_csr_entities} + Stop Local Server #Terminate HTTP Server Stop Server -- GitLab From fa79b249274a25db97b0248c4dc98b1a710d4319 Mon Sep 17 00:00:00 2001 From: Houcem Kacem Date: Fri, 22 Jan 2021 12:58:55 +0100 Subject: [PATCH 19/30] fix: allow to check on unordered notification data --- resources/NotificationUtils.resource | 2 +- resources/variables.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/NotificationUtils.resource b/resources/NotificationUtils.resource index a0962332..7f176800 100644 --- a/resources/NotificationUtils.resource +++ b/resources/NotificationUtils.resource @@ -38,7 +38,7 @@ Wait for notification and validate it Should Not Be Empty ${notification}[notifiedAt] ${index}= Set Variable 0 FOR ${expected_context_source_registration_id} IN @{expected_context_source_registration_ids} - Should Be Equal ${notification}[data][${index}][@id] ${expected_context_source_registration_id} + List Should Contain Value ${expected_context_source_registration_ids} ${notification}[data][${index}][@id] ${index}= Evaluate ${index} + 1 END Should Be Equal '${notification_data_length}' '${expected_data_length}' diff --git a/resources/variables.py b/resources/variables.py index 8cbd37d4..f5a5f8b5 100644 --- a/resources/variables.py +++ b/resources/variables.py @@ -1,6 +1,6 @@ def get_variables(arg=None): variables = { - 'url': 'https://broker-ngsi-ld.demeter.ubiwhere.com/ngsi-ld/v1', + 'url': 'http://10.5.1.214:9090/ngsi-ld/v1/', 'ngsild_test_suite_context': 'https://raw.githubusercontent.com/easy-global-market/ngsild-api-data-models/feature/add-json-ld-context-for-ngsi-ld-test-suite/ngsi-ld-test-suite/ngsi-ld-test-suite-context.jsonld', 'notification_server_host': '0.0.0.0', 'notification_server_port': 8085 -- GitLab From 206fed94545fbc045bbcdb058da501be379e1b6e Mon Sep 17 00:00:00 2001 From: Houcem Kacem Date: Fri, 22 Jan 2021 14:38:28 +0100 Subject: [PATCH 20/30] fix: delete the subscrption created in each test case --- .../NotificationBehaviour/037_12.robot | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_12.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_12.robot index 2a3cc50a..cb79bc5e 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_12.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_12.robot @@ -7,7 +7,7 @@ Resource ${EXECDIR}/resources/NotificationUtils.resource Test Template Receive cSourceNotification For Matching Context Source Registrations On Management Interval Suite Setup Start Local Server -Suite Teardown Delete Created Context Source Registrations And Subscriptions +Suite Teardown Delete Created Context Source Registrations *** Variable *** ${context_source_registration_id_prefix}= urn:ngsi-ld:ContextSourceRegistration: @@ -36,10 +36,13 @@ Receive cSourceNotification For Matching Context Source Registrations On Managem Create Context Source Registration ${context_source_registration_payload} @{expected_context_source_registration_ids}= Create List ${context_source_registration_id} - Wait for notification and validate it ${subscription_id} ${expected_context_source_registration_ids} 1 newlyMatching + # Continue On Failure to delete created context source registration subscription + Run Keyword And Continue On Failure Wait for notification and validate it ${subscription_id} ${expected_context_source_registration_ids} 1 newlyMatching -Delete Created Context Source Registrations And Subscriptions + # Moved here since each test case creates it's own subscription + Delete Context Source Registration Subscription ${subscription_id} + +Delete Created Context Source Registrations Stop Local Server Delete Context Source Registration ${context_source_registration_id} - Delete Context Source Registration Subscription ${subscription_id} -- GitLab From de0bce24755d29be43375d91b5cacef4e4ceb085 Mon Sep 17 00:00:00 2001 From: Houcem Kacem Date: Fri, 22 Jan 2021 15:16:55 +0100 Subject: [PATCH 21/30] refactor: refactor code --- .../NotificationBehaviour/037_04.robot | 4 +++- resources/NotificationUtils.resource | 24 ++++++++++++++----- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_04.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_04.robot index 0706f50c..824df3a3 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_04.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_04.robot @@ -26,7 +26,9 @@ Receive cSourceNotification With Relevant Information Create Context Source Registration ${context_source_registration_payload} @{expected_context_source_registration_ids}= Create List ${context_source_registration_id} - Wait for notification and validate it ${subscription_id} ${expected_context_source_registration_ids} 1 newlyMatching Building + @{expected_notification_data_entities}= Create List Building + + Wait for notification and validate it ${subscription_id} ${expected_context_source_registration_ids} 1 newlyMatching ${expected_notification_data_entities} *** Keywords *** Setup Initial Context Source Registration Subscriptions diff --git a/resources/NotificationUtils.resource b/resources/NotificationUtils.resource index 7f176800..00b0308c 100644 --- a/resources/NotificationUtils.resource +++ b/resources/NotificationUtils.resource @@ -21,7 +21,7 @@ Wait for notification Reply By 200 Wait for notification and validate it - [Arguments] ${expected_subscription_id} ${expected_context_source_registration_ids} ${expected_data_length} ${expected_trigger_reason} ${expected_notification_data_csr_entities}=${EMPTY} ${timeout}=${5} + [Arguments] ${expected_subscription_id} ${expected_context_source_registration_ids} ${expected_data_length} ${expected_trigger_reason} ${expected_notification_data_entities}=${EMPTY} ${timeout}=${5} #HTTP server receives it and checks incoming request for correctness #.. "Wait For Request" #.... This call is blocked until HTTP request arrives or timeout. @@ -32,6 +32,8 @@ Wait for notification and validate it ${notification_payload}= Get Request Body ${notification} Evaluate json.loads('''${notification_payload}''') json ${notification_data_length}= Get length ${notification}[data] + ${expected_notification_data_entities_length}= Get length ${expected_notification_data_entities} + Should Be Equal ${notification}[type] ${notification_type} Should Be Equal ${notification}[subscriptionId] ${expected_subscription_id} # TODO Check if it's a timestamp @@ -43,8 +45,9 @@ Wait for notification and validate it END Should Be Equal '${notification_data_length}' '${expected_data_length}' Should Be Equal ${notification}[triggerReason] ${expected_trigger_reason} - # FIXME Refactor this to check a list of entities types - Run Keyword If '${expected_notification_data_csr_entities}'!='' Check Notification Data Context Source Registration Entities ${notification}[data][0][information][0][entities][0] ${expected_notification_data_csr_entities} + + # TODO Currently we check entities information of the first CSR returned in the notification, find a way to check them all + Run Keyword If ${expected_notification_data_entities_length}>0 Check Notification Data Entities ${notification}[data][0][information] ${expected_notification_data_entities} Wait for no notification [Arguments] ${timeout}=${5} @@ -54,9 +57,18 @@ Wait for no notification #.... Further detaills: https://annoviko.github.io/robotframework-httpctrl/server.html#Wait%20For%20Request Wait For No Request ${timeout} -Check Notification Data Context Source Registration Entities - [Arguments] ${notification_data_csr_entities} ${expected_notification_data_csr_entities} - Should Be Equal ${notification_data_csr_entities}[type][0] ${expected_notification_data_csr_entities} +Check Notification Data Entities + [Arguments] ${notification_data_information} @{expected_notification_data_entities} + + ${notification_data_information_length}= Get length ${notification_data_information} + ${expected_notification_data_entities_length}= Get length ${expected_notification_data_entities} + ${index}= Set Variable 0 + FOR ${expected_notification_data_entities} IN @{expected_notification_data_entities} + # We assume that if a CSR provides information about multiple entities they should appear in separate information elements + List Should Contain Value ${expected_notification_data_entities} ${notification_data_information}[${index}][entities][0][type][0] + ${index}= Evaluate ${index} + 1 + END + Should Be Equal '${notification_data_information_length}' '${expected_notification_data_entities_length}' Stop Local Server #Terminate HTTP Server -- GitLab From 10f3f7160b9deccda90b3545d4066a0015f64273 Mon Sep 17 00:00:00 2001 From: Houcem Kacem Date: Sun, 24 Jan 2021 12:10:36 +0100 Subject: [PATCH 22/30] feat: rename tps + add 037_02 + update test samples --- .../NotificationBehaviour/037_01.robot | 4 +- .../NotificationBehaviour/037_02.robot | 50 ++++++++++++++++ .../NotificationBehaviour/037_03.robot | 48 +++++++++++++++ .../NotificationBehaviour/037_04.robot | 14 ++--- .../NotificationBehaviour/037_05.robot | 13 ++--- .../NotificationBehaviour/037_06.robot | 10 ++-- .../NotificationBehaviour/037_07.robot | 18 ++++-- .../NotificationBehaviour/037_08.robot | 39 ++++++------- .../NotificationBehaviour/037_09.robot | 12 ++-- .../NotificationBehaviour/037_10.robot | 28 +++++---- .../NotificationBehaviour/037_11.robot | 44 +++++++------- .../NotificationBehaviour/037_12.robot | 44 +++++++------- .../NotificationBehaviour/037_13.robot | 8 +-- .../NotificationBehaviour/037_14.robot | 10 ++-- .../NotificationBehaviour/037_15.robot | 8 +-- .../NotificationBehaviour/037_16.robot | 48 +++++++++------ .../NotificationBehaviour/037_17.robot | 58 ------------------- ...ce-registration-bus-entities-sample.jsonld | 2 +- ...tration-detailed-information-sample.jsonld | 2 +- ...source-registration-location-sample.jsonld | 2 +- ...istration-managementInterval-sample.jsonld | 2 +- ...gistration-multiple-entities-sample.jsonld | 2 +- ...stration-observationInterval-sample.jsonld | 2 +- .../context-source-registration-sample.jsonld | 2 +- ...egistration-vehicle-entities-sample.jsonld | 2 +- ...ext-source-registration-update-sample.json | 2 +- .../subscription-geoQ-sample.jsonld | 2 +- ...ion-geoQ-without-geoproperty-sample.jsonld | 2 +- ...cription-temporalQ-createdAt-sample.jsonld | 2 +- ...ription-temporalQ-modifiedAt-sample.jsonld | 2 +- ...iption-temporalQ-observedAt-sample.jsonld} | 2 +- .../subscription-timeInterval-sample.jsonld | 2 +- ...iption-unreachable-endpoint-sample.jsonld} | 2 +- ...bscription-watchedAttributes-sample.jsonld | 2 +- 34 files changed, 270 insertions(+), 220 deletions(-) create mode 100644 TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_02.robot create mode 100644 TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_03.robot delete mode 100644 TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_17.robot rename data/csourceSubscriptions/{withReachableEndpoints => }/subscription-geoQ-sample.jsonld (93%) rename data/csourceSubscriptions/{withReachableEndpoints => }/subscription-geoQ-without-geoproperty-sample.jsonld (93%) rename data/csourceSubscriptions/{withReachableEndpoints => }/subscription-temporalQ-createdAt-sample.jsonld (93%) rename data/csourceSubscriptions/{withReachableEndpoints => }/subscription-temporalQ-modifiedAt-sample.jsonld (93%) rename data/csourceSubscriptions/{withReachableEndpoints/subscription-temporalQ-sample.jsonld => subscription-temporalQ-observedAt-sample.jsonld} (93%) rename data/csourceSubscriptions/{withReachableEndpoints => }/subscription-timeInterval-sample.jsonld (91%) rename data/csourceSubscriptions/{withReachableEndpoints/subscription-sample.jsonld => subscription-unreachable-endpoint-sample.jsonld} (90%) rename data/csourceSubscriptions/{withReachableEndpoints => }/subscription-watchedAttributes-sample.jsonld (92%) diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_01.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_01.robot index 4f8605ee..80b336d4 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_01.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_01.robot @@ -12,7 +12,7 @@ Suite Teardown Delete Created Context Source Registrations And Subscription ${context_source_registration_id_prefix}= urn:ngsi-ld:ContextSourceRegistration: ${subscription_id_prefix}= urn:ngsi-ld:Subscription: ${context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-sample.jsonld -${subscription_payload_file_path}= csourceSubscriptions/withReachableEndpoints/subscription-timeInterval-sample.jsonld +${subscription_payload_file_path}= csourceSubscriptions/subscription-timeInterval-sample.jsonld *** Test Case *** Receive cSourceNotification Periodically And Initially On Subscription @@ -26,7 +26,7 @@ Receive cSourceNotification Periodically And Initially On Subscription Create Context Source Registration Subscription ${subscription_payload} Wait for notification - # Wait for 15 seconds to check if another notification was sent after 10 seconds + # Wait for 15 seconds to check if another notification was sent Wait for notification timeout=${15} *** Keywords *** diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_02.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_02.robot new file mode 100644 index 00000000..7528e979 --- /dev/null +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_02.robot @@ -0,0 +1,50 @@ +*** Settings *** +Documentation Check that if the created context source registration subscription doesn't define a timeInterval member, a cSourceNotification, with the appropriate trigger reason in the "triggerReason" member, will be sent initially on subscription and whenever there is a change of a matching Context Source Registration +Resource ${EXECDIR}/resources/ApiUtils.resource +Resource ${EXECDIR}/resources/AssertionUtils.resource +Resource ${EXECDIR}/resources/JsonUtils.resource +Resource ${EXECDIR}/resources/NotificationUtils.resource + +Suite Setup Setup Initial Context Source Registrations +Suite Teardown Delete Created Context Source Registrations And Subscriptions + +*** Variable *** +${context_source_registration_id_prefix}= urn:ngsi-ld:ContextSourceRegistration: +${subscription_id_prefix}= urn:ngsi-ld:Subscription: +${context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-sample.jsonld +${subscription_payload_file_path}= csourceSubscriptions/subscription-timeInterval-sample.jsonld +${update_fragment_file_path}= csourceRegistrations/fragments/context-source-registration-update-sample.json + +*** Test Case *** +Receive cSourceNotification Initially On Subscription And Whenever There Is A Change Of A Matching Context Source Registration + [Documentation] Check that if the created context source registration subscription doesn't define a timeInterval member, a cSourceNotification, with the appropriate trigger reason in the "triggerReason" member, will be sent initially on subscription and whenever there is a change of a matching Context Source Registration + [Tags] mandatory + + ${subscription_id}= Generate Random Entity Id ${subscription_id_prefix} + ${subscription_payload}= Load Test Sample ${subscription_payload_file_path} ${subscription_id} + Set Suite Variable ${subscription_id} + + Create Context Source Registration Subscription ${subscription_payload} + + Wait for notification + + ${update_fragment}= Load Test Sample ${update_fragment_file_path} + Update Context Source Registration ${context_source_registration_id} ${update_fragment} + + Wait for notification + +*** Keywords *** +Setup Initial Context Source Registrations + Start Local Server + + ${context_source_registration_id}= Generate Random Entity Id ${context_source_registration_id_prefix} + ${context_source_registration_payload}= Load Test Sample ${context_source_registration_payload_file_path} ${context_source_registration_id} + Create Context Source Registration ${context_source_registration_payload} + + Set Suite Variable ${context_source_registration_id} + +Delete Created Context Source Registrations And Subscriptions + Stop Local Server + + Delete Context Source Registration ${context_source_registration_id} + Delete Context Source Registration Subscription ${subscription_id} diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_03.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_03.robot new file mode 100644 index 00000000..994f9734 --- /dev/null +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_03.robot @@ -0,0 +1,48 @@ +*** Settings *** +Documentation Check that instead of providing the original context source registration, implementations should return context source registration information relevant for the subscription, in particular only matching RegistrationInfo elements +Resource ${EXECDIR}/resources/ApiUtils.resource +Resource ${EXECDIR}/resources/AssertionUtils.resource +Resource ${EXECDIR}/resources/JsonUtils.resource +Resource ${EXECDIR}/resources/NotificationUtils.resource + +Suite Setup Setup Initial Context Source Registration Subscriptions +Suite Teardown Delete Created Context Source Registrations And Subscriptions + +*** Variable *** +${context_source_registration_id_prefix}= urn:ngsi-ld:ContextSourceRegistration: +${subscription_id_prefix}= urn:ngsi-ld:Subscription: +${context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-multiple-entities-sample.jsonld +${subscription_payload_file_path}= csourceSubscriptions/subscription-sample.jsonld + +*** Test Case *** +Receive cSourceNotification With Relevant Information + [Documentation] Check that instead of providing the original context source registration, implementations should return context source registration information relevant for the subscription, in particular only matching RegistrationInfo elements + [Tags] mandatory + + ${context_source_registration_id}= Generate Random Entity Id ${context_source_registration_id_prefix} + ${context_source_registration_payload}= Load Test Sample ${context_source_registration_payload_file_path} ${context_source_registration_id} + Set Suite Variable ${context_source_registration_id} + + Create Context Source Registration ${context_source_registration_payload} + + @{expected_context_source_registration_ids}= Create List ${context_source_registration_id} + @{expected_notification_data_entities}= Create List Building + + Wait for notification and validate it ${subscription_id} ${expected_context_source_registration_ids} 1 newlyMatching ${expected_notification_data_entities} + +*** Keywords *** +Setup Initial Context Source Registration Subscriptions + Start Local Server + + ${subscription_id}= Generate Random Entity Id ${subscription_id_prefix} + ${subscription_payload}= Load Test Sample ${subscription_payload_file_path} ${subscription_id} + + Create Context Source Registration Subscription ${subscription_payload} + + Set Suite Variable ${subscription_id} + +Delete Created Context Source Registrations And Subscriptions + Stop Local Server + + Delete Context Source Registration ${context_source_registration_id} + Delete Context Source Registration Subscription ${subscription_id} diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_04.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_04.robot index 824df3a3..5bbe5d86 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_04.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_04.robot @@ -1,5 +1,5 @@ *** Settings *** -Documentation Check that instead of providing the original context source registration, implementations should return context source registration information relevant for the subscription, in particular only matching RegistrationInfo elements +Documentation The structure of the csource notification message shall be as mandated by clause 5.3.2 Resource ${EXECDIR}/resources/ApiUtils.resource Resource ${EXECDIR}/resources/AssertionUtils.resource Resource ${EXECDIR}/resources/JsonUtils.resource @@ -11,12 +11,12 @@ Suite Teardown Delete Created Context Source Registrations And Subscription *** Variable *** ${context_source_registration_id_prefix}= urn:ngsi-ld:ContextSourceRegistration: ${subscription_id_prefix}= urn:ngsi-ld:Subscription: -${context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-multiple-entities-sample.jsonld -${subscription_payload_file_path}= csourceSubscriptions/withReachableEndpoints/subscription-sample.jsonld +${context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-sample.jsonld +${subscription_payload_file_path}= csourceSubscriptions/subscription-sample.jsonld *** Test Case *** -Receive cSourceNotification With Relevant Information - [Documentation] Check that instead of providing the original context source registration, implementations should return context source registration information relevant for the subscription, in particular only matching RegistrationInfo elements +Receive cSourceNotification With Compliant Structure + [Documentation] The structure of the csource notification message shall be as mandated by clause 5.3.2 [Tags] mandatory ${context_source_registration_id}= Generate Random Entity Id ${context_source_registration_id_prefix} @@ -26,9 +26,7 @@ Receive cSourceNotification With Relevant Information Create Context Source Registration ${context_source_registration_payload} @{expected_context_source_registration_ids}= Create List ${context_source_registration_id} - @{expected_notification_data_entities}= Create List Building - - Wait for notification and validate it ${subscription_id} ${expected_context_source_registration_ids} 1 newlyMatching ${expected_notification_data_entities} + Wait for notification and validate it ${subscription_id} ${expected_context_source_registration_ids} 1 newlyMatching *** Keywords *** Setup Initial Context Source Registration Subscriptions diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_05.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_05.robot index a41c5305..53c01ed4 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_05.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_05.robot @@ -1,5 +1,5 @@ *** Settings *** -Documentation The structure of the csource notification message shall be as mandated by clause 5.3.2 +Documentation Check that if a cSourceNotification is sent successfully to the "endpoint" member, the "notification.timesSent" member shall be incremented by one and the "notification.lastNotification" member shall be updated with the current timestamp Resource ${EXECDIR}/resources/ApiUtils.resource Resource ${EXECDIR}/resources/AssertionUtils.resource Resource ${EXECDIR}/resources/JsonUtils.resource @@ -12,11 +12,11 @@ Suite Teardown Delete Created Context Source Registrations And Subscription ${context_source_registration_id_prefix}= urn:ngsi-ld:ContextSourceRegistration: ${subscription_id_prefix}= urn:ngsi-ld:Subscription: ${context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-sample.jsonld -${subscription_payload_file_path}= csourceSubscriptions/withReachableEndpoints/subscription-sample.jsonld +${subscription_payload_file_path}= csourceSubscriptions/subscription-sample.jsonld *** Test Case *** -Receive cSourceNotification With Compliant Structure - [Documentation] The structure of the csource notification message shall be as mandated by clause 5.3.2 +If A cSourceNotification Is Successfully Sent The Notification Member Shall Be Updated + [Documentation] Check that if a cSourceNotification is sent successfully to the "endpoint" member, the "notification.timesSent" member shall be incremented by one and the "notification.lastNotification" member shall be updated with the current timestamp [Tags] mandatory ${context_source_registration_id}= Generate Random Entity Id ${context_source_registration_id_prefix} @@ -25,8 +25,8 @@ Receive cSourceNotification With Compliant Structure Create Context Source Registration ${context_source_registration_payload} - @{expected_context_source_registration_ids}= Create List ${context_source_registration_id} - Wait for notification and validate it ${subscription_id} ${expected_context_source_registration_ids} 1 newlyMatching + Wait for notification + # TODO: Retrieve context source registration subscription and check notification member *** Keywords *** Setup Initial Context Source Registration Subscriptions @@ -34,7 +34,6 @@ Setup Initial Context Source Registration Subscriptions ${subscription_id}= Generate Random Entity Id ${subscription_id_prefix} ${subscription_payload}= Load Test Sample ${subscription_payload_file_path} ${subscription_id} - Create Context Source Registration Subscription ${subscription_payload} Set Suite Variable ${subscription_id} diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_06.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_06.robot index 9aed03c0..ffe52aa5 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_06.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_06.robot @@ -1,5 +1,5 @@ *** Settings *** -Documentation Check that if a cSourceNotification is sent successfully to the "endpoint" member, the "notification.timesSent" member shall be incremented by one and the "notification.lastNotification" member shall be updated with the current timestamp +Documentation Check that if a cSourceNotification is not sent successfully, the notification.lastFailure" member shall be updated with the current timestamp and the status of the context source registration subscription shall be updated to "failed" Resource ${EXECDIR}/resources/ApiUtils.resource Resource ${EXECDIR}/resources/AssertionUtils.resource Resource ${EXECDIR}/resources/JsonUtils.resource @@ -12,11 +12,11 @@ Suite Teardown Delete Created Context Source Registrations And Subscription ${context_source_registration_id_prefix}= urn:ngsi-ld:ContextSourceRegistration: ${subscription_id_prefix}= urn:ngsi-ld:Subscription: ${context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-sample.jsonld -${subscription_payload_file_path}= csourceSubscriptions/withReachableEndpoints/subscription-sample.jsonld +${subscription_payload_file_path}= csourceSubscriptions/subscription-unreachable-endpoint-sample.jsonld *** Test Case *** -If A cSourceNotification Is Successfully Sent The Notification Member Shall Be Updated - [Documentation] Check that if a cSourceNotification is sent successfully to the "endpoint" member, the "notification.timesSent" member shall be incremented by one and the "notification.lastNotification" member shall be updated with the current timestamp +If A cSourceNotification Is Not Successfully Sent The Notification Member Shall Be Updated + [Documentation] Check that if a cSourceNotification is not sent successfully, the notification.lastFailure" member shall be updated with the current timestamp and the status of the context source registration subscription shall be updated to "failed" [Tags] mandatory ${context_source_registration_id}= Generate Random Entity Id ${context_source_registration_id_prefix} @@ -25,7 +25,7 @@ If A cSourceNotification Is Successfully Sent The Notification Member Shall Be U Create Context Source Registration ${context_source_registration_payload} - Wait for notification + Wait for no notification # TODO: Retrieve context source registration subscription and check notification member *** Keywords *** diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_07.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_07.robot index 3afba7b3..09c91737 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_07.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_07.robot @@ -1,10 +1,11 @@ *** Settings *** -Documentation Check that if a cSourceNotification is not sent successfully, the notification.lastFailure" member shall be updated with the current timestamp and the status of the context source registration subscription shall be updated to "failed" +Documentation Check that a cSourceNotification shall only be sent if and only if the status of the corresponding subscription is active not paused nor expired Resource ${EXECDIR}/resources/ApiUtils.resource Resource ${EXECDIR}/resources/AssertionUtils.resource Resource ${EXECDIR}/resources/JsonUtils.resource Resource ${EXECDIR}/resources/NotificationUtils.resource +Test Template Do Not Receive cSourceNotification If Subscription Status Is Not Active Suite Setup Setup Initial Context Source Registration Subscriptions Suite Teardown Delete Created Context Source Registrations And Subscriptions @@ -14,11 +15,19 @@ ${subscription_id_prefix}= urn:ngsi-ld:Subscription: ${context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-sample.jsonld ${subscription_payload_file_path}= csourceSubscriptions/subscription-sample.jsonld -*** Test Case *** -If A cSourceNotification Is Not Successfully Sent The Notification Member Shall Be Updated - [Documentation] Check that if a cSourceNotification is not sent successfully, the notification.lastFailure" member shall be updated with the current timestamp and the status of the context source registration subscription shall be updated to "failed" +*** Test Cases *** FILEPATH +PausedSubscription csourceSubscriptions/fragments/subscription-isActive-update-sample.json +ExpiredSubscription csourceSubscriptions/fragments/subscription-expiresAt-update-sample.json + +*** Keywords *** +Do Not Receive cSourceNotification If Subscription Status Is Not Active + [Arguments] ${filepath} + [Documentation] Check that a cSourceNotification shall only be sent if and only if the status of the corresponding subscription is active not paused nor expired [Tags] mandatory + ${subscription_update_fragment}= Load Test Sample ${filepath} + Update Context Source Registration Subscription ${subscription_id} ${subscription_update_fragment} + ${context_source_registration_id}= Generate Random Entity Id ${context_source_registration_id_prefix} ${context_source_registration_payload}= Load Test Sample ${context_source_registration_payload_file_path} ${context_source_registration_id} Set Suite Variable ${context_source_registration_id} @@ -26,7 +35,6 @@ If A cSourceNotification Is Not Successfully Sent The Notification Member Shall Create Context Source Registration ${context_source_registration_payload} Wait for no notification - # TODO: Retrieve context source registration subscription and check notification member *** Keywords *** Setup Initial Context Source Registration Subscriptions diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_08.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_08.robot index 830c8c5f..66641819 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_08.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_08.robot @@ -1,49 +1,44 @@ *** Settings *** -Documentation Check that a cSourceNotification shall only be sent if and only if the status of the corresponding subscription is active not paused nor expired +Documentation Check if a context source registration subscription does not define a temporalQ member, a CsourceNotification will be triggered from matching context source registrations for context sources providing latest information Resource ${EXECDIR}/resources/ApiUtils.resource Resource ${EXECDIR}/resources/AssertionUtils.resource Resource ${EXECDIR}/resources/JsonUtils.resource Resource ${EXECDIR}/resources/NotificationUtils.resource -Test Template Do Not Receive cSourceNotification If Subscription Status Is Not Active -Suite Setup Setup Initial Context Source Registration Subscriptions +Suite Setup Setup Initial Context Source Registrations And Subscriptions Suite Teardown Delete Created Context Source Registrations And Subscriptions *** Variable *** ${context_source_registration_id_prefix}= urn:ngsi-ld:ContextSourceRegistration: ${subscription_id_prefix}= urn:ngsi-ld:Subscription: ${context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-sample.jsonld -${subscription_payload_file_path}= csourceSubscriptions/withReachableEndpoints/subscription-sample.jsonld +${subscription_payload_file_path}= csourceSubscriptions/subscription-sample.jsonld +${update_fragment_file_path}= csourceRegistrations/fragments/context-source-registration-update-sample.json -*** Test Cases *** FILEPATH -PausedSubscription csourceSubscriptions/fragments/subscription-isActive-update-sample.json -ExpiredSubscription csourceSubscriptions/fragments/subscription-expiresAt-update-sample.json - -*** Keywords *** -Do Not Receive cSourceNotification If Subscription Status Is Not Active - [Arguments] ${filepath} - [Documentation] Check that a cSourceNotification shall only be sent if and only if the status of the corresponding subscription is active not paused nor expired +*** Test Case *** +Receive cSourceNotification For Matching Context Source Registrations Providing Latest Information + [Documentation] Check if a context source registration subscription does not define a temporalQ member, a CsourceNotification will be triggered from matching context source registrations for context sources providing latest information [Tags] mandatory - ${subscription_update_fragment}= Load Test Sample ${filepath} - Update Context Source Registration Subscription ${subscription_id} ${subscription_update_fragment} + ${update_fragment}= Load Test Sample ${update_fragment_file_path} + Update Context Source Registration ${context_source_registration_id} ${update_fragment} - ${context_source_registration_id}= Generate Random Entity Id ${context_source_registration_id_prefix} - ${context_source_registration_payload}= Load Test Sample ${context_source_registration_payload_file_path} ${context_source_registration_id} - Set Suite Variable ${context_source_registration_id} - - Create Context Source Registration ${context_source_registration_payload} - - Wait for no notification + @{expected_context_source_registration_ids}= Create List ${context_source_registration_id} + Wait for notification and validate it ${subscription_id} ${expected_context_source_registration_ids} 1 updated *** Keywords *** -Setup Initial Context Source Registration Subscriptions +Setup Initial Context Source Registrations And Subscriptions Start Local Server + ${context_source_registration_id}= Generate Random Entity Id ${context_source_registration_id_prefix} ${subscription_id}= Generate Random Entity Id ${subscription_id_prefix} + ${context_source_registration_payload}= Load Test Sample ${context_source_registration_payload_file_path} ${context_source_registration_id} ${subscription_payload}= Load Test Sample ${subscription_payload_file_path} ${subscription_id} + + Create Context Source Registration ${context_source_registration_payload} Create Context Source Registration Subscription ${subscription_payload} + Set Suite Variable ${context_source_registration_id} Set Suite Variable ${subscription_id} Delete Created Context Source Registrations And Subscriptions diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_09.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_09.robot index 0861e2bd..1e42ea28 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_09.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_09.robot @@ -1,5 +1,5 @@ *** Settings *** -Documentation Check if a context source registration subscription does not define a temporalQ member, a CsourceNotification will be triggered from matching context source registrations for context sources providing latest information +Documentation Check if a context source registration subscription defines an entities member, a CsourceNotification will be triggered from context source registrations with information member matching the described entities Resource ${EXECDIR}/resources/ApiUtils.resource Resource ${EXECDIR}/resources/AssertionUtils.resource Resource ${EXECDIR}/resources/JsonUtils.resource @@ -12,19 +12,19 @@ Suite Teardown Delete Created Context Source Registrations And Subscription ${context_source_registration_id_prefix}= urn:ngsi-ld:ContextSourceRegistration: ${subscription_id_prefix}= urn:ngsi-ld:Subscription: ${context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-sample.jsonld -${subscription_payload_file_path}= csourceSubscriptions/withReachableEndpoints/subscription-sample.jsonld -${update_fragment_file_path}= csourceRegistrations/fragments/context-source-registration-update-sample.json +${subscription_payload_file_path}= csourceSubscriptions/subscription-sample.jsonld +${update_fragment_file_path}= csourceRegistrations/fragments/context-source-registration-update-information-sample.json *** Test Case *** -Receive cSourceNotification For Matching Context Source Registrations Providing Latest Information - [Documentation] Check if a context source registration subscription does not define a temporalQ member, a CsourceNotification will be triggered from matching context source registrations for context sources providing latest information +Receive cSourceNotification For No Longer Matching Context Source Registrations Providing Latest Information + [Documentation] Check if a context source registration subscription defines an entities member, a CsourceNotification will be triggered from context source registrations with information member matching the described entities [Tags] mandatory ${update_fragment}= Load Test Sample ${update_fragment_file_path} Update Context Source Registration ${context_source_registration_id} ${update_fragment} @{expected_context_source_registration_ids}= Create List ${context_source_registration_id} - Wait for notification and validate it ${subscription_id} ${expected_context_source_registration_ids} 1 updated + Wait for notification and validate it ${subscription_id} ${expected_context_source_registration_ids} 1 noLongerMatching *** Keywords *** Setup Initial Context Source Registrations And Subscriptions diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_10.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_10.robot index 44d031c7..347ac5d3 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_10.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_10.robot @@ -1,44 +1,42 @@ *** Settings *** -Documentation Check if a context source registration subscription defines an entities member, a CsourceNotification will be triggered from context source registrations with information member matching the described entities +Documentation Check if a context source registration subscription defines temporalQ member with timeproperty observedAt, the temporal query is matched against the observationInterval of matching context source registrations Resource ${EXECDIR}/resources/ApiUtils.resource Resource ${EXECDIR}/resources/AssertionUtils.resource Resource ${EXECDIR}/resources/JsonUtils.resource Resource ${EXECDIR}/resources/NotificationUtils.resource -Suite Setup Setup Initial Context Source Registrations And Subscriptions +Suite Setup Setup Initial Context Source Registration Subscriptions Suite Teardown Delete Created Context Source Registrations And Subscriptions *** Variable *** ${context_source_registration_id_prefix}= urn:ngsi-ld:ContextSourceRegistration: ${subscription_id_prefix}= urn:ngsi-ld:Subscription: -${context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-sample.jsonld -${subscription_payload_file_path}= csourceSubscriptions/withReachableEndpoints/subscription-sample.jsonld -${update_fragment_file_path}= csourceRegistrations/fragments/context-source-registration-update-information-sample.json +${context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-observationInterval-sample.jsonld +${subscription_payload_file_path}= csourceSubscriptions/subscription-temporalQ-observedAt-sample.jsonld *** Test Case *** -Receive cSourceNotification For No Longer Matching Context Source Registrations Providing Latest Information - [Documentation] Check if a context source registration subscription defines an entities member, a CsourceNotification will be triggered from context source registrations with information member matching the described entities +Receive cSourceNotification For Matching Context Source Registrations On Observation Interval + [Documentation] Check if a context source registration subscription defines temporalQ member with timeproperty observedAt, the temporal query is matched against the observationInterval of matching context source registrations [Tags] mandatory - ${update_fragment}= Load Test Sample ${update_fragment_file_path} - Update Context Source Registration ${context_source_registration_id} ${update_fragment} + ${context_source_registration_id}= Generate Random Entity Id ${context_source_registration_id_prefix} + ${context_source_registration_payload}= Load Test Sample ${context_source_registration_payload_file_path} ${context_source_registration_id} + Set Suite Variable ${context_source_registration_id} + + Create Context Source Registration ${context_source_registration_payload} @{expected_context_source_registration_ids}= Create List ${context_source_registration_id} - Wait for notification and validate it ${subscription_id} ${expected_context_source_registration_ids} 1 noLongerMatching + Wait for notification and validate it ${subscription_id} ${expected_context_source_registration_ids} 1 newlyMatching *** Keywords *** -Setup Initial Context Source Registrations And Subscriptions +Setup Initial Context Source Registration Subscriptions Start Local Server - ${context_source_registration_id}= Generate Random Entity Id ${context_source_registration_id_prefix} ${subscription_id}= Generate Random Entity Id ${subscription_id_prefix} - ${context_source_registration_payload}= Load Test Sample ${context_source_registration_payload_file_path} ${context_source_registration_id} ${subscription_payload}= Load Test Sample ${subscription_payload_file_path} ${subscription_id} - Create Context Source Registration ${context_source_registration_payload} Create Context Source Registration Subscription ${subscription_payload} - Set Suite Variable ${context_source_registration_id} Set Suite Variable ${subscription_id} Delete Created Context Source Registrations And Subscriptions diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_11.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_11.robot index f8d4d95b..b4f323ad 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_11.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_11.robot @@ -1,24 +1,34 @@ *** Settings *** -Documentation Check if a context source registration subscription defines temporalQ member with timeproperty observedAt, the temporal query is matched against the observationInterval of matching context source registrations +Documentation Check if a context source registration subscription defines temporalQ member with timeproperty createdAt or modifiedAt, the temporal query is matched against the managementInterval of matching context source registrations Resource ${EXECDIR}/resources/ApiUtils.resource Resource ${EXECDIR}/resources/AssertionUtils.resource Resource ${EXECDIR}/resources/JsonUtils.resource Resource ${EXECDIR}/resources/NotificationUtils.resource -Suite Setup Setup Initial Context Source Registration Subscriptions -Suite Teardown Delete Created Context Source Registrations And Subscriptions +Test Template Receive cSourceNotification For Matching Context Source Registrations On Management Interval +Suite Setup Start Local Server +Suite Teardown Delete Created Context Source Registrations *** Variable *** ${context_source_registration_id_prefix}= urn:ngsi-ld:ContextSourceRegistration: ${subscription_id_prefix}= urn:ngsi-ld:Subscription: -${context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-observationInterval-sample.jsonld -${subscription_payload_file_path}= csourceSubscriptions/withReachableEndpoints/subscription-temporalQ-sample.jsonld +${context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-managementInterval-sample.jsonld -*** Test Case *** -Receive cSourceNotification For Matching Context Source Registrations On Observation Interval - [Documentation] Check if a context source registration subscription defines temporalQ member with timeproperty observedAt, the temporal query is matched against the observationInterval of matching context source registrations +*** Test Cases *** FILEPATH +CreatedAt csourceSubscriptions/subscription-temporalQ-createdAt-sample.jsonld +ModifiedAt csourceSubscriptions/subscription-temporalQ-modifiedAt-sample.jsonld + +*** Keywords *** +Receive cSourceNotification For Matching Context Source Registrations On Management Interval + [Arguments] ${filepath} + [Documentation] Check if a context source registration subscription defines temporalQ member with timeproperty createdAt or modifiedAt, the temporal query is matched against the managementInterval of matching context source registrations [Tags] mandatory + ${subscription_id}= Generate Random Entity Id ${subscription_id_prefix} + ${subscription_payload}= Load Test Sample ${filepath} ${subscription_id} + Create Context Source Registration Subscription ${subscription_payload} + Set Suite Variable ${subscription_id} + ${context_source_registration_id}= Generate Random Entity Id ${context_source_registration_id_prefix} ${context_source_registration_payload}= Load Test Sample ${context_source_registration_payload_file_path} ${context_source_registration_id} Set Suite Variable ${context_source_registration_id} @@ -26,21 +36,13 @@ Receive cSourceNotification For Matching Context Source Registrations On Observa Create Context Source Registration ${context_source_registration_payload} @{expected_context_source_registration_ids}= Create List ${context_source_registration_id} - Wait for notification and validate it ${subscription_id} ${expected_context_source_registration_ids} 1 newlyMatching - -*** Keywords *** -Setup Initial Context Source Registration Subscriptions - Start Local Server + # Continue On Failure to delete created context source registration subscription + Run Keyword And Continue On Failure Wait for notification and validate it ${subscription_id} ${expected_context_source_registration_ids} 1 newlyMatching - ${subscription_id}= Generate Random Entity Id ${subscription_id_prefix} - ${subscription_payload}= Load Test Sample ${subscription_payload_file_path} ${subscription_id} - - Create Context Source Registration Subscription ${subscription_payload} - - Set Suite Variable ${subscription_id} + # Moved here since each test case creates it's own subscription + Delete Context Source Registration Subscription ${subscription_id} -Delete Created Context Source Registrations And Subscriptions +Delete Created Context Source Registrations Stop Local Server Delete Context Source Registration ${context_source_registration_id} - Delete Context Source Registration Subscription ${subscription_id} diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_12.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_12.robot index cb79bc5e..ca048fd5 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_12.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_12.robot @@ -1,34 +1,24 @@ *** Settings *** -Documentation Check if a context source registration subscription defines temporalQ member with timeproperty createdAt or modifiedAt, the temporal query is matched against the managementInterval of matching context source registrations +Documentation Check if a context source registrations subscription defines entities member and watchedAttributes member, a CsourceNotification will be triggered from context source registrations with information member matching the described entities and attributes Resource ${EXECDIR}/resources/ApiUtils.resource Resource ${EXECDIR}/resources/AssertionUtils.resource Resource ${EXECDIR}/resources/JsonUtils.resource Resource ${EXECDIR}/resources/NotificationUtils.resource -Test Template Receive cSourceNotification For Matching Context Source Registrations On Management Interval -Suite Setup Start Local Server -Suite Teardown Delete Created Context Source Registrations +Suite Setup Setup Initial Context Source Registration Subscriptions +Suite Teardown Delete Created Context Source Registrations And Subscriptions *** Variable *** ${context_source_registration_id_prefix}= urn:ngsi-ld:ContextSourceRegistration: ${subscription_id_prefix}= urn:ngsi-ld:Subscription: -${context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-managementInterval-sample.jsonld +${context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-detailed-information-sample.jsonld +${subscription_payload_file_path}= csourceSubscriptions/subscription-watchedAttributes-sample.jsonld -*** Test Cases *** FILEPATH -CreatedAt csourceSubscriptions/withReachableEndpoints/subscription-temporalQ-createdAt-sample.jsonld -ModifiedAt csourceSubscriptions/withReachableEndpoints/subscription-temporalQ-modifiedAt-sample.jsonld - -*** Keywords *** -Receive cSourceNotification For Matching Context Source Registrations On Management Interval - [Arguments] ${filepath} - [Documentation] Check if a context source registration subscription defines temporalQ member with timeproperty createdAt or modifiedAt, the temporal query is matched against the managementInterval of matching context source registrations +*** Test Case *** +Receive cSourceNotification For Matching Context Source Registrations On Watched Attributes + [Documentation] Check if a context source registrations subscription defines entities member and watchedAttributes member, a CsourceNotification will be triggered from context source registrations with information member matching the described entities and attributes [Tags] mandatory - ${subscription_id}= Generate Random Entity Id ${subscription_id_prefix} - ${subscription_payload}= Load Test Sample ${filepath} ${subscription_id} - Create Context Source Registration Subscription ${subscription_payload} - Set Suite Variable ${subscription_id} - ${context_source_registration_id}= Generate Random Entity Id ${context_source_registration_id_prefix} ${context_source_registration_payload}= Load Test Sample ${context_source_registration_payload_file_path} ${context_source_registration_id} Set Suite Variable ${context_source_registration_id} @@ -36,13 +26,21 @@ Receive cSourceNotification For Matching Context Source Registrations On Managem Create Context Source Registration ${context_source_registration_payload} @{expected_context_source_registration_ids}= Create List ${context_source_registration_id} - # Continue On Failure to delete created context source registration subscription - Run Keyword And Continue On Failure Wait for notification and validate it ${subscription_id} ${expected_context_source_registration_ids} 1 newlyMatching + Wait for notification and validate it ${subscription_id} ${expected_context_source_registration_ids} 1 newlyMatching - # Moved here since each test case creates it's own subscription - Delete Context Source Registration Subscription ${subscription_id} +*** Keywords *** +Setup Initial Context Source Registration Subscriptions + Start Local Server -Delete Created Context Source Registrations + ${subscription_id}= Generate Random Entity Id ${subscription_id_prefix} + ${subscription_payload}= Load Test Sample ${subscription_payload_file_path} ${subscription_id} + + Create Context Source Registration Subscription ${subscription_payload} + + Set Suite Variable ${subscription_id} + +Delete Created Context Source Registrations And Subscriptions Stop Local Server Delete Context Source Registration ${context_source_registration_id} + Delete Context Source Registration Subscription ${subscription_id} diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_13.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_13.robot index f326a9f8..e8bc6cd1 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_13.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_13.robot @@ -1,5 +1,5 @@ *** Settings *** -Documentation Check if a context source registrations subscription defines entities member and watchedAttributes member, a CsourceNotification will be triggered from context source registrations with information member matching the described entities and attributes +Documentation Check if a context source registrations subscription does not define watchedAttributes member, a CsourceNotification will be triggered from context source registrations with information member matching all attributes of the described entities Resource ${EXECDIR}/resources/ApiUtils.resource Resource ${EXECDIR}/resources/AssertionUtils.resource Resource ${EXECDIR}/resources/JsonUtils.resource @@ -12,11 +12,11 @@ Suite Teardown Delete Created Context Source Registrations And Subscription ${context_source_registration_id_prefix}= urn:ngsi-ld:ContextSourceRegistration: ${subscription_id_prefix}= urn:ngsi-ld:Subscription: ${context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-detailed-information-sample.jsonld -${subscription_payload_file_path}= csourceSubscriptions/withReachableEndpoints/subscription-watchedAttributes-sample.jsonld +${subscription_payload_file_path}= csourceSubscriptions/subscription-sample.jsonld *** Test Case *** -Receive cSourceNotification For Matching Context Source Registrations On Watched Attributes - [Documentation] Check if a context source registrations subscription defines entities member and watchedAttributes member, a CsourceNotification will be triggered from context source registrations with information member matching the described entities and attributes +Receive cSourceNotification For Matching Context Source Registrations On Any watchedAttribute + [Documentation] Check if a context source registrations subscription does not define watchedAttributes member, a CsourceNotification will be triggered from context source registrations with information member matching all attributes of the described entities [Tags] mandatory ${context_source_registration_id}= Generate Random Entity Id ${context_source_registration_id_prefix} diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_14.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_14.robot index 72198b69..d83f315b 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_14.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_14.robot @@ -1,5 +1,5 @@ *** Settings *** -Documentation Check if a context source registrations subscription does not define watchedAttributes member, a CsourceNotification will be triggered from context source registrations with information member matching all attributes of the described entities +Documentation Check if a context source registrations subscription defines a geoQ member, a CsourceNotification will be triggered from matching context source registrations with a matching location member Resource ${EXECDIR}/resources/ApiUtils.resource Resource ${EXECDIR}/resources/AssertionUtils.resource Resource ${EXECDIR}/resources/JsonUtils.resource @@ -11,12 +11,12 @@ Suite Teardown Delete Created Context Source Registrations And Subscription *** Variable *** ${context_source_registration_id_prefix}= urn:ngsi-ld:ContextSourceRegistration: ${subscription_id_prefix}= urn:ngsi-ld:Subscription: -${context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-detailed-information-sample.jsonld -${subscription_payload_file_path}= csourceSubscriptions/withReachableEndpoints/subscription-sample.jsonld +${context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-location-sample.jsonld +${subscription_payload_file_path}= csourceSubscriptions/subscription-geoQ-sample.jsonld *** Test Case *** -Receive cSourceNotification For Matching Context Source Registrations On Any watchedAttribute - [Documentation] Check if a context source registrations subscription does not define watchedAttributes member, a CsourceNotification will be triggered from context source registrations with information member matching all attributes of the described entities +Receive cSourceNotification For Matching Context Source Registrations On Location + [Documentation] Check if a context source registrations subscription defines a geoQ member, a CsourceNotification will be triggered from matching context source registrations with a matching location member [Tags] mandatory ${context_source_registration_id}= Generate Random Entity Id ${context_source_registration_id_prefix} diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_15.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_15.robot index c3df23fb..2a7c74fc 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_15.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_15.robot @@ -1,5 +1,5 @@ *** Settings *** -Documentation Check if a context source registrations subscription defines a geoQ member, a CsourceNotification will be triggered from matching context source registrations with a matching location member +Documentation Check if a context source registrations subscription does not define a geoproperty in the geoQ member, a CsourceNotification will be triggered from matching context source registrations with a matching location member Resource ${EXECDIR}/resources/ApiUtils.resource Resource ${EXECDIR}/resources/AssertionUtils.resource Resource ${EXECDIR}/resources/JsonUtils.resource @@ -12,11 +12,11 @@ Suite Teardown Delete Created Context Source Registrations And Subscription ${context_source_registration_id_prefix}= urn:ngsi-ld:ContextSourceRegistration: ${subscription_id_prefix}= urn:ngsi-ld:Subscription: ${context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-location-sample.jsonld -${subscription_payload_file_path}= csourceSubscriptions/withReachableEndpoints/subscription-geoQ-sample.jsonld +${subscription_payload_file_path}= csourceSubscriptions/subscription-geoQ-without-geoproperty-sample.jsonld *** Test Case *** -Receive cSourceNotification For Matching Context Source Registrations On Location - [Documentation] Check if a context source registrations subscription defines a geoQ member, a CsourceNotification will be triggered from matching context source registrations with a matching location member +Receive cSourceNotification For Matching Context Source Registrations On Location As Default + [Documentation] Check if a context source registrations subscription does not define a geoproperty in the geoQ member, a CsourceNotification will be triggered from matching context source registrations with a matching location member [Tags] mandatory ${context_source_registration_id}= Generate Random Entity Id ${context_source_registration_id_prefix} diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_16.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_16.robot index 49d3e4f5..ef4d9cc1 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_16.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_16.robot @@ -1,46 +1,58 @@ *** Settings *** -Documentation Check if a context source registrations subscription does not define a geoproperty in the geoQ member, a CsourceNotification will be triggered from matching context source registrations with a matching location member +Documentation Check if you update a context source registration subscription, a CsourceNotification will be sent with all currently matching context source registrations Resource ${EXECDIR}/resources/ApiUtils.resource Resource ${EXECDIR}/resources/AssertionUtils.resource Resource ${EXECDIR}/resources/JsonUtils.resource Resource ${EXECDIR}/resources/NotificationUtils.resource -Suite Setup Setup Initial Context Source Registration Subscriptions +Test Template Receive cSourceNotification For Newly Matching Context Source Registrations +Suite Setup Setup Initial Context Source Registrations And Subscriptions Suite Teardown Delete Created Context Source Registrations And Subscriptions *** Variable *** ${context_source_registration_id_prefix}= urn:ngsi-ld:ContextSourceRegistration: ${subscription_id_prefix}= urn:ngsi-ld:Subscription: -${context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-location-sample.jsonld -${subscription_payload_file_path}= csourceSubscriptions/withReachableEndpoints/subscription-geoQ-without-geoproperty-sample.jsonld - -*** Test Case *** -Receive cSourceNotification For Matching Context Source Registrations On Location As Default - [Documentation] Check if a context source registrations subscription does not define a geoproperty in the geoQ member, a CsourceNotification will be triggered from matching context source registrations with a matching location member +${first_context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-vehicle-entities-sample.jsonld +${second_context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-bus-entities-sample.jsonld +${subscription_payload_file_path}= csourceSubscriptions/subscription-sample.jsonld + +*** Test Cases *** FILEPATH NOTIFICATION_DATA_LENGTH NOTIFICATION_CSR_IDS +MatchFirstContextSourceRegistration csourceSubscriptions/fragments/subscription-vehicle-entities-sample.json 1 ${first_context_source_registration_id} +MatchSecondContextSourceRegistration csourceSubscriptions/fragments/subscription-bus-entities-sample.json 1 ${second_context_source_registration_id} +MatchBothContextSourceRegistrations csourceSubscriptions/fragments/subscription-vehicle-and-bus-entities-sample.json 2 ${first_context_source_registration_id} ${second_context_source_registration_id} +*** Keywords *** +Receive cSourceNotification For Newly Matching Context Source Registrations + [Arguments] ${filepath} ${notification_data_length} @{notification_csr_ids} + [Documentation] Check if you update a context source registration subscription, a CsourceNotification will be sent with all currently matching context source registrations [Tags] mandatory - ${context_source_registration_id}= Generate Random Entity Id ${context_source_registration_id_prefix} - ${context_source_registration_payload}= Load Test Sample ${context_source_registration_payload_file_path} ${context_source_registration_id} - Set Suite Variable ${context_source_registration_id} - - Create Context Source Registration ${context_source_registration_payload} + ${subscription_update_fragment}= Load Test Sample ${filepath} + Update Context Source Registration Subscription ${subscription_id} ${subscription_update_fragment} - @{expected_context_source_registration_ids}= Create List ${context_source_registration_id} - Wait for notification and validate it ${subscription_id} ${expected_context_source_registration_ids} 1 newlyMatching + Wait for notification and validate it ${subscription_id} ${notification_csr_ids} ${notification_data_length} newlyMatching -*** Keywords *** -Setup Initial Context Source Registration Subscriptions +Setup Initial Context Source Registrations And Subscriptions Start Local Server ${subscription_id}= Generate Random Entity Id ${subscription_id_prefix} + ${first_context_source_registration_id}= Generate Random Entity Id ${context_source_registration_id_prefix} + ${second_context_source_registration_id}= Generate Random Entity Id ${context_source_registration_id_prefix} + ${subscription_payload}= Load Test Sample ${subscription_payload_file_path} ${subscription_id} + ${first_context_source_registration_payload}= Load Test Sample ${first_context_source_registration_payload_file_path} ${first_context_source_registration_id} + ${second_context_source_registration_payload}= Load Test Sample ${second_context_source_registration_payload_file_path} ${second_context_source_registration_id} Create Context Source Registration Subscription ${subscription_payload} + Create Context Source Registration ${first_context_source_registration_payload} + Create Context Source Registration ${second_context_source_registration_payload} Set Suite Variable ${subscription_id} + Set Suite Variable ${first_context_source_registration_id} + Set Suite Variable ${second_context_source_registration_id} Delete Created Context Source Registrations And Subscriptions Stop Local Server - Delete Context Source Registration ${context_source_registration_id} Delete Context Source Registration Subscription ${subscription_id} + Delete Context Source Registration ${first_context_source_registration_id} + Delete Context Source Registration ${second_context_source_registration_id} diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_17.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_17.robot deleted file mode 100644 index 949e43a0..00000000 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_17.robot +++ /dev/null @@ -1,58 +0,0 @@ -*** Settings *** -Documentation Check if you update a context source registration subscription, a CsourceNotification will be sent with all currently matching context source registrations -Resource ${EXECDIR}/resources/ApiUtils.resource -Resource ${EXECDIR}/resources/AssertionUtils.resource -Resource ${EXECDIR}/resources/JsonUtils.resource -Resource ${EXECDIR}/resources/NotificationUtils.resource - -Test Template Receive cSourceNotification For Newly Matching Context Source Registrations -Suite Setup Setup Initial Context Source Registrations And Subscriptions -Suite Teardown Delete Created Context Source Registrations And Subscriptions - -*** Variable *** -${context_source_registration_id_prefix}= urn:ngsi-ld:ContextSourceRegistration: -${subscription_id_prefix}= urn:ngsi-ld:Subscription: -${first_context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-vehicle-entities-sample.jsonld -${second_context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-bus-entities-sample.jsonld -${subscription_payload_file_path}= csourceSubscriptions/withReachableEndpoints/subscription-sample.jsonld - -*** Test Cases *** FILEPATH NOTIFICATION_DATA_LENGTH NOTIFICATION_CSR_IDS -MatchFirstContextSourceRegistration csourceSubscriptions/fragments/subscription-vehicle-entities-sample.json 1 ${first_context_source_registration_id} -MatchSecondContextSourceRegistration csourceSubscriptions/fragments/subscription-bus-entities-sample.json 1 ${second_context_source_registration_id} -MatchBothContextSourceRegistrations csourceSubscriptions/fragments/subscription-vehicle-and-bus-entities-sample.json 2 ${first_context_source_registration_id} ${second_context_source_registration_id} -*** Keywords *** -Receive cSourceNotification For Newly Matching Context Source Registrations - [Arguments] ${filepath} ${notification_data_length} @{notification_csr_ids} - [Documentation] Check if you update a context source registration subscription, a CsourceNotification will be sent with all currently matching context source registrations - [Tags] mandatory - - ${subscription_update_fragment}= Load Test Sample ${filepath} - Update Context Source Registration Subscription ${subscription_id} ${subscription_update_fragment} - - Wait for notification and validate it ${subscription_id} ${notification_csr_ids} ${notification_data_length} newlyMatching - -Setup Initial Context Source Registrations And Subscriptions - Start Local Server - - ${subscription_id}= Generate Random Entity Id ${subscription_id_prefix} - ${first_context_source_registration_id}= Generate Random Entity Id ${context_source_registration_id_prefix} - ${second_context_source_registration_id}= Generate Random Entity Id ${context_source_registration_id_prefix} - - ${subscription_payload}= Load Test Sample ${subscription_payload_file_path} ${subscription_id} - ${first_context_source_registration_payload}= Load Test Sample ${first_context_source_registration_payload_file_path} ${first_context_source_registration_id} - ${second_context_source_registration_payload}= Load Test Sample ${second_context_source_registration_payload_file_path} ${second_context_source_registration_id} - - Create Context Source Registration Subscription ${subscription_payload} - Create Context Source Registration ${first_context_source_registration_payload} - Create Context Source Registration ${second_context_source_registration_payload} - - Set Suite Variable ${subscription_id} - Set Suite Variable ${first_context_source_registration_id} - Set Suite Variable ${second_context_source_registration_id} - -Delete Created Context Source Registrations And Subscriptions - Stop Local Server - - Delete Context Source Registration Subscription ${subscription_id} - Delete Context Source Registration ${first_context_source_registration_id} - Delete Context Source Registration ${second_context_source_registration_id} diff --git a/data/csourceRegistrations/context-source-registration-bus-entities-sample.jsonld b/data/csourceRegistrations/context-source-registration-bus-entities-sample.jsonld index 7dfd58f8..fccc6705 100644 --- a/data/csourceRegistrations/context-source-registration-bus-entities-sample.jsonld +++ b/data/csourceRegistrations/context-source-registration-bus-entities-sample.jsonld @@ -10,7 +10,7 @@ ] } ], - "endpoint":"http://10.5.1.217:8080", + "endpoint":"http://my.csource.org:1026", "@context":[ "https://raw.githubusercontent.com/easy-global-market/ngsild-api-data-models/feature/add-json-ld-context-for-ngsi-ld-test-suite/ngsi-ld-test-suite/ngsi-ld-test-suite-context.jsonld", "https://uri.etsi.org/ngsi-ld/v1/ngsi-ld-core-context.jsonld" diff --git a/data/csourceRegistrations/context-source-registration-detailed-information-sample.jsonld b/data/csourceRegistrations/context-source-registration-detailed-information-sample.jsonld index 5884fc06..90753052 100644 --- a/data/csourceRegistrations/context-source-registration-detailed-information-sample.jsonld +++ b/data/csourceRegistrations/context-source-registration-detailed-information-sample.jsonld @@ -12,7 +12,7 @@ "relationshipNames":["locatedAt"] } ], - "endpoint":"http://10.5.1.217:8080", + "endpoint":"http://my.csource.org:1026", "@context":[ "https://raw.githubusercontent.com/easy-global-market/ngsild-api-data-models/feature/add-json-ld-context-for-ngsi-ld-test-suite/ngsi-ld-test-suite/ngsi-ld-test-suite-context.jsonld", "https://uri.etsi.org/ngsi-ld/v1/ngsi-ld-core-context.jsonld" diff --git a/data/csourceRegistrations/context-source-registration-location-sample.jsonld b/data/csourceRegistrations/context-source-registration-location-sample.jsonld index 9a33d728..3d4599ec 100644 --- a/data/csourceRegistrations/context-source-registration-location-sample.jsonld +++ b/data/csourceRegistrations/context-source-registration-location-sample.jsonld @@ -17,7 +17,7 @@ "coordinates":[-8.521,41.2] } }, - "endpoint":"http://10.5.1.217:8080", + "endpoint":"http://my.csource.org:1026", "@context":[ "https://raw.githubusercontent.com/easy-global-market/ngsild-api-data-models/feature/add-json-ld-context-for-ngsi-ld-test-suite/ngsi-ld-test-suite/ngsi-ld-test-suite-context.jsonld", "https://uri.etsi.org/ngsi-ld/v1/ngsi-ld-core-context.jsonld" diff --git a/data/csourceRegistrations/context-source-registration-managementInterval-sample.jsonld b/data/csourceRegistrations/context-source-registration-managementInterval-sample.jsonld index 3c20c189..a3785ed2 100644 --- a/data/csourceRegistrations/context-source-registration-managementInterval-sample.jsonld +++ b/data/csourceRegistrations/context-source-registration-managementInterval-sample.jsonld @@ -14,7 +14,7 @@ "startAt":"2020-08-01T22:07:00Z", "endAt":"2021-08-01T21:07:00Z" }, - "endpoint":"http://10.5.1.217:8080", + "endpoint":"http://my.csource.org:1026", "@context":[ "https://raw.githubusercontent.com/easy-global-market/ngsild-api-data-models/feature/add-json-ld-context-for-ngsi-ld-test-suite/ngsi-ld-test-suite/ngsi-ld-test-suite-context.jsonld", "https://uri.etsi.org/ngsi-ld/v1/ngsi-ld-core-context.jsonld" diff --git a/data/csourceRegistrations/context-source-registration-multiple-entities-sample.jsonld b/data/csourceRegistrations/context-source-registration-multiple-entities-sample.jsonld index 3c6ef292..e9f0aa7f 100644 --- a/data/csourceRegistrations/context-source-registration-multiple-entities-sample.jsonld +++ b/data/csourceRegistrations/context-source-registration-multiple-entities-sample.jsonld @@ -13,7 +13,7 @@ ] } ], - "endpoint":"http://10.5.1.217:8080", + "endpoint":"http://my.csource.org:1026", "@context":[ "https://raw.githubusercontent.com/easy-global-market/ngsild-api-data-models/feature/add-json-ld-context-for-ngsi-ld-test-suite/ngsi-ld-test-suite/ngsi-ld-test-suite-context.jsonld", "https://uri.etsi.org/ngsi-ld/v1/ngsi-ld-core-context.jsonld" diff --git a/data/csourceRegistrations/context-source-registration-observationInterval-sample.jsonld b/data/csourceRegistrations/context-source-registration-observationInterval-sample.jsonld index 504b06ac..e08c3fbe 100644 --- a/data/csourceRegistrations/context-source-registration-observationInterval-sample.jsonld +++ b/data/csourceRegistrations/context-source-registration-observationInterval-sample.jsonld @@ -14,7 +14,7 @@ "startAt":"2020-08-01T22:07:00Z", "endAt":"2021-08-01T21:07:00Z" }, - "endpoint":"http://10.5.1.217:8080", + "endpoint":"http://my.csource.org:1026", "@context":[ "https://raw.githubusercontent.com/easy-global-market/ngsild-api-data-models/feature/add-json-ld-context-for-ngsi-ld-test-suite/ngsi-ld-test-suite/ngsi-ld-test-suite-context.jsonld", "https://uri.etsi.org/ngsi-ld/v1/ngsi-ld-core-context.jsonld" diff --git a/data/csourceRegistrations/context-source-registration-sample.jsonld b/data/csourceRegistrations/context-source-registration-sample.jsonld index 771073bb..aee82568 100644 --- a/data/csourceRegistrations/context-source-registration-sample.jsonld +++ b/data/csourceRegistrations/context-source-registration-sample.jsonld @@ -10,7 +10,7 @@ ] } ], - "endpoint":"http://10.5.1.217:8080", + "endpoint":"http://my.csource.org:1026", "@context":[ "https://raw.githubusercontent.com/easy-global-market/ngsild-api-data-models/feature/add-json-ld-context-for-ngsi-ld-test-suite/ngsi-ld-test-suite/ngsi-ld-test-suite-context.jsonld", "https://uri.etsi.org/ngsi-ld/v1/ngsi-ld-core-context.jsonld" diff --git a/data/csourceRegistrations/context-source-registration-vehicle-entities-sample.jsonld b/data/csourceRegistrations/context-source-registration-vehicle-entities-sample.jsonld index 7ecfa0f1..177d2319 100644 --- a/data/csourceRegistrations/context-source-registration-vehicle-entities-sample.jsonld +++ b/data/csourceRegistrations/context-source-registration-vehicle-entities-sample.jsonld @@ -10,7 +10,7 @@ ] } ], - "endpoint":"http://10.5.1.217:8080", + "endpoint":"http://my.csource.org:1026", "@context":[ "https://raw.githubusercontent.com/easy-global-market/ngsild-api-data-models/feature/add-json-ld-context-for-ngsi-ld-test-suite/ngsi-ld-test-suite/ngsi-ld-test-suite-context.jsonld", "https://uri.etsi.org/ngsi-ld/v1/ngsi-ld-core-context.jsonld" diff --git a/data/csourceRegistrations/fragments/context-source-registration-update-sample.json b/data/csourceRegistrations/fragments/context-source-registration-update-sample.json index 830b1c11..133cc317 100644 --- a/data/csourceRegistrations/fragments/context-source-registration-update-sample.json +++ b/data/csourceRegistrations/fragments/context-source-registration-update-sample.json @@ -1,3 +1,3 @@ { - "endpoint":"http://127.0.0.1:8080" + "endpoint":"http://my.new.csource.org:1026" } \ No newline at end of file diff --git a/data/csourceSubscriptions/withReachableEndpoints/subscription-geoQ-sample.jsonld b/data/csourceSubscriptions/subscription-geoQ-sample.jsonld similarity index 93% rename from data/csourceSubscriptions/withReachableEndpoints/subscription-geoQ-sample.jsonld rename to data/csourceSubscriptions/subscription-geoQ-sample.jsonld index 0c558342..3dd0bc74 100644 --- a/data/csourceSubscriptions/withReachableEndpoints/subscription-geoQ-sample.jsonld +++ b/data/csourceSubscriptions/subscription-geoQ-sample.jsonld @@ -9,7 +9,7 @@ "notification":{ "format":"keyValues", "endpoint":{ - "uri":"http://10.5.3.65:8085/post", + "uri":"http://my.endpoint.org/notify", "accept":"application/json" } }, diff --git a/data/csourceSubscriptions/withReachableEndpoints/subscription-geoQ-without-geoproperty-sample.jsonld b/data/csourceSubscriptions/subscription-geoQ-without-geoproperty-sample.jsonld similarity index 93% rename from data/csourceSubscriptions/withReachableEndpoints/subscription-geoQ-without-geoproperty-sample.jsonld rename to data/csourceSubscriptions/subscription-geoQ-without-geoproperty-sample.jsonld index 3fb21a22..0e664bd6 100644 --- a/data/csourceSubscriptions/withReachableEndpoints/subscription-geoQ-without-geoproperty-sample.jsonld +++ b/data/csourceSubscriptions/subscription-geoQ-without-geoproperty-sample.jsonld @@ -9,7 +9,7 @@ "notification":{ "format":"keyValues", "endpoint":{ - "uri":"http://10.5.3.65:8085/post", + "uri":"http://my.endpoint.org/notify", "accept":"application/json" } }, diff --git a/data/csourceSubscriptions/withReachableEndpoints/subscription-temporalQ-createdAt-sample.jsonld b/data/csourceSubscriptions/subscription-temporalQ-createdAt-sample.jsonld similarity index 93% rename from data/csourceSubscriptions/withReachableEndpoints/subscription-temporalQ-createdAt-sample.jsonld rename to data/csourceSubscriptions/subscription-temporalQ-createdAt-sample.jsonld index 20a27b0a..7265fc1d 100644 --- a/data/csourceSubscriptions/withReachableEndpoints/subscription-temporalQ-createdAt-sample.jsonld +++ b/data/csourceSubscriptions/subscription-temporalQ-createdAt-sample.jsonld @@ -9,7 +9,7 @@ "notification":{ "format":"keyValues", "endpoint":{ - "uri":"http://10.5.3.65:8085/post", + "uri":"http://my.endpoint.org/notify", "accept":"application/json" } }, diff --git a/data/csourceSubscriptions/withReachableEndpoints/subscription-temporalQ-modifiedAt-sample.jsonld b/data/csourceSubscriptions/subscription-temporalQ-modifiedAt-sample.jsonld similarity index 93% rename from data/csourceSubscriptions/withReachableEndpoints/subscription-temporalQ-modifiedAt-sample.jsonld rename to data/csourceSubscriptions/subscription-temporalQ-modifiedAt-sample.jsonld index f262cfad..ef21a2b1 100644 --- a/data/csourceSubscriptions/withReachableEndpoints/subscription-temporalQ-modifiedAt-sample.jsonld +++ b/data/csourceSubscriptions/subscription-temporalQ-modifiedAt-sample.jsonld @@ -9,7 +9,7 @@ "notification":{ "format":"keyValues", "endpoint":{ - "uri":"http://10.5.3.65:8085/post", + "uri":"http://my.endpoint.org/notify", "accept":"application/json" } }, diff --git a/data/csourceSubscriptions/withReachableEndpoints/subscription-temporalQ-sample.jsonld b/data/csourceSubscriptions/subscription-temporalQ-observedAt-sample.jsonld similarity index 93% rename from data/csourceSubscriptions/withReachableEndpoints/subscription-temporalQ-sample.jsonld rename to data/csourceSubscriptions/subscription-temporalQ-observedAt-sample.jsonld index c0aaa6cc..87a23d6f 100644 --- a/data/csourceSubscriptions/withReachableEndpoints/subscription-temporalQ-sample.jsonld +++ b/data/csourceSubscriptions/subscription-temporalQ-observedAt-sample.jsonld @@ -9,7 +9,7 @@ "notification":{ "format":"keyValues", "endpoint":{ - "uri":"http://10.5.3.65:8085/post", + "uri":"http://my.endpoint.org/notify", "accept":"application/json" } }, diff --git a/data/csourceSubscriptions/withReachableEndpoints/subscription-timeInterval-sample.jsonld b/data/csourceSubscriptions/subscription-timeInterval-sample.jsonld similarity index 91% rename from data/csourceSubscriptions/withReachableEndpoints/subscription-timeInterval-sample.jsonld rename to data/csourceSubscriptions/subscription-timeInterval-sample.jsonld index 8123ea11..1e5eff51 100644 --- a/data/csourceSubscriptions/withReachableEndpoints/subscription-timeInterval-sample.jsonld +++ b/data/csourceSubscriptions/subscription-timeInterval-sample.jsonld @@ -10,7 +10,7 @@ "notification":{ "format":"keyValues", "endpoint":{ - "uri":"http://10.5.3.65:8085/post", + "uri":"http://my.endpoint.org/notify", "accept":"application/json" } }, diff --git a/data/csourceSubscriptions/withReachableEndpoints/subscription-sample.jsonld b/data/csourceSubscriptions/subscription-unreachable-endpoint-sample.jsonld similarity index 90% rename from data/csourceSubscriptions/withReachableEndpoints/subscription-sample.jsonld rename to data/csourceSubscriptions/subscription-unreachable-endpoint-sample.jsonld index d2087954..aac999b6 100644 --- a/data/csourceSubscriptions/withReachableEndpoints/subscription-sample.jsonld +++ b/data/csourceSubscriptions/subscription-unreachable-endpoint-sample.jsonld @@ -9,7 +9,7 @@ "notification":{ "format":"keyValues", "endpoint":{ - "uri":"http://10.5.3.65:8085/post", + "uri":"http://unreachable.endpoint/notify", "accept":"application/json" } }, diff --git a/data/csourceSubscriptions/withReachableEndpoints/subscription-watchedAttributes-sample.jsonld b/data/csourceSubscriptions/subscription-watchedAttributes-sample.jsonld similarity index 92% rename from data/csourceSubscriptions/withReachableEndpoints/subscription-watchedAttributes-sample.jsonld rename to data/csourceSubscriptions/subscription-watchedAttributes-sample.jsonld index 8ab0868c..1bca0769 100644 --- a/data/csourceSubscriptions/withReachableEndpoints/subscription-watchedAttributes-sample.jsonld +++ b/data/csourceSubscriptions/subscription-watchedAttributes-sample.jsonld @@ -10,7 +10,7 @@ "notification":{ "format":"keyValues", "endpoint":{ - "uri":"http://10.5.3.65:8085/post", + "uri":"http://my.endpoint.org/notify", "accept":"application/json" } }, -- GitLab From 5536a556e6dadc05a1e464db2733bff82e1b659d Mon Sep 17 00:00:00 2001 From: Houcem Kacem Date: Sun, 24 Jan 2021 12:14:16 +0100 Subject: [PATCH 23/30] fix: use subscription-sample.jsonld for tp 037_02 --- .../RegistrationSubscription/NotificationBehaviour/037_02.robot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_02.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_02.robot index 7528e979..af78fa2d 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_02.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_02.robot @@ -12,7 +12,7 @@ Suite Teardown Delete Created Context Source Registrations And Subscription ${context_source_registration_id_prefix}= urn:ngsi-ld:ContextSourceRegistration: ${subscription_id_prefix}= urn:ngsi-ld:Subscription: ${context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-sample.jsonld -${subscription_payload_file_path}= csourceSubscriptions/subscription-timeInterval-sample.jsonld +${subscription_payload_file_path}= csourceSubscriptions/subscription-sample.jsonld ${update_fragment_file_path}= csourceRegistrations/fragments/context-source-registration-update-sample.json *** Test Case *** -- GitLab From 8fde92988e704d855889554fd88ec5ef23dba641 Mon Sep 17 00:00:00 2001 From: Houcem Kacem Date: Sun, 24 Jan 2021 13:12:38 +0100 Subject: [PATCH 24/30] fix: update tp 037_02 + refactor code --- .../NotificationBehaviour/037_02.robot | 6 ++++-- .../NotificationBehaviour/037_03.robot | 2 +- .../NotificationBehaviour/037_04.robot | 2 +- .../NotificationBehaviour/037_08.robot | 2 +- .../NotificationBehaviour/037_09.robot | 2 +- .../NotificationBehaviour/037_10.robot | 2 +- .../NotificationBehaviour/037_11.robot | 2 +- .../NotificationBehaviour/037_12.robot | 2 +- .../NotificationBehaviour/037_13.robot | 2 +- .../NotificationBehaviour/037_14.robot | 2 +- .../NotificationBehaviour/037_15.robot | 2 +- .../NotificationBehaviour/037_16.robot | 12 ++++++------ resources/NotificationUtils.resource | 4 ++-- 13 files changed, 22 insertions(+), 20 deletions(-) diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_02.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_02.robot index af78fa2d..4846a9f5 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_02.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_02.robot @@ -26,12 +26,14 @@ Receive cSourceNotification Initially On Subscription And Whenever There Is A Ch Create Context Source Registration Subscription ${subscription_payload} - Wait for notification + @{expected_context_source_registration_ids}= Create List ${context_source_registration_id} + + Wait for notification and validate it ${subscription_id} ${expected_context_source_registration_ids} newlyMatching ${update_fragment}= Load Test Sample ${update_fragment_file_path} Update Context Source Registration ${context_source_registration_id} ${update_fragment} - Wait for notification + Wait for notification and validate it ${subscription_id} ${expected_context_source_registration_ids} updated *** Keywords *** Setup Initial Context Source Registrations diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_03.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_03.robot index 994f9734..0da7fc5f 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_03.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_03.robot @@ -28,7 +28,7 @@ Receive cSourceNotification With Relevant Information @{expected_context_source_registration_ids}= Create List ${context_source_registration_id} @{expected_notification_data_entities}= Create List Building - Wait for notification and validate it ${subscription_id} ${expected_context_source_registration_ids} 1 newlyMatching ${expected_notification_data_entities} + Wait for notification and validate it ${subscription_id} ${expected_context_source_registration_ids} newlyMatching ${expected_notification_data_entities} *** Keywords *** Setup Initial Context Source Registration Subscriptions diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_04.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_04.robot index 5bbe5d86..aac6a6c3 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_04.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_04.robot @@ -26,7 +26,7 @@ Receive cSourceNotification With Compliant Structure Create Context Source Registration ${context_source_registration_payload} @{expected_context_source_registration_ids}= Create List ${context_source_registration_id} - Wait for notification and validate it ${subscription_id} ${expected_context_source_registration_ids} 1 newlyMatching + Wait for notification and validate it ${subscription_id} ${expected_context_source_registration_ids} newlyMatching *** Keywords *** Setup Initial Context Source Registration Subscriptions diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_08.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_08.robot index 66641819..800f0a9f 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_08.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_08.robot @@ -24,7 +24,7 @@ Receive cSourceNotification For Matching Context Source Registrations Providing Update Context Source Registration ${context_source_registration_id} ${update_fragment} @{expected_context_source_registration_ids}= Create List ${context_source_registration_id} - Wait for notification and validate it ${subscription_id} ${expected_context_source_registration_ids} 1 updated + Wait for notification and validate it ${subscription_id} ${expected_context_source_registration_ids} updated *** Keywords *** Setup Initial Context Source Registrations And Subscriptions diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_09.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_09.robot index 1e42ea28..bd0794af 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_09.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_09.robot @@ -24,7 +24,7 @@ Receive cSourceNotification For No Longer Matching Context Source Registrations Update Context Source Registration ${context_source_registration_id} ${update_fragment} @{expected_context_source_registration_ids}= Create List ${context_source_registration_id} - Wait for notification and validate it ${subscription_id} ${expected_context_source_registration_ids} 1 noLongerMatching + Wait for notification and validate it ${subscription_id} ${expected_context_source_registration_ids} noLongerMatching *** Keywords *** Setup Initial Context Source Registrations And Subscriptions diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_10.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_10.robot index 347ac5d3..37f11385 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_10.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_10.robot @@ -26,7 +26,7 @@ Receive cSourceNotification For Matching Context Source Registrations On Observa Create Context Source Registration ${context_source_registration_payload} @{expected_context_source_registration_ids}= Create List ${context_source_registration_id} - Wait for notification and validate it ${subscription_id} ${expected_context_source_registration_ids} 1 newlyMatching + Wait for notification and validate it ${subscription_id} ${expected_context_source_registration_ids} newlyMatching *** Keywords *** Setup Initial Context Source Registration Subscriptions diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_11.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_11.robot index b4f323ad..0a38edc0 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_11.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_11.robot @@ -37,7 +37,7 @@ Receive cSourceNotification For Matching Context Source Registrations On Managem @{expected_context_source_registration_ids}= Create List ${context_source_registration_id} # Continue On Failure to delete created context source registration subscription - Run Keyword And Continue On Failure Wait for notification and validate it ${subscription_id} ${expected_context_source_registration_ids} 1 newlyMatching + Run Keyword And Continue On Failure Wait for notification and validate it ${subscription_id} ${expected_context_source_registration_ids} newlyMatching # Moved here since each test case creates it's own subscription Delete Context Source Registration Subscription ${subscription_id} diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_12.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_12.robot index ca048fd5..5c63941f 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_12.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_12.robot @@ -26,7 +26,7 @@ Receive cSourceNotification For Matching Context Source Registrations On Watched Create Context Source Registration ${context_source_registration_payload} @{expected_context_source_registration_ids}= Create List ${context_source_registration_id} - Wait for notification and validate it ${subscription_id} ${expected_context_source_registration_ids} 1 newlyMatching + Wait for notification and validate it ${subscription_id} ${expected_context_source_registration_ids} newlyMatching *** Keywords *** Setup Initial Context Source Registration Subscriptions diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_13.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_13.robot index e8bc6cd1..3da7df0c 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_13.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_13.robot @@ -26,7 +26,7 @@ Receive cSourceNotification For Matching Context Source Registrations On Any wat Create Context Source Registration ${context_source_registration_payload} @{expected_context_source_registration_ids}= Create List ${context_source_registration_id} - Wait for notification and validate it ${subscription_id} ${expected_context_source_registration_ids} 1 newlyMatching + Wait for notification and validate it ${subscription_id} ${expected_context_source_registration_ids} newlyMatching *** Keywords *** Setup Initial Context Source Registration Subscriptions diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_14.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_14.robot index d83f315b..e269b57d 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_14.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_14.robot @@ -26,7 +26,7 @@ Receive cSourceNotification For Matching Context Source Registrations On Locatio Create Context Source Registration ${context_source_registration_payload} @{expected_context_source_registration_ids}= Create List ${context_source_registration_id} - Wait for notification and validate it ${subscription_id} ${expected_context_source_registration_ids} 1 newlyMatching + Wait for notification and validate it ${subscription_id} ${expected_context_source_registration_ids} newlyMatching *** Keywords *** Setup Initial Context Source Registration Subscriptions diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_15.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_15.robot index 2a7c74fc..9527579f 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_15.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_15.robot @@ -26,7 +26,7 @@ Receive cSourceNotification For Matching Context Source Registrations On Locatio Create Context Source Registration ${context_source_registration_payload} @{expected_context_source_registration_ids}= Create List ${context_source_registration_id} - Wait for notification and validate it ${subscription_id} ${expected_context_source_registration_ids} 1 newlyMatching + Wait for notification and validate it ${subscription_id} ${expected_context_source_registration_ids} newlyMatching *** Keywords *** Setup Initial Context Source Registration Subscriptions diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_16.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_16.robot index ef4d9cc1..1ed99d33 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_16.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_16.robot @@ -16,20 +16,20 @@ ${first_context_source_registration_payload_file_path}= csourceRegistrations/c ${second_context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-bus-entities-sample.jsonld ${subscription_payload_file_path}= csourceSubscriptions/subscription-sample.jsonld -*** Test Cases *** FILEPATH NOTIFICATION_DATA_LENGTH NOTIFICATION_CSR_IDS -MatchFirstContextSourceRegistration csourceSubscriptions/fragments/subscription-vehicle-entities-sample.json 1 ${first_context_source_registration_id} -MatchSecondContextSourceRegistration csourceSubscriptions/fragments/subscription-bus-entities-sample.json 1 ${second_context_source_registration_id} -MatchBothContextSourceRegistrations csourceSubscriptions/fragments/subscription-vehicle-and-bus-entities-sample.json 2 ${first_context_source_registration_id} ${second_context_source_registration_id} +*** Test Cases *** FILEPATH NOTIFICATION_CSR_IDS +MatchFirstContextSourceRegistration csourceSubscriptions/fragments/subscription-vehicle-entities-sample.json ${first_context_source_registration_id} +MatchSecondContextSourceRegistration csourceSubscriptions/fragments/subscription-bus-entities-sample.json ${second_context_source_registration_id} +MatchBothContextSourceRegistrations csourceSubscriptions/fragments/subscription-vehicle-and-bus-entities-sample.json ${first_context_source_registration_id} ${second_context_source_registration_id} *** Keywords *** Receive cSourceNotification For Newly Matching Context Source Registrations - [Arguments] ${filepath} ${notification_data_length} @{notification_csr_ids} + [Arguments] ${filepath} @{notification_csr_ids} [Documentation] Check if you update a context source registration subscription, a CsourceNotification will be sent with all currently matching context source registrations [Tags] mandatory ${subscription_update_fragment}= Load Test Sample ${filepath} Update Context Source Registration Subscription ${subscription_id} ${subscription_update_fragment} - Wait for notification and validate it ${subscription_id} ${notification_csr_ids} ${notification_data_length} newlyMatching + Wait for notification and validate it ${subscription_id} ${notification_csr_ids} newlyMatching Setup Initial Context Source Registrations And Subscriptions Start Local Server diff --git a/resources/NotificationUtils.resource b/resources/NotificationUtils.resource index 00b0308c..f3015cd6 100644 --- a/resources/NotificationUtils.resource +++ b/resources/NotificationUtils.resource @@ -21,7 +21,7 @@ Wait for notification Reply By 200 Wait for notification and validate it - [Arguments] ${expected_subscription_id} ${expected_context_source_registration_ids} ${expected_data_length} ${expected_trigger_reason} ${expected_notification_data_entities}=${EMPTY} ${timeout}=${5} + [Arguments] ${expected_subscription_id} ${expected_context_source_registration_ids} ${expected_trigger_reason} ${expected_notification_data_entities}=${EMPTY} ${timeout}=${5} #HTTP server receives it and checks incoming request for correctness #.. "Wait For Request" #.... This call is blocked until HTTP request arrives or timeout. @@ -43,7 +43,7 @@ Wait for notification and validate it List Should Contain Value ${expected_context_source_registration_ids} ${notification}[data][${index}][@id] ${index}= Evaluate ${index} + 1 END - Should Be Equal '${notification_data_length}' '${expected_data_length}' + Should Be Equal '${notification_data_length}' '${expected_notification_data_entities_length}' Should Be Equal ${notification}[triggerReason] ${expected_trigger_reason} # TODO Currently we check entities information of the first CSR returned in the notification, find a way to check them all -- GitLab From 15ebd9dffc5ee0f8215f719b9f9a958f20e2dbc9 Mon Sep 17 00:00:00 2001 From: Houcem Kacem Date: Sun, 24 Jan 2021 14:10:53 +0100 Subject: [PATCH 25/30] fix: fix check on context source registrations in the received notification --- resources/NotificationUtils.resource | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/resources/NotificationUtils.resource b/resources/NotificationUtils.resource index f3015cd6..b3e22f2e 100644 --- a/resources/NotificationUtils.resource +++ b/resources/NotificationUtils.resource @@ -33,7 +33,9 @@ Wait for notification and validate it ${notification} Evaluate json.loads('''${notification_payload}''') json ${notification_data_length}= Get length ${notification}[data] ${expected_notification_data_entities_length}= Get length ${expected_notification_data_entities} + ${expected_notification_data_length}= Get length ${expected_context_source_registration_ids} + log ${notification} Should Be Equal ${notification}[type] ${notification_type} Should Be Equal ${notification}[subscriptionId] ${expected_subscription_id} # TODO Check if it's a timestamp @@ -43,7 +45,7 @@ Wait for notification and validate it List Should Contain Value ${expected_context_source_registration_ids} ${notification}[data][${index}][@id] ${index}= Evaluate ${index} + 1 END - Should Be Equal '${notification_data_length}' '${expected_notification_data_entities_length}' + Should Be Equal '${notification_data_length}' '${expected_notification_data_length}' Should Be Equal ${notification}[triggerReason] ${expected_trigger_reason} # TODO Currently we check entities information of the first CSR returned in the notification, find a way to check them all -- GitLab From e345c166025e621f2e85764ef9d9c3b65fc0f578 Mon Sep 17 00:00:00 2001 From: Houcem Kacem Date: Sun, 24 Jan 2021 14:36:08 +0100 Subject: [PATCH 26/30] refactor: refactor code --- .../NotificationBehaviour/037_11.robot | 8 ++++---- .../NotificationBehaviour/037_16.robot | 1 + 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_11.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_11.robot index 0a38edc0..81487f69 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_11.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_11.robot @@ -36,11 +36,11 @@ Receive cSourceNotification For Matching Context Source Registrations On Managem Create Context Source Registration ${context_source_registration_payload} @{expected_context_source_registration_ids}= Create List ${context_source_registration_id} - # Continue On Failure to delete created context source registration subscription - Run Keyword And Continue On Failure Wait for notification and validate it ${subscription_id} ${expected_context_source_registration_ids} newlyMatching - # Moved here since each test case creates it's own subscription - Delete Context Source Registration Subscription ${subscription_id} + Wait for notification and validate it ${subscription_id} ${expected_context_source_registration_ids} newlyMatching + + # Moved here since each test case creates a subscription + [Teardown] Delete Context Source Registration Subscription ${subscription_id} Delete Created Context Source Registrations Stop Local Server diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_16.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_16.robot index 1ed99d33..8c5b3f15 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_16.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_16.robot @@ -20,6 +20,7 @@ ${subscription_payload_file_path}= csourceSubscriptions/subscription-sample.js MatchFirstContextSourceRegistration csourceSubscriptions/fragments/subscription-vehicle-entities-sample.json ${first_context_source_registration_id} MatchSecondContextSourceRegistration csourceSubscriptions/fragments/subscription-bus-entities-sample.json ${second_context_source_registration_id} MatchBothContextSourceRegistrations csourceSubscriptions/fragments/subscription-vehicle-and-bus-entities-sample.json ${first_context_source_registration_id} ${second_context_source_registration_id} + *** Keywords *** Receive cSourceNotification For Newly Matching Context Source Registrations [Arguments] ${filepath} @{notification_csr_ids} -- GitLab From 7485fd55468dbce6b5542d0d5e004f27b5cfb9ed Mon Sep 17 00:00:00 2001 From: Houcem Kacem Date: Sun, 24 Jan 2021 14:38:51 +0100 Subject: [PATCH 27/30] fix: update broker url --- resources/variables.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/variables.py b/resources/variables.py index f5a5f8b5..8cbd37d4 100644 --- a/resources/variables.py +++ b/resources/variables.py @@ -1,6 +1,6 @@ def get_variables(arg=None): variables = { - 'url': 'http://10.5.1.214:9090/ngsi-ld/v1/', + 'url': 'https://broker-ngsi-ld.demeter.ubiwhere.com/ngsi-ld/v1', 'ngsild_test_suite_context': 'https://raw.githubusercontent.com/easy-global-market/ngsild-api-data-models/feature/add-json-ld-context-for-ngsi-ld-test-suite/ngsi-ld-test-suite/ngsi-ld-test-suite-context.jsonld', 'notification_server_host': '0.0.0.0', 'notification_server_port': 8085 -- GitLab From 4d6f039208eae1fbaff4a179f353de173a19490c Mon Sep 17 00:00:00 2001 From: Houcem Kacem Date: Sun, 24 Jan 2021 18:13:33 +0100 Subject: [PATCH 28/30] feat: update check on notification data --- .../NotificationBehaviour/037_03.robot | 2 +- ...tion-building-and-bus-entities-sample.jsonld} | 6 +++++- resources/NotificationUtils.resource | 16 ++++++++-------- 3 files changed, 14 insertions(+), 10 deletions(-) rename data/csourceRegistrations/{context-source-registration-multiple-entities-sample.jsonld => context-source-registration-building-and-bus-entities-sample.jsonld} (90%) diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_03.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_03.robot index 0da7fc5f..7ad2693f 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_03.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_03.robot @@ -11,7 +11,7 @@ Suite Teardown Delete Created Context Source Registrations And Subscription *** Variable *** ${context_source_registration_id_prefix}= urn:ngsi-ld:ContextSourceRegistration: ${subscription_id_prefix}= urn:ngsi-ld:Subscription: -${context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-multiple-entities-sample.jsonld +${context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-building-and-bus-entities-sample.jsonld ${subscription_payload_file_path}= csourceSubscriptions/subscription-sample.jsonld *** Test Case *** diff --git a/data/csourceRegistrations/context-source-registration-multiple-entities-sample.jsonld b/data/csourceRegistrations/context-source-registration-building-and-bus-entities-sample.jsonld similarity index 90% rename from data/csourceRegistrations/context-source-registration-multiple-entities-sample.jsonld rename to data/csourceRegistrations/context-source-registration-building-and-bus-entities-sample.jsonld index e9f0aa7f..ce7e8b3a 100644 --- a/data/csourceRegistrations/context-source-registration-multiple-entities-sample.jsonld +++ b/data/csourceRegistrations/context-source-registration-building-and-bus-entities-sample.jsonld @@ -6,7 +6,11 @@ "entities":[ { "type":"Building" - }, + } + ] + }, + { + "entities":[ { "type":"Bus" } diff --git a/resources/NotificationUtils.resource b/resources/NotificationUtils.resource index b3e22f2e..bdb1fbb5 100644 --- a/resources/NotificationUtils.resource +++ b/resources/NotificationUtils.resource @@ -1,5 +1,7 @@ *** Settings *** Documentation Check Notification Behaviour +Library BuiltIn +Library Collections Library HttpCtrl.Server Library ${EXECDIR}/libraries/assertionUtils.py @@ -60,17 +62,15 @@ Wait for no notification Wait For No Request ${timeout} Check Notification Data Entities - [Arguments] ${notification_data_information} @{expected_notification_data_entities} + [Arguments] ${notification_data_information} ${expected_notification_data_entities} - ${notification_data_information_length}= Get length ${notification_data_information} - ${expected_notification_data_entities_length}= Get length ${expected_notification_data_entities} + ${notification_data_entities}= Create List ${index}= Set Variable 0 - FOR ${expected_notification_data_entities} IN @{expected_notification_data_entities} - # We assume that if a CSR provides information about multiple entities they should appear in separate information elements - List Should Contain Value ${expected_notification_data_entities} ${notification_data_information}[${index}][entities][0][type][0] - ${index}= Evaluate ${index} + 1 + FOR ${registration_information} IN @{notification_data_information} + Append To List ${notification_data_entities} ${registration_information}[entities][0][type][0] END - Should Be Equal '${notification_data_information_length}' '${expected_notification_data_entities_length}' + + Lists Should Be Equal ${expected_notification_data_entities} ${notification_data_entities} ignore_order=True Stop Local Server #Terminate HTTP Server -- GitLab From 17a47d7345e7cb6a355036949318f340940438cd Mon Sep 17 00:00:00 2001 From: Houcem Kacem Date: Sun, 24 Jan 2021 18:59:43 +0100 Subject: [PATCH 29/30] feat: check if notifiedAt is a timestamp with defined format --- libraries/dateTimeUtils.py | 13 +++++++++++++ resources/NotificationUtils.resource | 6 ++++-- 2 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 libraries/dateTimeUtils.py diff --git a/libraries/dateTimeUtils.py b/libraries/dateTimeUtils.py new file mode 100644 index 00000000..d22264c8 --- /dev/null +++ b/libraries/dateTimeUtils.py @@ -0,0 +1,13 @@ +import datetime + + +def is_date(date, format): + """Function exposed as a keyword to check whether the string can be interpreted as a date of given format + :param date: string to check for date + :param format: date format + """ + try: + datetime.datetime.strptime(date, format) + return True + except ValueError: + return False diff --git a/resources/NotificationUtils.resource b/resources/NotificationUtils.resource index bdb1fbb5..e9749abb 100644 --- a/resources/NotificationUtils.resource +++ b/resources/NotificationUtils.resource @@ -4,9 +4,11 @@ Library BuiltIn Library Collections Library HttpCtrl.Server Library ${EXECDIR}/libraries/assertionUtils.py +Library ${EXECDIR}/libraries/dateTimeUtils.py *** Variable *** ${notification_type}= ContextSource Notfication +${date_format}= %Y-%m-%dT%H:%M:%SZ *** Keywords *** Start Local Server @@ -40,8 +42,8 @@ Wait for notification and validate it log ${notification} Should Be Equal ${notification}[type] ${notification_type} Should Be Equal ${notification}[subscriptionId] ${expected_subscription_id} - # TODO Check if it's a timestamp - Should Not Be Empty ${notification}[notifiedAt] + ${is_date}= Is Date ${notification}[notifiedAt] ${date_format} + Should Be True ${is_date} ${index}= Set Variable 0 FOR ${expected_context_source_registration_id} IN @{expected_context_source_registration_ids} List Should Contain Value ${expected_context_source_registration_ids} ${notification}[data][${index}][@id] -- GitLab From f5c877baba53425f4efcba4759c5650c8adbf2ae Mon Sep 17 00:00:00 2001 From: Houcem Kacem Date: Mon, 25 Jan 2021 11:17:05 +0100 Subject: [PATCH 30/30] feat: add check on NotificationParams of context source registration subscription --- .../NotificationBehaviour/037_05.robot | 10 +++++++--- .../NotificationBehaviour/037_06.robot | 9 ++++++--- .../expectations/1-timesSent-failed.json | 9 +++++++++ .../notifications/expectations/1-timesSent-ok.json | 9 +++++++++ resources/AssertionUtils.resource | 14 +++++++++++++- 5 files changed, 44 insertions(+), 7 deletions(-) create mode 100644 data/notifications/expectations/1-timesSent-failed.json create mode 100644 data/notifications/expectations/1-timesSent-ok.json diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_05.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_05.robot index 53c01ed4..f562b613 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_05.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_05.robot @@ -1,5 +1,5 @@ *** Settings *** -Documentation Check that if a cSourceNotification is sent successfully to the "endpoint" member, the "notification.timesSent" member shall be incremented by one and the "notification.lastNotification" member shall be updated with the current timestamp +Documentation Check that if a cSourceNotification is sent successfully to the "endpoint" member, the "notification.timesSent" member shall be incremented by one and the "notification.lastSuccess" and "notification.lastNotification" members shall be updated with the current timestamp and the status of the context source registration subscription shall be updated to "ok" Resource ${EXECDIR}/resources/ApiUtils.resource Resource ${EXECDIR}/resources/AssertionUtils.resource Resource ${EXECDIR}/resources/JsonUtils.resource @@ -13,10 +13,11 @@ ${context_source_registration_id_prefix}= urn:ngsi-ld:ContextSourceRegistration ${subscription_id_prefix}= urn:ngsi-ld:Subscription: ${context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-sample.jsonld ${subscription_payload_file_path}= csourceSubscriptions/subscription-sample.jsonld +${notification_expectation_file_path}= notifications/expectations/1-timesSent-ok.json *** Test Case *** If A cSourceNotification Is Successfully Sent The Notification Member Shall Be Updated - [Documentation] Check that if a cSourceNotification is sent successfully to the "endpoint" member, the "notification.timesSent" member shall be incremented by one and the "notification.lastNotification" member shall be updated with the current timestamp + [Documentation] Check that if a cSourceNotification is sent successfully to the "endpoint" member, the "notification.timesSent" member shall be incremented by one and the "notification.lastSuccess" and "notification.lastNotification" members shall be updated with the current timestamp and the status of the context source registration subscription shall be updated to "ok" [Tags] mandatory ${context_source_registration_id}= Generate Random Entity Id ${context_source_registration_id_prefix} @@ -26,7 +27,10 @@ If A cSourceNotification Is Successfully Sent The Notification Member Shall Be U Create Context Source Registration ${context_source_registration_payload} Wait for notification - # TODO: Retrieve context source registration subscription and check notification member + + Retrieve Context Source Registration Subscription ${subscription_id} + @{expected_notification_additional_members}= Create List lastNotification lastSuccess + Check NotificationParams ${notification_expectation_file_path} ${expected_notification_additional_members} *** Keywords *** Setup Initial Context Source Registration Subscriptions diff --git a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_06.robot b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_06.robot index ffe52aa5..187bde84 100644 --- a/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_06.robot +++ b/TP/NGSI-LD/ContextSource/RegistrationSubscription/NotificationBehaviour/037_06.robot @@ -1,5 +1,5 @@ *** Settings *** -Documentation Check that if a cSourceNotification is not sent successfully, the notification.lastFailure" member shall be updated with the current timestamp and the status of the context source registration subscription shall be updated to "failed" +Documentation Check that if a cSourceNotification is not sent successfully, the "notification.timesSent" member shall be incremented by one and the notification.lastFailure" and "notification.lastNotification" members shall be updated with the current timestamp and the status of the context source registration subscription shall be updated to "failed" Resource ${EXECDIR}/resources/ApiUtils.resource Resource ${EXECDIR}/resources/AssertionUtils.resource Resource ${EXECDIR}/resources/JsonUtils.resource @@ -13,10 +13,11 @@ ${context_source_registration_id_prefix}= urn:ngsi-ld:ContextSourceRegistration ${subscription_id_prefix}= urn:ngsi-ld:Subscription: ${context_source_registration_payload_file_path}= csourceRegistrations/context-source-registration-sample.jsonld ${subscription_payload_file_path}= csourceSubscriptions/subscription-unreachable-endpoint-sample.jsonld +${notification_expectation_file_path}= notifications/expectations/0-timesSent-failed.json *** Test Case *** If A cSourceNotification Is Not Successfully Sent The Notification Member Shall Be Updated - [Documentation] Check that if a cSourceNotification is not sent successfully, the notification.lastFailure" member shall be updated with the current timestamp and the status of the context source registration subscription shall be updated to "failed" + [Documentation] Check that if a cSourceNotification is not sent successfully, the "notification.timesSent" member shall be incremented by one and the notification.lastFailure" and "notification.lastNotification" members shall be updated with the current timestamp and the status of the context source registration subscription shall be updated to "failed" [Tags] mandatory ${context_source_registration_id}= Generate Random Entity Id ${context_source_registration_id_prefix} @@ -26,7 +27,9 @@ If A cSourceNotification Is Not Successfully Sent The Notification Member Shall Create Context Source Registration ${context_source_registration_payload} Wait for no notification - # TODO: Retrieve context source registration subscription and check notification member + Retrieve Context Source Registration Subscription ${subscription_id} + @{expected_notification_additional_members}= Create List lastNotification lastFailure + Check NotificationParams ${notification_expectation_file_path} ${expected_notification_additional_members} *** Keywords *** Setup Initial Context Source Registration Subscriptions diff --git a/data/notifications/expectations/1-timesSent-failed.json b/data/notifications/expectations/1-timesSent-failed.json new file mode 100644 index 00000000..27b2d40f --- /dev/null +++ b/data/notifications/expectations/1-timesSent-failed.json @@ -0,0 +1,9 @@ +{ + "format":"keyValues", + "endpoint":{ + "uri":"http://my.endpoint.org/notify", + "accept":"application/json" + }, + "status":"failed", + "timesSent":1 +} \ No newline at end of file diff --git a/data/notifications/expectations/1-timesSent-ok.json b/data/notifications/expectations/1-timesSent-ok.json new file mode 100644 index 00000000..2e61a8ba --- /dev/null +++ b/data/notifications/expectations/1-timesSent-ok.json @@ -0,0 +1,9 @@ +{ + "format":"keyValues", + "endpoint":{ + "uri":"http://my.endpoint.org/notify", + "accept":"application/json" + }, + "status":"ok", + "timesSent":1 +} \ No newline at end of file diff --git a/resources/AssertionUtils.resource b/resources/AssertionUtils.resource index 6236f3f1..89ca3ddb 100755 --- a/resources/AssertionUtils.resource +++ b/resources/AssertionUtils.resource @@ -3,6 +3,7 @@ Library ${EXECDIR}/libraries/assertionUtils.py *** Variable *** ${instance_id_regex_expr}= root\\[.*\\]\\['instanceId'\\] +${notification_timestamps_regex_expr}= root\\['last.*'\\] *** Keywords *** Check Response Status Code @@ -156,4 +157,15 @@ Should Be Present In Json List Check Result Contains [Arguments] ${source} ${parameter} ${value} - Should Be Present In Json List ${source} ${parameter} ${value} \ No newline at end of file + Should Be Present In Json List ${source} ${parameter} ${value} + +Check NotificationParams + [Arguments] ${filename} ${expected_additional_members} + + ${expected_notification}= Load Json From File ${EXECDIR}/data/${filename} + ${comparaison_result}= Compare Dictionaries Ignoring Keys ${response['body']['notification']} ${expected_notification} ${notification_timestamps_regex_expr} + Should Be True ${comparaison_result} msg=NotificationParams Comparaison Failed + + FOR ${expected_additional_member} IN @{expected_additional_members} + Should Not Be Empty ${response['body']['notification']['${expected_additional_member}']} + END -- GitLab