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":
},
"500": {
"description": "Failed to retrieve the tests",
"schema":
}
}
}
},
"/onapapi/vnfsdk-marketplace/v1/vtp/tests/
/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": [
],
"responses": {
"404": {
"description": "Test case not found",
"schema":
},
"500": {
"description": "VTP internal failure",
"schema":
}
}
}
}
Dublin (DRAFT) - TBD.
Tests
GET on /vtp/v1/tests
GET on /vtp/v1/tests/test-id
Executions & results
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
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
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