SlideShare a Scribd company logo
1 of 36
Download to read offline
EXTENSIONS, WHICH YOU HAVE TO TAKE WITH YOU TO A
DESERTED ISLAND
Michał Matłoka / @mmatloka
ABOUT ME
EXAMPLE SITUATION
Company with traditions
JPA
JSF
No tests

Kajtek
JBOSS ARQUILLIAN
Manages the lifecycle of the container (or containers)
Deploys archive (or archives) to the container (or
containers)
Executes the tests inside (or against) the container
Captures the results and returnes them to the test runner
for reporting
CONTAINER ADAPTERS
JBoss AS/WildFly
GlassFish
WebLogic
WebSphere
Jetty
Tomcat
OSGi
Resin
OpenShift
Cloudbees
...
CONTAINER TYPES
Embedded
Managed
Remote
JBOSS ARQUILLIAN
@uWt(rulincas
RnihAqila.ls)
pbi casSmTs {
ulc ls oeet
@elyet
Dpomn
pbi sai Acie? cetDpomn( {rtr ..}
ulc ttc rhv<> raeelyet)
eun .
@net
Ijc
piaeSmtigsmtig
rvt oehn oehn;
@et
Ts
pbi vi sol.( {
ulc od hud.)
..
.
}
}
SHRINKWRAP
Bundle the dependent classes and resources into an archive
Wbrhv wbrhv =SrnWa.raeWbrhv.ls)
eAcie eAcie
hikrpcet(eAciecas
.dCasUe.ls)
adls(srcas
.dAMnfsRsuc(mtAstISAC,"en.m";
adsaieteoreEpyse.NTNE basxl)
Wbrhv wbrhv =SrnWa.raeWbrhv.ls)
eAcie eAcie
hikrpcet(eAciecas
.dCassUe.ls,..
adlse(srcas .)
.dAMnfsRsuc(mtAstISAC,"en.m";
adsaieteoreEpyse.NTNE basxl)
Wbrhv wbrhv =SrnWa.raeWbrhv.ls)
eAcie eAcie
hikrpcet(eAciecas
.dPcaeUe.ls.ePcae)
adakg(srcasgtakg()
.dAMnfsRsuc(mtAstISAC,"en.m";
adsaieteoreEpyse.NTNE basxl)
SHRINKWRAP RESOLVER
Fl[ fls=Mvnrsle(
ie] ie
ae.eovr)
.eov(GAV)
rsle"::"
.ihrniiiy)
wtTastvt(
.sie)
aFl(;
Fl[ fls=Mvnrsle(
ie] ie
ae.eovr)
.odoFoFl(/aht/o.m"
laPmrmie"pt/opmxl)
.eov(GA)
rsle":"
.ihrniiiy)
wtTastvt(
.sie)
aFl(;
Fl[ fls=Mvnrsle(
ie] ie
ae.eovr)
.odoFoFl(/aht/o.m"
laPmrmie"pt/opmxl)
.motutmDpnece(
iprRnieeednis)
.eov(.ihrniiiy)
rsle)wtTastvt(
.sie)
aFl(;
Wbrhv wbrhv =SrnWa.raeMvnmotrcas
eAcie eAcie
hikrpcet(aeIpre.ls)
.odoFoFl(/aht/o.m"
laPmrmie"pt/opmxl)
.motulOtu(
iprBidupt)
.sWbrhv.ls)
a(eAciecas;
Wbrhv wbrhv =SrnWa
eAcie eAcie
hikrp
.raeEbdeGalIpre.ls)
cet(meddrdemotrcas
.oPoetietr(i)
frrjcDrcoydr
.motulOtu(
iprBidupt)
.sWbrhv.ls)
a(eAciecas;
SHRINKWRAP DESCRIPTORS
The goal is to provide most of the Java EE
deployment descriptors. Each descriptor
follows the same API style and allows to
manipulate all elements as the specification
describes.
SHRINKWRAP DESCRIPTORS - PERSISTENCE.XML

<essec>
pritne
<essec-ntnm=map>
pritneui ae"yp"
<rvdroghbraeebHbraeessec<poie>
poie>r.ient.j.ientPritne/rvdr
<t-aasuc>aa/ealD<jadt-ore
jadt-orejv:DfutS/t-aasuc>
<rpris
poete>
<rprynm=hbraedaet vle"r.ient.ilc.SLilc
poet ae"ient.ilc" au=oghbraedaetHQDae
<rprynm=hbraehmdlat"vle"raedo"
poet ae"ient.b2d.uo au=cet-rp>
<poet>/rpry<poete>
/rpry<poet>/rpris
<pritneui>
/essec-nt
<pritne
/essec>
SHRINKWRAP DESCRIPTORS - CODE
fnlPritneecitrpritne=Dsrpos
ia essecDsrpo essec
ecitr
.raePritneecitrcas
cet(essecDsrpo.ls)
.raeessecUi(
cetPritnent)
.ae"yp"
nm(map)
.rvdr"r.ient.j.ientPritne)
poie(oghbraeebHbraeessec"
.tDtSuc(jv:DfutS)
jaaaore"aa/ealD"
.eOCetPoete(
gtrraerpris)
.raerpry)nm(hbraedaet)
cetPoet(.ae"ient.ilc"
.au(oghbraedaetHQDaet)u(
vle"r.ient.ilc.SLilc".p)
.raerpry)nm(hbraehmdlat"
cetPoet(.ae"ient.b2d.uo)
.au(cet-rp)u(
vle"raedo".p)
.p)u(
u(.p)
ARQUILLIAN PERSISTENCE EXTENSION
Wrapping each test in the seperated transaction
Database seeding using: DBUnit (XML, XLS, YAML, JSON),
SQL scripts
DB state comparing with dataset at the end of the test
Eviction JPA second level cache between test method
invocation
ARQUILLIAN PERSISTENCE EXTENSION - EXAMPLE PART I
@et
Ts
@snDtSt"aaesuesyl)
Uigaae(dtst/sr.m"
@hudacDtSt"aaesepce-sr.m"
SolMthaae(dtst/xetduesyl)
pbi vi solCagUePswr( trw Ecpin{
ulc od hudhnesrasod) hos xeto
/ gvn
/ ie
fnlSrn epcePswr ="uiPak"
ia tig xetdasod
lbelci;
fnlUe ue =e.idUe.ls,2)
ia sr sr
mfn(srcas L;
/ we
/ hn
ue.ePswr(xetdasod;
srstasodepcePswr)
e.eg(sr;
mmreue)
/ te
/ hn
asrTa(srgtasod).sqaT(xetdasod;
sethtue.ePswr()iEuloepcePswr)
}
ARQUILLIAN PERSISTENCE EXTENSION - EXAMPLE PART II
ue:
sr
-i:1
d
frtae Jh
isnm: on
lsnm:Sih
atae mt
uenm:dod
srae ove
pswr:pswr
asod asod
-i:2
d
frtae Cak
isnm: lr
lsnm:Kn
atae et
uenm:spra
srae uemn
pswr:kytnt
asod rpoie
ARQUILLIAN DRONE
Integrates WebDriver with Arquillian
Interaction with deployments and containers provided by
Arquillian
Configuration kept in arquillian.xml
Compatible with WebDriver (Selenium 2), Selenium 1 and
Selenium Grids
ARQUILLIAN DRONE - EXAMPLE
@uWt(rulincas
RnihAqila.ls)
pbi casWbrvret{
ulc ls eDieTs
@elyettsal =fle
Dpomn(etbe
as)
pbi sai Wbrhv cetDpomn( ..
ulc ttc eAcie raeelyet) .
@rulineore
AqilaRsuc
ULcnetah
R otxPt;
@rn
Doe
Wbrvrdie;
eDie rvr
@et
Ts
pbi vi solNtoi( {
ulc od hudoLgn)
die.idlmn(yi(lgnomlgn).lc(;
rvrfnEeetB.d"oiFr:oi")cik)
..
.
}
}
ARQUILLIAN GRAPHENE
Extensions for WebDriver
PageObjects and PageFragments
AJAX support
ARQUILLIAN GRAPHENE - EXAMPLE PART I
@uWt(rulincas
RnihAqila.ls)
pbi casTsLgn{
ulc ls etoi
@rn
Doe
Wbrvrbosr
eDie rwe;
@ae
Pg
HmPg hmPg;
oeae oeae
@etepcs=Lgnaldxeto.ls)
Ts(xet
oiFieEcpincas
pbi vi tsLgnald){
ulc od etoiFie( }
hmPg.oi(nneitn" "sr)
oeaelgn"o-xset, ue";
}
}
ARQUILLIAN GRAPHENE - EXAMPLE PART II
pbi casHmPg {
ulc ls oeae
@idy"lgnfr"
FnB(.oi-om)
Lgnilglgnilg
oiDao oiDao;
@idy"sac"
FnB(.erh)
AtcmltCmoetfltxSac;
uoopeeopnn uleterh
pbi vi lgnSrn ue,Srn pswr)trw Lgnaldxeto {
ulc od oi(tig sr tig asod hos oiFieEcpin
lgnilgstsrue)
oiDao.eUe(sr;
lgnilgstasodpswr)
oiDao.ePswr(asod;
lgnilglgn)
oiDao.oi(;
}
..
.
}
ARQUILLIAN GRAPHENE - EXAMPLE PART III
pbi casLgnilg{
ulc ls oiDao
@idy
FnB
piaeWblmn ueNm;
rvt eEeet srae
@idyi ="oi"
FnB(d
lgn)
piaeWblmn lgnutn
rvt eEeet oiBto;
..
..
}
ARQUILLIAN GRAPHENE - AJAX
Gahn.atjx)utl)eeetwblmnOB)i(.
rpeewiAa(.ni(.lmn(eEeetry.s)
.s)nt)peet)
i(.o(.rsn(;
.nbe(;
eald)
.eetd)
slce(;
.iil(;
vsbe)
ARQUILLIAN WARP
Using Warp, you can initiate an HTTP request
using a client-side testing tool such as
WebDriver and, in the same request cycle,
execute in-container server-side tests
ARQUILLIAN WARP
Includes support for
JSF
JAX-RS (REST)
Spring MVC
ARQUILLIAN WARP - EXAMPLE PART I
@uWt(rulincas
RnihAqila.ls)
@apet
WrTs
@uACin
Rnslet
pbi casBscet{
ulc ls aiTs
@elyet
Dpomn
..
.
@rulineore
AqilaRsuc
ULcnetah
R otxPt;
@et
Ts
pbi vi sol..){
ulc od hud.(
Wr
ap
.ntaeAtvt)
iiit(ciiy
.bev(bevr
osreOsre)
.npc(npcin;
isetIseto)
}
}
ARQUILLIAN WARP - EXAMPLE PART II
@et
Ts
pbi vi solMkPoeRqet){
ulc od hudaerpreus(
Wr.ntaenwAtvt( {
apiiit(e ciiy)
@vrie
Oerd
pbi vi prom){
ulc od efr(
bosrnvgt(.ocnetah+"cr";
rwe.aiae)t(otxPt
/at)
}
}.ru(.bev(eus(.r(.nsih"cr")
)gop)osrerqet)ui)edWt(/at)
.npc(npcin;
isetiseto)
}
ARQUILLIAN WARP REST - EXAMPLEPART III - REST
Iseto iseto =nwIseto( {
npcin npcin
e npcin)
piaesai fnlln sraVrinI =1;
rvt ttc ia og eilesoUD
L
@rulineore
AqilaRsuc
piaeRsCnetrsCnet
rvt etotx etotx;

@feSrlt
Atreve
pbi vi tsGttcs){
ulc od eteSok(
asrTa(etotx.eHtRqet)gtehd).sqaT(tpehdGT;
sethtrsCnetgttpeus(.eMto()iEuloHtMto.E)
asrTa(etotx.eHtRsos(.eSauCd()iEuloRsos.t
sethtrsCnetgttpepne)gtttsoe).sqaT(epneSa
asrTa(etotx.eHtRsos(.eCnetye).sqaT(apiai
sethtrsCnetgttpepne)gtotnTp()iEulo"plcto
Ls ls =(it rsCnetgttpepne)gtniy)
it it
Ls) etotx.eHtRsos(.eEtt(;
asrTa(itsz()iEulo1;
sethtls.ie).sqaT()
}
}
ARQUILLIAN DROIDIUM
Includes container adapter
Device and emulator management
Can create AVD (Android Virtual Device)
Arquillian Droidium Web - Selenium integration
Arquillian Droidium Native - Selendroid integration
Can take screeshots
Early Alpha
ARQUILLIAN DROIDIUM - EXAMPLE
@uWt(rulincas
RnihAqila.ls)
@uACin
Rnslet
pbi casDoduWbetae{
ulc ls riimeTsCs
@elyet
Dpomn
@agtCnanr"bsa"
Tresotie(joss)
pbi sai Acie? gtelyet){
ulc ttc rhv<> eDpomn(
rtr SrnWa
eun hikrp
.raermiFl(eAciecas nwFl(so.a")
cetFoZpieWbrhv.ls, e ie"hpwr);
}
@et
Ts
@prtODpomn(joss)
Oeaenelyet"bsa"
pbi vi ts0(DoeAdodrvrdie,
ulc od et1@rn nriDie rvr
@rulineoreULdpomnUL {
AqilaRsuc R elyetR) L
die.e(elyetR.otig);
rvrgtdpomnULtSrn()
asrTu(rvrgtaeore)cnan(So")
setredie.ePgSuc(.otis"hp);
}
}
ARQUILLIAN DROIDIUM - EXAMPLE
@uWt(rulincas
RnihAqila.ls)
@uACin
Rnslet
pbi casDoduSlnriTsCs {
ulc ls riimeedodetae
@elyet
Dpomn
@ntuetbe
Isrmnal
pbi sai Acie? gtelyet){
ulc ttc rhv<> eDpomn(
rtr SrnWa
eun hikrp
.raermiFl(aarhv.ls,nwFl(so.p")
cetFoZpieJvAciecas e ie"hpak);
}
@et
Ts
pbi vi eape@rulineoreAdodeieadod
ulc od xml(AqilaRsuc nriDvc nri,
@rn Wbrvrdie){
Doe eDie rvr
adodgtciiyaaePoie(.eAtvtMngr)
nri.eAtvtMngrrvdr)gtciiyaae(
.trAtvt(cmso.oecenciiy)
satciiy"o.hpHmSreAtvt"
Wblmn bto =die
eEeet utn
rvr
.idlmn(yi(crBto")
fnEeetB.d"atutn);
.. }
.
}
ARQUILLIAN PERFORMANCE - EXAMPLE
@efracTs(eutTrsod2
Promneetrslshehl=)
/ cek i rslshehl *nwie<odie
/ hcs f eutTrsod
eTm
lTm
@uWt(rulincas
RnihAqila.ls)
pbi casRcmedtoBidnTs {
ulc ls eomnainuliget
@elyet
Dpomn
pbi sai JvAciecetDpomn( {
ulc ttc aarhv raeelyet)
rtr ..
eun .
}
@netRcmedtoSriercmedtoSrie
Ijc eomnainevc eomnainevc;
@et
Ts
@efrac(ie2)/ tmoti m
Promnetm=0 / ieu n s
pbi vi dHrWr( trw Ecpin{
ulc od oadok) hos xeto
..
.
}
}
OTHER EXTENSIONS
Extension Byteman
Google Guice Extension
GWT Testing extension
Extension Jacoco
Extension JRebel
screenRecorder
Spring Framework Extension
arquillian-ios-aggregator
arquillian-extension-qunit
Spock Arquillian Extension
ShrinkWrap DSL
TAKE AWAYS
ShrinkWrap - archives
ShrinkWrap Resolver - maven, gradle
ShrinkWrap Descriptors - fluent API code generation from
XSD
Arquillian Persistence Extension - DB
Arquillian Drone - WebDriver integration - UI
Arquillian Graphene - extended WebDriver - better UI
Arquillian Warp - client-side request, server-side test REST, Spring MVC...
Arquillian Droidium - Android Browser, Android UI
Arquillian Performance - timeouts, execution time
comparision
MATERIALS & HELP
http://arquillian.org
http://arquillian.org/guides/
https://docs.jboss.org/author/display/ARQ/Reference+Guide
https://github.com/arquillian/
https://github.com/shrinkwrap/
https://community.jboss.org/
http://jira.jboss.org/
irc.freenode.net - #arquillian, #jbosstesting
http://meninblack.wikia.com/
THE END
QUESTIONS?

mmatloka @ gmail.com
https://github.com/mmatloka/presentations

More Related Content

Viewers also liked

What is most important 
in cooperation with external software developers? Par...
What is most important 
in cooperation with external software developers? Par...What is most important 
in cooperation with external software developers? Par...
What is most important 
in cooperation with external software developers? Par...SoftwareMill
 
From spaghetti with no `src/test` to green CI and well-sleeping developers
From spaghetti with no `src/test` to green CI and well-sleeping developersFrom spaghetti with no `src/test` to green CI and well-sleeping developers
From spaghetti with no `src/test` to green CI and well-sleeping developersSoftwareMill
 
Jednorożce to kobiety a nie firmy. O √kobiecym w STEM
Jednorożce to kobiety a nie firmy. O √kobiecym w STEMJednorożce to kobiety a nie firmy. O √kobiecym w STEM
Jednorożce to kobiety a nie firmy. O √kobiecym w STEMSoftwareMill
 
Scalatra - Scalar Mini
Scalatra  - Scalar MiniScalatra  - Scalar Mini
Scalatra - Scalar MiniSoftwareMill
 
3 kroki do sukcesu płaskiej i zdalnej firmy | SoftwareMill
3 kroki do sukcesu płaskiej i zdalnej firmy | SoftwareMill3 kroki do sukcesu płaskiej i zdalnej firmy | SoftwareMill
3 kroki do sukcesu płaskiej i zdalnej firmy | SoftwareMillSoftwareMill
 
An Introduction to Akka
An Introduction to AkkaAn Introduction to Akka
An Introduction to AkkaSoftwareMill
 
Small intro to Big Data - Old version
Small intro to Big Data - Old versionSmall intro to Big Data - Old version
Small intro to Big Data - Old versionSoftwareMill
 
Open source big data landscape and possible ITS applications
Open source big data landscape and possible ITS applicationsOpen source big data landscape and possible ITS applications
Open source big data landscape and possible ITS applicationsSoftwareMill
 
Projekt z punktu widzenia UX designera
Projekt z punktu widzenia UX designeraProjekt z punktu widzenia UX designera
Projekt z punktu widzenia UX designeraSoftwareMill
 
Machine learning by example
Machine learning by exampleMachine learning by example
Machine learning by exampleSoftwareMill
 
Hybrid-Active-Optical-Cable-White-Paper
Hybrid-Active-Optical-Cable-White-PaperHybrid-Active-Optical-Cable-White-Paper
Hybrid-Active-Optical-Cable-White-PaperNguyen Nguyen
 
Lean Translation -
Lean Translation - Lean Translation -
Lean Translation - PhraseApp
 
Yo mama jokes? | Yahoo Answers
Yo mama jokes? | Yahoo AnswersYo mama jokes? | Yahoo Answers
Yo mama jokes? | Yahoo Answerseconomicmystery85
 
Nevi cpd missie visie en strategie v1.0
Nevi cpd missie visie en strategie v1.0Nevi cpd missie visie en strategie v1.0
Nevi cpd missie visie en strategie v1.0John van Veen
 

Viewers also liked (18)

What is most important 
in cooperation with external software developers? Par...
What is most important 
in cooperation with external software developers? Par...What is most important 
in cooperation with external software developers? Par...
What is most important 
in cooperation with external software developers? Par...
 
From spaghetti with no `src/test` to green CI and well-sleeping developers
From spaghetti with no `src/test` to green CI and well-sleeping developersFrom spaghetti with no `src/test` to green CI and well-sleeping developers
From spaghetti with no `src/test` to green CI and well-sleeping developers
 
Jednorożce to kobiety a nie firmy. O √kobiecym w STEM
Jednorożce to kobiety a nie firmy. O √kobiecym w STEMJednorożce to kobiety a nie firmy. O √kobiecym w STEM
Jednorożce to kobiety a nie firmy. O √kobiecym w STEM
 
Scalatra - Scalar Mini
Scalatra  - Scalar MiniScalatra  - Scalar Mini
Scalatra - Scalar Mini
 
3 kroki do sukcesu płaskiej i zdalnej firmy | SoftwareMill
3 kroki do sukcesu płaskiej i zdalnej firmy | SoftwareMill3 kroki do sukcesu płaskiej i zdalnej firmy | SoftwareMill
3 kroki do sukcesu płaskiej i zdalnej firmy | SoftwareMill
 
An Introduction to Akka
An Introduction to AkkaAn Introduction to Akka
An Introduction to Akka
 
Small intro to Big Data - Old version
Small intro to Big Data - Old versionSmall intro to Big Data - Old version
Small intro to Big Data - Old version
 
Origins of free
Origins of freeOrigins of free
Origins of free
 
Open source big data landscape and possible ITS applications
Open source big data landscape and possible ITS applicationsOpen source big data landscape and possible ITS applications
Open source big data landscape and possible ITS applications
 
Projekt z punktu widzenia UX designera
Projekt z punktu widzenia UX designeraProjekt z punktu widzenia UX designera
Projekt z punktu widzenia UX designera
 
Machine learning by example
Machine learning by exampleMachine learning by example
Machine learning by example
 
Hybrid-Active-Optical-Cable-White-Paper
Hybrid-Active-Optical-Cable-White-PaperHybrid-Active-Optical-Cable-White-Paper
Hybrid-Active-Optical-Cable-White-Paper
 
Lean Translation -
Lean Translation - Lean Translation -
Lean Translation -
 
Yo mama jokes? | Yahoo Answers
Yo mama jokes? | Yahoo AnswersYo mama jokes? | Yahoo Answers
Yo mama jokes? | Yahoo Answers
 
Chapter 7
Chapter 7Chapter 7
Chapter 7
 
Thainara historia
Thainara historiaThainara historia
Thainara historia
 
Nevi cpd missie visie en strategie v1.0
Nevi cpd missie visie en strategie v1.0Nevi cpd missie visie en strategie v1.0
Nevi cpd missie visie en strategie v1.0
 
2
22
2
 

Similar to Arquillian - extensions which you have to take with you to a deserted island

Nginx Scripting - Extending Nginx Functionalities with Lua
Nginx Scripting - Extending Nginx Functionalities with LuaNginx Scripting - Extending Nginx Functionalities with Lua
Nginx Scripting - Extending Nginx Functionalities with LuaTony Fabeen
 
Devinsampa nginx-scripting
Devinsampa nginx-scriptingDevinsampa nginx-scripting
Devinsampa nginx-scriptingTony Fabeen
 
SecureSocial - Authentication for Play Framework
SecureSocial - Authentication for Play FrameworkSecureSocial - Authentication for Play Framework
SecureSocial - Authentication for Play Frameworkjaliss
 
Microservices With Spring Boot and Spring Cloud Netflix
Microservices With Spring Boot and Spring Cloud NetflixMicroservices With Spring Boot and Spring Cloud Netflix
Microservices With Spring Boot and Spring Cloud NetflixKrzysztof Sobkowiak
 
An Introduction to CSS Preprocessors
An Introduction to CSS PreprocessorsAn Introduction to CSS Preprocessors
An Introduction to CSS PreprocessorsMiloš Sutanovac
 
C* Summit EU 2013: The State of CQL
C* Summit EU 2013: The State of CQLC* Summit EU 2013: The State of CQL
C* Summit EU 2013: The State of CQLDataStax Academy
 
Refactoring to symfony components
Refactoring to symfony componentsRefactoring to symfony components
Refactoring to symfony componentsMichael Peacock
 
GeeCON 2013 - EJB application guided by tests
GeeCON 2013 - EJB application guided by testsGeeCON 2013 - EJB application guided by tests
GeeCON 2013 - EJB application guided by testsJakub Marchwicki
 
Creating windows store java script apps
Creating windows store java script appsCreating windows store java script apps
Creating windows store java script appsEugene Zharkov
 
20110114 Next Generation Sequencing Course
20110114 Next Generation Sequencing Course20110114 Next Generation Sequencing Course
20110114 Next Generation Sequencing CoursePierre Lindenbaum
 
Automated tests - facts and myths
Automated tests - facts and mythsAutomated tests - facts and myths
Automated tests - facts and mythsWojciech Sznapka
 
JavaScript Design Patterns
JavaScript Design PatternsJavaScript Design Patterns
JavaScript Design PatternsDerek Brown
 
Jersey framework
Jersey frameworkJersey framework
Jersey frameworkknight1128
 
Beginner workshop to angularjs presentation at Google
Beginner workshop to angularjs presentation at GoogleBeginner workshop to angularjs presentation at Google
Beginner workshop to angularjs presentation at GoogleAri Lerner
 

Similar to Arquillian - extensions which you have to take with you to a deserted island (20)

Hazelcast - In-Memory DataGrid
Hazelcast - In-Memory DataGridHazelcast - In-Memory DataGrid
Hazelcast - In-Memory DataGrid
 
JavaFX, because you're worth it
JavaFX, because you're worth itJavaFX, because you're worth it
JavaFX, because you're worth it
 
Nginx Scripting - Extending Nginx Functionalities with Lua
Nginx Scripting - Extending Nginx Functionalities with LuaNginx Scripting - Extending Nginx Functionalities with Lua
Nginx Scripting - Extending Nginx Functionalities with Lua
 
Devinsampa nginx-scripting
Devinsampa nginx-scriptingDevinsampa nginx-scripting
Devinsampa nginx-scripting
 
SecureSocial - Authentication for Play Framework
SecureSocial - Authentication for Play FrameworkSecureSocial - Authentication for Play Framework
SecureSocial - Authentication for Play Framework
 
Microservices With Spring Boot and Spring Cloud Netflix
Microservices With Spring Boot and Spring Cloud NetflixMicroservices With Spring Boot and Spring Cloud Netflix
Microservices With Spring Boot and Spring Cloud Netflix
 
Javascript: The Important Bits
Javascript: The Important BitsJavascript: The Important Bits
Javascript: The Important Bits
 
Advancedservletsjsp
AdvancedservletsjspAdvancedservletsjsp
Advancedservletsjsp
 
An Introduction to CSS Preprocessors
An Introduction to CSS PreprocessorsAn Introduction to CSS Preprocessors
An Introduction to CSS Preprocessors
 
C* Summit EU 2013: The State of CQL
C* Summit EU 2013: The State of CQLC* Summit EU 2013: The State of CQL
C* Summit EU 2013: The State of CQL
 
Refactoring to symfony components
Refactoring to symfony componentsRefactoring to symfony components
Refactoring to symfony components
 
GeeCON 2013 - EJB application guided by tests
GeeCON 2013 - EJB application guided by testsGeeCON 2013 - EJB application guided by tests
GeeCON 2013 - EJB application guided by tests
 
Creating windows store java script apps
Creating windows store java script appsCreating windows store java script apps
Creating windows store java script apps
 
OOP in Rust
OOP in RustOOP in Rust
OOP in Rust
 
20110114 Next Generation Sequencing Course
20110114 Next Generation Sequencing Course20110114 Next Generation Sequencing Course
20110114 Next Generation Sequencing Course
 
Automated tests - facts and myths
Automated tests - facts and mythsAutomated tests - facts and myths
Automated tests - facts and myths
 
JavaScript Design Patterns
JavaScript Design PatternsJavaScript Design Patterns
JavaScript Design Patterns
 
Jersey framework
Jersey frameworkJersey framework
Jersey framework
 
Beginner workshop to angularjs presentation at Google
Beginner workshop to angularjs presentation at GoogleBeginner workshop to angularjs presentation at Google
Beginner workshop to angularjs presentation at Google
 
java_notes.pdf
java_notes.pdfjava_notes.pdf
java_notes.pdf
 

More from SoftwareMill

Growing Oxen: channel operators and retries
Growing Oxen: channel operators and retriesGrowing Oxen: channel operators and retries
Growing Oxen: channel operators and retriesSoftwareMill
 
How To Survive a Live-Coding Session
How To Survive a Live-Coding SessionHow To Survive a Live-Coding Session
How To Survive a Live-Coding SessionSoftwareMill
 
Goryle i ser szwajcarski. Czego medycyna ratunkowa może Cię nauczyć o tworzen...
Goryle i ser szwajcarski. Czego medycyna ratunkowa może Cię nauczyć o tworzen...Goryle i ser szwajcarski. Czego medycyna ratunkowa może Cię nauczyć o tworzen...
Goryle i ser szwajcarski. Czego medycyna ratunkowa może Cię nauczyć o tworzen...SoftwareMill
 
Have you ever wondered about code review?
Have you ever wondered about code review?Have you ever wondered about code review?
Have you ever wondered about code review?SoftwareMill
 
Reactive Integration with Akka Streams and Alpakka
Reactive Integration with Akka Streams and AlpakkaReactive Integration with Akka Streams and Alpakka
Reactive Integration with Akka Streams and AlpakkaSoftwareMill
 
W świecie botów czyli po co nam SI
W świecie botów czyli po co nam SIW świecie botów czyli po co nam SI
W świecie botów czyli po co nam SISoftwareMill
 
Small intro to Big Data
Small intro to Big DataSmall intro to Big Data
Small intro to Big DataSoftwareMill
 
Out-of-the-box Reactive Streams with Java 9
Out-of-the-box Reactive Streams with Java 9Out-of-the-box Reactive Streams with Java 9
Out-of-the-box Reactive Streams with Java 9SoftwareMill
 
Hiring, Bots and Beer. (Hiring in the IT industry)
Hiring, Bots and Beer. (Hiring in the IT industry) Hiring, Bots and Beer. (Hiring in the IT industry)
Hiring, Bots and Beer. (Hiring in the IT industry) SoftwareMill
 
Teal Is The New Black
Teal Is The New BlackTeal Is The New Black
Teal Is The New BlackSoftwareMill
 
Windowing data in big data streams
Windowing data in big data streamsWindowing data in big data streams
Windowing data in big data streamsSoftwareMill
 
Kafka as a message queue
Kafka as a message queueKafka as a message queue
Kafka as a message queueSoftwareMill
 
Introduction to Cassandra
Introduction to CassandraIntroduction to Cassandra
Introduction to CassandraSoftwareMill
 
Cassandra - how to fail?
Cassandra - how to fail?Cassandra - how to fail?
Cassandra - how to fail?SoftwareMill
 
How to manage in a flat organized, remote and transparent company
How to manage in a flat organized, remote and transparent companyHow to manage in a flat organized, remote and transparent company
How to manage in a flat organized, remote and transparent companySoftwareMill
 
Performance tests with gatling
Performance tests with gatlingPerformance tests with gatling
Performance tests with gatlingSoftwareMill
 

More from SoftwareMill (17)

Growing Oxen: channel operators and retries
Growing Oxen: channel operators and retriesGrowing Oxen: channel operators and retries
Growing Oxen: channel operators and retries
 
How To Survive a Live-Coding Session
How To Survive a Live-Coding SessionHow To Survive a Live-Coding Session
How To Survive a Live-Coding Session
 
Goryle i ser szwajcarski. Czego medycyna ratunkowa może Cię nauczyć o tworzen...
Goryle i ser szwajcarski. Czego medycyna ratunkowa może Cię nauczyć o tworzen...Goryle i ser szwajcarski. Czego medycyna ratunkowa może Cię nauczyć o tworzen...
Goryle i ser szwajcarski. Czego medycyna ratunkowa może Cię nauczyć o tworzen...
 
Have you ever wondered about code review?
Have you ever wondered about code review?Have you ever wondered about code review?
Have you ever wondered about code review?
 
Reactive Integration with Akka Streams and Alpakka
Reactive Integration with Akka Streams and AlpakkaReactive Integration with Akka Streams and Alpakka
Reactive Integration with Akka Streams and Alpakka
 
W świecie botów czyli po co nam SI
W świecie botów czyli po co nam SIW świecie botów czyli po co nam SI
W świecie botów czyli po co nam SI
 
Small intro to Big Data
Small intro to Big DataSmall intro to Big Data
Small intro to Big Data
 
Out-of-the-box Reactive Streams with Java 9
Out-of-the-box Reactive Streams with Java 9Out-of-the-box Reactive Streams with Java 9
Out-of-the-box Reactive Streams with Java 9
 
Hiring, Bots and Beer. (Hiring in the IT industry)
Hiring, Bots and Beer. (Hiring in the IT industry) Hiring, Bots and Beer. (Hiring in the IT industry)
Hiring, Bots and Beer. (Hiring in the IT industry)
 
Teal Is The New Black
Teal Is The New BlackTeal Is The New Black
Teal Is The New Black
 
Windowing data in big data streams
Windowing data in big data streamsWindowing data in big data streams
Windowing data in big data streams
 
Kafka as a message queue
Kafka as a message queueKafka as a message queue
Kafka as a message queue
 
Introduction to Cassandra
Introduction to CassandraIntroduction to Cassandra
Introduction to Cassandra
 
Origins of Free
Origins of FreeOrigins of Free
Origins of Free
 
Cassandra - how to fail?
Cassandra - how to fail?Cassandra - how to fail?
Cassandra - how to fail?
 
How to manage in a flat organized, remote and transparent company
How to manage in a flat organized, remote and transparent companyHow to manage in a flat organized, remote and transparent company
How to manage in a flat organized, remote and transparent company
 
Performance tests with gatling
Performance tests with gatlingPerformance tests with gatling
Performance tests with gatling
 

Recently uploaded

costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 

Recently uploaded (20)

costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 

Arquillian - extensions which you have to take with you to a deserted island

  • 1. EXTENSIONS, WHICH YOU HAVE TO TAKE WITH YOU TO A DESERTED ISLAND Michał Matłoka / @mmatloka
  • 3. EXAMPLE SITUATION Company with traditions JPA JSF No tests Kajtek
  • 4. JBOSS ARQUILLIAN Manages the lifecycle of the container (or containers) Deploys archive (or archives) to the container (or containers) Executes the tests inside (or against) the container Captures the results and returnes them to the test runner for reporting
  • 7. JBOSS ARQUILLIAN @uWt(rulincas RnihAqila.ls) pbi casSmTs { ulc ls oeet @elyet Dpomn pbi sai Acie? cetDpomn( {rtr ..} ulc ttc rhv<> raeelyet) eun . @net Ijc piaeSmtigsmtig rvt oehn oehn; @et Ts pbi vi sol.( { ulc od hud.) .. . } }
  • 8. SHRINKWRAP Bundle the dependent classes and resources into an archive Wbrhv wbrhv =SrnWa.raeWbrhv.ls) eAcie eAcie hikrpcet(eAciecas .dCasUe.ls) adls(srcas .dAMnfsRsuc(mtAstISAC,"en.m"; adsaieteoreEpyse.NTNE basxl) Wbrhv wbrhv =SrnWa.raeWbrhv.ls) eAcie eAcie hikrpcet(eAciecas .dCassUe.ls,.. adlse(srcas .) .dAMnfsRsuc(mtAstISAC,"en.m"; adsaieteoreEpyse.NTNE basxl) Wbrhv wbrhv =SrnWa.raeWbrhv.ls) eAcie eAcie hikrpcet(eAciecas .dPcaeUe.ls.ePcae) adakg(srcasgtakg() .dAMnfsRsuc(mtAstISAC,"en.m"; adsaieteoreEpyse.NTNE basxl)
  • 9. SHRINKWRAP RESOLVER Fl[ fls=Mvnrsle( ie] ie ae.eovr) .eov(GAV) rsle"::" .ihrniiiy) wtTastvt( .sie) aFl(; Fl[ fls=Mvnrsle( ie] ie ae.eovr) .odoFoFl(/aht/o.m" laPmrmie"pt/opmxl) .eov(GA) rsle":" .ihrniiiy) wtTastvt( .sie) aFl(; Fl[ fls=Mvnrsle( ie] ie ae.eovr) .odoFoFl(/aht/o.m" laPmrmie"pt/opmxl) .motutmDpnece( iprRnieeednis) .eov(.ihrniiiy) rsle)wtTastvt( .sie) aFl(; Wbrhv wbrhv =SrnWa.raeMvnmotrcas eAcie eAcie hikrpcet(aeIpre.ls) .odoFoFl(/aht/o.m" laPmrmie"pt/opmxl) .motulOtu( iprBidupt) .sWbrhv.ls) a(eAciecas; Wbrhv wbrhv =SrnWa eAcie eAcie hikrp .raeEbdeGalIpre.ls) cet(meddrdemotrcas .oPoetietr(i) frrjcDrcoydr .motulOtu( iprBidupt) .sWbrhv.ls) a(eAciecas;
  • 10. SHRINKWRAP DESCRIPTORS The goal is to provide most of the Java EE deployment descriptors. Each descriptor follows the same API style and allows to manipulate all elements as the specification describes.
  • 11. SHRINKWRAP DESCRIPTORS - PERSISTENCE.XML <essec> pritne <essec-ntnm=map> pritneui ae"yp" <rvdroghbraeebHbraeessec<poie> poie>r.ient.j.ientPritne/rvdr <t-aasuc>aa/ealD<jadt-ore jadt-orejv:DfutS/t-aasuc> <rpris poete> <rprynm=hbraedaet vle"r.ient.ilc.SLilc poet ae"ient.ilc" au=oghbraedaetHQDae <rprynm=hbraehmdlat"vle"raedo" poet ae"ient.b2d.uo au=cet-rp> <poet>/rpry<poete> /rpry<poet>/rpris <pritneui> /essec-nt <pritne /essec>
  • 12. SHRINKWRAP DESCRIPTORS - CODE fnlPritneecitrpritne=Dsrpos ia essecDsrpo essec ecitr .raePritneecitrcas cet(essecDsrpo.ls) .raeessecUi( cetPritnent) .ae"yp" nm(map) .rvdr"r.ient.j.ientPritne) poie(oghbraeebHbraeessec" .tDtSuc(jv:DfutS) jaaaore"aa/ealD" .eOCetPoete( gtrraerpris) .raerpry)nm(hbraedaet) cetPoet(.ae"ient.ilc" .au(oghbraedaetHQDaet)u( vle"r.ient.ilc.SLilc".p) .raerpry)nm(hbraehmdlat" cetPoet(.ae"ient.b2d.uo) .au(cet-rp)u( vle"raedo".p) .p)u( u(.p)
  • 13. ARQUILLIAN PERSISTENCE EXTENSION Wrapping each test in the seperated transaction Database seeding using: DBUnit (XML, XLS, YAML, JSON), SQL scripts DB state comparing with dataset at the end of the test Eviction JPA second level cache between test method invocation
  • 14. ARQUILLIAN PERSISTENCE EXTENSION - EXAMPLE PART I @et Ts @snDtSt"aaesuesyl) Uigaae(dtst/sr.m" @hudacDtSt"aaesepce-sr.m" SolMthaae(dtst/xetduesyl) pbi vi solCagUePswr( trw Ecpin{ ulc od hudhnesrasod) hos xeto / gvn / ie fnlSrn epcePswr ="uiPak" ia tig xetdasod lbelci; fnlUe ue =e.idUe.ls,2) ia sr sr mfn(srcas L; / we / hn ue.ePswr(xetdasod; srstasodepcePswr) e.eg(sr; mmreue) / te / hn asrTa(srgtasod).sqaT(xetdasod; sethtue.ePswr()iEuloepcePswr) }
  • 15. ARQUILLIAN PERSISTENCE EXTENSION - EXAMPLE PART II ue: sr -i:1 d frtae Jh isnm: on lsnm:Sih atae mt uenm:dod srae ove pswr:pswr asod asod -i:2 d frtae Cak isnm: lr lsnm:Kn atae et uenm:spra srae uemn pswr:kytnt asod rpoie
  • 16. ARQUILLIAN DRONE Integrates WebDriver with Arquillian Interaction with deployments and containers provided by Arquillian Configuration kept in arquillian.xml Compatible with WebDriver (Selenium 2), Selenium 1 and Selenium Grids
  • 17. ARQUILLIAN DRONE - EXAMPLE @uWt(rulincas RnihAqila.ls) pbi casWbrvret{ ulc ls eDieTs @elyettsal =fle Dpomn(etbe as) pbi sai Wbrhv cetDpomn( .. ulc ttc eAcie raeelyet) . @rulineore AqilaRsuc ULcnetah R otxPt; @rn Doe Wbrvrdie; eDie rvr @et Ts pbi vi solNtoi( { ulc od hudoLgn) die.idlmn(yi(lgnomlgn).lc(; rvrfnEeetB.d"oiFr:oi")cik) .. . } }
  • 18. ARQUILLIAN GRAPHENE Extensions for WebDriver PageObjects and PageFragments AJAX support
  • 19. ARQUILLIAN GRAPHENE - EXAMPLE PART I @uWt(rulincas RnihAqila.ls) pbi casTsLgn{ ulc ls etoi @rn Doe Wbrvrbosr eDie rwe; @ae Pg HmPg hmPg; oeae oeae @etepcs=Lgnaldxeto.ls) Ts(xet oiFieEcpincas pbi vi tsLgnald){ ulc od etoiFie( } hmPg.oi(nneitn" "sr) oeaelgn"o-xset, ue"; } }
  • 20. ARQUILLIAN GRAPHENE - EXAMPLE PART II pbi casHmPg { ulc ls oeae @idy"lgnfr" FnB(.oi-om) Lgnilglgnilg oiDao oiDao; @idy"sac" FnB(.erh) AtcmltCmoetfltxSac; uoopeeopnn uleterh pbi vi lgnSrn ue,Srn pswr)trw Lgnaldxeto { ulc od oi(tig sr tig asod hos oiFieEcpin lgnilgstsrue) oiDao.eUe(sr; lgnilgstasodpswr) oiDao.ePswr(asod; lgnilglgn) oiDao.oi(; } .. . }
  • 21. ARQUILLIAN GRAPHENE - EXAMPLE PART III pbi casLgnilg{ ulc ls oiDao @idy FnB piaeWblmn ueNm; rvt eEeet srae @idyi ="oi" FnB(d lgn) piaeWblmn lgnutn rvt eEeet oiBto; .. .. }
  • 22. ARQUILLIAN GRAPHENE - AJAX Gahn.atjx)utl)eeetwblmnOB)i(. rpeewiAa(.ni(.lmn(eEeetry.s) .s)nt)peet) i(.o(.rsn(; .nbe(; eald) .eetd) slce(; .iil(; vsbe)
  • 23. ARQUILLIAN WARP Using Warp, you can initiate an HTTP request using a client-side testing tool such as WebDriver and, in the same request cycle, execute in-container server-side tests
  • 24. ARQUILLIAN WARP Includes support for JSF JAX-RS (REST) Spring MVC
  • 25. ARQUILLIAN WARP - EXAMPLE PART I @uWt(rulincas RnihAqila.ls) @apet WrTs @uACin Rnslet pbi casBscet{ ulc ls aiTs @elyet Dpomn .. . @rulineore AqilaRsuc ULcnetah R otxPt; @et Ts pbi vi sol..){ ulc od hud.( Wr ap .ntaeAtvt) iiit(ciiy .bev(bevr osreOsre) .npc(npcin; isetIseto) } }
  • 26. ARQUILLIAN WARP - EXAMPLE PART II @et Ts pbi vi solMkPoeRqet){ ulc od hudaerpreus( Wr.ntaenwAtvt( { apiiit(e ciiy) @vrie Oerd pbi vi prom){ ulc od efr( bosrnvgt(.ocnetah+"cr"; rwe.aiae)t(otxPt /at) } }.ru(.bev(eus(.r(.nsih"cr") )gop)osrerqet)ui)edWt(/at) .npc(npcin; isetiseto) }
  • 27. ARQUILLIAN WARP REST - EXAMPLEPART III - REST Iseto iseto =nwIseto( { npcin npcin e npcin) piaesai fnlln sraVrinI =1; rvt ttc ia og eilesoUD L @rulineore AqilaRsuc piaeRsCnetrsCnet rvt etotx etotx; @feSrlt Atreve pbi vi tsGttcs){ ulc od eteSok( asrTa(etotx.eHtRqet)gtehd).sqaT(tpehdGT; sethtrsCnetgttpeus(.eMto()iEuloHtMto.E) asrTa(etotx.eHtRsos(.eSauCd()iEuloRsos.t sethtrsCnetgttpepne)gtttsoe).sqaT(epneSa asrTa(etotx.eHtRsos(.eCnetye).sqaT(apiai sethtrsCnetgttpepne)gtotnTp()iEulo"plcto Ls ls =(it rsCnetgttpepne)gtniy) it it Ls) etotx.eHtRsos(.eEtt(; asrTa(itsz()iEulo1; sethtls.ie).sqaT() } }
  • 28. ARQUILLIAN DROIDIUM Includes container adapter Device and emulator management Can create AVD (Android Virtual Device) Arquillian Droidium Web - Selenium integration Arquillian Droidium Native - Selendroid integration Can take screeshots Early Alpha
  • 29. ARQUILLIAN DROIDIUM - EXAMPLE @uWt(rulincas RnihAqila.ls) @uACin Rnslet pbi casDoduWbetae{ ulc ls riimeTsCs @elyet Dpomn @agtCnanr"bsa" Tresotie(joss) pbi sai Acie? gtelyet){ ulc ttc rhv<> eDpomn( rtr SrnWa eun hikrp .raermiFl(eAciecas nwFl(so.a") cetFoZpieWbrhv.ls, e ie"hpwr); } @et Ts @prtODpomn(joss) Oeaenelyet"bsa" pbi vi ts0(DoeAdodrvrdie, ulc od et1@rn nriDie rvr @rulineoreULdpomnUL { AqilaRsuc R elyetR) L die.e(elyetR.otig); rvrgtdpomnULtSrn() asrTu(rvrgtaeore)cnan(So") setredie.ePgSuc(.otis"hp); } }
  • 30. ARQUILLIAN DROIDIUM - EXAMPLE @uWt(rulincas RnihAqila.ls) @uACin Rnslet pbi casDoduSlnriTsCs { ulc ls riimeedodetae @elyet Dpomn @ntuetbe Isrmnal pbi sai Acie? gtelyet){ ulc ttc rhv<> eDpomn( rtr SrnWa eun hikrp .raermiFl(aarhv.ls,nwFl(so.p") cetFoZpieJvAciecas e ie"hpak); } @et Ts pbi vi eape@rulineoreAdodeieadod ulc od xml(AqilaRsuc nriDvc nri, @rn Wbrvrdie){ Doe eDie rvr adodgtciiyaaePoie(.eAtvtMngr) nri.eAtvtMngrrvdr)gtciiyaae( .trAtvt(cmso.oecenciiy) satciiy"o.hpHmSreAtvt" Wblmn bto =die eEeet utn rvr .idlmn(yi(crBto") fnEeetB.d"atutn); .. } . }
  • 31. ARQUILLIAN PERFORMANCE - EXAMPLE @efracTs(eutTrsod2 Promneetrslshehl=) / cek i rslshehl *nwie<odie / hcs f eutTrsod eTm lTm @uWt(rulincas RnihAqila.ls) pbi casRcmedtoBidnTs { ulc ls eomnainuliget @elyet Dpomn pbi sai JvAciecetDpomn( { ulc ttc aarhv raeelyet) rtr .. eun . } @netRcmedtoSriercmedtoSrie Ijc eomnainevc eomnainevc; @et Ts @efrac(ie2)/ tmoti m Promnetm=0 / ieu n s pbi vi dHrWr( trw Ecpin{ ulc od oadok) hos xeto .. . } }
  • 32. OTHER EXTENSIONS Extension Byteman Google Guice Extension GWT Testing extension Extension Jacoco Extension JRebel screenRecorder Spring Framework Extension arquillian-ios-aggregator arquillian-extension-qunit Spock Arquillian Extension ShrinkWrap DSL
  • 33. TAKE AWAYS ShrinkWrap - archives ShrinkWrap Resolver - maven, gradle ShrinkWrap Descriptors - fluent API code generation from XSD Arquillian Persistence Extension - DB Arquillian Drone - WebDriver integration - UI Arquillian Graphene - extended WebDriver - better UI Arquillian Warp - client-side request, server-side test REST, Spring MVC... Arquillian Droidium - Android Browser, Android UI Arquillian Performance - timeouts, execution time comparision
  • 36. THE END QUESTIONS? mmatloka @ gmail.com https://github.com/mmatloka/presentations