Commit d93c24fd authored by Benedetta Arena's avatar Benedetta Arena
Browse files

feat: add new interoperability test with four brokers

parent 68825d8c
Loading
Loading
Loading
Loading
+144 −0
Original line number Diff line number Diff line
*** Settings ***
Documentation       Verify that the entities found in b2, b3 and b4 can be queried from b1 via Query.
Resource            ${EXECDIR}/resources/ApiUtils/ContextInformationConsumption.resource
Resource            ${EXECDIR}/resources/ApiUtils/ContextInformationProvision.resource
Resource            ${EXECDIR}/resources/ApiUtils/ContextSourceDiscovery.resource
Resource            ${EXECDIR}/resources/ApiUtils/ContextSourceRegistration.resource
Resource            ${EXECDIR}/resources/AssertionUtils.resource
Resource            ${EXECDIR}/resources/JsonUtils.resource

Test Setup          Setup Initial Context Source Registrations
Test Teardown       Delete Entities and Delete Registrations

*** Variables ***
${location_name_payload_filename}                     interoperability/offstreet-parking2-location-and-name.jsonld
${first_entity_no_location_payload_filename}          interoperability/offstreet-parking1-no-location.jsonld
${second_entity_no_location_payload_filename}         interoperability/offstreet-parking2-no-location.jsonld
${first_full_entity_payload_filename}                 interoperability/offstreet-parking1-full.jsonld
${second_full_entity_payload_filename}                interoperability/offstreet-parking2-full.jsonld
${inclusive_registration_payload_file_path}           csourceRegistrations/interoperability/context-source-registration-inclusive-2.jsonld
${first_redirect_registration_payload_file_path}      csourceRegistrations/interoperability/context-source-registration-redirect-2.jsonld
${second_redirect_registration_payload_file_path}     csourceRegistrations/interoperability/context-source-registration-redirect-3.jsonld
${b1_url}                                         
${b2_url}                                         
${b3_url}
${b4_url}                                         

*** Test Cases ***
IOP_CNF_02_01 Create Entity In B1 And Query Entity In All Brokers
    [Documentation]    Check that entities can be queried from all brokers.
    [Tags]    6_3    I6_3_2_1    inclusive    redirect    interoperability
    
    ${response}=    Query Entities    entity_types=OffstreetParking    broker_url=${b1_url}
    Check Response Status Code    200    ${response.status_code}
    @{entities_b1}=    Set Variable   ${response.json()}
    ${first_payload}=    Get From List   ${entities_b1}    0
    ${second_payload}=    Get From List   ${entities_b1}    1
    Should Not Contain    ${first_payload}   name
    Should Not Contain    ${second_payload}    name

    ${response}=    Query Entities    entity_types=OffstreetParking    broker_url=${b2_url}
    @{entities_b2}=    Set Variable    ${response.json()}
    ${first_b2_payload}=    Get From List   ${entities_b2}    0
    ${second_b2_payload}=    Get From List   ${entities_b2}    1

    ${response}=    Query Entities    entity_types=OffstreetParking    broker_url=${b3_url}
    @{entities_b3}=    Set Variable    ${response.json()}
    ${b3_payload}=    Get From List   ${entities_b3}    0

    ${response}=    Query Entities    entity_types=OffstreetParking    broker_url=${b4_url}
    @{entities_b4}=    Set Variable    ${response.json()}
    ${b4_payload}=    Get From List   ${entities_b4}    0
    
    Should Be Equal    ${first_payload}[availableSpotsNumber]    ${first_b2_payload}[availableSpotsNumber]
    Should Be Equal    ${first_payload}[totalSpotsNumber]    ${first_b2_payload}[totalSpotsNumber]
    Should Be Equal    ${first_payload}[location]    ${b3_payload}[location]

    Should Be Equal    ${second_payload}[availableSpotsNumber]    ${second_b2_payload}[availableSpotsNumber]
    Should Be Equal    ${second_payload}[totalSpotsNumber]    ${second_b2_payload}[totalSpotsNumber]
    Should Be Equal    ${second_payload}[location]    ${b4_payload}[location]

