SlideShare a Scribd company logo
1 of 163
Download to read offline
www.d4science.euD4Science-II project |
14  September  2011  
Sophia  Antipolis  (France)
8th  TCOM  Meeting
BDM-USTRATH
Fabio Simeoni
introducing  my-container

in-‐‑‒container  testing  for  gCube  Services
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
about
!2
www.d4science.eu
for two main use cases.
14 September 2011, Sophia Antipolis (France)
introducing my-container
about
!2
new tools to test services
www.d4science.eu
write
debug
14 September 2011, Sophia Antipolis (France)
introducing my-container
about
!2
during coding sessions
manual, interactive.
www.d4science.eu
nightly
pre−commit
14 September 2011, Sophia Antipolis (France)
introducing my-container
about
!2
during build processes
automated, batch.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
outline
!3
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
outline
!3
testing and us
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
outline
!3
testing and us
how we do it today
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
outline
!3
testing and us
how we do it today
how we could be doing it
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
outline
!3
testing and us
how we do it today
how we could be doing it
our work
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
outline
!3
testing and us
how we do it today
how we could be doing it
our work
...see also MyContainer.pdf
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
impressions
!4
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
impressions
!4
we don’t test enough much
do we	
  ?
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
impressions
!4
we don’t test enough much
whatever the scope
do we	
  ?
unit, integration, system.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
impressions
!4
we don’t test enough much
whatever the style
whatever the scope
do we	
  ?
unit, integration, system.
classic or TDD.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
impressions
!4
we don’t test enough much
despite strong evidence
whatever the style
whatever the scope
do we	
  ?
unit, integration, system.
classic or TDD.
10 years of it	
  ?
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
impressions
!4
we don’t test enough much
whatever we do, it’s not automated
way off modern CI practices.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
impressions
!4
we don’t test enough much
whatever we do, it’s not automated
we’re years behind here.
way off modern CI practices.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
unit  testing
!5
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
unit  testing
!5
unit testing
why so little	
  ?
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
unit  testing
!5
unit testing
why so little	
  ?
blame partly on technologies
including gCore.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
unit  testing
!5
unit testing
why so little	
  ?
blame partly on technologies
including gCore.
could overcome in design
but haven’t.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
unit  testing
!5
unit testing
why so little	
  ?
blame partly on technologies
including gCore.
could overcome in design
but haven’t.
we’re still to acknowledge value
pursuing requires “education”.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
in-‐‑‒container  testing
!6
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
in-‐‑‒container  testing
!6
most components are managed
most clients are remote.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
in-‐‑‒container  testing
!6
most components are managed
most clients are remote.
must look beyond unit tests
test component integration.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
in-‐‑‒container  testing
!6
most components are managed
most clients are remote.
must look beyond unit tests
test component integration.
first stop is “in-container testing”
integration with gCore, with clients.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
in-‐‑‒container  testing
!6
most components are managed
most clients are remote.
must look beyond unit tests
test component integration.
first stop is “in-container testing”
integration with gCore, with clients.
place to answer key questions
about functionality, protocol, lifecycle, state, publication, scope,
performance, load...
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
system  testing
!7
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
system  testing
!7
for more answers, system testing
integrate with other services.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
system  testing
!7
for more answers, system testing
integrate with other services.
the hell of our “dev” infras
must solve, maybe not as first step though.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
system  testing
!7
for more answers, system testing
integrate with other services.
the hell of our “dev” infras
must solve, maybe not as first step though.
1	
  : catch bugs earlier
first scope where we can observe them.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
system  testing
!7
for more answers, system testing
integrate with other services.
the hell of our “dev” infras
must solve, maybe not as first step though.
1	
  : catch bugs earlier
first scope where we can observe them.
2	
  : solutions will generalise
some ideas, premature still.
www.d4science.eu
introducing my-container
14 September 2011, Sophia Antipolis (France)
introducing my-container
!8
making  the  point
www.d4science.eu
introducing my-container
14 September 2011, Sophia Antipolis (France)
introducing my-container
!8
making  the  point
www.d4science.eu
introducing my-container
14 September 2011, Sophia Antipolis (France)
introducing my-container
!8
making  the  point
easier
harder
www.d4science.eu
introducing my-container
14 September 2011, Sophia Antipolis (France)
introducing my-container
!8
making  the  point
easier
harder
the more bugs 

we catch here...
www.d4science.eu
introducing my-container
14 September 2011, Sophia Antipolis (France)
introducing my-container
!8
making  the  point
easier
harder
...the less bugs we need to
catch here...

...or risk to miss altogether.
www.d4science.eu
introducing my-container
14 September 2011, Sophia Antipolis (France)
introducing my-container
!8
making  the  point
easier
harder
not so easy for us here... 

www.d4science.eu
introducing my-container
14 September 2011, Sophia Antipolis (France)
introducing my-container
!8
making  the  point
easier
harder
our priority should be here	
  

www.d4science.eu
introducing my-container
14 September 2011, Sophia Antipolis (France)
introducing my-container
!8
making  the  point
easier
harder
to avoid this	
  !

www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
!9
status  quo
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
!9
status  quo
main( ) {…}
we write “test clients”, in the IDE.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
!9
status  quo
main( ) {…}
build and deploy service 

typically from console.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
!9
status  quo
main( ) {…}
launch container in its own JVM.
typically from console.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
!9
status  quo
main( ) {…}
launch clients in their own JVM 

often from console.
localhost/ LAN
/ WAN
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
!9
status  quo
main( ) {…}
localhost/ LAN
/ WAN
observe....
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
!9
status  quo
main( ) {…}
localhost/ LAN
/ WAN
fix, redeploy, repeat.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
!9
status  quo
main( ) {…}
localhost/ LAN
/ WAN
and again at each change, all clients.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
!9
status  quo
main( ) {…}
localhost/ LAN
/ WAN
yeah, right...
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
problems
!10
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
problems
!10
not reproducible.
problems with the tests
hard to share.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
problems
!10
not reproducible.
problems with the tests
hard to share.
problems with testing
slower than it could be.
less frequent than it should be.
never part of build processes.
www.d4science.eu
introducing my-container
separate  lives
!11
www.d4science.eu
introducing my-container
separate  lives
!11
tests and container	
  : different lifetimes
same container, many tests and services.
www.d4science.eu
introducing my-container
separate  lives
!11
tests and container	
  : different lifetimes
same container, many tests and services.
contextual dependencies
outcome depends on state, env., config.
www.d4science.eu
introducing my-container
separate  lives
!11
tests and container	
  : different lifetimes
same container, many tests and services.
contextual dependencies
outcome depends on state, env., config.
works today
at least for me.
www.d4science.eu
introducing my-container
separate  lives
!11
tests and container	
  : different lifetimes
same container, many tests and services.
contextual dependencies
outcome depends on state, env., config.
works today
at least for me.
again, contextual dependencies
vars, params, files...
www.d4science.eu
introducing my-container
separate  lives
!11
tests and container	
  : different lifetimes
same container, many tests and services.
contextual dependencies
outcome depends on state, env., config.
works today
at least for me.
again, contextual dependencies
vars, params, files...
it’s my test!
your changes will be tested, late.
www.d4science.eu
introducing my-container
separate  lives
!11
how do you automate that	
  ?
regression fears.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
the  lost  seconds
!12
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
the  lost  seconds
!12
maintenance galore
sync and switch	
  : two JVMs, one IDE, one console.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
the  lost  seconds
!12
maintenance galore
sync and switch	
  : two JVMs, one IDE, one console.
deploy...start...stop (repeat)
even for a one-line change.
in a slower, over-specified container.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
the  lost  seconds
!12
maintenance galore
sync and switch	
  : two JVMs, one IDE, one console.
deploy...start...stop (repeat)
even for a one-line change.
in a slower, over-specified container.
it’s a turn-off
less tests _ later feedback _ harder fixes (or more bugs).
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
!13
how  about...
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
!13
how  about...
@testtests cast into 

standards.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
!13
how  about...
a dedicated
container
@test
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
!13
how  about...
@test a single JVM for both.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
!13
how  about...
a single environment
to control it all.
@test
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
!13
how  about...
@test
Ant and Maven 

automation.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
!13
how  about...
@test
nothing else.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
what  does  it  take?
!14
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
what  does  it  take?
!14
an embedded container
configured, started, stopped from the test.
one classpath: no build, code is “live”.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
what  does  it  take?
!14
an embedded container
configured, started, stopped from the test.
one classpath: no build, code is “live”.
embedded deployments
defined and carried out from the test.
WSDLs, config, aux libs, services...
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
what  does  it  give?
!15
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
what  does  it  give?
!15
the back-end is a white box
gain access to server-side components.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
what  does  it  give?
!15
the back-end is a white box
gain access to server-side components.
contexts, port-types, homes, ghn...
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
what  does  it  give?
!15
the back-end is a white box
gain access to server-side components.
contexts, port-types, homes, ghn...
can “assert” about their state.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
what  does  it  give?
!15
the back-end is a white box
gain access to server-side components.
contexts, port-types, homes, ghn...
encourages “testable designs”
can “assert” about their state.
e.g. design to inject dependencies.
e.g. design to mock remote interactions.
Unit Testing techniques apply.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
our  work
!16
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
our  work
!16
to realise these ideas
with our technologies.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
our  work
!16
embed Globus
it wasn’t born to.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
our  work
!16
embed Globus
it wasn’t born to.
model Gars in code
they weren’t meant to be.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
our  work
!16
embed Globus
it wasn’t born to.
model Gars in code
they weren’t meant to be.
extend Junit, pursue DI
to make for clean tests.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
our  work
!16
embed Globus
it wasn’t born to.
model Gars in code
they weren’t meant to be.
extend Junit, pursue DI
to make for clean tests.
integrated with Ant and Maven
to achieve automation.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
our  work
!16
a friendly and dedicated container
my-container
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
distribution
!17
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
distribution
!17
Globus cannot live only in memory
it demands an installation.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
distribution
!17
Globus cannot live only in memory
it demands an installation.
we fed it a tiny one
50kb tarball, 0.5mb on disk	
  .
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
distribution
!17
Globus cannot live only in memory
it demands an installation.
we fed it a tiny one
50kb tarball, 0.5mb on disk	
  .
empty
embedded storage
build support
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
distribution
!17
Globus cannot live only in memory
it demands an installation.
we fed it a tiny one
50kb tarball, 0.5mb on disk	
  .
available on Etics and Maven
for manual or automated donwload.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
distribution
!17
Globus cannot live only in memory
it demands an installation.
we fed it a tiny one
50kb tarball, 0.5mb on disk	
  .
available on Etics and Maven
for manual or automated donwload.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
distribution
!17
Globus cannot live only in memory
it demands an installation.
we fed it a tiny one
50kb tarball, 0.5mb on disk	
  .
available on Etics and Maven
for manual or automated donwload.
handle as “test resource”
exclude from version control.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
distribution
!17
Globus cannot live only in memory
it demands an installation.
we fed it a tiny one
50kb tarball, 0.5mb on disk	
  .
available on Etics and Maven
for manual or automated donwload.
handle as “test resource”
exclude from version control.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
runtime  library
!18
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
runtime  library
!18
the Api of my-container
controls and acts upon the distribution.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
runtime  library
!18
available on Etics and Nexus
the Api of my-container
controls and acts upon the distribution.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
runtime  library
!18
available on Etics and Nexus
the Api of my-container
controls and acts upon the distribution.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
runtime  library
!18
available on Etics and Nexus
the Api of my-container
controls and acts upon the distribution.
handle as test library
embed or point to.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
runtime  library
!18
available on Etics and Nexus
the Api of my-container
controls and acts upon the distribution.
handle as test library
embed or point to.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
runtime  library
!18
available on Etics and Nexus
the Api of my-container
controls and acts upon the distribution.
handle as test library
embed or point to.
low-level usage mode
explicit interaction with Api.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
runtime  library
!18
available on Etics and Nexus
the Api of my-container
controls and acts upon the distribution.
handle as test library
embed or point to.
low-level usage mode
explicit interaction with Api.
high-level usage mode
annotation-drive. recommended.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
low-‐‑‒level  steps
!19
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
low-‐‑‒level  steps
!19
1	
  : instantiate MyContainer
configure the distribution, including deployments.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
low-‐‑‒level  steps
!19
1	
  : instantiate MyContainer
configure the distribution, including deployments.
2	
  : start() the instance
start Globus.
block until CERTIFIED/FAILED/DOWN...or timeout
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
low-‐‑‒level  steps
!19
1	
  : instantiate MyContainer
configure the distribution, including deployments.
2	
  : start() the instance
start Globus.
block until CERTIFIED/FAILED/DOWN...or timeout
3	
  : write the test proper
interact with instance, if necessary.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
low-‐‑‒level  steps
!19
1	
  : instantiate MyContainer
configure the distribution, including deployments.
2	
  : start() the instance
start Globus.
block until CERTIFIED/FAILED/DOWN...or timeout
3	
  : write the test proper
interact with instance, if necessary.
4	
  : stop() the instance
stop Globus and clean up.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
hello  test
!20
connects to
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
hello  test
!20
connects to
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
on  logging
!21
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
on  logging
!21
loaded at MyContainer instantiation
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
on  logging
!21
loaded at MyContainer instantiation
a convenience
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
on  logging
!21
loaded at MyContainer instantiation
a convenience
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
on  logging
!21
loaded at MyContainer instantiation
a convenience
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
embedding  in  Junit
!22
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
embedding  in  Junit
!22
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
deployments
!23
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
deployments
!23
1	
  : instantiate Gar
a model of the deployment unit in Globus.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
deployments
!23
1	
  : instantiate Gar
a model of the deployment unit in Globus.
2	
  : add service resources to instance
interfaces, WSDLs, schemas, configuration, libraries, ...
wont’ need to add service code	
  !
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
deployments
!23
1	
  : instantiate Gar
a model of the deployment unit in Globus.
2	
  : add service resources to instance
interfaces, WSDLs, schemas, configuration, libraries, ...
3	
  : repeat for other Gars
if necessary.
wont’ need to add service code	
  !
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
deployments
!23
1	
  : instantiate Gar
a model of the deployment unit in Globus.
2	
  : add service resources to instance
interfaces, WSDLs, schemas, configuration, libraries, ...
3	
  : repeat for other Gars
if necessary.
4	
  : pass instances to MyContainer
at creation time.
wont’ need to add service code	
  !
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
deployments
!23
relative path from
root
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
deployments
!23
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
deployments
!23
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
deployments
!23
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
deployments
!23
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
Gar  API
!24
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
Gar  API
!24
wraps an
existing Gar file
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
Gar  API
!24
wraps an
existing Gar file
one file
at the time
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
sample  tests
!25
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
sample  tests
!25
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
sample  tests
!25
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
sample  tests
!25
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
sample  tests
!25
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
sample  tests
!25
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
test  isolation  and  performance
!26
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
test  isolation  and  performance
!26
the promise of a clean start()
default config, clean storage, no old deployments.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
test  isolation  and  performance
!26
the promise of a clean start()
for our inspection...and to avoid unncessary deployments.
default config, clean storage, no old deployments.
the advantage of a dirty stop()
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
test  isolation  and  performance
!26
the promise of a clean start()
for our inspection...and to avoid unncessary deployments.
default config, clean storage, no old deployments.
the advantage of a dirty stop()
Gars as old as their newest resource.

redeployed only when newer
if it ain’t broke...don’t redeploy it
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
test  isolation  and  performance
!26
the promise of a clean start()
for our inspection...and to avoid unncessary deployments.
default config, clean storage, no old deployments.
the advantage of a dirty stop()
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
test  isolation  and  performance
!26
the promise of a clean start()
for our inspection...and to avoid unncessary deployments.
default config, clean storage, no old deployments.
the advantage of a dirty stop()
less than 2 secs, with no deployment
clean is fast
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
test  isolation  and  performance
!26
the promise of a clean start()
for our inspection...and to avoid unncessary deployments.
default config, clean storage, no old deployments.
the advantage of a dirty stop()
less than 2 secs, with no deployment
why not a container per test	
  ?
performance trade-off.
risky:	
  our technologies use globals!
clean is fast
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
annotation-‐‑‒driven  tests
!27
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
annotation-‐‑‒driven  tests
!27
Api idioms often standard.
create, start(), stop(), endpoint(), porttype(),...
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
annotation-‐‑‒driven  tests
!27
Api idioms often standard.
create, start(), stop(), endpoint(), porttype(),...
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
annotation-‐‑‒driven  tests
!27
Api idioms often standard.
create, start(), stop(), endpoint(), porttype(),...
avoid boilerplate
with JUnit runners and DI.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
annotation-‐‑‒driven  tests
!27
JUnit extension
(brokers interaction with the container)
runner injects on
demand
runner pulls
on demand
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
annotation-‐‑‒driven  tests
!27
factor out in
test utilities
user service
constants
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
test  automation
!28
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
test  automation
!28
matter of build integration
hence depends on build system.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
test  automation
!28
matter of build integration
hence depends on build system.
automate download
a one-off operation.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
test  automation
!28
matter of build integration
hence depends on build system.
automate download
a one-off operation.
compile and execute tests
as soon as service itself is compiled.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
test  automation
!28
matter of build integration
hence depends on build system.
automate download
a one-off operation.
compile and execute tests
as soon as service itself is compiled.
illustrate Ant case
Maven simpler still.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
current  buildfile  structure
!29
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
current  buildfile  structure
!29
gar
package
process
WSDLs
compile
init
deploy
stubs
compile
Stubs
generate
Stubs
deploy
Stubs
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
current  buildfile  structure
!29
gar
package
process
WSDLs
init
deploy
compile
test
compile
Tests
install
my−container
init
Tests
download
my−container
uninstall
my−container
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
current  buildfile  structure
!29
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
current  buildfile  structure
!29
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
conclusions
!30
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
conclusions
!30
changes debugging practices
significantly so.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
conclusions
!30
changes debugging practices
significantly so.
finally enables automation
from Etics to future CI scenarios.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
conclusions
!30
changes debugging practices
significantly so.
finally enables automation
from Etics to future CI scenarios.
available now
full support for up-takers.
www.d4science.eu
14 September 2011, Sophia Antipolis (France)
introducing my-container
conclusions
!30
changes debugging practices
significantly so.
finally enables automation
from Etics to future CI scenarios.
available now
full support for up-takers.
yet to be explored
exact scope for white-box testing.
foundations for other “mocking” tools.

