created by jan medved integration & test strategy for lithium

7
Created by Jan Medved www.opendaylight .org Integration & Test Strategy for Lithium

Upload: gervase-small

Post on 01-Jan-2016

218 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Created by Jan Medved  Integration & Test Strategy for Lithium

Created by Jan Medvedwww.opendaylight.org

Integration & Test Strategy for Lithium

Page 2: Created by Jan Medved  Integration & Test Strategy for Lithium

Created by Jan Medvedwww.opendaylight.org

OpenDaylight is made of multiple projects -> we have to test them individually and together

Projects are quite heterogeneous: core, tools, plugins, apps, etc… -> they have different test needs

OpenDaylight has a common CI process for all projects -> tests should in general be part of the CI

We leave users freedom to select features -> we need an strategy to test a non-rigid distribution

Facts

2

Page 3: Created by Jan Medved  Integration & Test Strategy for Lithium

Created by Jan Medvedwww.opendaylight.org

Forget about verifying projects, focus on features Test single feature enabled to identify issues in a feature itself Test all features enabled to identify feature interferences

For a given project, tests are called after: A change (merge) in an upstream project. This triggers build and

system test A change in the project itself. We miss system test on code submit

Be selective with the tests we run A change in a “stem” project will trigger test on many features A change in a “leaf” project will trigger test on few concerned features

High Level Strategy

3

Page 4: Created by Jan Medved  Integration & Test Strategy for Lithium

Created by Jan Medvedwww.opendaylight.org

We define 2 integration features for test purposes:compatible-with-all -> useful for all features system testall = compatible-with-all + incompatible features -> useful to detect feature/bundle interferences

We generate 2 distributions (no feature enabled at startup):Regular distribution with all projects feature indexes (except integration)Test distribution = Regular distribution + integration feature index

Distribution Assembly

4

Page 5: Created by Jan Medved  Integration & Test Strategy for Lithium

Created by Jan Medvedwww.opendaylight.org

Build test occurs during project code build. Examples are Junit, PAX-EXAM or Karaf feature install test

Every project in OpenDaylight defines 3 build jobs:Verify -> This job builds the project code and pass build tests upon code submitMerge -> This job builds the project code and pass build tests upon code merge. In addition it will upload generated artifacts to Nexus repository.Integration -> This job will build the project code and pass build tests after a merge in an upstream project

Build Test

5

Page 6: Created by Jan Medved  Integration & Test Strategy for Lithium

Created by Jan Medvedwww.opendaylight.org

System test requires a framework that installs controller and executes tests against network tools. Example is the Robot test.

For every project user-facing feature we will create 2 system test jobs:feature-only test -> Install single feature with required dependencies and run feature planned testfeature-all test

If feature is compatible -> Install odl-integration-compatible-with-all and run feature planned test

If feature is not compatible -> Install odl-integration-compatible-with-all + incompatible feature and run feature planned test

System Test

6

Page 7: Created by Jan Medved  Integration & Test Strategy for Lithium

Created by Jan Medvedwww.opendaylight.org

Test Triggers

7

Code Merge

Release creation

Merge buildfeature-only test

feature-all test

feature-only test

feature-all test

For all available features

For all features in downstream

Code Submit Verify build

*Optional (requires project distribution or some automation to update project artifact)

Integration build

For all projects in downstream

feature-only test*