You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 12 Next »

Deploy VNF test cases once and trigger it safely from anywhere 

Objectives

  • as part of LFN CVP 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

GET on /v1/vtp/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"
} ],
"build_tag" : null,
"criteria" : "PASS"
}
}


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

  • No labels