Quality Cruising. Making Java Work for Erlang. Erik (Happi) Stenman

Similar documents
Erlang in E-Commerce and Banking

Software Construction

SOFTWARE DEVELOPMENT BASICS SED

Kevin Lee Technical Consultant As part of a normal software build and release process

Accelerate Software Delivery

Pipeline Orchestration for Test Automation using Extended Buildbot Architecture

Practicing Continuous Delivery using Hudson. Winston Prakash Oracle Corporation

Continuous Integration (CI)

Continuous Integration

Jenkins Continuous Build System. Jesse Bowes CSCI-5828 Spring 2012

Continuous Delivery. Alejandro Ruiz

Continuous Integration: Improving Software Quality and Reducing Risk. Preetam Palwe Aftek Limited

Building, testing and deploying mobile apps with Jenkins & friends

Software infrastructure for Java development projects

Continuous Integration: Aspects in Automation and Configuration Management

Continuous Delivery for Alfresco Solutions. Satisfied customers and happy developers with!! Continuous Delivery!

Continuous Integration

We ( have extensive experience in enterprise and system architectures, system engineering, project management, and

CI for FPGA D&V. Continuous Integration for FPGA Design and Verification Verification Futures Alan Fitch, Ericsson TV Ltd

Hudson configuration manual

TeamCity A Professional Solution for Delivering Quality Software, on Time

Software Configuration Management Best Practices for Continuous Integration

Unit Testing webmethods Integrations using JUnit Practicing TDD for EAI projects

CONTINUOUS INTEGRATION

CRM. itouch Vision. This document gives an overview of OneTouch Cloud CRM and discusses the different features and functionality.

vs. Web Site: Blog: blog.soebes.com Dipl.Ing.(FH) Karl Heinz Marbaise

Test Driven Development Part III: Continuous Integration Venkat Subramaniam

Introduction to Programming Tools. Anjana & Shankar September,2010

USING SYNERGY WITH CRUISE CONTROL

Continuous Integration with Jenkins. Coaching of Programming Teams (EDA270) J. Hembrink and P-G. Stenberg [dt08jh8

Automate Your Deployment with Bamboo, Drush and Features DrupalCamp Scotland, 9 th 10 th May 2014

Java Software Quality Tools and techniques

Version control with GIT

Change Manager 5.0 Installation Guide

Beginner s guide to continuous integration. Gilles QUERRET Riverside Software

Implementing Continuous Integration Testing Prepared by:

Apache Gump. Continuous Integration on Steroids. Apache Software Foundation Building FOSDEM 2005

A Tutorial on installing and using Eclipse

Module 11 Setting up Customization Environment

Setup Guide for Magento and BlueSnap

Team Name : PRX Team Members : Liang Yu, Parvathy Unnikrishnan Nair, Reto Kleeb, Xinyi Wang

Escaping the Works-On-My-Machine badge Continuous Integration with PDE Build and Git

JOB ORIENTED VMWARE TRAINING INSTITUTE IN CHENNAI

LICENTIA. Nuntius. Magento Marketing Extension REVISION: SEPTEMBER 21, 2015 (V1.8.1)

EVALUATION ONLY. WA2088 WebSphere Application Server 8.5 Administration on Windows. Student Labs. Web Age Solutions Inc.

Figure 1. perfsonar architecture. 1 This work was supported by the EC IST-EMANICS Network of Excellence (#26854).

Lab: Application Lifecycle Management (ALM) Across Heterogeneous Platforms (Java/.NET)

Delivering Quality Software with Continuous Integration

Continuous Integration: A case study

Modern practices TIE-21100/

Continuous Integration Using Cruise Control

Continuous Integration and Bamboo. Ryan Cutter CSCI Spring Semester

Ingeniørh. Version Control also known as Configuration Management

Database Build and Release will get started soon

Addonics T E C H N O L O G I E S. NAS Adapter. Model: NASU Key Features

Vladimir Bakhov AT-Consulting +7 (905)

Finally, an agile test strategy (that works)! AS OW Test Model, Objectware

Effective feedback from quality tools during development

Continuous Integration in Kieker

Continuous Integration: Put it at the heart of your development

What do we mean by web hosting?

Upgrades and the Cloud

UCS. Amazing tools suite in CORBA world

How To Set Up An Outsourcing Center In China

Installing (1.8.7) 9/2/ Installing jgrasp

The Deployment Production Line

Part II. Managing Issues

CISC 275: Introduction to Software Engineering. Lab 5: Introduction to Revision Control with. Charlie Greenbacker University of Delaware Fall 2011

Beginning POJOs. From Novice to Professional. Brian Sam-Bodden

Installation Instructions Nochex Payment Module for Magento

Software Configuration Management and Continuous Integration

JUSTIN J. LITTLE Build and Release Engineer

Jenkins on Windows with StreamBase

Jenkins: The Definitive Guide

Testing Tools Content (Manual with Selenium) Levels of Testing

Introduction to Agile Software Development Process. Software Development Life Cycles

Android: Setup Hello, World: Android Edition. due by noon ET on Wed 2/22. Ingredients.

November 12 th 13 th London: Mastering Continuous Integration with Jenkins

In depth study - Dev teams tooling

Integration Knowledge Kit Developer Journal

Content. Development Tools 2(63)

Transcription:

Quality Cruising Making Java Work for Erlang Erik (Happi) Stenman

2 Introduction

Introduction I will talk about automated testing, and how to make Java do that work for you. 2

Introduction I will talk about automated testing, and how to make Java do that work for you. 2

Introduction I will talk about automated testing, and how to make Java do that work for you. But first a short recap for those of you who weren't here last year or don't remember my talk about Kreditor. 2

Kreditor Europe AB Founded in December 2004. 3

Kreditor Europe AB Founded in December 2004. Bring trust to Internet shopping, by providing old style billing through hi-tech solutions. 3

Kreditor Europe AB Founded in December 2004. Bring trust to Internet shopping, by providing old style billing through hi-tech solutions. More than 1700 Internet shops connected. 3

Kreditor Europe AB Founded in December 2004. Bring trust to Internet shopping, by providing old style billing through hi-tech solutions. More than 1700 Internet shops connected. The company vision: 3

Kreditor Europe AB Founded in December 2004. Bring trust to Internet shopping, by providing old style billing through hi-tech solutions. More than 1700 Internet shops connected. The company vision: Be the coolest company in Sweden. 3

The Implementation Web shop Credit information Print&mail Bank The system is a combination of fault tolerant servers, lots of protocol- and glue-code, persistent storage, and a web-ui. 4

Some implementation details The system is built in-house from scratch using LYME (Linux, Yaws, Mnesia, and Erlang). We have a distributed system with multiple servers to provide a fault tolerant, high availability solution. We aim for 5 nines availability, in a setting where we introduce new features in the system every week (almost every day). The problem fits Erlang really well. 5

6 Process

Process We have have an informal agile process. 6

Process We have have an informal agile process. We have very short time to market, for simple changes the time from idea to finished integration can be less than one hour. 6

Process We have have an informal agile process. We have very short time to market, for simple changes the time from idea to finished integration can be less than one hour. It is crucial for us to have an automated comprehensive test suite. 6

Process We have have an informal agile process. We have very short time to market, for simple changes the time from idea to finished integration can be less than one hour. It is crucial for us to have an automated comprehensive test suite. With a framework that works. 6

Process We have have an informal agile process. We have very short time to market, for simple changes the time from idea to finished integration can be less than one hour. It is crucial for us to have an automated comprehensive test suite. With a framework that works. Which is used. 6

Process We have have an informal agile process. We have very short time to market, for simple changes the time from idea to finished integration can be less than one hour. It is crucial for us to have an automated comprehensive test suite. With a framework that works. Which is used. Always. 6

Process We have have an informal agile process. We have very short time to market, for simple changes the time from idea to finished integration can be less than one hour. It is crucial for us to have an automated comprehensive test suite. With a framework that works. Which is used. Always. Enters Yatsy and CruiseControl. 6

Yatsy Yet Another Test Server Yaws compatible (. game (Yatsy is Swedish for Yatzee testing is a bit like a dice 7

Yatsy Yet Another Test Server Yaws compatible (. game (Yatsy is Swedish for Yatzee testing is a bit like a dice Why (yet) another test server? 7

Yatsy Yet Another Test Server Yaws compatible (. game (Yatsy is Swedish for Yatzee testing is a bit like a dice Why (yet) another test server? The released OTP-test server is from 2004. 7

Yatsy Yet Another Test Server Yaws compatible (. game (Yatsy is Swedish for Yatzee testing is a bit like a dice Why (yet) another test server? The released OTP-test server is from 2004. It isn't really open source. 7

Yatsy Yet Another Test Server Yaws compatible (. game (Yatsy is Swedish for Yatzee testing is a bit like a dice Why (yet) another test server? The released OTP-test server is from 2004. It isn't really open source. We just couldn't get it to work. 7

Yatsy Yet Another Test Server Yaws compatible (. game (Yatsy is Swedish for Yatzee testing is a bit like a dice Why (yet) another test server? The released OTP-test server is from 2004. It isn't really open source. We just couldn't get it to work. First version hacked together over a weekend by Tobbe. 7

Yatsy Yet Another Test Server Yaws compatible (. game (Yatsy is Swedish for Yatzee testing is a bit like a dice Why (yet) another test server? The released OTP-test server is from 2004. It isn't really open source. We just couldn't get it to work. First version hacked together over a weekend by Tobbe. Released as open source: http://code.google.com/p/yatsy/ 7

Yatsy - example -module(example_suite). -export([all/1, init_per_suite/1, fin_per_suite/1, init_per_testcase/2, fin_per_testcase/2, simple/1]). -include("yatsy.hrl"). all(doc) -> ["Test cases for example."]; all(suite) -> [simple]. init_per_suite(config) when list(config) -> Config. fin_per_suite(_config) -> ok. init_per_testcase(_testcase, Config) when atom(_testcase),list(config) -> Config. fin_per_testcase(_testcase, _Config) -> ok. simple(doc) -> ["Check that we can get an new example."]; simple(conf) when is_list(conf) -> [] = example:new(), ok. 8

CruiseControl (CC) CruiseControl is a framework for continuous integration. 9

CruiseControl (CC) CruiseControl is a framework for continuous integration. It is open source. 9

CruiseControl (CC) CruiseControl is a framework for continuous integration. It is open source. It is written in Java. 9

CruiseControl (CC) CruiseControl is a framework for continuous integration. It is open source. It is written in Java. It automatically 9

CruiseControl (CC) CruiseControl is a framework for continuous integration. It is open source. It is written in Java. It automatically checks out the latest version from a repository, 9

CruiseControl (CC) CruiseControl is a framework for continuous integration. It is open source. It is written in Java. It automatically checks out the latest version from a repository, does a build, 9

CruiseControl (CC) CruiseControl is a framework for continuous integration. It is open source. It is written in Java. It automatically checks out the latest version from a repository, does a build, runs all tests, 9

CruiseControl (CC) CruiseControl is a framework for continuous integration. It is open source. It is written in Java. It automatically checks out the latest version from a repository, does a build, runs all tests, and it measures any metric you have automated. 9

CruiseControl (CC) CruiseControl is a framework for continuous integration. It is open source. It is written in Java. It automatically checks out the latest version from a repository, does a build, runs all tests, and it measures any metric you have automated. As soon as anyone checks anything in. 9

CC Components CC consists of: 10

CC Components CC consists of: A set of plugins 10

CC Components CC consists of: A set of plugins ( u - Version control pollers (e.g. svn st 10

CC Components CC consists of: A set of plugins ( u - Version control pollers (e.g. svn st ( make Compile and test systems (e.g. ant or 10

CC Components CC consists of: A set of plugins ( u - Version control pollers (e.g. svn st ( make Compile and test systems (e.g. ant or Publishers (e.g. web site, email, rss, irc) 10

CC Components CC consists of: A set of plugins ( u - Version control pollers (e.g. svn st ( make Compile and test systems (e.g. ant or Publishers (e.g. web site, email, rss, irc) A build queue 10

CC Components CC consists of: A set of plugins ( u - Version control pollers (e.g. svn st ( make Compile and test systems (e.g. ant or Publishers (e.g. web site, email, rss, irc) A build queue An admin GUI 10

CC Components CC consists of: A set of plugins ( u - Version control pollers (e.g. svn st ( make Compile and test systems (e.g. ant or Publishers (e.g. web site, email, rss, irc) A build queue An admin GUI code Lots of glue 10

The CC loop Poll for event A version control update A time has come Checkout, build, and run tests Gather results Publish results 11

Our CC Setup A set of projects commit-[branch], runs on every commit nightly-[branch], runs each night CC starts a script svn update make run yatsy Reporting Yatsy reports test results trough an xml file Reverse engineered from JUnit CC sends email to responsible developer in case of error 12

Integrating Cover with Yatsy There is an application called Cover in Erlang/OTP which can give you a line by line coverage analysis of a module. We have added a module yatsy_cover to Yatsy which will let you run cover on a test suite. If you run yatsy with the cover flag all beam files are cover compiled before the test suite is run. Yatsy produces a source code file annotated with execution count. 13

14 CC-Demo

Conclusion CC gives you immediate feedback on the test status of all your branches all the time. 15

Conclusion CC gives you immediate feedback on the test status of all your branches all the time. Our contribution: 15

Conclusion CC gives you immediate feedback on the test status of all your branches all the time. Our contribution: Open sourced test suite Yatsy. 15

Conclusion CC gives you immediate feedback on the test status of all your branches all the time. Our contribution: Open sourced test suite Yatsy. Nice simple integration between CC and Erlang, including cover and dialyser, and EUnit. 15

Conclusion CC gives you immediate feedback on the test status of all your branches all the time. Our contribution: Open sourced test suite Yatsy. Nice simple integration between CC and Erlang, including cover and dialyser, and EUnit. We let Java do some work for the Erlang developer. 15

Conclusion CC gives you immediate feedback on the test status of all your branches all the time. Our contribution: Open sourced test suite Yatsy. Nice simple integration between CC and Erlang, including cover and dialyser, and EUnit. We let Java do some work for the Erlang developer. CC is just as valuable as a VCS. 15

Conclusion CC gives you immediate feedback on the test status of all your branches all the time. Our contribution: Open sourced test suite Yatsy. Nice simple integration between CC and Erlang, including cover and dialyser, and EUnit. We let Java do some work for the Erlang developer. CC is just as valuable as a VCS. If you are not using CC for your projects, start using it NOW. 15