Table Of Contents
Addresses - CPS-188Getting issue details... STATUS
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
- on startup stage - creates and starts the docker containers based on image built together with other containers required (using docker-compose),
- 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 using Robot Framework report as a success/failure condition is the only reason the Robot Framework is necessary.
It requires job templates update (new templates) in order to use alternative tools.
Resources
- Maximizing Benefits of CSIT in ONAP Development
- Creating a CSIT Test (Legacy, includes video presentation)
- Robot Framework