The below indicates high-level test cases for A1 Adapter in ONAP to interface with A1 Mediator in RT RIC. The test cases will be further detailed out before the testing cycle.

The current scope of A1 Adpater in Non-RT RIC is limited to supporting Policy Management A1 messages.

Please note that A1 Mediator (Developer version 1.0.1), is currently deployed in the Windriver Lab in a standalone VM (without full RIC deployment), and can be accessed at 10.12.7.38:10001.


#

Component(s)

Test Case

Status

Remarks

#1SDN-R/A1 Adapter and A1 MediatorA1 Adapter in Non-RT RIC establishes connection with A1 Mediator in RT RIC

COMPLETE


#2SDN-R/A1 Adapter and ONAP componentsUpon receiving A1 Policy management DMAAP message from any ONAP components or micro-services, SDNR sends corresponding A1 message to A1 Mediator in Near Real TIme RIC.

COMPLETE

Currently there are close to 10 A1 messages that will be supported in Frankfurt, and individual test cases will correspond to the respective A1 messages

#3

SDN-R/A1 Adapter and ONAP components

SDNR is able to receive A1 message on A1-P topic and invoke corresponding RPC to trigger respective DG

COMPLETE

Currently there are close to 10 A1 messages that will be supported in Frankfurt, and individual test cases will correspond to the respective A1 messages

#4

SDN-R/A1 Adapter and ONAP components

RPC/DG execution: Verify if respective A1 Rest API is invoked against A1 Mediator, based on the received A1 Policy management DMAAP message

COMPLETE

Currently there are close to 10 A1 messages that will be supported in Frankfurt, and individual test cases will correspond to the respective A1 messages

#5

SDN-R/A1 Adapter and ONAP components

RPC/DG execution: Verify if DMAAP message confirming success or failure of API transaction with A1 mediator is published on A1-P-RSP topic. This DMAAP message to be consumed by ONAP components, as confirmation of its requested action

COMPLETE

Currently there are close to 10 A1 messages that will be supported in Frankfurt, and individual test cases will correspond to the respective A1 messages

#6SDN-R/A1 Adapter and A1 MediatorA1 Mediator in RT RIC to invoke Notification message against A1 Adapter

COMPLETE

Would be tested using CURL, as the current A1 mediator does not implement notifications 

1. DMAAP Message 

DMAAP Message Request (sent from ONAP or MS components):

Topic: A1-P 

{ 

    "body": { 

        "input": { 

            "CommonHeader": { 

                "TimeStamp": "2018-11-30T09:13:37.368Z", 

                "APIver": "1.0", 

                "RequestID": "9d2d790e-a5f0-11e8-98d0-529269fb1459", 

   "SubRequestID": "1", 

                "RequestTrack": {}, 

                "Flags": {} 

            }, 

            "Action": "getNearRT-RICs", 

            "Payload": {"input": {"dummy": "dummy"}} 

        }, 

        "version": "1.0", 

        "rpc-name": "getNearRT-RICs", 

        "correlation-id": "9d2d790e-a5f0-11e8-98d0-529269fb1459-1", 

        "type": "request" 

    } 

} 


DMAAP Message Response (sent from A1 Mediator with status response)


Topic: A1-P-RSP 

{ 

    "body": { 

        "output": { 

            "CommonHeader": { 

                "TimeStamp": "2018-09-10T07:10:05.614Z", 

                "APIver": "1.0", 

                "RequestID": "9d2d790e-a5f0-11e8-98d0-529269fb1459", 

                "SubRequestID": "1", 

                "RequestTrack": [], 

                "Flags": [] 

            }, 

            "Status": { 

                "Code": 200, 

                "Value": "SUCCESS" 

            }, 

            "Payload": "[ 10.12.7.38:10001 ]" 

        } 

    }, 

    "version": "1.0", 

    "rpc-name": "getNearRT-RICs", 

    "correlation-id": "9d2d790e-a5f0-11e8-98d0-529269fb1459-1", 

    "type": "response" 

} 