*** Keywords ***
Setup Initial Context Source Registrations

    ${entity_id}=    Generate Random Parking Entity Id
    Set Suite Variable    ${entity_id}
    ${second_entity_id}=    Generate Random Parking Entity Id
    Set Suite Variable    ${second_entity_id}
    ${response}=    Create Entity    ${first_entity_no_location_payload_filename}    ${entity_id}    broker_url=${b2_url}
    Check Response Status Code    201    ${response.status_code}
    ${response}=    Create Entity    ${second_entity_no_location_payload_filename}    ${second_entity_id}    broker_url=${b2_url}
    Check Response Status Code    201    ${response.status_code}
    ${response}=    Create Entity    ${first_full_entity_payload_filename}    ${entity_id}    broker_url=${b3_url}
    Check Response Status Code    201    ${response.status_code}
    ${response}=    Create Entity    ${second_full_entity_payload_filename}    ${second_entity_id}    broker_url=${b3_url}
    Check Response Status Code    201    ${response.status_code}
    ${response}=    Create Entity    ${location_name_payload_filename}    ${entity_id}    broker_url=${b4_url}
    Check Response Status Code    201    ${response.status_code}

    ${registration_id1}=     Generate Random CSR Id
    Set Suite Variable    ${registration_id1}
    ${registration_payload}=    Prepare Context Source Registration From File
    ...    ${registration_id1}
    ...    ${inclusive_registration_payload_file_path}
    ...    entity_id=${entity_id}
    ...    broker_url=${b2_url}
    ...    mode=inclusive
    ${response}=    Create Context Source Registration With Return    ${registration_payload}    broker_url=${b1_url}
    Check Response Status Code    201    ${response.status_code}

    ${registration_id2}=     Generate Random CSR Id
    Set Suite Variable    ${registration_id2}
    ${registration_payload}=    Prepare Context Source Registration From File
    ...    ${registration_id2}
    ...    ${inclusive_registration_payload_file_path}
    ...    entity_id=${second_entity_id}
    ...    broker_url=${b2_url}
    ...    mode=inclusive
    ${response}=    Create Context Source Registration With Return    ${registration_payload}    broker_url=${b1_url}
    Check Response Status Code    201    ${response.status_code}

    ${registration_id3}=     Generate Random CSR Id
    Set Suite Variable    ${registration_id3}
    ${registration_payload}=    Prepare Context Source Registration From File
    ...    ${registration_id3}
    ...    ${first_redirect_registration_payload_file_path}
    ...    entity_id=${entity_id}
    ...    broker_url=${b3_url}
    ...    mode=redirect
    ${response}=    Create Context Source Registration With Return    ${registration_payload}    broker_url=${b1_url}
    Check Response Status Code    201    ${response.status_code}

    ${registration_id4}=     Generate Random CSR Id
    Set Suite Variable    ${registration_id4}
    ${registration_payload}=    Prepare Context Source Registration From File
    ...    ${registration_id4}
    ...    ${first_redirect_registration_payload_file_path}
    ...    entity_id=${second_entity_id}
    ...    broker_url=${b3_url}
    ...    mode=redirect
    ${response}=    Create Context Source Registration With Return    ${registration_payload}    broker_url=${b1_url}
    Check Response Status Code    201    ${response.status_code}

    ${registration_id5}=     Generate Random CSR Id
    Set Suite Variable    ${registration_id5}
    ${registration_payload}=    Prepare Context Source Registration From File
    ...    ${registration_id5}
    ...    ${second_redirect_registration_payload_file_path}
    ...    entity_id=${entity_id}
    ...    broker_url=${b4_url}
    ...    mode=redirect
    ${response}=    Create Context Source Registration With Return    ${registration_payload}    broker_url=${b1_url}
    Check Response Status Code    201    ${response.status_code}

Delete Entities And Delete Registrations
    Delete Context Source Registration    ${registration_id1}    broker_url=${b1_url}
    Delete Context Source Registration    ${registration_id2}    broker_url=${b1_url}
    Delete Context Source Registration    ${registration_id3}    broker_url=${b1_url}
    Delete Context Source Registration    ${registration_id4}    broker_url=${b1_url}
    Delete Context Source Registration    ${registration_id5}    broker_url=${b1_url}
    Delete Entity By Id    ${entity_id}    broker_url=${b2_url}
    Delete Entity by Id    ${second_entity_id}    broker_url=${b2_url}
    Delete Entity By Id    ${entity_id}    broker_url=${b3_url}
    Delete Entity By Id    ${second_entity_id}    broker_url=${b3_url}
    Delete Entity By Id    ${entity_id}    broker_url=${b4_url}
 No newline at end of file
