72
JavaEE Test & Deploy Alexis Hassler 17 janvier 2012

JavaEE - Test & Deploy

Embed Size (px)

DESCRIPTION

Formation INSA, le 17 janvier 2012

Citation preview

Page 1: JavaEE - Test & Deploy

JavaEETest & Deploy

Alexis Hassler17 janvier 2012

Page 2: JavaEE - Test & Deploy

Tests d'intégration

Arquillian

Cloud Computing

Page 3: JavaEE - Test & Deploy

@AlexisHassler

Page 4: JavaEE - Test & Deploy
Page 5: JavaEE - Test & Deploy

Arquillian

Page 6: JavaEE - Test & Deploy
Page 7: JavaEE - Test & Deploy

JavaEE

EJB

CDI

Servlet

JSP

JSFJMS

JAX-RSJAX-WS JPA

JNDI

Page 8: JavaEE - Test & Deploy

Tests

Unitaire Intégration

Page 9: JavaEE - Test & Deploy

Test unitaire

mock

new

Page 10: JavaEE - Test & Deploy

✔ EJB

Page 11: JavaEE - Test & Deploy

Test d'intégration

Composant déployé dans son

conteneur

– Mode embarqué

– Déploiement distant

Page 12: JavaEE - Test & Deploy

EJB

Mode embarqué

EJBContainer.createEJBContainer()

Context.lookup(...)

Page 13: JavaEE - Test & Deploy

Spring Framework

Runner

– Démarrer l'ApplicationContext

@RunWith

@Autowired

Page 14: JavaEE - Test & Deploy

CDI

Weld SE

– Runner maison

cf. http://blog.alexis-hassler.com/2011/01/junit-runner-pour-cdi-weld.html

@RunWith

@Inject

Page 15: JavaEE - Test & Deploy

JPA

Conteneur JPA

Persistence.createEntityManagerFactory(...) .createEntityManager()

Page 16: JavaEE - Test & Deploy

JMS

Conteneur autonome

new ActiveMQConnectionFactory("vm://localhost?broker.persistent=false"

);...

Page 17: JavaEE - Test & Deploy

HTTP / Servlet / JSP / ...

Conteneur autonome

new ServletTester()

new HttpTester()

Page 18: JavaEE - Test & Deploy

✔ EJB / OpenEJB

Page 19: JavaEE - Test & Deploy

Problèmes

1 conteneur par technologie

– Pas de mode embarqué universel

Mode remote + Maven

– pas dans le cycle de vie standard

Configurations spécifiques

Page 20: JavaEE - Test & Deploy

EJB

CDI

Servlet

JSP

JSFJMS

JAX-RSJAX-WS JPA

JNDI

JavaEE

Page 21: JavaEE - Test & Deploy

JavaEE

ServletServlet

JPA

CDI

JSF

JAX-RS

BeanValidation

Tran

sact

ion

JMS

EJB

Page 22: JavaEE - Test & Deploy

Tester les composantspas les classes isolées

pas toute l'application

Page 23: JavaEE - Test & Deploy

gérer le conteneur dans les tests

Mettre les

tests dans le conteneur

plutôt que

Page 24: JavaEE - Test & Deploy

Structure d'un test

@RunWith(Arquillian.class)

@Deployment

@EJB, @Inject, @Resource

@Test

Page 25: JavaEE - Test & Deploy

✔ EJB / OpenEJB

Page 26: JavaEE - Test & Deploy
Page 27: JavaEE - Test & Deploy

Conteneurs

JavaEE

– JBoss AS,

– GlassFish,

– Websphere AS

Web

– Jetty,

– Tomcat

CDI

– Weld SE,

– Weld EE,

– OpenWebBeans

EJB

– Apache OpenEJB

Page 28: JavaEE - Test & Deploy

Conteneurs

ConteneurArquillian

JUnit

Test Case

ShrinkWrap

junit-container De

ploy

abl

eCon

tain

er

Page 29: JavaEE - Test & Deploy

