You are viewing an old version of this page. View the current version.
Compare with Current
View Page History
« Previous
Version 30
Next »
Test Planning for OOF Optimization Service Design Framework (OOF-OSDF)
The test structure here has been adapted from Policy Team's CSIT Functional Test Cases created by Pamela Dragosh
Abbreviations Used
The following abbreviations are used in the functional test case description below since there may be substantial repetition along with clarification notes associated with some terms:
Click here to expand...
Abbreviations:
CHECK-REQ-OR-OPTIONAL
Check if the test is required or optional. For instance, health checks for dependencies is likely optional because this will be captured in the tests for request/response
EMULATORS-OR-SERVICES-ARE-UP
Emulator or service should be up and running
Emulator or service configuration file should be available and loaded
Notes: For OOF internal components (e.g. OOF-OSDF connecting to OOF-HAS API), real services may be used when convenient
- HTTP-200-TRUE
Component (or all components) should return health status as “true” (HTTP response code of 200, response content containing the string "true")
- Notes: (a) Verify whether the external components also have standardized on "true" as the value
- SIMPLE-GET-HEALTH-CHECK-API
- API: healthcheck
- HTTP Request Method: GET
- HTTP Endpoint: http://<host>:<port>/healthcheck
- Notes: (a) check whether https can/should be used, and whether mutual TLS is required when using OOM/K8S, and
(b) verify if the health check is required for dependencies (it will help in quickly debugging but will add extra logic in our testing)
- SIMPLE-GET-POST-TO-EMULATORS-OR-SERVICES
API: specific to each component
Endpoint: http://<host>:<port>/<specific-API>
Method - POST in most cases; GET in some cases
- Notes: (a) check whether https can/should be used, and whether mutual TLS is required when using OOM/K8S
OOF-OSDF Beijing Release CSIT Functional Test Cases
Id | Description | Pre-conditions | Test Steps | Expected Results |
A: Health Checks for OOF-OSDF Components and Dependencies (Policy and OOF-HAS API) |
A.1 | Perform health check for the OOF-OSDF components using Health Check API | [OSDF Manager] EMULATORS-OR-SERVICES-ARE-UP Server and authentication details should be configured at $OOF_HOME/config/feature-healthcheck.properties | SIMPLE-GET-HEALTH-CHECK-API | HTTP-200-TRUE |
A.2 | CHECK-REQ-OR-OPTIONAL Perform health check for the following external components and OOF components using Health Check API: - Policy (external component)
- OOF-HAS API (OOF component)
| [Policy Emulator] [OOF-HAS API – container or emulator] EMULATORS-OR-SERVICES-ARE-UP
| SIMPLE-GET-HEALTH-CHECK-API | HTTP-200-TRUE
|
B: Fetch Data from Emulators (valid and invalid data, via GET and POST) |
B.1 | Retrieve response corresponding to "valid request" from HAS-API emulator | [OOF-HAS API – container or emulator] EMULATORS-OR-SERVICES-ARE-UP | SIMPLE-GET-POST-TO-EMULATORS-OR-SERVICES TODO: Payloads and Endpoint | Should receive response for valid request TODO: Payloads |
B.2 | Retrieve response corresponding to "valid policy query" from Policy emulator - OSDF → Policy (POST query data)
| [Policy] EMULATORS-OR-SERVICES-ARE-UP | SIMPLE-GET-POST-TO-EMULATORS-OR-SERVICES TODO: Payloads and Endpoint | Should receive response for valid policy query TODO: Payloads |
B.3 | CHECK-REQ-OR-OPTIONAL OSDF → Policy (bad result) OSDF → HAS (GET; bad status) OSDF → HAS (GET; solution found) | [Policy Emulator] [OOF-HAS API – container or emulator] EMULATORS-OR-SERVICES-ARE-UP | SIMPLE-GET-POST-TO-EMULATORS-OR-SERVICES TODO: Payloads and Endpoint | Should receive corresponding responses TODO: Payloads |
C: Run Complete Requests for Different Applications |
C.1 | SO → OSDF → HAS (well formatted request) | [Policy Emulator] [OOF-HAS API – container or emulator] EMULATORS-OR-SERVICES-ARE-UP | SIMPLE-GET-POST-TO-EMULATORS-OR-SERVICES TODO: Payloads, Endpoint, and Call-Back URL | Should receive a valid Conductor reponse TODO: Payloads |
C.2 | CHECK-REQ-OR-OPTIONAL SO → OSDF → HAS (mal-formatted request or a data error so that the request goes through OSDF but fails at Conductor) | [Policy Emulator] [OOF-HAS API – container or emulator] EMULATORS-OR-SERVICES-ARE-UP | SIMPLE-GET-POST-TO-EMULATORS-OR-SERVICES TODO: Payloads, Endpoint, and Call-Back URL | Should receive a RequestError or an error from Conductor TODO: Payloads |
Example Request/Response Payloads for OOF-OSDF Functional Test Cases
{
"requestInfo": {
"transactionId": "xxx-xxx-xxxx",
"requestId": "yyy-yyy-yyyy",
"callbackUrl": "https://so:5000/callbackUrl",
"sourceId": "SO",
"requestType": "create",
"numSolutions": 1,
"optimizers": ["placement"],
"timeout": 600
},
"requestParameters": { "customerLatitude": 32.89748, "customerLongitude": -97.040443, "customerName": "xyz" },
"placementDemands": [
{
"resourceModuleName": "vGMuxInfra",
"serviceResourceId": "vGMuxInfra-xx",
"tenantId": "vGMuxInfra-tenant",
"resourceModelInfo": {
"modelInvariantId": "vGMuxInfra-modelInvariantId",
"modelVersionId": "vGMuxInfra-versionId",
"modelName": "vGMuxInfra-model",
"modelType": "resource",
"modelVersion": "1.0",
"modelCustomizationName": "vGMuxInfra-customeModelName"
},
"existingCandidates": { "identifierType": "service_instance_id", "identifiers": ["87257b49-9602-4ca1-9817-094e52bc873b"] },
"excludedCandidates": { "identifierType": "service_instance_id", "identifiers": ["1ac71fb8-ad43-4e16-9459-c3f372b8236d"] },
"requiredCandidates": { "identifierType": "service_instance_id", "identifiers": ["7e6c3e57-62cd-44f6-aa88-d0896998f7ec"] }
},
{
"resourceModuleName": "vG",
"serviceResourceId": "71d563e8-e714-4393-8f99-cc480144a05e",
"tenantId": "vG-tenant",
"resourceModelInfo": {
"modelInvariantId": "vG-modelInvariantId",
"modelVersionId": "vG-versionId",
"modelName": "vG-model",
"modelType": "resource",
"modelVersion": "1.0",
"modelCustomizationName": "vG-customeModelName"
},
"existingCandidates": { "identifierType": "service_instance_id", "identifiers": ["21d5f3e8-e714-4383-8f99-cc480144505a"] },
"excludedCandidates": { "identifierType": "service_instance_id", "identifiers": ["1ac71fb8-ad43-4e16-9459-c3f372b8236d"] },
"requiredCandidates": { "identifierType": "cloud_region_id", "identifiers": ["TXAUS219"] }
}
],
"serviceInfo": {
"serviceInstanceId": "d61b2543-5914-4b8f-8e81-81e38575b8ec",
"serviceModelInfo": {
"modelInvariantId": "vCPE-invariantId",
"modelVersionId": "vCPE-versionId",
"modelName": "vCPE-model",
"modelType": "service",
"modelVersion": "1.0",
"modelCustomizationName": "vCPE-customeModelName"
}
},
"licenseDemands": [
{
"resourceModuleName": "vGMuxInfra",
"serviceResourceId": "vGMuxInfra-xx",
"tenantId": "vGMuxInfra-tenant",
"resourceModelInfo": {
"modelInvariantId": "vGMuxInfra-modelInvariantId",
"modelVersionId": "vGMuxInfra-versionId",
"modelName": "vGMuxInfra-model",
"modelType": "resource",
"modelVersion": "1.0",
"modelCustomizationName": "vGMuxInfra-customeModelName"
},
"existingLicenses": {
"entitlementPoolUUID": ["87257b49-9602-4ca1-9817-094e52bc873b", "43257b49-9602-4fe5-9337-094e52bc9435"],
"licenseKeyGroupUUID": ["87257b49-9602-4ca1-9817-094e52bc873b", "43257b49-9602-4fe5-9337-094e52bc9435"]
}
}
]
}
{
"transactionId": "xxx-xxx-xxxx",
"requestId": "yyy-yyy-yyyy",
"requestState": "completed",
"statusMessage": "Success!",
"solutions": {
"placementSolutions": [
{
"resourceModuleName": "vGMuxInfra",
"serviceResourceId": "some_resource_id",
"identifierType": "service_instance_id",
"identifier": "1ac71fb8-ad43-4e16-9459-c3f372b8236d",
"assignmentInfo": [
{ "key": "cloudOwner", "value": "amazon" },
{ "key": "vnfHostName", "value": "ahr344gh" },
{ "key": "isRehome", "value": "False" },
{ "key": "cloud_region_id", "value": "1ac71fb8-ad43-4e16-9459-c3f372b8236d" }
]
},
{
"resourceModuleName": "vG",
"serviceResourceId": "some_resource_id",
"identifierType": "cloud_region_id",
"identifier": "2ac71fb8-ad43-4e16-9459-c3f372b8236d",
"assignmentInfo": [
{ "key": "cloudOwner", "value": "amazon" },
{ "key": "cloud_region_id", "value": "1ac71fb8-ad43-4e16-9459-c3f372b8236d" }
]
}
],
"licenseSolutions": [
{
"resourceModuleName": "vGMuxInfra",
"serviceResourceId": "some_resource_id",
"entitlementPoolUUID": ["1ac71fb8-ad43-4e16-9459-c3f372b8236d", "834fc71fb8-ad43-4fh7-9459-c3f372b8236f"],
"licenseKeyGroupUUID": ["1ac71fb8-ad43-4e16-9459-c3f372b8236d", "834fc71fb8-ad43-4fh7-9459-c3f372b8236f"],
"entitlementPoolInvariantUUID": ["1ac71fb8-ad43-4e16-9459-c3f372b8236d", "834fc71fb8-ad43-4fh7-9459-c3f372b8236f"],
"licenseKeyGroupInvariantUUID": ["1ac71fb8-ad43-4e16-9459-c3f372b8236d", "834fc71fb8-ad43-4fh7-9459-c3f372b8236f"]
}
]
}
}
Test Planning for OOF Homing and Allocation Service (OOF-HAS)
Appendix A: Overview of ONAP Testing Requirements
TODO
Appendix B: Overview of OOF Scope
TODO
Overview of OOF-OSDF Scope
General Description
The OOF-OSDF is meant to provide an environment for creating policy-driven optimization applications in a declarative manner easily. It also provides an execution environment for these models to be interpreted and run. Additionally, it supports external, custom optimizers such as the HAS application by providing various levels of functionality to the optimization applications. For example, the OSDF may fetch and translate policies for HAS, or it may fetch policies and data for another application.
The OOF-OSDF is provides the following functionality to support OOF-HAS:
- Provide an end point for SO to make homing requests
- Ensure authentication and validate the incoming request payload based on a model (Python Schematics model based on the SO-OOF API)
- Fetch policies relevant to the SO's request (e.g. based on specific use case such as vCPE) and ensure that the policies are valid (well formed and contain required attributes)
- Send response to SO that the request is accepted and is in processing (or send an error response)
- Create a "template" (request payload) for OOF-HAS and submit the request to OOF-HAS
- Periodically poll OOF-HAS for request processing status and optimization solution (with a configurable timeout) and validate the response based on a model (Python Schematics model)
- Post the optimization solution to the call-back URL specified in the request from SO in the format defined by SO-OOF API (or send an error response)
Overview of OOF-HAS Scope
General Description
TODO
Technical Description for OOF-HAS Functionality
TODO
Appendix C: Resources and Links
- Notes on creating a CSIT test script: https://wiki.onap.org/display/DW/Creating+a+CSIT+Test
Policy Team's CSIT Functional Test Cases by Pamela Dragosh. The OOF-OSDF test cases are adapted from that page.
- Slides on Platform Maturity Requirements for Beijing Release: https://wiki.onap.org/download/attachments/16002054/Platform%20Maturity%20Level%20proposal%2013Dec2017v2.pdf?version=1&modificationDate=1513625784000&api=v2
- Current Individual Project Commitment for supporting Platform Maturity Requirements for Beijing Release:
https://wiki.onap.org/display/DW/Beijing+Release+Platform+Maturity
ONAP 4 level CI/CD architecture: Integration (5/11/2017)