Deploy VNF test cases once and trigger it safely from anywhere
Objectives
- LFN/ONAP wants test platform where VNF packages could be certified using ONAP requirements to drive industry adoption
- Provide an platform where vendor/operator can develop, deploy, run test cases and query the results
- Test cases, test results and VNF should be manageable .i,e with authorization, so only user with given roles is allowed to perform operation like
VNF package upload/download, run compliance verification tests, allow only specific VIM for specific users, etc. - Test results should be persisted and should be available for human analysis later via LFN infrastructure.
- Provides test flow where author make flow across different test cases for a given program like compliance verification and VNFREQS/SOL0004.
- Provide integration with OPNFV dovetail to run test cases across dovetail and VNFSDK.
- Deployable as docker container.
Architecture
More Details
VNFSDK - VNF Test platform (VTP)
REST API
Casablanca
"/onapapi/vnfsdk-marketplace/v1/vtp/tests": { "get": { "tags": [ "VNF Test Platform" ], "summary": "VTP Test cases", "description": "Returns the list of test cases", "operationId": "listTests", "produces": [ "application/json" ], "parameters": [], "responses": { "200": { "description": "successful operation", "schema": { "type": "string" } }, "500": { "description": "Failed to retrieve the tests", "schema": { "type": "string" } } } } }, "/onapapi/vnfsdk-marketplace/v1/vtp/tests/{testName}/run": { "post": { "tags": [ "VNF Test Platform" ], "summary": "Run VTP testcase", "description": "Runs the given test case and returns the result", "operationId": "runTest", "consumes": [ "application/json" ], "produces": [ "application/json" ], "parameters": [ { "name": "testName", "in": "path", "description": "test Name", "required": true, "type": "string" } ], "responses": { "404": { "description": "Test case not found", "schema": { "type": "string" } }, "500": { "description": "VTP internal failure", "schema": { "type": "string" } } } } }
Dublin (DRAFT)
Tests
[
{
testsuite: "validation",
testcase: "csar-validate"
}
]
GET on /v1/vtp/tests/csar-validate
{
outputs: [
{
name: "error",
description: "Validation error details",
scope: "short",
type: "string"
}
],
name: "csar-validate",
description: "Validate CSAR package formats",
inputs: [
{
name: "csar",
description: "CSAR file path",
long_option: "csar",
short_option: "b",
type: "binary",
is_optional: false
}
],
testsuite: "validation"
}
Executions & results
POST /v1/vtp/tests/csar-validate/run
Body: {"csar":"/tmp/VoLTE.csar"}
{"results":[{"error":"SUCCESS"}]}
This will be enabled with async executon in furture with following API (TBD)
POST on /vtp/v1/tests/test-id for given VNF id, profile id returns execution id
GET on /vtp/v1/tests/test-id/executions?vnf-id=xxx&&test-id=yyy
GET on /vtp/v1/tests/test-id/executions/execution-id
VNFs (TBD)
GET on /vtp/v1/vnfs
GET on /vtp/v1/vnfs/vnf-id
GET on /vtp/v1/vnfs/vnf-id/content - get vnf package
POST on /vtp/v1/vnfs/vnf-id/content - upload vnf
PUT on /vtp/v1/vnfs/vnf-id/content - update vnf content
DELETE on /vtp/v1/vnf-id
Profiles/configurations (TBD)
GET on /vtp/v1/profiles?vnf-id=xxx
GET on /vtp/v1/profiles/profile-id
POST on /vtp/v1/profiles
PUT on /vtp/v1/profiles/profile-id
DELETE on /vtp/v1/profiles/profile-id