Towards an automated testing environment Amogh Vasekar - - PowerPoint PPT Presentation

towards an automated testing environment
SMART_READER_LITE
LIVE PREVIEW

Towards an automated testing environment Amogh Vasekar - - PowerPoint PPT Presentation

Towards an automated testing environment Amogh Vasekar amogh.vasekar@citrix.com Agenda Motivation Architecture Implementation Replication Proposal Enhancements Agenda Motivation Architecture Implementation


slide-1
SLIDE 1

Towards an automated testing environment

Amogh Vasekar amogh.vasekar@citrix.com

slide-2
SLIDE 2

Agenda

  • Motivation
  • Architecture
  • Implementation
  • Replication
  • Proposal
  • Enhancements
slide-3
SLIDE 3

Agenda

  • Motivation
  • Architecture
  • Implementation
  • Replication
  • Proposal
  • Enhancements
slide-4
SLIDE 4

Motivation

  • Master is invariably unstable
  • Unchecked commits
  • No provision for developer to test feature branch
  • Testing is not yet a community effort
  • Not easy to test plug-ins privately
  • CloudStack set-up is involved – Management server, hypervisor,

network, storage

slide-5
SLIDE 5

Just for laughs

Cloudstack Community Who are we What do we want Testing and Code Quality How do we want do it ………

slide-6
SLIDE 6

Goals

  • Continuously running BVTs
  • Enable community testing
  • Keep master stable
  • Isolate test-runs from each other, and from other infrastructures
  • Easy to replicate and set-up
  • Provide commits to cherry pick / buggy commits
slide-7
SLIDE 7

Agenda

  • Motivation
  • Architecture
  • Implementation
  • Replication
  • Proposal
  • Enhancements
slide-8
SLIDE 8

Architecture

slide-9
SLIDE 9

Architecture

Phase 1 : Set-up infrastructur Phase 1 : Set-up infrastructure

  • Provision management server from scratch
  • Provision hypervisor from scratch
  • Storage and networking set-up

Phase 2 : Run Marvin tests

  • Track bad commits
  • Cherry-pick good commits

Need to isolate test-runs Based on Prasanna’s effort (Big Thanks!!)

slide-10
SLIDE 10

Agenda

  • Motivation
  • Architecture
  • Implementation
  • Replication
  • Proposal
  • Enhancements
slide-11
SLIDE 11

Implementation

  • Jenkins for integration We all like Jenkins
  • Glue to hold all together
  • Reporting, alerting etc.
  • Separate jobs for phases 1 and 2
slide-12
SLIDE 12

Implementation

Provisioning management server & hypervisors

  • Need a way to deploy an OS
  • Need a way to configure the systems
  • Need a way to provision storage and networking in an isolated manner
slide-13
SLIDE 13

Implementation

Quick overview of technologies involved

  • Cobbler
  • IPMI tool
  • Puppet
  • DNSMASQ
  • Squid
slide-14
SLIDE 14

Cobbler

  • Open source OS installation server
  • Provides baremetal provisioning via PXE
  • Components

Ø Distro – the OS to provision Ø Profile – associate kickstart / configuration with OS Ø System – MAC to profile mapping. Additional configs

  • Snippets to run post install scripts etc
  • Manages TFTP and PXE seamlessly
slide-15
SLIDE 15

Others…

Puppet

  • Management server configuration
  • Hypervisor configuration like KVM agent etc.

IPMI tool

  • To bootstrap baremetal provisioning

Squid

  • HTTP proxy server (needed for isolated network requirement)

DNSMASQ

  • DHCP / DNS management underneath Cobbler
slide-16
SLIDE 16

Implementation

  • Put all these and related technologies on a single VM
  • May contain additional storage (NFS server)
  • Seed system VMs
  • Python code acting as launcher script
slide-17
SLIDE 17

Implementation

slide-18
SLIDE 18

Implementation

Minimum Requirements

  • XenServer to host VM and management server
  • Hosts for hypervisors
  • Isolated network
  • IPMI network
slide-19
SLIDE 19

Implementation

Phase 2

  • Run Marvin tests
  • Track commits from previous stable build to current build
  • If fails, one of the commits broke BVT
  • If pass, auto cherry-pick commits to (stable) master
  • All code in Python
slide-20
SLIDE 20

Agenda

  • Motivation
  • Architecture
  • Implementation
  • Replication
  • Proposal
  • Enhancements
slide-21
SLIDE 21

Replication

Setting up from scratch requires

  • Familiarity with CI tools
  • Familiarity with CloudStack specifics
  • Lots of time
  • Many DHCP / network configs
slide-22
SLIDE 22

Replication

Propose to push VM like DevCloud (QACloud?)

Thus, steps become

  • Load VM on XenServer
  • Provision network using conf provided
  • Add IPMI network
  • Change MAC addresses for Cobbler (has easy to use interface)
  • Add to Jenkins master
  • Optionally add NFS volumes
  • Optionally change domain name for hosts
slide-23
SLIDE 23

Replication

To set-up from scratch

https://cwiki.apache.org/confluence/display/CLOUDSTACK/QA+Infra +from+scratch

slide-24
SLIDE 24

Agenda

  • Motivation
  • Architecture
  • Implementation
  • Replication
  • Proposal
  • Enhancements
slide-25
SLIDE 25

Proposal

To keep master stable

  • Maintain a staging branch
  • Developer commits go to staging
  • If all BVTs pass, push commits
  • May need more BVTs
  • Reduce BVT running time (Simulator?)
slide-26
SLIDE 26

Agenda

  • Motivation
  • Architecture
  • Implementation
  • Replication
  • Proposal
  • Enhancements
slide-27
SLIDE 27

Enhancements

1. Better integration of VMWare hypervisor 2. Pull latest systemvm templates 3. Make VM size manageable 4. Scheduling mechanism for resource pools 5. Throw open to developers via a service (Thanks to Bharath for 2,3,4,5)

slide-28
SLIDE 28

Only the first step

Lets all keep master stable!! Lets all test together!!

Big Thanks to AlexH for guiding J