Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Overview of ONAP Testing Requirements

TODO

Beijing Release Testing

Anchor
OOF Beijing Release Functional Test Cases
OOF Beijing Release Functional Test Cases
OOF Beijing Release CSIT Functional Test Cases

Acknowlegment: adapted from from Policy Team's CSIT Functional Test Cases created by by Pamela Dragosh

Resources

  1. https://wiki.onap.org/display/DW/Creating+a+CSIT+Test 

Id

Description

Pre-conditions

Test Steps

Expected Results

A: Tests Related to Health Checks

A.1: OOF Component Health Checks via GET methods

Notes: (a) check whether https can be used, and (b) check whether mutual TLS is required when using OOM/K8S

A.1a

Perform healthcheck for the OOF components using Healthcheck API

  •   OSDF (OF Manager) 
  •   HAS (TODO: expand individual containers of HAS)

OSDF and HAS application components (<list components>) should be up and running

Server and authentication details should   be configured at $OOF_HOME/config/feature-healthcheck.properties

API – healthcheck

Method - GET

Endpoint: http://<host>:<port>/healthcheck OR https://<host>:<port>/healthcheck

All components should return health status as “true” (HTTP code 200, content as string "true")

A.2: (Robot Driven?) Health Checks for Dependencies (Real Components; test cases also useful for integration testing)

Testing whether dependencies (external components such as Policy, A&AI, Multi Cloud, etc., and all OOF containers) are responding to health checks.

A.2a

Perform healthcheck for the following external components and OOF components using Healthcheck API

  • OSDF (OF Manager) 
  • HAS (TODO: expand individual containers of HAS)
  • Policy
  • Multi Cloud
  • A&AI (clarify)
  • DMaaP (clarify)
  • MUSIC

Service configuration file(s) should be available and loaded.

Services should be up and running.

API – healthcheck

Method - GET

Endpoint: http://<host>:<port>/healthcheck OR https://<host>:<port>/healthcheck

All components should return health status as “true” (HTTP code 200, content as string "true")

Note 1: Verify whether the external components also have standardized on "true" as the value

Note 2: Verify if this step is required or optional (it will help in quickly debugging but will add extra logic in our testing)

B: Tests Related to Data from Emulators (valid and invalid data sets)

B.1: Checking Dependencies (Mostly external components) via Emulators

Testing whether dependencies (mostly external components such as Policy, A&AI, Multi Cloud, etc., and in some cases other OOF containers) are available and return expected data. The external components will be mock emulators, while internal components may be mock or real.

2

Retrieve data from mock emulators for the following components or links via emulators:

  • OSDF → HAS (POST template)
  • OSDF → HAS (GET status/solution)
  • OSDF → Policy
  • HAS → Multi Cloud
  • HAS → A&AI (clarify)
  • HAS → DMaaP (clarify)
  • HAS → MUSIC
  • Interactions among HAS internal components (when using separate Docker containers)

Emulator configuration file should be available and loaded.

Emulator services should be up and running.

For some internal component testing, emulators may be replaced by real systems when convenient

API – specific to each component

Method - POST in most cases; GET in some cases

Endpoint: http://<host>:<port>/<specific-API>

Notes:

  1. Split these into individual cells and expand

Should receive expected data

TODO: Expand individual cases as separate cells within this section

Health Checks for Dependencies (Real Components; test cases also useful for integration testing)

Testing whether dependencies (external components such as Policy, A&AI, Multi Cloud, etc., and all OOF containers) are responding to health checks.

3

Retrieve data from mock emulators for the following components or links via emulators:

  • OSDF → HAS (POST template)
  • OSDF → HAS (GET status/solution)
  • OSDF → Policy
  • HAS → Multi Cloud
  • HAS → A&AI (clarify)
  • HAS → MUSIC
  • Interactions among HAS internal components (when using separate Docker containers)

 Policy components up and   running

API – CreateConfig

Method – PUT

Endpoint: 

https://<host>:8081/Pdp/createPolicy

Config Policy should be created in Policy Engine (PAP)

4

Push Config policy to the PDP Engines for the following use   cases

  •   VoLTE
  •   vFW
  •   vDNS
  •   vCPE

 Policy components up and running

API - pushPolicy  

Method - PUT

Endpoint:

https:// <host>:8081/Pdp/pushPolicy

Config Policy should be pushed to the PDP group

5

Create Operational policy for the following use cases  

  •   VoLTE
  •   vFW
  •   vDNS
  •   vCPE

 Policy components up and running

API - createPolicy  

Method – PUT

Endpoint:

https://<host>:8081/Pdp/createPolicy

Operational Policy should be created in Policy Engine (PAP)

6

Push operational Policy to the PDP Engines for each use case

  •   VoLTE
  •   vFW
  •   vDNS
  •   vCPE

 Policy components up and running

API - pushPolicy  

Method - PUT

Endpoint:

https:// <host>:8081/Pdp/pushPolicy

Operational Policy should be pushed to the PDP group

7

Retrieve the configs for the following use cases

  •   VoLTE
  •   vFW
  •   vDNS
  •   vCPE

Policy components up and running

API – getConfig

Method – POST

Endpoint:

https://<host>:8081/Pdp/getConfig

Both Config and Operational Policies configured for each use   case should be retrieved successfully