Conteneurs

Classpath

Profil maven

Page 30: JavaEE - Test & Deploy

✔ EJB / Glassfish Embedded✔ CDI / Glassfish Embedded

✔ CDI / Weld SE

Page 31: JavaEE - Test & Deploy

Conteneurs

Remote

Managed

Embedded

Page 32: JavaEE - Test & Deploy

Conteneur embarqué

Démarrage du conteneur (in-process)

Déploiement de l'archive

Exécution locale du test

Retrait de l'archive

Arrêt du conteneur

Page 33: JavaEE - Test & Deploy

Conteneur géré

Démarrage du conteneur (out-process)

Déploiement de l'archive

Déploiement du service Arquillian

Exécution du test dans le conteneur

Retrait de l'archive

Arrêt du conteneur

Page 34: JavaEE - Test & Deploy

Conteneur distant

Conteneurpréalablement démarré

Déploiement de l'archive

Déploiement du service Arquillian

Exécution du test dans le conteneur

Retrait de l'archive

Page 35: JavaEE - Test & Deploy

Conteneurs

Remote Managed Embedded

JBoss AS 4.2, 5.0, 5.1, 6.0, 7.0 4.2, 5.1, 6.0, 7.0 5.1, 6.0

Glassfish 3.1 3.1

Websphere AS 7.0 8.0

Jetty 6.1, 7.0

Tomcat 6.0 6.0

Weld SE 1.1, SE 1.0, EE 1.1

OpenWebBeans 1.0

OpenEJB 3.1

Page 36: JavaEE - Test & Deploy

✔ EJB / JBoss AS 7 managed✔ EJB / JBoss AS 7 remote

Page 37: JavaEE - Test & Deploy

Shrinkwrap

ConteneurArquillian

JUnit

Test Case

ShrinkWrap

junit-container De

ploy

abl

eCon

tain

er

Page 38: JavaEE - Test & Deploy

Protocole Servlet

ShrinkWrap.create(WebArchive.class) .addClasses(...);

Web Archive

Arquillian Servlet

Test case

JUnit

Arquillian

Page 39: JavaEE - Test & Deploy

Protocole Servlet 3.0

ShrinkWrap.create(JavaArchive.class) .addClasses(...);

Web Archive

Arquillian Servlet

Test case

JUnit

Arquillian

Page 40: JavaEE - Test & Deploy

Arquillian ear

Protocole Servlet 2.5

ShrinkWrap.create(JavaArchive.class) .addClasses(...);

Java Archive

JUnit

Arquillian

Arquillian war

Arquillian Servlet

Test case

Page 41: JavaEE - Test & Deploy

Protocole Servlet

Enterprise Archive

ShrinkWrap.create(JavaArchive.class) .addClasses(...);

Java Archive

JUnit

Arquillian

Arquillian war

Arquillian Servlet

Test case

ShrinkWrap.create(EnterpriseArchive.class) .addAsModule(jar);

Page 42: JavaEE - Test & Deploy

Protocole JMX-AS7

JBoss AS 7

Arquillian Service

Arquillian MBean

Any Archive

Test case

JUnit

Arquillian

ShrinkWrap.create(XxxArchive.class) .addClasses(...);

Page 43: JavaEE - Test & Deploy

✔ EJB / deploymentExportPath

Page 44: JavaEE - Test & Deploy

as-client

Web, JAX-RS, JAX-WS,

RMI, EJB remote,...

Web Archive

Test case

JUnit

Arquillian

Page 45: JavaEE - Test & Deploy

as-client

URL baseURL ;

@Deploymentpublic static Archive createDeployment() { ... }

@Testprivate void shouldDoX() { ... }

@ArquillianResource(MyServlet.class)

(testable=false)

@RunAsClient

Page 46: JavaEE - Test & Deploy

✔ JAX-RS / JBoss AS 7 managed

Page 47: JavaEE - Test & Deploy

Arquillian

Test d'intégration

In-container

As-client

Multi-conteneurs

Page 48: JavaEE - Test & Deploy

Références

http://jboss.org/arquillian

http://github.com/arquillian

http://github.com/hasalex/arquillian-demo

http://www.slideshare.net/sewatech

Page 49: JavaEE - Test & Deploy

Tests d'intégration

Arquillian

Cloud Computing

Page 50: JavaEE - Test & Deploy
Page 51: JavaEE - Test & Deploy

Cloud Computing

Définition

– En libre-service à la demande

– Accessible sur l'ensemble d'un réseau

– Mutualisation des ressources

– Rapidement élastique

– Mesurable

Page 52: JavaEE - Test & Deploy

SaaS

Vision utilisateur

– Fonctionnalités d'un logiciel (Mail, CRM, ERP,...)

– Pas d'installation, pas d'investissement

– Montée en charge simple

– Software as a Service

Page 53: JavaEE - Test & Deploy

SaaS

Réseau

StockageMatériel

Virtualisation

Système d'exploitation

Base de données

Runtime / middleware

Application

Page 54: JavaEE - Test & Deploy

IaaS

Vision sysadmin

– Ressources système

(processeur, mémoire, bande passante)

– Pas d'achat de machine

– Montée en charge simple

– Infrastructure as a Service

Page 55: JavaEE - Test & Deploy

IaaS

Réseau

StockageMatériel

Virtualisation

Système d'exploitation

Base de données

Runtime / middleware

Application

Page 56: JavaEE - Test & Deploy

AmazonAWS

cf. http://media.amazonwebservices.com/AWS_Cloud_Best_Practices.pdf

Page 57: JavaEE - Test & Deploy

AmazonAWS

Amazon EC2

– Elastic Compute Cloud

– Serveur virtuel

– Stockage sur Elastic Block Store (EBS)● disque dur

– Monitoring ● Amazon CloudWatch

=> Cœur d’AWS

Page 58: JavaEE - Test & Deploy

AmazonAWS

Gestion

– Console Web

– SDK / ligne de commande

Page 59: JavaEE - Test & Deploy

Amazon EC2✔ Web UI

✔ CLI

Page 60: JavaEE - Test & Deploy

PaaS

Niveaux de service

IaaSInfrastructure as a Service

PaaSPlatform as a Service

SaaSSoftware as a Service

Page 61: JavaEE - Test & Deploy

PaaS

Réseau

StockageMatériel

Virtualisation

Système d'exploitation

Base de données

Runtime / middleware

Application

Page 62: JavaEE - Test & Deploy

PaaS

Page 63: JavaEE - Test & Deploy

Cloubees

App Project

Deploy

DEV@cloud RUN@cloud

Elastic AppElastic App

Elastic AppSource Control

JenkinsBuild/Test

Push

Page 64: JavaEE - Test & Deploy

Cloubees

Dev@Cloud

Build

Test

Deploy

Page 65: JavaEE - Test & Deploy

1: push

2: build

3: checkout

Page 66: JavaEE - Test & Deploy

Cloubees

Run@Cloud

JVM

Applications Server

PaaS tools

Page 67: JavaEE - Test & Deploy

Cloubees

Gestion RUN@cloud

Interface Web

API RESTful (HTTP / XML)

API Java

Page 68: JavaEE - Test & Deploy

CloudBees✔ Web UI

✔ Java API

Page 69: JavaEE - Test & Deploy

Cloud

PaaSPlatform as a Service

SaaSSoftware as a Service

User

IaaSInfrastructure as a Service

Operations

Developer Integration

Page 70: JavaEE - Test & Deploy

Cloud

PaaS

SaaSSoftware as a Service

IaaS

Page 71: JavaEE - Test & Deploy

Références

http://aws.amazon.com

http://www.cloudbees.com

https://github.com/hasalex/cloudbees-example

http://www.slideshare.net/sewatech

Page 72: JavaEE - Test & Deploy

Tests d'intégration

Arquillian

Cloud Computing