More Related Content

Similar to My Container (Sophia, 2011)

Monteverdi - Remote sensing software from educational to operational context
Monteverdi - Remote sensing software from educational to operational context Monteverdi - Remote sensing software from educational to operational context
Monteverdi - Remote sensing software from educational to operational context otb
 
Test driven Infrastructure development with Ansible and Molecule
Test driven Infrastructure development with Ansible and MoleculeTest driven Infrastructure development with Ansible and Molecule
Test driven Infrastructure development with Ansible and MoleculeSerena Lorenzini
 
Wds leanengineering-141103233017-conversion-gate02
Wds leanengineering-141103233017-conversion-gate02Wds leanengineering-141103233017-conversion-gate02
Wds leanengineering-141103233017-conversion-gate02Shivam Prajapati
 
Succeed 2nd hackathon
Succeed 2nd hackathonSucceed 2nd hackathon
Succeed 2nd hackathoncneudecker
 
Make it or Break It: Evolutionary or Throwaway Prototyping
Make it or Break It: Evolutionary or Throwaway PrototypingMake it or Break It: Evolutionary or Throwaway Prototyping
Make it or Break It: Evolutionary or Throwaway Prototypingjsokohl
 
ANTLR Conference - OpenSpotLight driven by ANTLR
ANTLR Conference - OpenSpotLight driven by ANTLRANTLR Conference - OpenSpotLight driven by ANTLR
ANTLR Conference - OpenSpotLight driven by ANTLRAlexandre Porcelli
 
EclipseCon France 2014 - Re-using open source libraries
EclipseCon France 2014 - Re-using open source librariesEclipseCon France 2014 - Re-using open source libraries
EclipseCon France 2014 - Re-using open source librariesPhilip Wenig
 
Tokyo Rails Meetup @ COOKPAD 10/06/11
Tokyo Rails Meetup @ COOKPAD 10/06/11Tokyo Rails Meetup @ COOKPAD 10/06/11
Tokyo Rails Meetup @ COOKPAD 10/06/11tapster
 
Mobile march-2012-ppt
Mobile march-2012-pptMobile march-2012-ppt
Mobile march-2012-pptPeter Pascale
 
Introduction to Singularity and Data Containers
Introduction to Singularity and Data ContainersIntroduction to Singularity and Data Containers
Introduction to Singularity and Data ContainersVanessa S
 
Harness the speed of the wheel
Harness the speed of the wheelHarness the speed of the wheel
Harness the speed of the wheelxavfernandez
 
Free Sorftware Research at Irill (highlights)
Free Sorftware Research at Irill (highlights)Free Sorftware Research at Irill (highlights)
Free Sorftware Research at Irill (highlights)Roberto Di Cosmo
 
Puppet Camp Berlin 2014: Module Rewriting the Smart Way
Puppet Camp Berlin 2014: Module Rewriting the Smart Way Puppet Camp Berlin 2014: Module Rewriting the Smart Way
Puppet Camp Berlin 2014: Module Rewriting the Smart Way Puppet
 
MCollective installed. And now? by Thomas Gelf
MCollective installed. And now? by Thomas GelfMCollective installed. And now? by Thomas Gelf
MCollective installed. And now? by Thomas GelfNETWAYS
 
Apereo & ESUP-Portail: Brothers in Arms
Apereo & ESUP-Portail: Brothers in ArmsApereo & ESUP-Portail: Brothers in Arms
Apereo & ESUP-Portail: Brothers in Armsmatguerin
 
Setting up Sphinx Development Environment
Setting up Sphinx Development EnvironmentSetting up Sphinx Development Environment
Setting up Sphinx Development EnvironmentAnnamalai Chockalingam
 
OpenAPI at Scale
OpenAPI at ScaleOpenAPI at Scale
OpenAPI at ScaleNordic APIs
 

Similar to My Container (Sophia, 2011) (20)

Monteverdi - Remote sensing software from educational to operational context
Monteverdi - Remote sensing software from educational to operational context Monteverdi - Remote sensing software from educational to operational context
Monteverdi - Remote sensing software from educational to operational context
 
Test driven Infrastructure development with Ansible and Molecule
Test driven Infrastructure development with Ansible and MoleculeTest driven Infrastructure development with Ansible and Molecule
Test driven Infrastructure development with Ansible and Molecule
 
Wds leanengineering-141103233017-conversion-gate02
Wds leanengineering-141103233017-conversion-gate02Wds leanengineering-141103233017-conversion-gate02
Wds leanengineering-141103233017-conversion-gate02
 
Succeed 2nd hackathon
Succeed 2nd hackathonSucceed 2nd hackathon
Succeed 2nd hackathon
 
Make it or Break It: Evolutionary or Throwaway Prototyping
Make it or Break It: Evolutionary or Throwaway PrototypingMake it or Break It: Evolutionary or Throwaway Prototyping
Make it or Break It: Evolutionary or Throwaway Prototyping
 
ANTLR Conference - OpenSpotLight driven by ANTLR
ANTLR Conference - OpenSpotLight driven by ANTLRANTLR Conference - OpenSpotLight driven by ANTLR
ANTLR Conference - OpenSpotLight driven by ANTLR
 
