SlideShare una empresa de Scribd logo
1 de 29
Descargar para leer sin conexión
Overthere
  Design and implementation of a Java remote file and execution framework
xebialabs.com
                             Vincent Partington
                              CTO, XebiaLabs
Speaker


  •   Been working with Java since 1996. Built first production Servlet in
      1997.

  •   At Xebia since 2003, CTO of XebiaLabs since 2008.

  •   Interests: middleware, deployment automation, performance, security.
      Basically anything Java and hard!




xebialabs.com
Agenda


  •   Why Overthere?

  •   Exploring the API.

  •   Designing, extending and testing Overthere.




xebialabs.com
The problem

  •   For an internet language and an enterprise language, Java has pretty poor
      support for manipulating remote resources.

      •   Apache’s HttpClient is way better than JDK’s HTTP support.

      •   There is no facility to manipulate remote files (FTP, WebDAV, SFTP,
          SCP, CIFS, etc.)

      •   There is no facility to run commands on remote machines.



xebialabs.com
The solution


  •   Interfaces: java.io.File and java.lang.Process should’ve been interfaces!

  •   Factory: And there should be a factory to create instances of them!!

  •   SPI: And there should be an SPI to hook in new implementations!!!




xebialabs.com
Overthere


  •   OverthereFile - equivalent of java.io.File.

  •   OverthereProcess - equivalent of java.lang.Process.

  •   Overthere - the factory.

  •   OverthereConnectionBuilder - the SPI




xebialabs.com
Create a connection (Unix)




  ‣ Examine ExecuteOnUnix in the examples project.
xebialabs.com
Create a connection (Windows)




  ‣ Examine ExecuteOnWindows in the examples project.
xebialabs.com
Execute a command




  ‣ Run ExecuteOnUnix in the examples project.
xebialabs.com
Start a process




  ‣ Run StartProcess in the examples project.
xebialabs.com
Read a file




  ‣ Run ReadFile in the examples project.
xebialabs.com
Write a file




  ‣ Run WriteFile in the examples project.
xebialabs.com
Get info about a file




  ‣ Run GetFileInfo in the examples project.
xebialabs.com
Manipulate a file




  ‣ Run ManipulateFile in the examples project.
xebialabs.com
Manipulate a directory




  ‣ Run ManipulateDirectory in the examples project.
xebialabs.com
Supported technologies
  •       SSH - for Unix and Windows:

      •     SFTP - using SFTP for file transfer.

      •     SCP - using SCP for file transfer.

      •     SUDO - using SUDO for command execution (and SCP for file transfer).

      •     INTERACTIVE_SUDO - as SUDO but tries to answer sudo password prompts.

      •     SFTP_CYGWIN - using SFTP for file transfer, to a Windows host running OpenSSH on Cygwin.

      •     SFTP_WINSSHD - using SFTP for file transfer, to a Windows host running WinSSHD.

  •       CIFS - for Windows:

      •     TELNET - using Telnet for command execution.

      •     WINRM - using WinRM for command execution (Java implementation).

  •       LOCAL - Layer on top of java.io.File and java.lang.Process.


xebialabs.com
Advanced topics


  •   Designing Overthere.

  •   Extending Overthere.

  •   Testing Overthere.




xebialabs.com
Designing Overthere (1/4)



    •   Make OverthereFile an interface or a subclass of
        java.io.File?




xebialabs.com
Designing Overthere (2/4)



    •   Exceptions or booleans for delete(), mkdir(), mkdirs() and
        renameTo()?

    •   Use checked or unchecked exceptions?




xebialabs.com
Designing Overthere (3/4)




    •   Use JSch or SSH/J to handle SSH connections?




xebialabs.com
Designing Overthere (4/4)




    •   Telnet or WinRM for remote execution on Windows?




xebialabs.com
Extending Overthere - SPI
•   At startup, all classes implementing OverthereConnectionBuilder
    are found.

•   When a connection is created, all builders are invoked in turn to see if they
    can build a connection for that protocol and with those connection options.




‣ Examine LocalConnection and SshConnectionBuilder.
xebialabs.com
Testing Overthere


  •   How to test?

      •   Against target operating systems - Unix and Windows.

      •   Portable - no VMware images.

      •   From IDE (adhoc) and from build systems.




