<Insert Picture Here> TDD on a Coherence project



Similar documents
Jenkins User Conference Herzelia, July #jenkinsconf. Testing a Large Support Matrix Using Jenkins. Amir Kibbar HP

Continuous Integration and Delivery at NSIDC

WHITE PAPER. Getting started with Continuous Integration in software development. - Amruta Kumbhar, Madhavi Shailaja & Ravi Shankar Anupindi

CERTIFIED MULESOFT DEVELOPER EXAM. Preparation Guide

Continuous Integration: Put it at the heart of your development

Continuous Integration For Fusion Middleware

Practicing Continuous Delivery using Hudson. Winston Prakash Oracle Corporation

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

An Oracle White Paper July Oracle Primavera Contract Management, Business Intelligence Publisher Edition-Sizing Guide

Networks and Services

Oracle Insurance Policy Administration. Version

1z0-102 Q&A. DEMO Version

Implementing Active Directory Rights Management Services with Exchange and SharePoint

This course provides students with the knowledge and skills to develop ASP.NET MVC 4 web applications.

The Benefits of Utilizing a Repository Manager

Load and Performance Load Testing. RadView Software October

Continuous Integration and Bamboo. Ryan Cutter CSCI Spring Semester

Hands on exercise for

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

Portal In Anger. Ray Ploski Team Lead - Solutions Architecture, JBoss by Red Hat June 22, 2010

KonyOne Server Installer - Linux Release Notes

JavaScript Applications for the Enterprise: From Empty Folders to Managed Deployments. George Bochenek Randy Jones

1Z Oracle Weblogic Server 11g: System Administration I. Version: Demo. Page <<1/7>>

DEPLOYMENT ROADMAP March 2015

Mastering Continuous Integration with Jenkins

Implementing a Custom Search Interface with SES - a case study with search.oracle.com. An Oracle White Paper June 2006

<Insert Picture Here> Introducing Hudson. Winston Prakash. Click to edit Master subtitle style

CLOUD COMPUTING & WINDOWS AZURE

Pipeline Orchestration for Test Automation using Extended Buildbot Architecture

CONTINUOUS INTEGRATION. Introduction

Oracle Exam 1z0-102 Oracle Weblogic Server 11g: System Administration I Version: 9.0 [ Total Questions: 111 ]

Build Platform as a Service (PaaS) with SUSE Studio, WSO2 Middleware, and EC2 Chris Haddad

Utilizing KolibriMFG Software System to Schedule and Control Shop Floor

SUCCESFUL TESTING THE CONTINUOUS DELIVERY PROCESS

McAfee Agent Handler

Oracle Service Bus. Situation. Oracle Service Bus Primer. Product History and Evolution. Positioning. Usage Scenario

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

Automated testing and continuous integration

Oracle Database 11g: RAC Administration Release 2

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

Oracle EXAM - 1Z Oracle Weblogic Server 11g: System Administration I. Buy Full Product.

Advanced Java Client API

APAC WebLogic Suite Workshop Oracle Parcel Service Overview. Jeffrey West Application Grid Product Management

IBM WebSphere Application Server

Decomposition into Parts. Software Engineering, Lecture 4. Data and Function Cohesion. Allocation of Functions and Data. Component Interfaces

SOFTWARE DEVELOPMENT BASICS SED

Oracle Reference Architecture and Oracle Cloud

An Oracle White Paper October BI Publisher 11g Scheduling & Apache ActiveMQ as JMS Provider

Beginners guide to continuous integration. Gilles QUERRET Riverside Software

Agility via Software Engineering Practices

DEPLOYMENT GUIDE DEPLOYING THE BIG-IP SYSTEM WITH MICROSOFT INTERNET INFORMATION SERVICES (IIS) 7.0

DRUPAL CONTINUOUS INTEGRATION. Part I - Introduction

Improving Software Quality with the Continuous Integration Server Hudson. Dr. Ullrich Hafner Avaloq Evolution AG 8911

Paul Barham Program Manager - Java. David Staheli (dastahel@microsoft.com) Software Development Manager - Java

Developing Microsoft SharePoint Server 2013 Advanced Solutions MOC 20489

Optimizing the Performance of Your Longview Application

Continuous Integration: A case study

Agile Best Practices and Patterns for Success on an Agile Software development project.

FOCUS ON YOUR FEATURES

How To Develop A Mobile Application On An Android Device

Deploying the BIG-IP System v10 with Oracle Application Server 10g R2

MS 10751A - Configuring and Deploying a Private Cloud with System Center 2012

CI Pipeline with Docker

Build management & Continuous integration. with Maven & Hudson

Coherence Managed Servers

A central continuous integration platform

Learning Management Redefined. Acadox Infrastructure & Architecture

Interworks. Interworks Cloud Platform Installation Guide

Tuning Tableau Server for High Performance

DE-20489B Developing Microsoft SharePoint Server 2013 Advanced Solutions

Massively! Continuous Integration! A case study for Jenkins at cloud-scale

Continuous Integration