EclipseCon France 2014 - Re-using open source libraries
EclipseCon France 2014 - Re-using open source librariesEclipseCon France 2014 - Re-using open source libraries
EclipseCon France 2014 - Re-using open source libraries
 
Tokyo Rails Meetup @ COOKPAD 10/06/11
Tokyo Rails Meetup @ COOKPAD 10/06/11Tokyo Rails Meetup @ COOKPAD 10/06/11
Tokyo Rails Meetup @ COOKPAD 10/06/11
 
Mobile march-2012-ppt
Mobile march-2012-pptMobile march-2012-ppt
Mobile march-2012-ppt
 
Introduction to Singularity and Data Containers
Introduction to Singularity and Data ContainersIntroduction to Singularity and Data Containers
Introduction to Singularity and Data Containers
 
Golden droplets webinar table of content
Golden droplets webinar table of contentGolden droplets webinar table of content
Golden droplets webinar table of content
 
Drools Workshop 2015 - LATAM
Drools Workshop 2015 - LATAMDrools Workshop 2015 - LATAM
Drools Workshop 2015 - LATAM
 
Harness the speed of the wheel
Harness the speed of the wheelHarness the speed of the wheel
Harness the speed of the wheel
 
Free Sorftware Research at Irill (highlights)
Free Sorftware Research at Irill (highlights)Free Sorftware Research at Irill (highlights)
Free Sorftware Research at Irill (highlights)
 
Puppet Camp Berlin 2014: Module Rewriting the Smart Way
Puppet Camp Berlin 2014: Module Rewriting the Smart Way Puppet Camp Berlin 2014: Module Rewriting the Smart Way
Puppet Camp Berlin 2014: Module Rewriting the Smart Way
 
MCollective installed. And now? by Thomas Gelf
MCollective installed. And now? by Thomas GelfMCollective installed. And now? by Thomas Gelf
MCollective installed. And now? by Thomas Gelf
 
2.1 nilsson
2.1 nilsson2.1 nilsson
2.1 nilsson
 
Apereo & ESUP-Portail: Brothers in Arms
Apereo & ESUP-Portail: Brothers in ArmsApereo & ESUP-Portail: Brothers in Arms
Apereo & ESUP-Portail: Brothers in Arms
 
Setting up Sphinx Development Environment
Setting up Sphinx Development EnvironmentSetting up Sphinx Development Environment
Setting up Sphinx Development Environment
 
OpenAPI at Scale
OpenAPI at ScaleOpenAPI at Scale
OpenAPI at Scale
 

More from Fabio Simeoni

Featherweight Clients (Athens, 2012)
Featherweight Clients (Athens, 2012)Featherweight Clients (Athens, 2012)
Featherweight Clients (Athens, 2012)Fabio Simeoni
 
Technical Report: My Container
Technical Report: My ContainerTechnical Report: My Container
Technical Report: My ContainerFabio Simeoni
 
Client Libraries (Rodhes, 2011)
Client Libraries (Rodhes, 2011)Client Libraries (Rodhes, 2011)
Client Libraries (Rodhes, 2011)Fabio Simeoni
 
The Virtual Repository
The Virtual RepositoryThe Virtual Repository
The Virtual RepositoryFabio Simeoni
 
the-hitchhiker-s-guide-to-testing
the-hitchhiker-s-guide-to-testingthe-hitchhiker-s-guide-to-testing
the-hitchhiker-s-guide-to-testingFabio Simeoni
 
a-strategy-for-continuous-delivery
a-strategy-for-continuous-deliverya-strategy-for-continuous-delivery
a-strategy-for-continuous-deliveryFabio Simeoni
 

More from Fabio Simeoni (10)

Smartgears
SmartgearsSmartgears
Smartgears
 
Featherweight Clients (Athens, 2012)
Featherweight Clients (Athens, 2012)Featherweight Clients (Athens, 2012)
Featherweight Clients (Athens, 2012)
 
Technical Report: My Container
Technical Report: My ContainerTechnical Report: My Container
Technical Report: My Container
 
Project Apash
Project ApashProject Apash
Project Apash
 
Client Libraries (Rodhes, 2011)
Client Libraries (Rodhes, 2011)Client Libraries (Rodhes, 2011)
Client Libraries (Rodhes, 2011)
 
The Virtual Repository
The Virtual RepositoryThe Virtual Repository
The Virtual Repository
 
Hello Cotrix
Hello CotrixHello Cotrix
Hello Cotrix
 
the-hitchhiker-s-guide-to-testing
the-hitchhiker-s-guide-to-testingthe-hitchhiker-s-guide-to-testing
the-hitchhiker-s-guide-to-testing
 
a-strategy-for-continuous-delivery
a-strategy-for-continuous-deliverya-strategy-for-continuous-delivery
a-strategy-for-continuous-delivery
 
Grade@cnr
Grade@cnrGrade@cnr
Grade@cnr
 

Recently uploaded

Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...aditisharan08
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyFrank van der Linden
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Intelisync
 

Recently uploaded (20)

Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The Ugly
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)
 

