Skip to end of metadata
Go to start of metadata

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

Compare with Current View Page History

« Previous Version 13 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":

Unknown macro: { "get"}

,
"/onapapi/vnfsdk-marketplace/v1/vtp/tests/

Unknown macro: {testName}

/run":

Unknown macro: { "post"}


Dublin

Provides required API for qureying and executing the test cases as part of VSP Compliance check use case in dublin.


swagger: '2.0'
info:
version: 1.0.0
title: ''
basePath: /onapapi/vnfsdk-marketplace/v1
tags:

  • name: VTP Scenario
  • name: VTP Execution
    paths:
    '/vtp/scenarios/
    Unknown macro: {scenario}

    /testsuites':
    get:
    tags:

    • VTP Scenario
      summary: ' List available test suties in given scenario'
      description: ''
      operationId: listTestSuties
      produces:
    • application/json
      parameters:
    • name: scenario
      in: path
      description: Test scenario name
      required: true
      type: string
      responses:
      '200':
      description: successful operation
      schema:
      type: array
      items:
      $ref: '#/definitions/VTPTestSuite'
      '500':
      description: Failed to perform the operation
      schema:
      $ref: '#/definitions/VTPError'
      '/vtp/scenarios/
    /testcases':
    get:
    tags:
  • VTP Scenario
    summary: ' List available test cases'
    description: ''
    operationId: listTestcases
    produces:
  • application/json
    parameters:
  • name: scenario
    in: path
    description: Test scenario name
    required: true
    type: string
  • name: testSuiteName
    in: query
    description: Test suite name
    required: false
    type: string
    responses:
    '200':
    description: successful operation
    schema:
    type: array
    items:
    $ref: '#/definitions/VTPTestCase'
    '500':
    description: Failed to perform the operation
    schema:
    $ref: '#/definitions/VTPError'
    '/vtp/scenarios/
    Unknown macro: {scenario}
    /testsuites/
    Unknown macro: {testSuiteName}
    /testcases/
    Unknown macro: {testCaseName}
    ':
    get:
    tags:
  • VTP Scenario
    summary: Retrieve test cases details like inputs outputs and test suite name
    description: ''
    operationId: getTestcase
    produces:
  • application/json
    parameters:
  • name: scenario
    in: path
    description: Test scenario name
    required: true
    type: string
  • name: testSuiteName
    in: path
    description: Test case name
    required: true
    type: string
  • name: testCaseName
    in: path
    description: Test case name
    required: true
    type: string
    responses:
    '200':
    description: successful operation
    schema:
    $ref: '#/definitions/VTPTestCase'
    '404':
    description: Test case does not exist
    schema:
    $ref: '#/definitions/VTPError'
    '500':
    description: Failed to perform the operation
    schema:
    $ref: '#/definitions/VTPError'
    '/vtp/executions/
    Unknown macro: {executionId}
    ':
    get:
    tags:
  • VTP Execution
    summary: ' Retrieve test execution complete details'
    description: ''
    operationId: getTestExecution
    produces:
  • application/json
    parameters:
  • name: executionId
    in: path
    description: Test execution Id
    required: true
    type: string
    responses:
    '200':
    description: successful operation
    schema:
    $ref: '#/definitions/VTPTestExecution'
    '500':
    description: Failed to perform the operation
    schema:
    $ref: '#/definitions/VTPError'
    /vtp/scenarios:
    get:
    tags:
  • VTP Scenario
    summary: ' List available test scenarios'
    description: ''
    operationId: listTestScenarios
    produces:
  • application/json
    parameters: []
    responses:
    '200':
    description: successful operation
    schema:
    type: array
    items:
    $ref: '#/definitions/VTPTestScenario'
    '500':
    description: Failed to perform the operation
    schema:
    $ref: '#/definitions/VTPError'
    /vtp/executions:
    get:
    tags:
  • VTP Execution
    summary: ' List test executions'
    description: ''
    operationId: listTestExecutions
    produces:
  • application/json
    parameters:
  • name: requestId
    in: query
    description: Test request Id
    required: false
    type: string
  • name: scenario
    in: query
    description: Test scenario name
    required: false
    type: string
  • name: testsuiteName
    in: query
    description: Test suite name
    required: false
    type: string
  • name: testcaseName
    in: query
    description: Test case name
    required: false
    type: string
  • name: profileName
    in: query
    description: Test profile name
    required: false
    type: string
  • name: startTime
    in: query
    description: Test execution start time
    required: false
    type: string
  • name: endTime
    in: query
    description: Test execution end time
    required: false
    type: string
    responses:
    '200':
    description: successful operation
    schema:
    type: array
    items:
    $ref: '#/definitions/VTPTestExecution'
    '500':
    description: Failed to perform the operation
    schema:
    $ref: '#/definitions/VTPError'
    post:
    tags:
  • VTP Execution
    summary: 'Execute the test case with given inputs in ''executions'' form-data as key-value pair of parameter''s name vs parameter''s value. If parameter is binary type thenmulti-part form-data ''file'' should be used to feed the binary file content and it can be more than once. To use the given file as input parameter, prefix the value with file://<filename>.'
    description: ''
    operationId: executeTestcases1
    consumes:
  • multipart/form-data
    produces:
  • application/json
    parameters:
  • name: requestId
    in: query
    description: Request Id
    required: false
    type: string
  • name: file
    in: formData
    description: Testcase File arguments
    required: false
    type: array
    items:
    $ref: '#/definitions/FormDataBodyPart'
    collectionFormat: multi
  • name: executions
    in: formData
    required: false
    type: string
    responses:
    '200':
    description: successful operation
    schema:
    type: array
    items:
    $ref: '#/definitions/VTPTestExecution'
    '500':
    description: Failed to perform the operation
    schema:
    $ref: '#/definitions/VTPError'
    definitions:

VTPTestSuite:
type: object
properties:
name:
type: string
VTPError:
type: object
properties:
code:
type: string
message:
type: string
httpStatus:
type: integer
format: int32
VTPTestCase:
type: object
properties:
scenario:
type: string
testCaseName:
type: string
testSuiteName:
type: string
descripton:
type: string
author:
type: string
inputs:
type: array
items:
$ref: '#/definitions/VTPTestCaseInput'
outputs:
type: array
items:
$ref: '#/definitions/VTPTestCaseOutput'
VTPTestCaseInput:
type: object
properties:
name:
type: string
description:
type: string
type:
type: string
defaultValue:
type: string
isOptional:
type: boolean
metadata:
type:object
VTPTestCaseOutput:
type: object
properties:
name:
type: string
description:
type: string
type:
type: string

VTPTestExecution:
type: object
properties:
scenario:
type: string
testCaseName:
type: string
testSuiteName:
type: string
executionId:
type: string
requestId:
type: string
profile:
type: string
parameters:
$ref: '#/definitions/JsonNode'
results:
$ref: '#/definitions/JsonNode'
status:
type: string
startTime:
type: string
endTime:
type: string
VTPTestScenario:
type: object
properties:
name:
type: string


DRAFTs


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