Beaker: Automated, Cloud-Based Acceptance Testing - PuppetConf 2014

27
Beaker Cloud Enabled Acceptance Testing

description

Beaker: Automated, Cloud-Based Acceptance Testing - Alice Nodelman, Puppet Labs

Transcript of Beaker: Automated, Cloud-Based Acceptance Testing - PuppetConf 2014

Page 1: Beaker: Automated, Cloud-Based Acceptance Testing - PuppetConf 2014

BeakerCloud Enabled Acceptance Testing

Page 2: Beaker: Automated, Cloud-Based Acceptance Testing - PuppetConf 2014

Life is Hard

Page 3: Beaker: Automated, Cloud-Based Acceptance Testing - PuppetConf 2014

About Me

Alice Nodelman

[email protected] (freenode #puppet-dev)

alicenode (twitter)anodelman (github)

Page 4: Beaker: Automated, Cloud-Based Acceptance Testing - PuppetConf 2014

Beaker, The Onramp to Easy Street

Flexible Test Construction

Cloud Enabled

Pretty Reports

Page 5: Beaker: Automated, Cloud-Based Acceptance Testing - PuppetConf 2014

The Tests

Page 6: Beaker: Automated, Cloud-Based Acceptance Testing - PuppetConf 2014

Tests in Ruby and Bash

The value of using a non-proprietary programming language.

Page 7: Beaker: Automated, Cloud-Based Acceptance Testing - PuppetConf 2014
Page 8: Beaker: Automated, Cloud-Based Acceptance Testing - PuppetConf 2014

The Beaker DSL

It’s a Domain Specific Language!

Page 9: Beaker: Automated, Cloud-Based Acceptance Testing - PuppetConf 2014

A Few Carefully Selected Examples

on host, “echo hello”

install_pe

install_puppet

scp_to host, “s.txt”, “d.txt”, :ignore => [‘.git’]

Page 10: Beaker: Automated, Cloud-Based Acceptance Testing - PuppetConf 2014

Test Structure DSL Methods

test_name “I’m a descriptive test name”step “This is a step in a test”teardown do puts “execute this code on test completion”endfail_test “Uh oh. This test failed”pass_test “Woo! This test passed”

Page 11: Beaker: Automated, Cloud-Based Acceptance Testing - PuppetConf 2014

Put It all Together

Page 12: Beaker: Automated, Cloud-Based Acceptance Testing - PuppetConf 2014

beaker-rspec

beaker DSL+

RSpec+

Serverspec=

beaker-rspec

Page 13: Beaker: Automated, Cloud-Based Acceptance Testing - PuppetConf 2014
Page 14: Beaker: Automated, Cloud-Based Acceptance Testing - PuppetConf 2014

The Cloud

Who delivers your boxes?

Page 15: Beaker: Automated, Cloud-Based Acceptance Testing - PuppetConf 2014

Beaker’s Virtualization Options

● Amazon Elastic Compute Cloud● Google Compute Engine● OpenStack● Docker● Vsphere● Fusion● Vagrant

Page 16: Beaker: Automated, Cloud-Based Acceptance Testing - PuppetConf 2014

Quick Network Overview

Beaker Coordinator

Agent 1

Agent 3Agent 2

Master

The Cloud

Home Network

Page 17: Beaker: Automated, Cloud-Based Acceptance Testing - PuppetConf 2014

How we use it at Puppet

Let’s divide up the pie.

Page 18: Beaker: Automated, Cloud-Based Acceptance Testing - PuppetConf 2014

The Report Card

Page 19: Beaker: Automated, Cloud-Based Acceptance Testing - PuppetConf 2014

The Noisy Scrollcentos-6-64-1 15:41:59$ env PATH="/opt/puppet/bin:${PATH}" RUBYLIB="${RUBYLIB}" puppet agent --configprint vardir/var/opt/lib/pe-puppet

centos-6-64-1 executed in 1.26 seconds

centos-6-64-1 15:42:01$ [ -e '/var/opt/lib/pe-puppet/state/agent_catalog_run.lock' ]

centos-6-64-1 executed in 0.04 secondsExited: 1

centos-6-64-1 15:42:03$ [ -e /etc/init.d/pe-puppet-agent ]

centos-6-64-1 executed in 0.04 secondsExited: 1

centos-6-64-1 15:42:03$ env PATH="/opt/puppet/bin:${PATH}" RUBYLIB="${RUBYLIB}" puppet resource service pe-puppet ensure=stopped Notice: /Service[pe-puppet]/ensure: ensure changed 'running' to 'stopped'service { 'pe-puppet': ensure => 'stopped',}

Page 20: Beaker: Automated, Cloud-Based Acceptance Testing - PuppetConf 2014

- Host Configuration Summary -

- Test Case Summary for suite 'tests' - Total Suite Time: 571.58 seconds Average Test Time: 4.40 seconds Attempted: 130 Passed: 70 Failed: 0 Errored: 0 Skipped: 60 Pending: 0 Total: 130

Not So Pretty

Page 21: Beaker: Automated, Cloud-Based Acceptance Testing - PuppetConf 2014
Page 22: Beaker: Automated, Cloud-Based Acceptance Testing - PuppetConf 2014
Page 23: Beaker: Automated, Cloud-Based Acceptance Testing - PuppetConf 2014
Page 24: Beaker: Automated, Cloud-Based Acceptance Testing - PuppetConf 2014
Page 26: Beaker: Automated, Cloud-Based Acceptance Testing - PuppetConf 2014
Page 27: Beaker: Automated, Cloud-Based Acceptance Testing - PuppetConf 2014

QuestionsQuestions