xebialabs.com
Subproject: itest-support
  •       Framework to allow for integration testing with virtual images.

  •       An ItestHost is a host against which to run tests.

  •       Created by invoking the ItestHostFactory.

  •       Depending on settings in itest.properties and system properties one of two
          things happens:

      •    A pointer to an existing host (VMware image or manually launched EC2 instance) is
           returned.

      •    An AMI is launched and when it has started up, a pointer to the EC2 is returned.

  •       At the end of the itest, any EC2 instances launched on-the-fly are terminated.

xebialabs.com
Some examples
  •   Parametrized tests to run multiple connection types on one platform:

      •   SCP, SFTP, etc. on Unix or

      •   TELNET, WINRM_HTTP, etc. on Windows.




  ‣ Examine OverthereOnUnixItest and its parent classes.
xebialabs.com
SSH tunneling

  •   Port 445 blocked by Amazon and many internet providers.

  •   Solution: create SSH tunnels when starting itests. And don’t forget to
      use the new host and port in your test code!




  ‣ Examine OverthereOnWindowsItest.setTypeAndOptions()

xebialabs.com
Ad-hoc usage

  •   Provisioning an EC2 AMI can take a while, especially provisioning a
      Windows AMI.

  •   Might even want to run just one test while developing a new feature.



  ‣ Examine overthere/itest.properties and
      overthere/src/test/resources/itest.properties.



xebialabs.com
Open source

  •   Overthere 1.0 is part of Deployit 3.5 and up.

  •   Overthere has been released as open source, under the ASLv2 license.

  •   Check the Github repository:
      https://github.com/xebialabs/overthere

  •   Have fun and don’t forget to mention any issues!

  •   Even better: send us a pull request with a fix. :-)


xebialabs.com
More information


  •   Overthere: https://github.com/xebialabs/overthere

  •   XebiaLabs: http://www.xebialabs.com/

  •   Integration testing: http://bit.ly/ess5Xh




xebialabs.com

Más contenido relacionado

La actualidad más candente

Gr8conf EU 2013 Speed up your development: GroovyServ and Grails Improx Plugin
Gr8conf EU 2013 Speed up your development: GroovyServ and Grails Improx PluginGr8conf EU 2013 Speed up your development: GroovyServ and Grails Improx Plugin
Gr8conf EU 2013 Speed up your development: GroovyServ and Grails Improx Plugin
Yasuharu Nakano
 
Oscar: Rapid Iteration with Vagrant and Puppet Enterprise - PuppetConf 2013
Oscar: Rapid Iteration with Vagrant and Puppet Enterprise - PuppetConf 2013Oscar: Rapid Iteration with Vagrant and Puppet Enterprise - PuppetConf 2013
Oscar: Rapid Iteration with Vagrant and Puppet Enterprise - PuppetConf 2013
Puppet
 

La actualidad más candente (20)

Hacking on WildFly 9
Hacking on WildFly 9Hacking on WildFly 9
Hacking on WildFly 9
 
How do I write Testable Javascript - Presented at dev.Objective() June 16, 2016
How do I write Testable Javascript - Presented at dev.Objective() June 16, 2016How do I write Testable Javascript - Presented at dev.Objective() June 16, 2016
How do I write Testable Javascript - Presented at dev.Objective() June 16, 2016
 
Securing Legacy CFML Code
Securing Legacy CFML CodeSecuring Legacy CFML Code
Securing Legacy CFML Code
 
Conquering AngularJS Limitations
Conquering AngularJS LimitationsConquering AngularJS Limitations
Conquering AngularJS Limitations
 
Live Testing A Legacy App
Live Testing A Legacy AppLive Testing A Legacy App
Live Testing A Legacy App
 
Can you contain the future - Docker, Container Technologies, The Future, and You
Can you contain the future - Docker, Container Technologies, The Future, and YouCan you contain the future - Docker, Container Technologies, The Future, and You
Can you contain the future - Docker, Container Technologies, The Future, and You
 
Manage your environment with DSC
Manage your environment with DSCManage your environment with DSC
Manage your environment with DSC
 
CollabSphere 2018 - Java in Domino After XPages
CollabSphere 2018 - Java in Domino After XPagesCollabSphere 2018 - Java in Domino After XPages
CollabSphere 2018 - Java in Domino After XPages
 