vFirewall Use Case

...

tca_policy: "{

  "domain": "measurementsForVfScaling",

  "metricsPerEventName": [

    {

      "eventName": "vFirewallBroadcastPackets",

      "controlLoopSchemaType": "VNF",

      "policyScope": "DCAE",

      "policyName": "DCAE.Config_tca-hi-lo",

      "policyVersion": "v0.0.1",

 

      "thresholds": [

        {

          "closedLoopControlName": "ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a",

          "version": "1.0.2",

          "fieldPath": "$.event.measurementsForVfScalingFields.vNicUsageArray[*].receivedTotalPacketsDelta",

          "thresholdValue": 300,

          "direction": "LESS_OR_EQUAL",

          "severity": "MAJOR",

          "closedLoopEventStatus": "ONSET"

        },

        {

          "closedLoopControlName": "ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a",

          "version": "1.0.2",

          "fieldPath": "$.event.measurementsForVfScalingFields.vNicUsageArray[*].receivedTotalPacketsDelta",

          "thresholdValue": 700,

          "direction": "GREATER_OR_EQUAL",

          "severity": "CRITICAL",

          "closedLoopEventStatus": "ONSET"

        }

      ]

    }

  ]

 

}"

controlLoop:

  version: 2.0.0

  controlLoopName: ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a

  trigger_policy: unique-policy-id-1-modifyConfig

  timeout: 1200

  abatement: false

policies:

  - id: unique-policy-id-1-modifyConfig

    name: modify packet gen config

    description:

    actor: APPC

    recipe: ModifyConfig

    target:

      # TBD - Cannot be known until instantiation is done

      resourceID: Eace933104d443b496b8.nodes.heat.vpg

...

    retry: 0

    timeout: 300

    success: final_success

    failure: final_failure

    failure_timeout: final_failure_timeout

    failure_retries: final_failure_retries

    failure_exception: final_failure_exception

    failure_guard: final_failure_guard

{

...

}

https://{aai}/aai/v11/network/generic-vnfs/generic-vnf?vnf-name=zdfw1fwl01fwl02

*TODO

{

  "CommonHeader": {    "TimeStamp": 1500997725298,    "APIver": "1.01",    "RequestID": "664be3d2-6c12-4f4b-a3e7-c349acced200",    "RequestTrack": [],    "Flags": []  },  "Action": "ModifyConfig",  "Payload": {    "generic-vnf.vnf-id": "fw0001vm001fw001",    "pg-streams": {      "pg-stream": [{          "id": "fw_udp1",          "is-enabled": "true"        },        {          "id": "fw_udp2",          "is-enabled": "true"        },        {         "id": "fw_udp3",          "is-enabled": "true"        },        {          "id": "fw_udp4",          "is-enabled": "true"        },        {          "id": "fw_udp5",          "is-enabled": "true"        }]    }  }

}

ACCEPT response

{

    "Status": {

        "Value": "ACCEPTED",

        "Code": "100"

    },

    "Payload": {

        "pg-streams": "{\\\"pg-streams\\\": {\\\"pg-stream\\\":[{\\\"id\\\":\\\"fw_udp1\\\", \\\"is-enabled\\\":\\\"true\\\"},{\\\"id\\\":\\\"fw_udp2\\\", \\\"is-enabled\\\":\\\"true\\\"},{\\\"id\\\":\\\"fw_udp3\\\", \\\"is-enabled\\\":\\\"true\\\"},{\\\"id\\\":\\\"fw_udp4\\\", \\\"is-enabled\\\":\\\"true\\\"},{\\\"id\\\":\\\"fw_udp5\\\", \\\"is-enabled\\\":\\\"true\\\"}]}}",

        "generic-vnf.vnf-id": "fw0001vm001fw001"

    },

    "CommonHeader": {

        "TimeStamp": "1493841850199",

        "APIver": "1.01",

        "RequestID": "664be3d2-6c12-4f4b-a3e7-c349acced200",

        "SubrequestID": null,

        "OriginatorID": null

    }

}

SUCCESS response

{

    "Status": {

        "Value": "SUCCESS",

        "Code": "400"

    },

    "Payload": {

        "pg-streams": "{\\\"pg-streams\\\": {\\\"pg-stream\\\":[{\\\"id\\\":\\\"fw_udp1\\\", \\\"is-enabled\\\":\\\"true\\\"},{\\\"id\\\":\\\"fw_udp2\\\", \\\"is-enabled\\\":\\\"true\\\"},{\\\"id\\\":\\\"fw_udp3\\\", \\\"is-enabled\\\":\\\"true\\\"},{\\\"id\\\":\\\"fw_udp4\\\", \\\"is-enabled\\\":\\\"true\\\"},{\\\"id\\\":\\\"fw_udp5\\\", \\\"is-enabled\\\":\\\"true\\\"}]}}",

        "generic-vnf.vnf-id": "fw0001vm001fw001"

    },

    "CommonHeader": {

        "TimeStamp": "1493841850199",

        "APIver": "1.01",

        "RequestID": "664be3d2-6c12-4f4b-a3e7-c349acced200",

        "SubrequestID": null,

        "OriginatorID": null

    }

}


C: Tests Related to Data from Emulators (valid and invalid data sets)

B.2: