javaee - test & deploy
DESCRIPTION
Formation INSA, le 17 janvier 2012TRANSCRIPT
![Page 1: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/1.jpg)
JavaEETest & Deploy
Alexis Hassler17 janvier 2012
![Page 2: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/2.jpg)
Tests d'intégration
Arquillian
Cloud Computing
![Page 3: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/3.jpg)
@AlexisHassler
![Page 4: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/4.jpg)
![Page 5: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/5.jpg)
Arquillian
![Page 6: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/6.jpg)
![Page 7: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/7.jpg)
JavaEE
EJB
CDI
Servlet
JSP
JSFJMS
JAX-RSJAX-WS JPA
JNDI
![Page 8: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/8.jpg)
Tests
Unitaire Intégration
![Page 9: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/9.jpg)
Test unitaire
mock
new
![Page 10: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/10.jpg)
✔ EJB
![Page 11: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/11.jpg)
Test d'intégration
Composant déployé dans son
conteneur
– Mode embarqué
– Déploiement distant
![Page 12: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/12.jpg)
EJB
Mode embarqué
EJBContainer.createEJBContainer()
Context.lookup(...)
![Page 13: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/13.jpg)
Spring Framework
Runner
– Démarrer l'ApplicationContext
@RunWith
@Autowired
![Page 14: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/14.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/15.jpg)
JPA
Conteneur JPA
Persistence.createEntityManagerFactory(...) .createEntityManager()
![Page 16: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/16.jpg)
JMS
Conteneur autonome
new ActiveMQConnectionFactory("vm://localhost?broker.persistent=false"
);...
![Page 17: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/17.jpg)
HTTP / Servlet / JSP / ...
Conteneur autonome
new ServletTester()
new HttpTester()
![Page 18: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/18.jpg)
✔ EJB / OpenEJB
![Page 19: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/19.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/20.jpg)
EJB
CDI
Servlet
JSP
JSFJMS
JAX-RSJAX-WS JPA
JNDI
JavaEE
![Page 21: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/21.jpg)
JavaEE
ServletServlet
JPA
CDI
JSF
JAX-RS
BeanValidation
Tran
sact
ion
JMS
EJB
![Page 22: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/22.jpg)
Tester les composantspas les classes isolées
pas toute l'application
![Page 23: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/23.jpg)
gérer le conteneur dans les tests
Mettre les
tests dans le conteneur
plutôt que
![Page 24: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/24.jpg)
Structure d'un test
@RunWith(Arquillian.class)
@Deployment
@EJB, @Inject, @Resource
@Test
![Page 25: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/25.jpg)
✔ EJB / OpenEJB
![Page 26: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/26.jpg)
![Page 27: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/27.jpg)
Conteneurs
JavaEE
– JBoss AS,
– GlassFish,
– Websphere AS
Web
– Jetty,
– Tomcat
CDI
– Weld SE,
– Weld EE,
– OpenWebBeans
EJB
– Apache OpenEJB
![Page 28: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/28.jpg)
Conteneurs
ConteneurArquillian
JUnit
Test Case
ShrinkWrap
junit-container De
ploy
abl
eCon
tain
er
![Page 29: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/29.jpg)
Conteneurs
Classpath
Profil maven
![Page 30: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/30.jpg)
✔ EJB / Glassfish Embedded✔ CDI / Glassfish Embedded
✔ CDI / Weld SE
![Page 31: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/31.jpg)
Conteneurs
Remote
Managed
Embedded
![Page 32: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/32.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/33.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/34.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/35.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/36.jpg)
✔ EJB / JBoss AS 7 managed✔ EJB / JBoss AS 7 remote
![Page 37: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/37.jpg)
Shrinkwrap
ConteneurArquillian
JUnit
Test Case
ShrinkWrap
junit-container De
ploy
abl
eCon
tain
er
![Page 38: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/38.jpg)
Protocole Servlet
ShrinkWrap.create(WebArchive.class) .addClasses(...);
Web Archive
Arquillian Servlet
Test case
JUnit
Arquillian
![Page 39: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/39.jpg)
Protocole Servlet 3.0
ShrinkWrap.create(JavaArchive.class) .addClasses(...);
Web Archive
Arquillian Servlet
Test case
JUnit
Arquillian
![Page 40: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/40.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/41.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/42.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/43.jpg)
✔ EJB / deploymentExportPath
![Page 44: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/44.jpg)
as-client
Web, JAX-RS, JAX-WS,
RMI, EJB remote,...
Web Archive
Test case
JUnit
Arquillian
![Page 45: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/45.jpg)
as-client
URL baseURL ;
@Deploymentpublic static Archive createDeployment() { ... }
@Testprivate void shouldDoX() { ... }
@ArquillianResource(MyServlet.class)
(testable=false)
@RunAsClient
![Page 46: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/46.jpg)
✔ JAX-RS / JBoss AS 7 managed
![Page 47: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/47.jpg)
Arquillian
Test d'intégration
In-container
As-client
Multi-conteneurs
![Page 48: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/48.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/49.jpg)
Tests d'intégration
Arquillian
Cloud Computing
![Page 50: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/50.jpg)
![Page 51: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/51.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/52.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/53.jpg)
SaaS
Réseau
StockageMatériel
Virtualisation
Système d'exploitation
Base de données
Runtime / middleware
Application
![Page 54: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/54.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/55.jpg)
IaaS
Réseau
StockageMatériel
Virtualisation
Système d'exploitation
Base de données
Runtime / middleware
Application
![Page 56: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/56.jpg)
AmazonAWS
cf. http://media.amazonwebservices.com/AWS_Cloud_Best_Practices.pdf
![Page 57: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/57.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/58.jpg)
AmazonAWS
Gestion
– Console Web
– SDK / ligne de commande
![Page 59: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/59.jpg)
Amazon EC2✔ Web UI
✔ CLI
![Page 60: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/60.jpg)
PaaS
Niveaux de service
IaaSInfrastructure as a Service
PaaSPlatform as a Service
SaaSSoftware as a Service
![Page 61: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/61.jpg)
PaaS
Réseau
StockageMatériel
Virtualisation
Système d'exploitation
Base de données
Runtime / middleware
Application
![Page 62: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/62.jpg)
PaaS
![Page 63: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/63.jpg)
Cloubees
App Project
Deploy
DEV@cloud RUN@cloud
Elastic AppElastic App
Elastic AppSource Control
JenkinsBuild/Test
Push
![Page 64: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/64.jpg)
Cloubees
Dev@Cloud
Build
Test
Deploy
![Page 65: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/65.jpg)
1: push
2: build
3: checkout
![Page 66: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/66.jpg)
Cloubees
Run@Cloud
JVM
Applications Server
PaaS tools
![Page 68: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/68.jpg)
CloudBees✔ Web UI
✔ Java API
![Page 69: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/69.jpg)
Cloud
PaaSPlatform as a Service
SaaSSoftware as a Service
User
IaaSInfrastructure as a Service
Operations
Developer Integration
![Page 70: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/70.jpg)
Cloud
PaaS
SaaSSoftware as a Service
IaaS
![Page 71: JavaEE - Test & Deploy](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/71.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042601/5554b040b4c90502618b559e/html5/thumbnails/72.jpg)
Tests d'intégration
Arquillian
Cloud Computing