CPS-188 CSIT Testing for CPS

 

Table Of Contents

 

Addresses 

Error rendering macro 'jira' : Unable to locate Jira server for this macro. It may be due to Application Link configuration.

Initial implementation presentation can be found in CPS Developers Team Meeting Recordings

 

Overview

CSIT (Continuous System and Integration Testing) is expected to be a part of automated verification procedure invoked on review and merge stages.

The tests are executed as a Jenkins jobs which performs following:

  • Builds an image within a local docker (no publishing)

  • Executes the integration testing using shell script which 

    • on startup stage - creates and starts the docker containers based on image built together with other containers required (using docker-compose),
      ensures the application is initialized

    • on test execution stage - executes integration test suites using Robot framework

    • on tear down stage  - stops and removes containers

  • Collects the Robot framework reports

More details on flow: Project-specific CSIT structure

CSIT migration notes

Previously all the CSIT tests for all the ONAP projects were allocated in a same repository  integration/csit

Using shared repository did cause organisational difficulties (review approval etc) maintaining the tests, so it was decided to store CSIT tests on a per project basis.

More details: Moving CSIT to project repositories

 

Implementation approach

Test resources

All the CSIT related resources are allocated in csit/ folder in the project repository root.
The entry point for testing is run-projects-csit.sh shell script

The directory structure:

  • plans/ contains testing plans, each sub-folder represents a separate test plan, contains

    • startup.sh  - serves docker containers startup

    • testplan.txt  - lists test-suits

    • teardown.sh  - serves docker containers stopping and images removal

  • scripts/ contains shell scripts used on tests executions

  • tests/ contains test suits which are processed by folder name (relative to tests folder) taken from testplan.txt

Jenkins jobs

Jenkins jobs configuration is managed using ci-management repository.
Both legacy and new job templates are defined in jjb/integration/integration-templates-csit.yaml

The legacy CSIT job templates are

'{project-name}-{stream}-verify-csit-{functionality}' '{project-name}-{stream}-csit-{functionality}'

New CSIT job templates are

'{project-name}-review-verification-maven-{stream}' '{project-name}-merge-verification-maven-{stream}'

The example of on per project CSIT is ccsdk/distribution project
The associated Jenkins job is described in jjb/ccsdk/ccsdk-csit.yaml

NB. the Jenkins job template publishing Robot Framework reports is the only reason the use of Robot Framework is currently necessary.
It requires job templates update (new templates) in order to use alternative tools. 

Resources