SlideShare a Scribd company logo
1 of 29
Download to read offline
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

More Related Content

What's hot

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, 2016Gavin Pickin
 
Conquering AngularJS Limitations
Conquering AngularJS LimitationsConquering AngularJS Limitations
Conquering AngularJS LimitationsValeri 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 YouColdFusionConference
 
Manage your environment with DSC
Manage your environment with DSCManage your environment with DSC
Manage your environment with DSCGian 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 XPagesJesse Gallagher
 
Testing the Enterprise layers, with Arquillian
Testing the Enterprise layers, with ArquillianTesting the Enterprise layers, with Arquillian
Testing the Enterprise layers, with ArquillianVirtual JBoss User Group
 
Jellyfish, JSCONF 2011
Jellyfish, JSCONF 2011Jellyfish, JSCONF 2011
Jellyfish, JSCONF 2011Adam 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-2015yfauser
 
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 PluginYasuharu 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 2013Puppet
 
Jenkins 101: Continuos Integration with Jenkins
Jenkins 101: Continuos Integration with JenkinsJenkins 101: Continuos Integration with Jenkins
Jenkins 101: Continuos Integration with JenkinsAll Things Open
 
Selenium Grid
Selenium GridSelenium Grid
Selenium Gridnirvdrum
 

What's hot (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 to Presentation about Overthere for J-Fall 2011

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 systemSeth Viebrock
 
Testing sync engine
Testing sync engineTesting sync engine
Testing sync engineIlya 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 ParityGeoff Harcourt
 
Vagrant for Effective DevOps Culture
Vagrant for Effective DevOps CultureVagrant for Effective DevOps Culture
Vagrant for Effective DevOps CultureVaidik 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-20Michael 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 WorkbenchHoward 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.jsorkaplan
 
[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 DeploymentPete Gamache
 
미들웨어 엔지니어의 클라우드 탐방기
미들웨어 엔지니어의 클라우드 탐방기미들웨어 엔지니어의 클라우드 탐방기
미들웨어 엔지니어의 클라우드 탐방기jbugkorea
 
Tumbleweed intro
Tumbleweed introTumbleweed intro
Tumbleweed introRich Helton
 
Dcjq node.js presentation
Dcjq node.js presentationDcjq node.js presentation
Dcjq node.js presentationasync_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
 

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
 
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 ...
 

Recently uploaded

Design Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptxDesign Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptxFIDO Alliance
 
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...marcuskenyatta275
 
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdfHow Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdfFIDO Alliance
 
ERP Contender Series: Acumatica vs. Sage Intacct
ERP Contender Series: Acumatica vs. Sage IntacctERP Contender Series: Acumatica vs. Sage Intacct
ERP Contender Series: Acumatica vs. Sage IntacctBrainSell Technologies
 
Long journey of Ruby Standard library at RubyKaigi 2024
Long journey of Ruby Standard library at RubyKaigi 2024Long journey of Ruby Standard library at RubyKaigi 2024
Long journey of Ruby Standard library at RubyKaigi 2024Hiroshi SHIBATA
 
2024 May Patch Tuesday
2024 May Patch Tuesday2024 May Patch Tuesday
2024 May Patch TuesdayIvanti
 
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераIntro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераMark Opanasiuk
 
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on ThanabotsContinuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on ThanabotsLeah Henrickson
 
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptxHarnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptxFIDO Alliance
 
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider  Progress from Awareness to Implementation.pptxTales from a Passkey Provider  Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider Progress from Awareness to Implementation.pptxFIDO Alliance
 
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...ScyllaDB
 
Easier, Faster, and More Powerful – Notes Document Properties Reimagined
Easier, Faster, and More Powerful – Notes Document Properties ReimaginedEasier, Faster, and More Powerful – Notes Document Properties Reimagined
Easier, Faster, and More Powerful – Notes Document Properties Reimaginedpanagenda
 
Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessStructuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessUXDXConf
 
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdfBreaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdfUK Journal
 
1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT
1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT
1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPTiSEO AI
 
The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?Mark Billinghurst
 
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...FIDO Alliance
 
State of the Smart Building Startup Landscape 2024!
State of the Smart Building Startup Landscape 2024!State of the Smart Building Startup Landscape 2024!
State of the Smart Building Startup Landscape 2024!Memoori
 
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...ScyllaDB
 

Recently uploaded (20)

Design Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptxDesign Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptx
 
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
 
Overview of Hyperledger Foundation
Overview of Hyperledger FoundationOverview of Hyperledger Foundation
Overview of Hyperledger Foundation
 
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdfHow Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
 
ERP Contender Series: Acumatica vs. Sage Intacct
ERP Contender Series: Acumatica vs. Sage IntacctERP Contender Series: Acumatica vs. Sage Intacct
ERP Contender Series: Acumatica vs. Sage Intacct
 
Long journey of Ruby Standard library at RubyKaigi 2024
Long journey of Ruby Standard library at RubyKaigi 2024Long journey of Ruby Standard library at RubyKaigi 2024
Long journey of Ruby Standard library at RubyKaigi 2024
 
2024 May Patch Tuesday
2024 May Patch Tuesday2024 May Patch Tuesday
2024 May Patch Tuesday
 
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераIntro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджера
 
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on ThanabotsContinuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
 
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptxHarnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
 
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider  Progress from Awareness to Implementation.pptxTales from a Passkey Provider  Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
 
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
 
Easier, Faster, and More Powerful – Notes Document Properties Reimagined
Easier, Faster, and More Powerful – Notes Document Properties ReimaginedEasier, Faster, and More Powerful – Notes Document Properties Reimagined
Easier, Faster, and More Powerful – Notes Document Properties Reimagined
 
Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessStructuring Teams and Portfolios for Success
Structuring Teams and Portfolios for Success
 
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdfBreaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
 
1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT
1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT
1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT
 
The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?
 
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
 
State of the Smart Building Startup Landscape 2024!
State of the Smart Building Startup Landscape 2024!State of the Smart Building Startup Landscape 2024!
State of the Smart Building Startup Landscape 2024!
 
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
 

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