DMAAP message payload is aligned with YANG RPC Input parameters and is exactly the same as, when YANG model RPC input is rendered as a JSON object. See the above example, where DMAAP message is related to RPC "getNearRT-RICs". 

IMPORTANT: Please note that “input” key needs to be included in the payload. Escape characters ARE NOT to be INCLUDED.

2. DMAAP Message Request/Response Payloads and Test Verification Using CURL against A1 Mediator


RPCDMAAP Message Request PayloadDMAAP Message Response PayloadVerification Using CURL against A1 MediatorYANG/RPC Definition
getNearRT-RICs{
"input" :
{
"dummy" : "Hello"
}
}
\"Payload\":\"10.12.7.38:10001\"
+---x getNearRT-RICs
| +---w input
| | +---w dummy? string
| +--ro output
| +--ro response-code? string
| +--ro response-message? string
| +--ro near-rt-ric-id-list* string
getHealthCheck{
"input" :
{
"near-rt-ric-id" : "10.12.7.38:10001"
}
}
\"Payload\":\"None\"curl -X GET \
http://10.12.7.38:10001/a1-p/healthcheck \
-H 'Accept: application/json' \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: application/json' \
+---x getHealthCheck
| +---w input
| | +---w near-rt-ric-id? string
| +--ro output
| +--ro response-code? string
| +--ro response-message? string
| +--ro health-status? Boolean
getPolicyTypes{
"input" :
{
"near-rt-ric-id" : "10.12.7.38:10001"
}
}
\"Payload\":\"[20505, 20525 ]\\n\"Check using CURL if policy type has been created

curl -X GET \
http://10.12.7.38:10001/a1-p/policytypes \
-H 'Accept: application/json' \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: application/json' \
+---x getPolicyTypes
| +---w input
| | +---w near-rt-ric-id? string
| +--ro output
| +--ro response-code? string
| +--ro response-message? string
| +--ro policy-type-id-list* uint32
getPolicyType{
"input" :
{
"near-rt-ric-id" : "10.12.7.38:10001",
“policy-type-id": “20505"
}
}
"Payload":"{ \"create_schema\": { \"$schema\": \"http://json-schema.org/draft-07/schema#\", \"additionalProperties\": false, \"properties\": { \"blocking_rate\": { \"default\": 10, \"description\": \"% Connections to block\", \"maximum\": 100, \"minimum\": 1, \"type\": \"number\" }, \"enforce\": { \"default\": true, \"type\": \"boolean\" }, \"trigger_threshold\": { \"default\": 10, \"description\": \"Minimum number of events in window to trigger blocking\", \"minimum\": 1, \"type\": \"integer\" }, \"window_length\": { \"default\": 1, \"description\": \"Sliding window length (in minutes)\", \"maximum\": 30, \"minimum\": 1, \"type\": \"integer\" } }, \"type\": \"object\" }, \"description\": \"various parameters for controlpolicy2\", \"name\": \"controlPolicy2\", \"policy_type_id\": 20505}"curl -X GET \
http://10.12.7.38:10001/a1-p/policytypes/20500 \
-H 'Accept: application/json' \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: application/json' \
+---x getPolicyType
| +---w input
| | +---w near-rt-ric-id? string
| | +---w policy-type-id? uint32
| +--ro output
| +--ro response-code? string
| +--ro response-message? string
| +--ro description? string
| +--ro name? string
| +--ro policy-type? String
deletePolicyType{
"input" :
{
"near-rt-ric-id" : "10.12.7.38:10001",
“policy-type-id": “20001"
}
}
\"Payload\":\"Working On it\"Check using CURL if policy type has been deleted

