CPS-188 CSIT Testing for CPS
Table Of Contents
Addresses
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 initializedon 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
Creating a CSIT Test (Legacy, includes video presentation)