SlideShare a Scribd company logo
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
Ad

More Related Content

What's hot (20)

Hacking on WildFly 9
Hacking on WildFly 9Hacking on WildFly 9
Hacking on WildFly 9
Virtual JBoss User Group
 
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
Gavin Pickin
 
Securing Legacy CFML Code
Securing Legacy CFML CodeSecuring Legacy CFML Code
Securing Legacy CFML Code
ColdFusionConference
 
Conquering AngularJS Limitations
Conquering AngularJS LimitationsConquering AngularJS Limitations
Conquering AngularJS Limitations
Valeri Karpov
 
Live Testing A Legacy App
Live Testing A Legacy AppLive Testing A Legacy App
Live Testing A Legacy App
ColdFusionConference
 
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
ColdFusionConference
 
Manage your environment with DSC
Manage your environment with DSCManage your environment with DSC
Manage your environment with DSC
Gian Maria Ricci
 
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
Jesse Gallagher
 
Vagrant to-aws-flow
Vagrant to-aws-flowVagrant to-aws-flow
Vagrant to-aws-flow
Kimberly Macias
 
Oscp preparation
Oscp preparationOscp preparation
Oscp preparation
Manich Koomsusi
 
Testing the Enterprise layers, with Arquillian
Testing the Enterprise layers, with ArquillianTesting the Enterprise layers, with Arquillian
Testing the Enterprise layers, with Arquillian
Virtual JBoss User Group
 
Jellyfish, JSCONF 2011
Jellyfish, JSCONF 2011Jellyfish, JSCONF 2011
Jellyfish, JSCONF 2011
Adam Christian
 
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
yfauser
 
Cfml features modern_coding
Cfml features modern_codingCfml features modern_coding
Cfml features modern_coding
ColdFusionConference
 
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
 
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)
Puppet
 
Locking Down CF Servers
Locking Down CF ServersLocking Down CF Servers
Locking Down CF Servers
ColdFusionConference
 
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
 
Jenkins 101: Continuos Integration with Jenkins
Jenkins 101: Continuos Integration with JenkinsJenkins 101: Continuos Integration with Jenkins
Jenkins 101: Continuos Integration with Jenkins
All Things Open
 
Selenium Grid
Selenium GridSelenium Grid
Selenium Grid
nirvdrum
 
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
Gavin Pickin
 
Conquering AngularJS Limitations
Conquering AngularJS LimitationsConquering AngularJS Limitations
Conquering AngularJS Limitations
Valeri Karpov
 
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
ColdFusionConference
 
Manage your environment with DSC
Manage your environment with DSCManage your environment with DSC
Manage your environment with DSC
Gian Maria Ricci
 
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
Jesse Gallagher
 
Testing the Enterprise layers, with Arquillian
Testing the Enterprise layers, with ArquillianTesting the Enterprise layers, with Arquillian
Testing the Enterprise layers, with Arquillian
Virtual JBoss User Group
 
Jellyfish, JSCONF 2011
Jellyfish, JSCONF 2011Jellyfish, JSCONF 2011
Jellyfish, JSCONF 2011
Adam Christian
 
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
yfauser
 
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
 
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)
Puppet
 
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
 
Jenkins 101: Continuos Integration with Jenkins
Jenkins 101: Continuos Integration with JenkinsJenkins 101: Continuos Integration with Jenkins
Jenkins 101: Continuos Integration with Jenkins
All Things Open
 
Selenium Grid
Selenium GridSelenium Grid
Selenium Grid
nirvdrum
 

Similar to 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
Seth Viebrock
 
Testing sync engine
Testing sync engineTesting sync engine
Testing sync engine
Ilya Puchka
 
[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...
Hackito Ergo Sum
 
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 (...
Frank van der Linden
 
DCRUG: Achieving Development-Production Parity
DCRUG: Achieving Development-Production ParityDCRUG: Achieving Development-Production Parity
DCRUG: Achieving Development-Production Parity
Geoff Harcourt
 
Vagrant for Effective DevOps Culture
Vagrant for Effective DevOps CultureVagrant for Effective DevOps Culture
Vagrant for Effective DevOps Culture
Vaidik Kapoor
 
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
Michael Lihs
 
"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...
ConSol Consulting & Solutions Software GmbH
 
"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...
ConSol Consulting & Solutions Software GmbH
 
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
 
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...
Frank van der Linden
 
introduction to node.js
introduction to node.jsintroduction to node.js
introduction to node.js
orkaplan
 
[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...
Ambassador Labs
 
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
 
Real World Elixir Deployment
Real World Elixir DeploymentReal World Elixir Deployment
Real World Elixir Deployment
Pete Gamache
 
미들웨어 엔지니어의 클라우드 탐방기
미들웨어 엔지니어의 클라우드 탐방기미들웨어 엔지니어의 클라우드 탐방기
미들웨어 엔지니어의 클라우드 탐방기
jbugkorea
 
Securing applications
Securing applicationsSecuring applications
Securing applications
ColdFusionConference
 
Tumbleweed intro
Tumbleweed introTumbleweed intro
Tumbleweed intro
Rich Helton
 
Dcjq node.js presentation
Dcjq node.js presentationDcjq node.js presentation
Dcjq node.js presentation
async_io
 
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 ...
E. Camden Fisher
 
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
Seth Viebrock
 
Testing sync engine
Testing sync engineTesting sync engine
Testing sync engine
Ilya Puchka
 
[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...
Hackito Ergo Sum
 
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 (...
Frank van der Linden
 
DCRUG: Achieving Development-Production Parity
DCRUG: Achieving Development-Production ParityDCRUG: Achieving Development-Production Parity
DCRUG: Achieving Development-Production Parity
Geoff Harcourt
 
Vagrant for Effective DevOps Culture
Vagrant for Effective DevOps CultureVagrant for Effective DevOps Culture
Vagrant for Effective DevOps Culture
Vaidik Kapoor
 
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
Michael Lihs
 
"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...
ConSol Consulting & Solutions Software GmbH
 
"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...
ConSol Consulting & Solutions Software GmbH
 
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
 
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...
Frank van der Linden
 
introduction to node.js
introduction to node.jsintroduction to node.js
introduction to node.js
orkaplan
 
[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...
Ambassador Labs
 
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
 
Real World Elixir Deployment
Real World Elixir DeploymentReal World Elixir Deployment
Real World Elixir Deployment
Pete Gamache
 
미들웨어 엔지니어의 클라우드 탐방기
미들웨어 엔지니어의 클라우드 탐방기미들웨어 엔지니어의 클라우드 탐방기
미들웨어 엔지니어의 클라우드 탐방기
jbugkorea
 
Tumbleweed intro
Tumbleweed introTumbleweed intro
Tumbleweed intro
Rich Helton
 
Dcjq node.js presentation
Dcjq node.js presentationDcjq node.js presentation
Dcjq node.js presentation
async_io
 
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 ...
E. Camden Fisher
 
Ad

Recently uploaded (20)

AI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global TrendsAI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global Trends
InData Labs
 
Quantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur MorganQuantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur Morgan
Arthur Morgan
 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
 
Cybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure ADCybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure AD
VICTOR MAESTRE RAMIREZ
 
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdfSAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
Precisely
 
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In FranceManifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
chb3
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
Role of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered ManufacturingRole of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered Manufacturing
Andrew Leo
 
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven InsightsAndrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-UmgebungenHCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
panagenda
 
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
 
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
organizerofv
 
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Impelsys Inc.
 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
Cyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of securityCyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of security
riccardosl1
 
How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?
Daniel Lehner
 
Mobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi ArabiaMobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi Arabia
Steve Jonas
 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
 
AI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global TrendsAI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global Trends
InData Labs
 
Quantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur MorganQuantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur Morgan
Arthur Morgan
 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
 
Cybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure ADCybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure AD
VICTOR MAESTRE RAMIREZ
 
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdfSAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
Precisely
 
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In FranceManifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
chb3
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
Role of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered ManufacturingRole of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered Manufacturing
Andrew Leo
 
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven InsightsAndrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-UmgebungenHCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
panagenda
 
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
 
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
organizerofv
 
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Impelsys Inc.
 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
Cyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of securityCyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of security
riccardosl1
 
How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?
Daniel Lehner
 
Mobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi ArabiaMobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi Arabia
Steve Jonas
 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
 
Ad

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