curl -X GET \
http://10.12.7.38:10001/a1-p/policytypes \
-H 'Accept: application/json' \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: application/json' \
+---x deletePolicyType
| +---w input
| | +---w near-rt-ric-id? string
| | +---w policy-type-id? uint32
| +--ro output
| +--ro response-code? string
| +--ro response-message? String
createPolicyType{
"input": {
"near-rt-ric-id": "10.12.7.38:10001",
"policy-type-id": "20010",
"description": "various parameters for control policy-19999",
"name": "control policy-19999",
"properties": [{
"property-name": "enforce",
"policy-statements": [{
"policy-statement": "type",
"policy-statement-value": "boolean"
},
{
"policy-statement": "default",
"policy-statement-value": "true"
}
]
},
{
"property-name": "window_length",
"policy-statements": [{
"policy-statement": "type",
"policy-statement-value": "integer"
},
{
"policy-statement": "default",
"policy-statement-value": "1"
},
{
"policy-statement": "minimum",
"policy-statement-value": "1"
},
{
"policy-statement": "maximum",
"policy-statement-value": "60"
},
{
"policy-statement": "description",
"policy-statement-value": "Sliding window length in minutes"
}
]
}
]
}
}
\"Payload\":\"None\Check using CURL if policy type has been created

curl -X GET \
http://10.12.7.38:10001/a1-p/policytypes \
-H 'Accept: application/json' \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: application/json' \
+---x createPolicyType
| +---w input
| | +---w near-rt-ric-id? string
| | +---w policy-type-id? uint32
| | +---w description? string
| | +---w name? string
| | +---w policy-type? string
| | +---w properties* [property-name]
| | +---w property-name string
| | +---w policy-statements* [policy-statement]
| | +---w policy-statement string
| | +---w policy-statement-value? string
| +--ro output
| +--ro response-code? string
| +--ro response-message? string
| +--ro status? string
| +--ro code? String
getPolicyInstances{
"input" :
{
"near-rt-ric-id" : "10.12.7.38:10001",
“policy-type-id": “20505"
}
}
\"Payload\":\"[97a955e0-1965-11ea-836a-2e728ce8bb899, 97a955e0-1965-55ea-836a-2e728ce8bb899 ]\\n\"Check using CURL against A1 Mediator

curl -X GET \
http://10.12.7.38:10001/a1-p/policytypes/20505/policies \
-H 'Accept: application/json' \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: application/json'
+---x getPolicyInstances
| +---w input
| | +---w near-rt-ric-id? string
| | +---w policy-type-id? uint32
| +--ro output
| +--ro response-code? string
| +--ro response-message? string
| +--ro policy-instance-id-list* string
getPolicyInstance{
"input": {
"near-rt-ric-id": "10.12.7.38:10001",
"policy-type-id": "20505",
"policy-instance-id": "97a955e0-1999-55ea-836a-2e728ce8bb899"
}
}
\"Payload\":\"{ \\\"blocking_rate\\\": 20, \\\"enforce\\\": true, \\\"trigger_threshold\\\": 10, \\\"window_length\\\": 10}\"curl -X GET \
http://10.12.7.38:10001/a1-p/policytypes/20505/policies/97a955e0-1999-55ea-836a-2e728ce8bb899 \
-H 'Accept: application/json' \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: application/json' \
+---x getPolicyInstance
| +---w input
| | +---w near-rt-ric-id? string
| | +---w policy-type-id? uint32
| | +---w policy-instance-id? string
| +--ro output
| +--ro response-code? string
| +--ro response-message? string
| +--ro policy-instance? String
deletePolicyInstance{
"input": {
"near-rt-ric-id": "10.12.7.38:10001",
"policy-type-id": "20505",
"policy-instance-id": "97a955e0-1965-55ea-836a-2e728ce8bb899"
}
}
\"Payload\":\"Working On it\"curl -X DELETE \
http://10.12.7.38:10001/a1-p/policytypes/20505/policies/97a955e0-1965-11ea-836a-2e728ce8bb899 \
-H 'Accept: application/json' \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: application/json' \
+---x deletePolicyInstance
| +---w input
| | +---w near-rt-ric-id? string
| | +---w policy-type-id? uint32
| | +---w policy-instance-id? string
| +--ro output
| +--ro response-code? string
| +--ro response-message? String
createPolicyInstance{
"input": {
"near-rt-ric-id": "10.12.7.38:10001",
"policy-type-id": "20505",
"policy-instance-id": "97a955e0-1965-55ea-999a-2e728ce8bb899",
"properties": [{
"property-name": "enforce",
"property-value": "true"
},
{
"property-name": "enforce",
"property-value": "true"
},
{
"property-name": "enforce",
"property-value": "true"
},
{
"property-name": "enforce",
"property-value": "true"
}
]
}
}
\"Payload\":\"Working On it\"Confirm using CURL that policy instance was created

