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.
...
# | Component(s) | Test Case | Status | Remarks |
---|---|---|---|---|
#1 | SDN-R/A1 Adapter and A1 Mediator | A1 Adapter in Non-RT RIC establishes connection with A1 Mediator in RT RIC | NOT STARTED | |
#2 | SDN-R/A1 Adapter and ONAP components | Upon 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. | NOT STARTED | 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 | NOT STARTED | 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 | NOT STARTED | 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 | NOT STARTED | 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 |
#6 | SDN-R/A1 Adapter and A1 Mediator | A1 Mediator in RT RIC to invoke Notification message against A1 Adapter | NOT STARTED | Would be tested using CURL, as the current A1 mediator does not implement notifications |
...
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
RPC | DMAAP Message Request Payload | DMAAP Message Response Payload | Verification Using CURL against A1 Mediator | YANG/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": “20001“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": “20001“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"policy-type-id”: “20001”id": "20505", “policy"policy-instance-id”: “” } }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"policy-type-id": “20001"20505", “policy"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"policy-type-id": “20001"20505", “policy"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 |