DEPLOYMENT GUIDE. Deploying F5 for High Availability and Scalability of Microsoft Dynamics 4.0

TEST AUTOMATION FRAMEWORK

Online Data Services. Security Guidelines. Online Data Services by Esri UK. Security Best Practice

Drupal CMS for marketing sites

Developing Microsoft SharePoint Server 2013 Advanced Solutions

D83167 Oracle Data Integrator 12c: Integration and Administration

QL Integration into Scala and Excel. Martin Dietrich

When a business user interacts with an integrated workbook, there are various elements involved in the picture. Each of these elements has its own

Configuring Business Monitor for Event Consumption from WebSphere MQ

Software infrastructure for Java development projects

Crystal Enterprise Report Application Server

DEPLOYMENT GUIDE Version 1.1. Deploying F5 with Oracle Application Server 10g

DEPLOYMENT GUIDE Version 1.0. Deploying F5 with the Oracle Fusion Middleware SOA Suite 11gR1

Guide to Setting up Internet Connection Sharing for Windows

Fax Server Cluster Configuration

SonaVault Archiving Software

DEPLOYMENT GUIDE Version 1.2. Deploying the BIG-IP System v10 with Microsoft IIS 7.0 and 7.5

MS 10978A Introduction to Azure for Developers

Developing Applications Using Continuous Integration 12c (12.2.1)

Transcription:

<Insert Picture Here> TDD on a Coherence project Jon Hall - Oracle UK Consulting jonathan.hall@oracle.com

Disclaimer The following is intended to outline general product use and direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle s products remains at the sole discretion of Oracle.

About me Pragmatic, hands-on, delivery focused Enterprise Developer/Architect with over 22 years IT experience Spring since 2005 and Maven since 2008 like KISS Have worked for Oracle previously (part of Tangosol acquisition) Coherence littlegrid Coherence test-support framework Developer (www.littlegrid.org) http://www.linked.com/jhall

Sample project overview Coherence Maven Spring 3 JUnit Database In-process integration/functional testing

Sample project overview Extend Client Storage Disabled Client Storage Enabled Member Extend Proxy Member Storage Enabled Member Database

Testing business/domain logic Think about how you approach the development, by developing test-first you're immediately using your API and also thinking about decoupling it from infrastructure. Shouldn't need to boot-strap queues, Spring, Coherence or need a database etc. For some 'service orchestration' you may need to use mocks or stubs but try and avoid writing too much code for them otherwise it becomes more than the class under test!

Sample project modules https://bitbucket.org/littlegrid/sample-project - work in progress, but demonstrates concepts and techniques sample-configuration sample-database sample-model sample-persistence sample-datagrid-common sample-datagrid-cluster sample-datagrid-cluster-integration-tests sample-remote-client sample-remote-client-integration-tests

Testing database access Code example See sample-persistence module

Testing POF serialization Code example See sample-datagrid-common module

Typical approaches to Coherence testing..

Typical approaches to Coherence testing None yes, honestly...

Typical approaches to Coherence testing None yes, honestly... CacheFactory.getCache(..) and the world of accidental clustering System.setProperty(... CacheFactory.getCache(..) and the world of the forgotten serializer/mismatch Out of process testing typically separate processes on the same machine In-process testing good fast compromise

Using Spring and Coherence (with the current version of Coherence)

SpringAwareCacheFactory Supported method of integration between Coherence and Spring http://docs.oracle.com/cd/e24290_01/coh.371/e22621/integratespring.htm Coherence 3.4.x (or higher) Spring 2.x (or higher)

Cache Store: Spring on server-side Configurable-cache-factory-config in override file <cachestore-scheme> <class-scheme> <class-name>spring-bean:accountcachestore</class-name> </class-scheme> <bean id="accountcachestore" class="...account.repository.impl.accountcachestoreimpl" scope="prototype">

Typical usage of Spring in Coherence project Spring Extend Client Spring Storage Disabled Client Spring Storage Enabled Member Extend Proxy Member Storage Enabled Member Spring Database

Spring wired Default Cache Server This is a technique that is used quite a bit, it goes something like this: public static void main(final String[] args) { bootstrapapplicationcontext(); DefaultCacheServer.main(args); } private static void bootstrapapplicationcontext() { // Cause Spring to boot-strap and initialise the app context ApplicationContextHolder.getApplicationContext(); }

Testing Coherence server-side code and configuration Code example with Spring without Spring

Testing Coherence Extend client-side code and configuration Member left event Spring configuration

Named Cache: Spring on client-side (Extend/storage disabled client) Coherence's named cache is typically wired into a repository or service <bean id="accountcache" class="com.tangosol.net.cachefactory" factory-method="getcache"> <constructor-arg value="account"/> </bean>

Using CI (Continuous Integration) Setting up for concurrent builds (if required) Quick straw poll of CI servers Bamboo Hudson Jenkins TeamCity Other?

Moving beyond CI to CD (Continuous Deployment) Bringing it all together... Who's doing it? Who's trying to do CD in CI? long?...and so your CI cycles are

Thoughts? Other ideas? What do you do? Thank you!