My Container (Sophia, 2011)

  • 1. www.d4science.euD4Science-II project | 14  September  2011   Sophia  Antipolis  (France) 8th  TCOM  Meeting BDM-USTRATH Fabio Simeoni introducing  my-container
 in-‐‑‒container  testing  for  gCube  Services
  • 2. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container about !2
  • 3. www.d4science.eu for two main use cases. 14 September 2011, Sophia Antipolis (France) introducing my-container about !2 new tools to test services
  • 4. www.d4science.eu write debug 14 September 2011, Sophia Antipolis (France) introducing my-container about !2 during coding sessions manual, interactive.
  • 5. www.d4science.eu nightly pre−commit 14 September 2011, Sophia Antipolis (France) introducing my-container about !2 during build processes automated, batch.
  • 6. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container outline !3
  • 7. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container outline !3 testing and us
  • 8. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container outline !3 testing and us how we do it today
  • 9. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container outline !3 testing and us how we do it today how we could be doing it
  • 10. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container outline !3 testing and us how we do it today how we could be doing it our work
  • 11. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container outline !3 testing and us how we do it today how we could be doing it our work ...see also MyContainer.pdf
  • 12. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container impressions !4
  • 13. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container impressions !4 we don’t test enough much do we  ?
  • 14. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container impressions !4 we don’t test enough much whatever the scope do we  ? unit, integration, system.
  • 15. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container impressions !4 we don’t test enough much whatever the style whatever the scope do we  ? unit, integration, system. classic or TDD.
  • 16. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container impressions !4 we don’t test enough much despite strong evidence whatever the style whatever the scope do we  ? unit, integration, system. classic or TDD. 10 years of it  ?
  • 17. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container impressions !4 we don’t test enough much whatever we do, it’s not automated way off modern CI practices.
  • 18. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container impressions !4 we don’t test enough much whatever we do, it’s not automated we’re years behind here. way off modern CI practices.
  • 19. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container unit  testing !5
  • 20. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container unit  testing !5 unit testing why so little  ?
  • 21. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container unit  testing !5 unit testing why so little  ? blame partly on technologies including gCore.
  • 22. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container unit  testing !5 unit testing why so little  ? blame partly on technologies including gCore. could overcome in design but haven’t.
  • 23. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container unit  testing !5 unit testing why so little  ? blame partly on technologies including gCore. could overcome in design but haven’t. we’re still to acknowledge value pursuing requires “education”.
  • 24. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container in-‐‑‒container  testing !6
  • 25. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container in-‐‑‒container  testing !6 most components are managed most clients are remote.
  • 26. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container in-‐‑‒container  testing !6 most components are managed most clients are remote. must look beyond unit tests test component integration.
  • 27. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container in-‐‑‒container  testing !6 most components are managed most clients are remote. must look beyond unit tests test component integration. first stop is “in-container testing” integration with gCore, with clients.
  • 28. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container in-‐‑‒container  testing !6 most components are managed most clients are remote. must look beyond unit tests test component integration. first stop is “in-container testing” integration with gCore, with clients. place to answer key questions about functionality, protocol, lifecycle, state, publication, scope, performance, load...
  • 29. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container system  testing !7
  • 30. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container system  testing !7 for more answers, system testing integrate with other services.
  • 31. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container system  testing !7 for more answers, system testing integrate with other services. the hell of our “dev” infras must solve, maybe not as first step though.
  • 32. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container system  testing !7 for more answers, system testing integrate with other services. the hell of our “dev” infras must solve, maybe not as first step though. 1  : catch bugs earlier first scope where we can observe them.
  • 33. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container system  testing !7 for more answers, system testing integrate with other services. the hell of our “dev” infras must solve, maybe not as first step though. 1  : catch bugs earlier first scope where we can observe them. 2  : solutions will generalise some ideas, premature still.
  • 34. www.d4science.eu introducing my-container 14 September 2011, Sophia Antipolis (France) introducing my-container !8 making  the  point
  • 35. www.d4science.eu introducing my-container 14 September 2011, Sophia Antipolis (France) introducing my-container !8 making  the  point
  • 36. www.d4science.eu introducing my-container 14 September 2011, Sophia Antipolis (France) introducing my-container !8 making  the  point easier harder
  • 37. www.d4science.eu introducing my-container 14 September 2011, Sophia Antipolis (France) introducing my-container !8 making  the  point easier harder the more bugs 
 we catch here...
  • 38. www.d4science.eu introducing my-container 14 September 2011, Sophia Antipolis (France) introducing my-container !8 making  the  point easier harder ...the less bugs we need to catch here...
 ...or risk to miss altogether.
  • 39. www.d4science.eu introducing my-container 14 September 2011, Sophia Antipolis (France) introducing my-container !8 making  the  point easier harder not so easy for us here... 

  • 40. www.d4science.eu introducing my-container 14 September 2011, Sophia Antipolis (France) introducing my-container !8 making  the  point easier harder our priority should be here  

  • 41. www.d4science.eu introducing my-container 14 September 2011, Sophia Antipolis (France) introducing my-container !8 making  the  point easier harder to avoid this  !

  • 42. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container !9 status  quo
  • 43. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container !9 status  quo main( ) {…} we write “test clients”, in the IDE.
  • 44. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container !9 status  quo main( ) {…} build and deploy service 
 typically from console.
  • 45. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container !9 status  quo main( ) {…} launch container in its own JVM. typically from console.
  • 46. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container !9 status  quo main( ) {…} launch clients in their own JVM 
 often from console. localhost/ LAN / WAN
  • 47. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container !9 status  quo main( ) {…} localhost/ LAN / WAN observe....
  • 48. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container !9 status  quo main( ) {…} localhost/ LAN / WAN fix, redeploy, repeat.
  • 49. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container !9 status  quo main( ) {…} localhost/ LAN / WAN and again at each change, all clients.
  • 50. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container !9 status  quo main( ) {…} localhost/ LAN / WAN yeah, right...
  • 51. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container problems !10
  • 52. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container problems !10 not reproducible. problems with the tests hard to share.
  • 53. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container problems !10 not reproducible. problems with the tests hard to share. problems with testing slower than it could be. less frequent than it should be. never part of build processes.
  • 55. www.d4science.eu introducing my-container separate  lives !11 tests and container  : different lifetimes same container, many tests and services.
  • 56. www.d4science.eu introducing my-container separate  lives !11 tests and container  : different lifetimes same container, many tests and services. contextual dependencies outcome depends on state, env., config.
  • 57. www.d4science.eu introducing my-container separate  lives !11 tests and container  : different lifetimes same container, many tests and services. contextual dependencies outcome depends on state, env., config. works today at least for me.
  • 58. www.d4science.eu introducing my-container separate  lives !11 tests and container  : different lifetimes same container, many tests and services. contextual dependencies outcome depends on state, env., config. works today at least for me. again, contextual dependencies vars, params, files...
  • 59. www.d4science.eu introducing my-container separate  lives !11 tests and container  : different lifetimes same container, many tests and services. contextual dependencies outcome depends on state, env., config. works today at least for me. again, contextual dependencies vars, params, files... it’s my test! your changes will be tested, late.
  • 60. www.d4science.eu introducing my-container separate  lives !11 how do you automate that  ? regression fears.
  • 61. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container the  lost  seconds !12
  • 62. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container the  lost  seconds !12 maintenance galore sync and switch  : two JVMs, one IDE, one console.
  • 63. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container the  lost  seconds !12 maintenance galore sync and switch  : two JVMs, one IDE, one console. deploy...start...stop (repeat) even for a one-line change. in a slower, over-specified container.
  • 64. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container the  lost  seconds !12 maintenance galore sync and switch  : two JVMs, one IDE, one console. deploy...start...stop (repeat) even for a one-line change. in a slower, over-specified container. it’s a turn-off less tests _ later feedback _ harder fixes (or more bugs).
  • 65. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container !13 how  about...
  • 66. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container !13 how  about... @testtests cast into 
 standards.
  • 67. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container !13 how  about... a dedicated container @test
  • 68. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container !13 how  about... @test a single JVM for both.
  • 69. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container !13 how  about... a single environment to control it all. @test
  • 70. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container !13 how  about... @test Ant and Maven 
 automation.
  • 71. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container !13 how  about... @test nothing else.
  • 72. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container what  does  it  take? !14
  • 73. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container what  does  it  take? !14 an embedded container configured, started, stopped from the test. one classpath: no build, code is “live”.
  • 74. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container what  does  it  take? !14 an embedded container configured, started, stopped from the test. one classpath: no build, code is “live”. embedded deployments defined and carried out from the test. WSDLs, config, aux libs, services...
  • 75. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container what  does  it  give? !15
  • 76. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container what  does  it  give? !15 the back-end is a white box gain access to server-side components.
  • 77. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container what  does  it  give? !15 the back-end is a white box gain access to server-side components. contexts, port-types, homes, ghn...
  • 78. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container what  does  it  give? !15 the back-end is a white box gain access to server-side components. contexts, port-types, homes, ghn... can “assert” about their state.
  • 79. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container what  does  it  give? !15 the back-end is a white box gain access to server-side components. contexts, port-types, homes, ghn... encourages “testable designs” can “assert” about their state. e.g. design to inject dependencies. e.g. design to mock remote interactions. Unit Testing techniques apply.
  • 80. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container our  work !16
  • 81. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container our  work !16 to realise these ideas with our technologies.
  • 82. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container our  work !16 embed Globus it wasn’t born to.
  • 83. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container our  work !16 embed Globus it wasn’t born to. model Gars in code they weren’t meant to be.
  • 84. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container our  work !16 embed Globus it wasn’t born to. model Gars in code they weren’t meant to be. extend Junit, pursue DI to make for clean tests.
  • 85. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container our  work !16 embed Globus it wasn’t born to. model Gars in code they weren’t meant to be. extend Junit, pursue DI to make for clean tests. integrated with Ant and Maven to achieve automation.
  • 86. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container our  work !16 a friendly and dedicated container my-container
  • 87. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container distribution !17
  • 88. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container distribution !17 Globus cannot live only in memory it demands an installation.
  • 89. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container distribution !17 Globus cannot live only in memory it demands an installation. we fed it a tiny one 50kb tarball, 0.5mb on disk  .
  • 90. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container distribution !17 Globus cannot live only in memory it demands an installation. we fed it a tiny one 50kb tarball, 0.5mb on disk  . empty embedded storage build support
  • 91. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container distribution !17 Globus cannot live only in memory it demands an installation. we fed it a tiny one 50kb tarball, 0.5mb on disk  . available on Etics and Maven for manual or automated donwload.
  • 92. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container distribution !17 Globus cannot live only in memory it demands an installation. we fed it a tiny one 50kb tarball, 0.5mb on disk  . available on Etics and Maven for manual or automated donwload.
  • 93. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container distribution !17 Globus cannot live only in memory it demands an installation. we fed it a tiny one 50kb tarball, 0.5mb on disk  . available on Etics and Maven for manual or automated donwload. handle as “test resource” exclude from version control.
  • 94. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container distribution !17 Globus cannot live only in memory it demands an installation. we fed it a tiny one 50kb tarball, 0.5mb on disk  . available on Etics and Maven for manual or automated donwload. handle as “test resource” exclude from version control.
  • 95. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container runtime  library !18
  • 96. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container runtime  library !18 the Api of my-container controls and acts upon the distribution.
  • 97. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container runtime  library !18 available on Etics and Nexus the Api of my-container controls and acts upon the distribution.
  • 98. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container runtime  library !18 available on Etics and Nexus the Api of my-container controls and acts upon the distribution.
  • 99. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container runtime  library !18 available on Etics and Nexus the Api of my-container controls and acts upon the distribution. handle as test library embed or point to.
  • 100. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container runtime  library !18 available on Etics and Nexus the Api of my-container controls and acts upon the distribution. handle as test library embed or point to.
  • 101. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container runtime  library !18 available on Etics and Nexus the Api of my-container controls and acts upon the distribution. handle as test library embed or point to. low-level usage mode explicit interaction with Api.
  • 102. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container runtime  library !18 available on Etics and Nexus the Api of my-container controls and acts upon the distribution. handle as test library embed or point to. low-level usage mode explicit interaction with Api. high-level usage mode annotation-drive. recommended.
  • 103. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container low-‐‑‒level  steps !19
  • 104. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container low-‐‑‒level  steps !19 1  : instantiate MyContainer configure the distribution, including deployments.
  • 105. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container low-‐‑‒level  steps !19 1  : instantiate MyContainer configure the distribution, including deployments. 2  : start() the instance start Globus. block until CERTIFIED/FAILED/DOWN...or timeout
  • 106. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container low-‐‑‒level  steps !19 1  : instantiate MyContainer configure the distribution, including deployments. 2  : start() the instance start Globus. block until CERTIFIED/FAILED/DOWN...or timeout 3  : write the test proper interact with instance, if necessary.
  • 107. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container low-‐‑‒level  steps !19 1  : instantiate MyContainer configure the distribution, including deployments. 2  : start() the instance start Globus. block until CERTIFIED/FAILED/DOWN...or timeout 3  : write the test proper interact with instance, if necessary. 4  : stop() the instance stop Globus and clean up.
  • 108. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container hello  test !20 connects to
  • 109. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container hello  test !20 connects to
  • 110. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container on  logging !21
  • 111. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container on  logging !21 loaded at MyContainer instantiation
  • 112. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container on  logging !21 loaded at MyContainer instantiation a convenience
  • 113. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container on  logging !21 loaded at MyContainer instantiation a convenience
  • 114. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container on  logging !21 loaded at MyContainer instantiation a convenience
  • 115. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container embedding  in  Junit !22
  • 116. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container embedding  in  Junit !22
  • 117. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container deployments !23
  • 118. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container deployments !23 1  : instantiate Gar a model of the deployment unit in Globus.
  • 119. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container deployments !23 1  : instantiate Gar a model of the deployment unit in Globus. 2  : add service resources to instance interfaces, WSDLs, schemas, configuration, libraries, ... wont’ need to add service code  !
  • 120. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container deployments !23 1  : instantiate Gar a model of the deployment unit in Globus. 2  : add service resources to instance interfaces, WSDLs, schemas, configuration, libraries, ... 3  : repeat for other Gars if necessary. wont’ need to add service code  !
  • 121. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container deployments !23 1  : instantiate Gar a model of the deployment unit in Globus. 2  : add service resources to instance interfaces, WSDLs, schemas, configuration, libraries, ... 3  : repeat for other Gars if necessary. 4  : pass instances to MyContainer at creation time. wont’ need to add service code  !
  • 122. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container deployments !23 relative path from root
  • 123. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container deployments !23
  • 124. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container deployments !23
  • 125. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container deployments !23
  • 126. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container deployments !23
  • 127. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container Gar  API !24
  • 128. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container Gar  API !24 wraps an existing Gar file
  • 129. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container Gar  API !24 wraps an existing Gar file one file at the time
  • 130. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container sample  tests !25
  • 131. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container sample  tests !25
  • 132. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container sample  tests !25
  • 133. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container sample  tests !25
  • 134. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container sample  tests !25
  • 135. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container sample  tests !25
  • 136. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container test  isolation  and  performance !26
  • 137. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container test  isolation  and  performance !26 the promise of a clean start() default config, clean storage, no old deployments.
  • 138. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container test  isolation  and  performance !26 the promise of a clean start() for our inspection...and to avoid unncessary deployments. default config, clean storage, no old deployments. the advantage of a dirty stop()
  • 139. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container test  isolation  and  performance !26 the promise of a clean start() for our inspection...and to avoid unncessary deployments. default config, clean storage, no old deployments. the advantage of a dirty stop() Gars as old as their newest resource.
 redeployed only when newer if it ain’t broke...don’t redeploy it
  • 140. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container test  isolation  and  performance !26 the promise of a clean start() for our inspection...and to avoid unncessary deployments. default config, clean storage, no old deployments. the advantage of a dirty stop()
  • 141. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container test  isolation  and  performance !26 the promise of a clean start() for our inspection...and to avoid unncessary deployments. default config, clean storage, no old deployments. the advantage of a dirty stop() less than 2 secs, with no deployment clean is fast
  • 142. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container test  isolation  and  performance !26 the promise of a clean start() for our inspection...and to avoid unncessary deployments. default config, clean storage, no old deployments. the advantage of a dirty stop() less than 2 secs, with no deployment why not a container per test  ? performance trade-off. risky:  our technologies use globals! clean is fast
  • 143. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container annotation-‐‑‒driven  tests !27
  • 144. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container annotation-‐‑‒driven  tests !27 Api idioms often standard. create, start(), stop(), endpoint(), porttype(),...
  • 145. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container annotation-‐‑‒driven  tests !27 Api idioms often standard. create, start(), stop(), endpoint(), porttype(),...
  • 146. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container annotation-‐‑‒driven  tests !27 Api idioms often standard. create, start(), stop(), endpoint(), porttype(),... avoid boilerplate with JUnit runners and DI.
  • 147. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container annotation-‐‑‒driven  tests !27 JUnit extension (brokers interaction with the container) runner injects on demand runner pulls on demand
  • 148. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container annotation-‐‑‒driven  tests !27 factor out in test utilities user service constants
  • 149. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container test  automation !28
  • 150. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container test  automation !28 matter of build integration hence depends on build system.
  • 151. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container test  automation !28 matter of build integration hence depends on build system. automate download a one-off operation.
  • 152. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container test  automation !28 matter of build integration hence depends on build system. automate download a one-off operation. compile and execute tests as soon as service itself is compiled.
  • 153. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container test  automation !28 matter of build integration hence depends on build system. automate download a one-off operation. compile and execute tests as soon as service itself is compiled. illustrate Ant case Maven simpler still.
  • 154. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container current  buildfile  structure !29
  • 155. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container current  buildfile  structure !29 gar package process WSDLs compile init deploy stubs compile Stubs generate Stubs deploy Stubs
  • 156. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container current  buildfile  structure !29 gar package process WSDLs init deploy compile test compile Tests install my−container init Tests download my−container uninstall my−container
  • 157. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container current  buildfile  structure !29
  • 158. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container current  buildfile  structure !29
  • 159. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container conclusions !30
  • 160. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container conclusions !30 changes debugging practices significantly so.
  • 161. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container conclusions !30 changes debugging practices significantly so. finally enables automation from Etics to future CI scenarios.
  • 162. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container conclusions !30 changes debugging practices significantly so. finally enables automation from Etics to future CI scenarios. available now full support for up-takers.
  • 163. www.d4science.eu 14 September 2011, Sophia Antipolis (France) introducing my-container conclusions !30 changes debugging practices significantly so. finally enables automation from Etics to future CI scenarios. available now full support for up-takers. yet to be explored exact scope for white-box testing. foundations for other “mocking” tools.