continuous delivery with efficient automated testing · pdf filecontinuous delivery with...
TRANSCRIPT
Budapest, 26-28 October 2016
CONTINUOUS DELIVERY WITH EFFICIENT AUTOMATED TESTING IN CLOUDPresented by [Teresa Song] © All rights reserved
Agenda
2
• Product Introduction
• Challenge & Solution
©All rights reserved
Product Intro – IOT PLATFORM
3 © All rights reserved
ERICSSON IOT APPLICATIONS MARKETPLACE
ER
ICS
SO
N P
RO
FES
SIO
NA
L SE
RV
ICE
S
Ericsson Apps
TRANSPORTUTILITIES PUBLICSAFETY SMART CITIES OTHER
INDUSTRIES
App SDK
Customer Apps Partners Apps
Device SDK
Device Management
Network and Device Adaptation
Device Authentication
M2M Data Management
Real-Time Rule Execution
Data Encryption
IoT Platform
Device Registry
Device
Industry Solution
Test Strategy
4 © All rights reserved
High Priority Function Test All Function Test >98%
Performance TestStability Test
Manual FT <2%Upgrade Test
Document Test
Unit Test
Component Test
DAILY PER SPRINT PER RELEASEPER CHECK‐IN
RBT
Deployed PlatformPhysical Server
Virtualization
• KVM• VMWare
OpenstackSupport Multi-Cloud
• Openstack• ECC• AWS• Docker
Challenge & Solution
5 © All rights reserved
Good
Jenkins job, Longest > 2 hours
CI with sufficient test
10,000+ test scriptsmore and more
Extract foundation modules as image
Introduce new CI framework
> 98% automation rate
Challenge
Extract Foundation Image
6 © All rights reserved
Check-inUT/CT is pass?
Fail
PassFT/NFT is pass?
Fail
Pass Ready for Customer
Hierarchical images are used here
Image with component A+B
Send feedback Send feedbackCustomer
AB CD
AB CD
E
Customer
Sold by Value Package
Customer
Build A
Build B Build D
Build C
Check-in
AB CD
E
Image AB
Image Repo
Image A
Reduced,38 Min30%
FG
Challenge & Solution
7 © All rights reserved
Good
Jenkins job, Longest > 2 hours
CI with sufficient test
10,000+ test scriptsmore and more
Extract foundation modules as image
Introduce new CI framework
> 98% automation rate
Challenge
Test CI Framework
8 © All rights reserved
CI Script
Customized JClouds Plugin
Jenkins
Test Job
Artifactory
GIT Repo
Dispatch Slave
Resource Helper
CI Script Frontend
Exclusive Slave
OpenStack
Call Flow
Reference
Default Image
Slave instance –--
Dispatcher Slave
Component Image
Slave instance –--
Exclusive Slave
Invoker
Default Action hook
Library
glance
nova
Image Interface
Server Interface
create imageUpload imagedelete image
create server delete server
Support Image Launch
Exclusive Slave
9 © All rights reserved
• Invoker Layer • Jenkins job invoke Core
script in CI invoker bring job’s configuration as input parameter
• Core script combine Job’s input and default configure to action invoke list
• Invoke action by list• Action Layer
• Associate library script for default action
• invoke hook before and after action perform
• Library Layer Provide basic API
Invoker
Defaultconfig
Core
Default Action
Config
ActionList
Action List
Library
Script List
Invoke Layer
Action Layer
Library Layer
hook
Hook List
Jenkins
Test Job
Job on Dispatch Slave
Exclusive Slave
Config
CI ScriptCI Script
Dispatch Slave
Resource Helper
CI Script Frontend
Exclusive Slave
Invoker
Default Action hook
Library
Unified CI APISmart Execute Test
Example
10 © All rights reserved
| ‐ function/ (ft/smoketest/upgrade)| ‐ deploy
| ‐ network.py| ‐ class ipv6
| ‐ appserver.py| ‐ class occas| ‐ class jboss
| ‐ installation.py | ‐ class m2m| ‐ class messaging
| ‐ verify| ‐ testInit.py
| ‐ class common | ‐ functiontest.py
| ‐ class common | ‐ class m2m| ‐ class messaging
Master
Function
appserver : occas
deploy
verify
Installation : m2m
Action List
gatherInfo
testInit : m2m
functiontest: m2m
Use to Locate branch or folder
| ‐ DbExecution| ‐ performMySQL.py| ‐ performOracle.py
| ‐ getComponent| ‐ getRpmFromRepo.py| ‐ getWarFromRepo.py
| ‐ deployRPM| ‐ installRPM.py| ‐ installWar.py
| ‐ activeComponent| ‐ activeOccas.py| ‐ activeJboss.py
Action Layer
Library LayerCore
Invoke Layer CI Script
Dispatch Slave
Resource Helper
CI Script Frontend
Exclusive Slave
Invoker
Default Action hook
Library
Library
Action List
| ‐ function| ‐ deploy
| ‐ installation.py | ‐ class m2m‐pre| ‐ class m2m‐post
Hook List
Use common when not find
Challenge & Solution
11 © All rights reserved
Good
Jenkins job, Longest > 2 hours
CI with sufficient test
10,000+ test scriptsmore and more
Extract foundation modules as image
Introduce new CI framework
> 98% automation rate
Challenge
Average 38 minutes/30% are saved for each Jenkins test job
Time to Error Discovery is much shorten
Easy and flexible to support testing on future multi-cloud platform
Changing On The Way
12 © All rights reserved
Deployed PlatformPhysical Server
Virtualization
• KVM• VMWare
OpenstackSupport Multi-Cloud
• Openstack• ECC• AWS• Docker
Q & A