Commit e5cbc7e7 authored by Houcem Kacem's avatar Houcem Kacem
Browse files

implement tps for notification behaviour of context source registration subscriptions

parent c5dd3f33
Loading
Loading
Loading
Loading
+46 −0
Original line number Diff line number Diff line
*** 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/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

*** 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

    ${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
    # Wait for 15 seconds to check if another notification was sent
    Wait for notification   timeout=${15}

*** 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}
+52 −0
Original line number Diff line number Diff line
*** 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-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}

    @{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 and validate it   ${subscription_id}  ${expected_context_source_registration_ids}   updated

*** 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}
+48 −0
Original line number Diff line number Diff line
*** 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-building-and-bus-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}   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}
+46 −0
Original line number Diff line number Diff line
*** 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/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}   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}
+49 −0
Original line number Diff line number Diff line
*** 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.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
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/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.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}
    ${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

    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
    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}
Loading