curl -X GET \
http://10.12.7.38:10001/a1-p/policytypes/20505/policies \
-H 'Accept: application/json' \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: application/json''
+---x createPolicyInstance
| +---w input
| | +---w near-rt-ric-id? string
| | +---w policy-type-id? uint32
| | +---w policy-instance-id? string
| | +---w policy-instance? string
| | +---w properties* [property-name]
| | +---w property-name string
| | +---w property-value? string
| +--ro output
| +--ro response-code? string
| +--ro response-message? String
getStatus{
"input": {
"near-rt-ric-id": "10.12.7.38:10001",
"policy-type-id": "20505",
"policy-instance-id": "97a955e0-1965-55ea-836a-2e728ce8bb899"
}
}
\"Payload\":\"Working On it\"curl -X GET \
http://10.12.7.38:10001/a1-p/policytypes/20505/policies/97a955e0-1999-55ea-836a-2e728ce8bb899 \
-H 'Accept: application/json' \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: application/json' \
+---x getStatus
| +---w input
| | +---w near-rt-ric-id? string
| | +---w policy-type-id? uint32
| | +---w policy-instance-id? string
| +--ro output
| +--ro response-code? string
| +--ro response-message? string
| +--ro status? String
notifyPolicyEnforcementUpdate{
"input" :
{
"near-rt-ric-id" : "10.12.7.38:10001",
“policy-type-id": “20001",
“policy-instance-id": “"
}
}
\"Payload\":\"Policy Enforcement Update - Policies Applied\"
+---x notifyPolicyEnforcementUpdate
+---w input
| +---w near-rt-ric-id? string
| +---w policy-type-id? uint32
| +---w policy-instance-id? string
| +---w policy_enforcement_status? string
| +---w policy_enforcement_reason? string
+--ro output
+--ro response-code? string
+--ro response-message? String
  • No labels

1 Comment

  1. Is there any preliminary steps after installing ONAP to get the A1-P topic to be published (beside configuring the ip address of the rt-ric in sdnc -->/opt/onap/ccsdk/data/properties/a1-adapter-api-dg.properties)? I tried a request with curl and go the following response:

    vagrant@k8s-head:~/a1-test$ curl -X POST 10.97.213.7:3904/events/A1-P -v -H "Content-Type: application/json" -d@./test.json
    Note: Unnecessary use of -X or --request, POST is already inferred.
    * Trying 10.97.213.7...
    * Connected to 10.97.213.7 (10.97.213.7) port 3904 (#0)
    > POST /events/A1-P HTTP/1.1
    > Host: 10.97.213.7:3904
    > User-Agent: curl/7.47.0
    > Accept: */*
    > Content-Type: application/json
    > Content-Length: 597
    >
    * upload completely sent off: 597 out of 597 bytes
    < HTTP/1.1 400 Bad Request
    < Date: Fri, 11 Dec 2020 01:46:17 GMT
    < Content-Type: application/json;charset=utf-8
    < Accept: */*
    < breadcrumbId: ID-dev-message-router-0-message-router-onap-svc-cluster-local-1607644981566-0-31406
    < User-Agent: curl/7.47.0
    < X-CSI-Internal-WriteableRequest: true
    < Content-Length: 202
    < Server: Jetty(9.4.z-SNAPSHOT)
    <
    * Connection #0 to host 10.97.213.7 left intact
    {"mrstatus":5007,"helpURL":"http://onap.readthedocs.io","message":"Error while publishing data to topic.:A1-P.Successfully published number of messages :0.Expected '{' to start an object.","status":400}vagrant@k8s-head:~/a1-test$