Vagrant to-aws-flow
Vagrant to-aws-flowVagrant to-aws-flow
Vagrant to-aws-flow
 
Oscp preparation
Oscp preparationOscp preparation
Oscp preparation
 
Testing the Enterprise layers, with Arquillian
Testing the Enterprise layers, with ArquillianTesting the Enterprise layers, with Arquillian
Testing the Enterprise layers, with Arquillian
 
Jellyfish, JSCONF 2011
Jellyfish, JSCONF 2011Jellyfish, JSCONF 2011
Jellyfish, JSCONF 2011
 
Open stack and_vagrant-os-meetup-2015
Open stack and_vagrant-os-meetup-2015Open stack and_vagrant-os-meetup-2015
Open stack and_vagrant-os-meetup-2015
 
Cfml features modern_coding
Cfml features modern_codingCfml features modern_coding
Cfml features modern_coding
 
Gr8conf EU 2013 Speed up your development: GroovyServ and Grails Improx Plugin
Gr8conf EU 2013 Speed up your development: GroovyServ and Grails Improx PluginGr8conf EU 2013 Speed up your development: GroovyServ and Grails Improx Plugin
Gr8conf EU 2013 Speed up your development: GroovyServ and Grails Improx Plugin
 
Puppet Camp New York 2015: "Safer Puppet" in 4 quick demos (Beginner)
Puppet Camp New York 2015: "Safer Puppet" in 4 quick demos (Beginner)Puppet Camp New York 2015: "Safer Puppet" in 4 quick demos (Beginner)
Puppet Camp New York 2015: "Safer Puppet" in 4 quick demos (Beginner)
 
Locking Down CF Servers
Locking Down CF ServersLocking Down CF Servers
Locking Down CF Servers
 
Oscar: Rapid Iteration with Vagrant and Puppet Enterprise - PuppetConf 2013
Oscar: Rapid Iteration with Vagrant and Puppet Enterprise - PuppetConf 2013Oscar: Rapid Iteration with Vagrant and Puppet Enterprise - PuppetConf 2013
Oscar: Rapid Iteration with Vagrant and Puppet Enterprise - PuppetConf 2013
 
Jenkins 101: Continuos Integration with Jenkins
Jenkins 101: Continuos Integration with JenkinsJenkins 101: Continuos Integration with Jenkins
Jenkins 101: Continuos Integration with Jenkins
 
Selenium Grid
Selenium GridSelenium Grid
Selenium Grid
 

Similar a Presentation about Overthere for J-Fall 2011

August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's WorkbenchAugust Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
Howard Greenberg
 
Testing Rapidly Changing Applications With Self-Testing Object-Oriented Selen...
Testing Rapidly Changing Applications With Self-Testing Object-Oriented Selen...Testing Rapidly Changing Applications With Self-Testing Object-Oriented Selen...
Testing Rapidly Changing Applications With Self-Testing Object-Oriented Selen...
seleniumconf
 

Similar a Presentation about Overthere for J-Fall 2011 (20)

Why you should be using Aegir: The Drupal-oriented hosting system
Why you should be using Aegir: The Drupal-oriented hosting systemWhy you should be using Aegir: The Drupal-oriented hosting system
Why you should be using Aegir: The Drupal-oriented hosting system
 
Testing sync engine
Testing sync engineTesting sync engine
Testing sync engine
 
[HES2013] Virtually secure, analysis to remote root 0day on an industry leadi...
[HES2013] Virtually secure, analysis to remote root 0day on an industry leadi...[HES2013] Virtually secure, analysis to remote root 0day on an industry leadi...
[HES2013] Virtually secure, analysis to remote root 0day on an industry leadi...
 