+22 −0
Original line number Diff line number Diff line
{
  "id": "urn:ngsi-ld:ContextSourceRegistration:Redirect:2",
  "type": "ContextSourceRegistration",
  "information": [
    {
      "entities": [
        {
          "type": "OffStreetParking"
        }
      ],
      "propertyNames": [
        "location"		
      ]
    }
  ],
  "mode": "redirect",
  "operations": ["redirectionOps"],
  "endpoint": "xxx",
  "@context":[
    "https://forge.etsi.org/rep/cim/ngsi-ld-test-suite/-/raw/develop/resources/jsonld-contexts/ngsi-ld-test-suite-compound.jsonld"
  ]
}
 No newline at end of file
+23 −0
Original line number Diff line number Diff line
{
  "id": "urn:ngsi-ld:ContextSourceRegistration:Redirect:3",
  "type": "ContextSourceRegistration",
  "information": [
    {
      "entities": [
        {
          "type": "OffStreetParking",
          "id": "urn:ngsi-ld:OffStreetParking:2"
        }
      ],
      "propertyNames": [
        "location"		
      ]
    }
  ],
  "mode": "redirect",
  "operations": ["redirectionOps"],
  "endpoint": "xxx",
  "@context":[
    "https://forge.etsi.org/rep/cim/ngsi-ld-test-suite/-/raw/develop/resources/jsonld-contexts/ngsi-ld-test-suite-compound.jsonld"
  ]
}
 No newline at end of file
+35 −0
Original line number Diff line number Diff line
{
  "id": "urn:ngsi-ld:OffStreetParking:1",
  "type": "OffStreetParking",
  "name": {
    "type": "Property",
    "value": "Downtown One"
  },
  "availableSpotsNumber": {
    "type": "Property",
    "value": 169,
    "observedAt": "2017-07-29T12:10:02Z",
    "reliability": {
      "type": "Property",
      "value": 0.3
    }
  },
  "totalSpotsNumber": {
    "type": "Property",
    "value": 200
  }, 
  "@context": [
    {
      "OffStreetParking": "https://ngsi-ld-test-suite/context#OffStreetParking",
      "Vehicle": "https://ngsi-ld-test-suite/context#Vehicle",
      "availableSpotsNumber": "https://ngsi-ld-test-suite/context#availableSpotsNumber",
      "brandName": "https://ngsi-ld-test-suite/context#brandName",
      "isParked": "https://ngsi-ld-test-suite/context#isParked",
      "name": "https://ngsi-ld-test-suite/context#name",
      "source": "https://ngsi-ld-test-suite/context#source",
      "speed": "https://ngsi-ld-test-suite/context#speed",
      "totalSpotsNumber": "https://ngsi-ld-test-suite/context#totalSpotsNumber"
    },
    "https://uri.etsi.org/ngsi-ld/v1/ngsi-ld-core-context-v1.6.jsonld"
  ]
}
 No newline at end of file
+33 −0
Original line number Diff line number Diff line
{
  "id": "urn:ngsi-ld:OffStreetParking:2",
  "type": "OffStreetParking",
  "name": {
    "type": "Property",
    "value": "Downtown Two"
  },
  "location": {
    "type": "GeoProperty",
    "value": {
      "type": "Point",
      "coordinates": [
        -8.46,
        41.25
      ] ,
    "observedAt": "2021-04-04T11:46:00Z"
    }
  }, 
  "@context": [
    {
      "OffStreetParking": "https://ngsi-ld-test-suite/context#OffStreetParking",
      "Vehicle": "https://ngsi-ld-test-suite/context#Vehicle",
      "availableSpotsNumber": "https://ngsi-ld-test-suite/context#availableSpotsNumber",
      "brandName": "https://ngsi-ld-test-suite/context#brandName",
      "isParked": "https://ngsi-ld-test-suite/context#isParked",
      "name": "https://ngsi-ld-test-suite/context#name",
      "source": "https://ngsi-ld-test-suite/context#source",
      "speed": "https://ngsi-ld-test-suite/context#speed",
      "totalSpotsNumber": "https://ngsi-ld-test-suite/context#totalSpotsNumber"
    },
    "https://uri.etsi.org/ngsi-ld/v1/ngsi-ld-core-context-v1.6.jsonld"
  ]
}
 No newline at end of file
Loading