NCUG 2019: Spring forward: an introduction to Spring boot and Thymeleaf for (...
NCUG 2019: Spring forward: an introduction to Spring boot and Thymeleaf for (...NCUG 2019: Spring forward: an introduction to Spring boot and Thymeleaf for (...
NCUG 2019: Spring forward: an introduction to Spring boot and Thymeleaf for (...
 
DCRUG: Achieving Development-Production Parity
DCRUG: Achieving Development-Production ParityDCRUG: Achieving Development-Production Parity
DCRUG: Achieving Development-Production Parity
 
Vagrant for Effective DevOps Culture
Vagrant for Effective DevOps CultureVagrant for Effective DevOps Culture
Vagrant for Effective DevOps Culture
 
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
 
"Using Automation Tools To Deploy And Operate Applications In Real World Scen...
"Using Automation Tools To Deploy And Operate Applications In Real World Scen..."Using Automation Tools To Deploy And Operate Applications In Real World Scen...
"Using Automation Tools To Deploy And Operate Applications In Real World Scen...
 
"Using Automation Tools To Deploy And Operate Applications In Real World Scen...
"Using Automation Tools To Deploy And Operate Applications In Real World Scen..."Using Automation Tools To Deploy And Operate Applications In Real World Scen...
"Using Automation Tools To Deploy And Operate Applications In Real World Scen...
 
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's WorkbenchAugust Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
 
Icon UK 2018 - Spring forward: an introduction to Spring boot and Thymeleaf f...
Icon UK 2018 - Spring forward: an introduction to Spring boot and Thymeleaf f...Icon UK 2018 - Spring forward: an introduction to Spring boot and Thymeleaf f...
Icon UK 2018 - Spring forward: an introduction to Spring boot and Thymeleaf f...
 
introduction to node.js
introduction to node.jsintroduction to node.js
introduction to node.js
 
[KubeCon NA 2018] Telepresence Deep Dive Session - Rafael Schloming & Luke Sh...
[KubeCon NA 2018] Telepresence Deep Dive Session - Rafael Schloming & Luke Sh...[KubeCon NA 2018] Telepresence Deep Dive Session - Rafael Schloming & Luke Sh...
[KubeCon NA 2018] Telepresence Deep Dive Session - Rafael Schloming & Luke Sh...
 
Testing Rapidly Changing Applications With Self-Testing Object-Oriented Selen...
Testing Rapidly Changing Applications With Self-Testing Object-Oriented Selen...Testing Rapidly Changing Applications With Self-Testing Object-Oriented Selen...
Testing Rapidly Changing Applications With Self-Testing Object-Oriented Selen...
 
Real World Elixir Deployment
Real World Elixir DeploymentReal World Elixir Deployment
Real World Elixir Deployment
 
미들웨어 엔지니어의 클라우드 탐방기
미들웨어 엔지니어의 클라우드 탐방기미들웨어 엔지니어의 클라우드 탐방기
미들웨어 엔지니어의 클라우드 탐방기
 
Securing applications
Securing applicationsSecuring applications
Securing applications
 
Tumbleweed intro
Tumbleweed introTumbleweed intro
Tumbleweed intro
 
Dcjq node.js presentation
Dcjq node.js presentationDcjq node.js presentation
Dcjq node.js presentation
 
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
 

Último

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Último (20)

2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 

Presentation about Overthere for J-Fall 2011

  • 1. Overthere Design and implementation of a Java remote file and execution framework xebialabs.com Vincent Partington CTO, XebiaLabs
  • 2. Speaker • Been working with Java since 1996. Built first production Servlet in 1997. • At Xebia since 2003, CTO of XebiaLabs since 2008. • Interests: middleware, deployment automation, performance, security. Basically anything Java and hard! xebialabs.com
  • 3. Agenda • Why Overthere? • Exploring the API. • Designing, extending and testing Overthere. xebialabs.com
  • 4. The problem • For an internet language and an enterprise language, Java has pretty poor support for manipulating remote resources. • Apache’s HttpClient is way better than JDK’s HTTP support. • There is no facility to manipulate remote files (FTP, WebDAV, SFTP, SCP, CIFS, etc.) • There is no facility to run commands on remote machines. xebialabs.com
  • 5. The solution • Interfaces: java.io.File and java.lang.Process should’ve been interfaces! • Factory: And there should be a factory to create instances of them!! • SPI: And there should be an SPI to hook in new implementations!!! xebialabs.com
  • 6. Overthere • OverthereFile - equivalent of java.io.File. • OverthereProcess - equivalent of java.lang.Process. • Overthere - the factory. • OverthereConnectionBuilder - the SPI xebialabs.com
  • 7. Create a connection (Unix) ‣ Examine ExecuteOnUnix in the examples project. xebialabs.com
  • 8. Create a connection (Windows) ‣ Examine ExecuteOnWindows in the examples project. xebialabs.com
  • 9. Execute a command ‣ Run ExecuteOnUnix in the examples project. xebialabs.com
  • 10. Start a process ‣ Run StartProcess in the examples project. xebialabs.com
  • 11. Read a file ‣ Run ReadFile in the examples project. xebialabs.com
  • 12. Write a file ‣ Run WriteFile in the examples project. xebialabs.com
  • 13. Get info about a file ‣ Run GetFileInfo in the examples project. xebialabs.com
  • 14. Manipulate a file ‣ Run ManipulateFile in the examples project. xebialabs.com
  • 15. Manipulate a directory ‣ Run ManipulateDirectory in the examples project. xebialabs.com
  • 16. Supported technologies • SSH - for Unix and Windows: • SFTP - using SFTP for file transfer. • SCP - using SCP for file transfer. • SUDO - using SUDO for command execution (and SCP for file transfer). • INTERACTIVE_SUDO - as SUDO but tries to answer sudo password prompts. • SFTP_CYGWIN - using SFTP for file transfer, to a Windows host running OpenSSH on Cygwin. • SFTP_WINSSHD - using SFTP for file transfer, to a Windows host running WinSSHD. • CIFS - for Windows: • TELNET - using Telnet for command execution. • WINRM - using WinRM for command execution (Java implementation). • LOCAL - Layer on top of java.io.File and java.lang.Process. xebialabs.com
  • 17. Advanced topics • Designing Overthere. • Extending Overthere. • Testing Overthere. xebialabs.com
  • 18. Designing Overthere (1/4) • Make OverthereFile an interface or a subclass of java.io.File? xebialabs.com
  • 19. Designing Overthere (2/4) • Exceptions or booleans for delete(), mkdir(), mkdirs() and renameTo()? • Use checked or unchecked exceptions? xebialabs.com
  • 20. Designing Overthere (3/4) • Use JSch or SSH/J to handle SSH connections? xebialabs.com
  • 21. Designing Overthere (4/4) • Telnet or WinRM for remote execution on Windows? xebialabs.com
  • 22. Extending Overthere - SPI • At startup, all classes implementing OverthereConnectionBuilder are found. • When a connection is created, all builders are invoked in turn to see if they can build a connection for that protocol and with those connection options. ‣ Examine LocalConnection and SshConnectionBuilder. xebialabs.com
  • 23. Testing Overthere • How to test? • Against target operating systems - Unix and Windows. • Portable - no VMware images. • From IDE (adhoc) and from build systems. xebialabs.com
  • 24. Subproject: itest-support • Framework to allow for integration testing with virtual images. • An ItestHost is a host against which to run tests. • Created by invoking the ItestHostFactory. • Depending on settings in itest.properties and system properties one of two things happens: • A pointer to an existing host (VMware image or manually launched EC2 instance) is returned. • An AMI is launched and when it has started up, a pointer to the EC2 is returned. • At the end of the itest, any EC2 instances launched on-the-fly are terminated. xebialabs.com
  • 25. Some examples • Parametrized tests to run multiple connection types on one platform: • SCP, SFTP, etc. on Unix or • TELNET, WINRM_HTTP, etc. on Windows. ‣ Examine OverthereOnUnixItest and its parent classes. xebialabs.com
  • 26. SSH tunneling • Port 445 blocked by Amazon and many internet providers. • Solution: create SSH tunnels when starting itests. And don’t forget to use the new host and port in your test code! ‣ Examine OverthereOnWindowsItest.setTypeAndOptions() xebialabs.com
  • 27. Ad-hoc usage • Provisioning an EC2 AMI can take a while, especially provisioning a Windows AMI. • Might even want to run just one test while developing a new feature. ‣ Examine overthere/itest.properties and overthere/src/test/resources/itest.properties. xebialabs.com
  • 28. Open source • Overthere 1.0 is part of Deployit 3.5 and up. • Overthere has been released as open source, under the ASLv2 license. • Check the Github repository: https://github.com/xebialabs/overthere • Have fun and don’t forget to mention any issues! • Even better: send us a pull request with a fix. :-) xebialabs.com
  • 29. More information • Overthere: https://github.com/xebialabs/overthere • XebiaLabs: http://www.xebialabs.com/ • Integration testing: http://bit.ly/ess5Xh xebialabs.com