SlideShare a Scribd company logo
CHRISTOPHER HEISTAND
DART FSW Lead, JHUAPL
Automated Hardware Testing
Using Docker for Space
DART Devops Team:
Justin Thomas
Andrew Badger
Austin Bodzas
v
Double Asteroid Redirection Test
DART
NASA Planetary Defense Coordination Office
• DART is a tech demonstration to hit
a representative asteroid
• Mission managed by Johns Hopkins
Applied Physics Lab
• The PDCO is responsible for:
• Finding and tracking near-Earth objects
that pose of hazard of impacting Earth;
• Characterizing those objects
• Planning and implementation of
measures to deflect or disrupt an object
on an impact course with Earth
Step 1: Build the spacecraft
Roll Out Solar Arrays
NEXT-C Ion Thruster
High Gain AntennaDRACO Imager
1. Launch 2. Cruise / Calibration 3. Target Detection
/ Coarse Acquisition
4. Scene Classification
5. Target Selection 6. Deploy
Selfie-Sat
8. Impact Assessment
Flyby of PHA allows sensor
calibration and control-gain
tuning
Seeker counts and classifies closely
spaced objects
With sufficient confidence, seeker selects
target and locks on
Earth tracking & Selfie-Sat images quantify
intercept success
Selfie-Sat releases and executes a separation
maneuver to trail DART
Weeks prior to impact, seeker
detects primary<7 months until impact>
<108 km from target>
<30 days until impact>
<107 km from target>
<3 hours until impact>
<65,000 km from target>
<1.5 hours until impact>
<32,000 km from target>
<~1.4 hour until impact>
<~30,000 km from target>
<Up to 3 months>
7. Homing Until Intercept
Pro-Nav executes precision engagement and is robust
to target uncertainties
<Executed until final 2 minutes>
<6.0 km/s Impact>
Low Energy Escape
With Rideshare
<Jun 15 – Oct 15 2021>
<108 km from target>
Rideshare
Orbit
* 16 months total flight time
Step 2: Hit the target
Goddard Space Flight Center
Johnson Space Center
Langley Research Center
Glenn Research Center
Marshall Space Flight Center
Planetary Defense Coordination Office
Step 3: Save the world
(by validating the kinetic impact technique)
v
Why Dockercon?
Space is hard!
All factors drive:
• Cost
• Reliability
• Low Memory (~16MB)
• No virtual memory
• 32 bit CPU (~100MHz)
• Process
• Testing. And more testing
Vacuum
Radiation
Extreme distances
(and timelines)
Power
Mass
Single shot
New Horizons - JHUAPL
There are no space mechanics (yet) and turning it off and on again is NOT cool
Infrequent Communication
Thermal
What are we trying to solve?
• Hardware Scarcity
• Testbeds cost > $300K
• Configuration management is
painful
• Every developer/subsystem
wants one
• What is the holy grail?
• Hardware emulation!
• Develop in software land
• Test on real hardware
• CD to other teams/real
spacecraft
Enablers for DART
• NASA Core Flight Executive (Hardware/OS Abstraction)
• Atlassian Bamboo (CI/CD)
• Network architecture (SpaceWire)
• COSMOS (Ground System)
• Docker (Containers!)
v
Dev Setup
Container setup
• 4 repos - Flight SW, Testbed SW, COSMOS, Docker_Env
• 4 containers – Flight SW, Testbed SW, COSMOS, VNC
• Run-time voluming of source code, containers are stateless
• Provides outside dev environment with docker build capabilities
• Keeps cross-compile toolchains standardized
Directory Structure with
Submoduled repos
Network setup
• One instance comprises 4
containers (docker-compose)
• UDP SpaceWire abstraction
between FSW and TBSW
• TCP radio abstraction between
Ground and TBSW
• Xforwarding Ground to X11
Server to VNC
VNC window
• Shameless plug for the creator – thanks Jan!
• https://github.com/suchja/x11client
• https://github.com/suchja/x11server
• X11Server focuses on VNC and X setup
• X11Client focuses on the application (COSMOS)
• Brought up with compose, share xauth cookie through voluming
• Runs X virtual frame buffer with Openbox
• Contains the X security issues to the containers (we think)
X11Server
(container)
COSMOS
(container)
VNC Viewer
(dev machine)
Xauth
Eclipse and Debugging
• Eclipse Integration using Docker Tooling (Linux Tools project)
• CDT Build within Docker Container (including cross compiling)
• Run/Debug FSW (x86 Linux) in Docker Container
• Visually Debug FSW (LEON3 RTEMS) on Custom Flight Hardware
• Run Multi-Container App and System Tests (Docker Compose)
v
Demo
v
CI/CD for Space
Software CI
• Goal: Parallel software testing of our software sim
• Limitation: We only had one server to prototype on
• Execution:
• Bamboo with multiple agents on single server
• Runs same setup as dev except for X11Server
• Binaries/workbooks are passed through the chain, not containers
• Re-tagged each docker image so there was no mangling with different branches
• Docker-compose run with –p to provide unique keyed containers
Server
Agent 1 Agent 2
Agent 4Agent 3
Hardware CI/CD
Five complete sets of hardware (Testbeds)
Three flows, similar steps:
• Binary cross-compiled inside container
• Loaded to single board computer via GRMON
• Serial output piped back via SSH/Screen
• L3 InControl used as Ground System
v
Was it hard?
Lessons Learned
• If (Dev_env == CI_env); then debuggable = true;
• Permissions can be problematic
• When editing volume from outside, specify your user to run the container
• Static IPs cause endless headaches
• IP address spaces were not getting garbage collected, required daemon
restart
• Docker-networks can’t handle overlapping IPs/subnets
• Bamboo assumes sandboxed code, Docker is global
• Two layers of dependencies, jobs in a plan and branches in a plan
• Dockercompose –p is magical
• Our server can only handle 4 instances of our setup
• Docker abstracts NEARLY* everything, but not everything
• Linux Message Queues appear abstracted but are globally held in the
kernel
Lessons Learned
• Bamboo latches the git commit once started
• This is great for consistency, provides problems when tagging
containers on commit hash “DETACHED HEAD”
• Lock your Dockerfile FROM: version
• Ubuntu:latest can change under the hood - lock a working version
• Signal handling must go all the way down the rabbit hole
• When using start scripts, signals must be propagated to the end
application, particularly for graceful shutdown
• Log Buffering – use “unbuffer” for better timestamps
• Background processes output buffered causing timestamp bunching
• Not everything HAS to get containerized
• Docker bridge networks can be sniffed by host wireshark
• Permissions and display forwarding proved more pain than worth
What is next?
• Move past single server: Docker Registry
• Hardware stack trace
• Clean up tagging scheme (possibly obsolete with –p)
• Release manager/artifact handler?
• Any brilliant ideas picked up at Dockercon
Recap
• DART
• Why is space hard?
• Voluming source code can be super helpful in development
• VNC finally provides an easy window into containers
v
The Final Moments…
Goddard Space Flight Center
Johnson Space Center
Langley Research Center
Glenn Research Center
Marshall Space Flight Center
Planetary Defense Coordination Office
Questions?

More Related Content

Similar to Automated hardware testing using docker for space

Cassandra and docker
Cassandra and dockerCassandra and docker
Cassandra and docker
Ben Bromhead
 
Parallelizing CI using Docker Swarm-Mode
Parallelizing CI using Docker Swarm-ModeParallelizing CI using Docker Swarm-Mode
Parallelizing CI using Docker Swarm-Mode
Akihiro Suda
 
Dock ir incident response in a containerized, immutable, continually deploy...
Dock ir   incident response in a containerized, immutable, continually deploy...Dock ir   incident response in a containerized, immutable, continually deploy...
Dock ir incident response in a containerized, immutable, continually deploy...
Shakacon
 
Containers and Cloud: From LXC to Docker to Kubernetes
Containers and Cloud: From LXC to Docker to KubernetesContainers and Cloud: From LXC to Docker to Kubernetes
Containers and Cloud: From LXC to Docker to Kubernetes
Shreyas MM
 
Lions, Tigers and Deers: What building zoos can teach us about securing micro...
Lions, Tigers and Deers: What building zoos can teach us about securing micro...Lions, Tigers and Deers: What building zoos can teach us about securing micro...
Lions, Tigers and Deers: What building zoos can teach us about securing micro...
Sysdig
 
Docking postgres
Docking postgresDocking postgres
Docking postgres
rycamor
 
Introduction to Docker, December 2014 "Tour de France" Edition
Introduction to Docker, December 2014 "Tour de France" EditionIntroduction to Docker, December 2014 "Tour de France" Edition
Introduction to Docker, December 2014 "Tour de France" Edition
Jérôme Petazzoni
 
Workshop : 45 minutes pour comprendre Docker avec Jérôme Petazzoni
Workshop : 45 minutes pour comprendre Docker avec Jérôme PetazzoniWorkshop : 45 minutes pour comprendre Docker avec Jérôme Petazzoni
Workshop : 45 minutes pour comprendre Docker avec Jérôme Petazzoni
TheFamily
 
Introduction to Docker at the Azure Meet-up in New York
Introduction to Docker at the Azure Meet-up in New YorkIntroduction to Docker at the Azure Meet-up in New York
Introduction to Docker at the Azure Meet-up in New York
Jérôme Petazzoni
 
(APP309) Running and Monitoring Docker Containers at Scale | AWS re:Invent 2014
(APP309) Running and Monitoring Docker Containers at Scale | AWS re:Invent 2014(APP309) Running and Monitoring Docker Containers at Scale | AWS re:Invent 2014
(APP309) Running and Monitoring Docker Containers at Scale | AWS re:Invent 2014
Amazon Web Services
 
[NYC Meetup] Docker at Nuxeo
[NYC Meetup] Docker at Nuxeo[NYC Meetup] Docker at Nuxeo
[NYC Meetup] Docker at Nuxeo
Nuxeo
 
Leveraging Docker and CoreOS to provide always available Cassandra at Instacl...
Leveraging Docker and CoreOS to provide always available Cassandra at Instacl...Leveraging Docker and CoreOS to provide always available Cassandra at Instacl...
Leveraging Docker and CoreOS to provide always available Cassandra at Instacl...
DataStax
 
Docker 1 0 1 0 1: a Docker introduction, actualized for the stable release of...
Docker 1 0 1 0 1: a Docker introduction, actualized for the stable release of...Docker 1 0 1 0 1: a Docker introduction, actualized for the stable release of...
Docker 1 0 1 0 1: a Docker introduction, actualized for the stable release of...
Jérôme Petazzoni
 
Docker Security
Docker SecurityDocker Security
Docker Security
antitree
 
Running & Monitoring Docker at Scale
Running & Monitoring Docker at ScaleRunning & Monitoring Docker at Scale
Running & Monitoring Docker at Scale
Datadog
 
Securing the Container Pipeline at Salesforce by Cem Gurkok
Securing the Container Pipeline at Salesforce by Cem Gurkok   Securing the Container Pipeline at Salesforce by Cem Gurkok
Securing the Container Pipeline at Salesforce by Cem Gurkok
Docker, Inc.
 
Containerization using docker and its applications
Containerization using docker and its applicationsContainerization using docker and its applications
Containerization using docker and its applications
Puneet Kumar Bhatia (MBA, ITIL V3 Certified)
 
Continuous delivery workflow with Docker
Continuous delivery workflow with DockerContinuous delivery workflow with Docker
Continuous delivery workflow with Docker
Igor Moochnick
 
Using Containers and HPC to Solve the Mysteries of the Universe by Deborah Bard
Using Containers and HPC to Solve the Mysteries of the Universe by Deborah BardUsing Containers and HPC to Solve the Mysteries of the Universe by Deborah Bard
Using Containers and HPC to Solve the Mysteries of the Universe by Deborah Bard
Docker, Inc.
 

Similar to Automated hardware testing using docker for space (20)

Cassandra and docker
Cassandra and dockerCassandra and docker
Cassandra and docker
 
Parallelizing CI using Docker Swarm-Mode
Parallelizing CI using Docker Swarm-ModeParallelizing CI using Docker Swarm-Mode
Parallelizing CI using Docker Swarm-Mode
 
Dock ir incident response in a containerized, immutable, continually deploy...
Dock ir   incident response in a containerized, immutable, continually deploy...Dock ir   incident response in a containerized, immutable, continually deploy...
Dock ir incident response in a containerized, immutable, continually deploy...
 
Containers and Cloud: From LXC to Docker to Kubernetes
Containers and Cloud: From LXC to Docker to KubernetesContainers and Cloud: From LXC to Docker to Kubernetes
Containers and Cloud: From LXC to Docker to Kubernetes
 
Lions, Tigers and Deers: What building zoos can teach us about securing micro...
Lions, Tigers and Deers: What building zoos can teach us about securing micro...Lions, Tigers and Deers: What building zoos can teach us about securing micro...
Lions, Tigers and Deers: What building zoos can teach us about securing micro...
 
Docking postgres
Docking postgresDocking postgres
Docking postgres
 
Introduction to Docker, December 2014 "Tour de France" Edition
Introduction to Docker, December 2014 "Tour de France" EditionIntroduction to Docker, December 2014 "Tour de France" Edition
Introduction to Docker, December 2014 "Tour de France" Edition
 
Workshop : 45 minutes pour comprendre Docker avec Jérôme Petazzoni
Workshop : 45 minutes pour comprendre Docker avec Jérôme PetazzoniWorkshop : 45 minutes pour comprendre Docker avec Jérôme Petazzoni
Workshop : 45 minutes pour comprendre Docker avec Jérôme Petazzoni
 
Introduction to Docker at the Azure Meet-up in New York
Introduction to Docker at the Azure Meet-up in New YorkIntroduction to Docker at the Azure Meet-up in New York
Introduction to Docker at the Azure Meet-up in New York
 
(APP309) Running and Monitoring Docker Containers at Scale | AWS re:Invent 2014
(APP309) Running and Monitoring Docker Containers at Scale | AWS re:Invent 2014(APP309) Running and Monitoring Docker Containers at Scale | AWS re:Invent 2014
(APP309) Running and Monitoring Docker Containers at Scale | AWS re:Invent 2014
 
[NYC Meetup] Docker at Nuxeo
[NYC Meetup] Docker at Nuxeo[NYC Meetup] Docker at Nuxeo
[NYC Meetup] Docker at Nuxeo
 
Leveraging Docker and CoreOS to provide always available Cassandra at Instacl...
Leveraging Docker and CoreOS to provide always available Cassandra at Instacl...Leveraging Docker and CoreOS to provide always available Cassandra at Instacl...
Leveraging Docker and CoreOS to provide always available Cassandra at Instacl...
 
Docker 1 0 1 0 1: a Docker introduction, actualized for the stable release of...
Docker 1 0 1 0 1: a Docker introduction, actualized for the stable release of...Docker 1 0 1 0 1: a Docker introduction, actualized for the stable release of...
Docker 1 0 1 0 1: a Docker introduction, actualized for the stable release of...
 
Docker Security
Docker SecurityDocker Security
Docker Security
 
Running & Monitoring Docker at Scale
Running & Monitoring Docker at ScaleRunning & Monitoring Docker at Scale
Running & Monitoring Docker at Scale
 
Securing the Container Pipeline at Salesforce by Cem Gurkok
Securing the Container Pipeline at Salesforce by Cem Gurkok   Securing the Container Pipeline at Salesforce by Cem Gurkok
Securing the Container Pipeline at Salesforce by Cem Gurkok
 
Containerization using docker and its applications
Containerization using docker and its applicationsContainerization using docker and its applications
Containerization using docker and its applications
 
Containerization using docker and its applications
Containerization using docker and its applicationsContainerization using docker and its applications
Containerization using docker and its applications
 
Continuous delivery workflow with Docker
Continuous delivery workflow with DockerContinuous delivery workflow with Docker
Continuous delivery workflow with Docker
 
Using Containers and HPC to Solve the Mysteries of the Universe by Deborah Bard
Using Containers and HPC to Solve the Mysteries of the Universe by Deborah BardUsing Containers and HPC to Solve the Mysteries of the Universe by Deborah Bard
Using Containers and HPC to Solve the Mysteries of the Universe by Deborah Bard
 

More from Docker, Inc.

Containerize Your Game Server for the Best Multiplayer Experience
Containerize Your Game Server for the Best Multiplayer Experience Containerize Your Game Server for the Best Multiplayer Experience
Containerize Your Game Server for the Best Multiplayer Experience
Docker, Inc.
 
How to Improve Your Image Builds Using Advance Docker Build
How to Improve Your Image Builds Using Advance Docker BuildHow to Improve Your Image Builds Using Advance Docker Build
How to Improve Your Image Builds Using Advance Docker Build
Docker, Inc.
 
Build & Deploy Multi-Container Applications to AWS
Build & Deploy Multi-Container Applications to AWSBuild & Deploy Multi-Container Applications to AWS
Build & Deploy Multi-Container Applications to AWS
Docker, Inc.
 
Securing Your Containerized Applications with NGINX
Securing Your Containerized Applications with NGINXSecuring Your Containerized Applications with NGINX
Securing Your Containerized Applications with NGINX
Docker, Inc.
 
How To Build and Run Node Apps with Docker and Compose
How To Build and Run Node Apps with Docker and ComposeHow To Build and Run Node Apps with Docker and Compose
How To Build and Run Node Apps with Docker and Compose
Docker, Inc.
 
Hands-on Helm
Hands-on Helm Hands-on Helm
Hands-on Helm
Docker, Inc.
 
Distributed Deep Learning with Docker at Salesforce
Distributed Deep Learning with Docker at SalesforceDistributed Deep Learning with Docker at Salesforce
Distributed Deep Learning with Docker at Salesforce
Docker, Inc.
 
The First 10M Pulls: Building The Official Curl Image for Docker Hub
The First 10M Pulls: Building The Official Curl Image for Docker HubThe First 10M Pulls: Building The Official Curl Image for Docker Hub
The First 10M Pulls: Building The Official Curl Image for Docker Hub
Docker, Inc.
 
Monitoring in a Microservices World
Monitoring in a Microservices WorldMonitoring in a Microservices World
Monitoring in a Microservices World
Docker, Inc.
 
COVID-19 in Italy: How Docker is Helping the Biggest Italian IT Company Conti...
COVID-19 in Italy: How Docker is Helping the Biggest Italian IT Company Conti...COVID-19 in Italy: How Docker is Helping the Biggest Italian IT Company Conti...
COVID-19 in Italy: How Docker is Helping the Biggest Italian IT Company Conti...
Docker, Inc.
 
Predicting Space Weather with Docker
Predicting Space Weather with DockerPredicting Space Weather with Docker
Predicting Space Weather with Docker
Docker, Inc.
 
Become a Docker Power User With Microsoft Visual Studio Code
Become a Docker Power User With Microsoft Visual Studio CodeBecome a Docker Power User With Microsoft Visual Studio Code
Become a Docker Power User With Microsoft Visual Studio Code
Docker, Inc.
 
How to Use Mirroring and Caching to Optimize your Container Registry
How to Use Mirroring and Caching to Optimize your Container RegistryHow to Use Mirroring and Caching to Optimize your Container Registry
How to Use Mirroring and Caching to Optimize your Container Registry
Docker, Inc.
 
Monolithic to Microservices + Docker = SDLC on Steroids!
Monolithic to Microservices + Docker = SDLC on Steroids!Monolithic to Microservices + Docker = SDLC on Steroids!
Monolithic to Microservices + Docker = SDLC on Steroids!
Docker, Inc.
 
Kubernetes at Datadog Scale
Kubernetes at Datadog ScaleKubernetes at Datadog Scale
Kubernetes at Datadog Scale
Docker, Inc.
 
Labels, Labels, Labels
Labels, Labels, Labels Labels, Labels, Labels
Labels, Labels, Labels
Docker, Inc.
 
Using Docker Hub at Scale to Support Micro Focus' Delivery and Deployment Model
Using Docker Hub at Scale to Support Micro Focus' Delivery and Deployment ModelUsing Docker Hub at Scale to Support Micro Focus' Delivery and Deployment Model
Using Docker Hub at Scale to Support Micro Focus' Delivery and Deployment Model
Docker, Inc.
 
Build & Deploy Multi-Container Applications to AWS
Build & Deploy Multi-Container Applications to AWSBuild & Deploy Multi-Container Applications to AWS
Build & Deploy Multi-Container Applications to AWS
Docker, Inc.
 
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
Docker, Inc.
 
Developing with Docker for the Arm Architecture
Developing with Docker for the Arm ArchitectureDeveloping with Docker for the Arm Architecture
Developing with Docker for the Arm Architecture
Docker, Inc.
 

More from Docker, Inc. (20)

Containerize Your Game Server for the Best Multiplayer Experience
Containerize Your Game Server for the Best Multiplayer Experience Containerize Your Game Server for the Best Multiplayer Experience
Containerize Your Game Server for the Best Multiplayer Experience
 
How to Improve Your Image Builds Using Advance Docker Build
How to Improve Your Image Builds Using Advance Docker BuildHow to Improve Your Image Builds Using Advance Docker Build
How to Improve Your Image Builds Using Advance Docker Build
 
Build & Deploy Multi-Container Applications to AWS
Build & Deploy Multi-Container Applications to AWSBuild & Deploy Multi-Container Applications to AWS
Build & Deploy Multi-Container Applications to AWS
 
Securing Your Containerized Applications with NGINX
Securing Your Containerized Applications with NGINXSecuring Your Containerized Applications with NGINX
Securing Your Containerized Applications with NGINX
 
How To Build and Run Node Apps with Docker and Compose
How To Build and Run Node Apps with Docker and ComposeHow To Build and Run Node Apps with Docker and Compose
How To Build and Run Node Apps with Docker and Compose
 
Hands-on Helm
Hands-on Helm Hands-on Helm
Hands-on Helm
 
Distributed Deep Learning with Docker at Salesforce
Distributed Deep Learning with Docker at SalesforceDistributed Deep Learning with Docker at Salesforce
Distributed Deep Learning with Docker at Salesforce
 
The First 10M Pulls: Building The Official Curl Image for Docker Hub
The First 10M Pulls: Building The Official Curl Image for Docker HubThe First 10M Pulls: Building The Official Curl Image for Docker Hub
The First 10M Pulls: Building The Official Curl Image for Docker Hub
 
Monitoring in a Microservices World
Monitoring in a Microservices WorldMonitoring in a Microservices World
Monitoring in a Microservices World
 
COVID-19 in Italy: How Docker is Helping the Biggest Italian IT Company Conti...
COVID-19 in Italy: How Docker is Helping the Biggest Italian IT Company Conti...COVID-19 in Italy: How Docker is Helping the Biggest Italian IT Company Conti...
COVID-19 in Italy: How Docker is Helping the Biggest Italian IT Company Conti...
 
Predicting Space Weather with Docker
Predicting Space Weather with DockerPredicting Space Weather with Docker
Predicting Space Weather with Docker
 
Become a Docker Power User With Microsoft Visual Studio Code
Become a Docker Power User With Microsoft Visual Studio CodeBecome a Docker Power User With Microsoft Visual Studio Code
Become a Docker Power User With Microsoft Visual Studio Code
 
How to Use Mirroring and Caching to Optimize your Container Registry
How to Use Mirroring and Caching to Optimize your Container RegistryHow to Use Mirroring and Caching to Optimize your Container Registry
How to Use Mirroring and Caching to Optimize your Container Registry
 
Monolithic to Microservices + Docker = SDLC on Steroids!
Monolithic to Microservices + Docker = SDLC on Steroids!Monolithic to Microservices + Docker = SDLC on Steroids!
Monolithic to Microservices + Docker = SDLC on Steroids!
 
Kubernetes at Datadog Scale
Kubernetes at Datadog ScaleKubernetes at Datadog Scale
Kubernetes at Datadog Scale
 
Labels, Labels, Labels
Labels, Labels, Labels Labels, Labels, Labels
Labels, Labels, Labels
 
Using Docker Hub at Scale to Support Micro Focus' Delivery and Deployment Model
Using Docker Hub at Scale to Support Micro Focus' Delivery and Deployment ModelUsing Docker Hub at Scale to Support Micro Focus' Delivery and Deployment Model
Using Docker Hub at Scale to Support Micro Focus' Delivery and Deployment Model
 
Build & Deploy Multi-Container Applications to AWS
Build & Deploy Multi-Container Applications to AWSBuild & Deploy Multi-Container Applications to AWS
Build & Deploy Multi-Container Applications to AWS
 
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
 
Developing with Docker for the Arm Architecture
Developing with Docker for the Arm ArchitectureDeveloping with Docker for the Arm Architecture
Developing with Docker for the Arm Architecture
 

Recently uploaded

Announcement of 18th IEEE International Conference on Software Testing, Verif...
Announcement of 18th IEEE International Conference on Software Testing, Verif...Announcement of 18th IEEE International Conference on Software Testing, Verif...
Announcement of 18th IEEE International Conference on Software Testing, Verif...
Sebastiano Panichella
 
Obesity causes and management and associated medical conditions
Obesity causes and management and associated medical conditionsObesity causes and management and associated medical conditions
Obesity causes and management and associated medical conditions
Faculty of Medicine And Health Sciences
 
Getting started with Amazon Bedrock Studio and Control Tower
Getting started with Amazon Bedrock Studio and Control TowerGetting started with Amazon Bedrock Studio and Control Tower
Getting started with Amazon Bedrock Studio and Control Tower
Vladimir Samoylov
 
Bitcoin Lightning wallet and tic-tac-toe game XOXO
Bitcoin Lightning wallet and tic-tac-toe game XOXOBitcoin Lightning wallet and tic-tac-toe game XOXO
Bitcoin Lightning wallet and tic-tac-toe game XOXO
Matjaž Lipuš
 
Eureka, I found it! - Special Libraries Association 2021 Presentation
Eureka, I found it! - Special Libraries Association 2021 PresentationEureka, I found it! - Special Libraries Association 2021 Presentation
Eureka, I found it! - Special Libraries Association 2021 Presentation
Access Innovations, Inc.
 
International Workshop on Artificial Intelligence in Software Testing
International Workshop on Artificial Intelligence in Software TestingInternational Workshop on Artificial Intelligence in Software Testing
International Workshop on Artificial Intelligence in Software Testing
Sebastiano Panichella
 
Acorn Recovery: Restore IT infra within minutes
Acorn Recovery: Restore IT infra within minutesAcorn Recovery: Restore IT infra within minutes
Acorn Recovery: Restore IT infra within minutes
IP ServerOne
 
somanykidsbutsofewfathers-140705000023-phpapp02.pptx
somanykidsbutsofewfathers-140705000023-phpapp02.pptxsomanykidsbutsofewfathers-140705000023-phpapp02.pptx
somanykidsbutsofewfathers-140705000023-phpapp02.pptx
Howard Spence
 
0x01 - Newton's Third Law: Static vs. Dynamic Abusers
0x01 - Newton's Third Law:  Static vs. Dynamic Abusers0x01 - Newton's Third Law:  Static vs. Dynamic Abusers
0x01 - Newton's Third Law: Static vs. Dynamic Abusers
OWASP Beja
 
Doctoral Symposium at the 17th IEEE International Conference on Software Test...
Doctoral Symposium at the 17th IEEE International Conference on Software Test...Doctoral Symposium at the 17th IEEE International Conference on Software Test...
Doctoral Symposium at the 17th IEEE International Conference on Software Test...
Sebastiano Panichella
 
Competition and Regulation in Professional Services – KLEINER – June 2024 OEC...
Competition and Regulation in Professional Services – KLEINER – June 2024 OEC...Competition and Regulation in Professional Services – KLEINER – June 2024 OEC...
Competition and Regulation in Professional Services – KLEINER – June 2024 OEC...
OECD Directorate for Financial and Enterprise Affairs
 
Sharpen existing tools or get a new toolbox? Contemporary cluster initiatives...
Sharpen existing tools or get a new toolbox? Contemporary cluster initiatives...Sharpen existing tools or get a new toolbox? Contemporary cluster initiatives...
Sharpen existing tools or get a new toolbox? Contemporary cluster initiatives...
Orkestra
 
Bonzo subscription_hjjjjjjjj5hhhhhhh_2024.pdf
Bonzo subscription_hjjjjjjjj5hhhhhhh_2024.pdfBonzo subscription_hjjjjjjjj5hhhhhhh_2024.pdf
Bonzo subscription_hjjjjjjjj5hhhhhhh_2024.pdf
khadija278284
 

Recently uploaded (13)

Announcement of 18th IEEE International Conference on Software Testing, Verif...
Announcement of 18th IEEE International Conference on Software Testing, Verif...Announcement of 18th IEEE International Conference on Software Testing, Verif...
Announcement of 18th IEEE International Conference on Software Testing, Verif...
 
Obesity causes and management and associated medical conditions
Obesity causes and management and associated medical conditionsObesity causes and management and associated medical conditions
Obesity causes and management and associated medical conditions
 
Getting started with Amazon Bedrock Studio and Control Tower
Getting started with Amazon Bedrock Studio and Control TowerGetting started with Amazon Bedrock Studio and Control Tower
Getting started with Amazon Bedrock Studio and Control Tower
 
Bitcoin Lightning wallet and tic-tac-toe game XOXO
Bitcoin Lightning wallet and tic-tac-toe game XOXOBitcoin Lightning wallet and tic-tac-toe game XOXO
Bitcoin Lightning wallet and tic-tac-toe game XOXO
 
Eureka, I found it! - Special Libraries Association 2021 Presentation
Eureka, I found it! - Special Libraries Association 2021 PresentationEureka, I found it! - Special Libraries Association 2021 Presentation
Eureka, I found it! - Special Libraries Association 2021 Presentation
 
International Workshop on Artificial Intelligence in Software Testing
International Workshop on Artificial Intelligence in Software TestingInternational Workshop on Artificial Intelligence in Software Testing
International Workshop on Artificial Intelligence in Software Testing
 
Acorn Recovery: Restore IT infra within minutes
Acorn Recovery: Restore IT infra within minutesAcorn Recovery: Restore IT infra within minutes
Acorn Recovery: Restore IT infra within minutes
 
somanykidsbutsofewfathers-140705000023-phpapp02.pptx
somanykidsbutsofewfathers-140705000023-phpapp02.pptxsomanykidsbutsofewfathers-140705000023-phpapp02.pptx
somanykidsbutsofewfathers-140705000023-phpapp02.pptx
 
0x01 - Newton's Third Law: Static vs. Dynamic Abusers
0x01 - Newton's Third Law:  Static vs. Dynamic Abusers0x01 - Newton's Third Law:  Static vs. Dynamic Abusers
0x01 - Newton's Third Law: Static vs. Dynamic Abusers
 
Doctoral Symposium at the 17th IEEE International Conference on Software Test...
Doctoral Symposium at the 17th IEEE International Conference on Software Test...Doctoral Symposium at the 17th IEEE International Conference on Software Test...
Doctoral Symposium at the 17th IEEE International Conference on Software Test...
 
Competition and Regulation in Professional Services – KLEINER – June 2024 OEC...
Competition and Regulation in Professional Services – KLEINER – June 2024 OEC...Competition and Regulation in Professional Services – KLEINER – June 2024 OEC...
Competition and Regulation in Professional Services – KLEINER – June 2024 OEC...
 
Sharpen existing tools or get a new toolbox? Contemporary cluster initiatives...
Sharpen existing tools or get a new toolbox? Contemporary cluster initiatives...Sharpen existing tools or get a new toolbox? Contemporary cluster initiatives...
Sharpen existing tools or get a new toolbox? Contemporary cluster initiatives...
 
Bonzo subscription_hjjjjjjjj5hhhhhhh_2024.pdf
Bonzo subscription_hjjjjjjjj5hhhhhhh_2024.pdfBonzo subscription_hjjjjjjjj5hhhhhhh_2024.pdf
Bonzo subscription_hjjjjjjjj5hhhhhhh_2024.pdf
 

Automated hardware testing using docker for space

  • 1. CHRISTOPHER HEISTAND DART FSW Lead, JHUAPL Automated Hardware Testing Using Docker for Space DART Devops Team: Justin Thomas Andrew Badger Austin Bodzas
  • 3. NASA Planetary Defense Coordination Office • DART is a tech demonstration to hit a representative asteroid • Mission managed by Johns Hopkins Applied Physics Lab • The PDCO is responsible for: • Finding and tracking near-Earth objects that pose of hazard of impacting Earth; • Characterizing those objects • Planning and implementation of measures to deflect or disrupt an object on an impact course with Earth
  • 4. Step 1: Build the spacecraft Roll Out Solar Arrays NEXT-C Ion Thruster High Gain AntennaDRACO Imager
  • 5. 1. Launch 2. Cruise / Calibration 3. Target Detection / Coarse Acquisition 4. Scene Classification 5. Target Selection 6. Deploy Selfie-Sat 8. Impact Assessment Flyby of PHA allows sensor calibration and control-gain tuning Seeker counts and classifies closely spaced objects With sufficient confidence, seeker selects target and locks on Earth tracking & Selfie-Sat images quantify intercept success Selfie-Sat releases and executes a separation maneuver to trail DART Weeks prior to impact, seeker detects primary<7 months until impact> <108 km from target> <30 days until impact> <107 km from target> <3 hours until impact> <65,000 km from target> <1.5 hours until impact> <32,000 km from target> <~1.4 hour until impact> <~30,000 km from target> <Up to 3 months> 7. Homing Until Intercept Pro-Nav executes precision engagement and is robust to target uncertainties <Executed until final 2 minutes> <6.0 km/s Impact> Low Energy Escape With Rideshare <Jun 15 – Oct 15 2021> <108 km from target> Rideshare Orbit * 16 months total flight time Step 2: Hit the target
  • 6. Goddard Space Flight Center Johnson Space Center Langley Research Center Glenn Research Center Marshall Space Flight Center Planetary Defense Coordination Office Step 3: Save the world (by validating the kinetic impact technique)
  • 8. Space is hard! All factors drive: • Cost • Reliability • Low Memory (~16MB) • No virtual memory • 32 bit CPU (~100MHz) • Process • Testing. And more testing Vacuum Radiation Extreme distances (and timelines) Power Mass Single shot New Horizons - JHUAPL There are no space mechanics (yet) and turning it off and on again is NOT cool Infrequent Communication Thermal
  • 9. What are we trying to solve? • Hardware Scarcity • Testbeds cost > $300K • Configuration management is painful • Every developer/subsystem wants one • What is the holy grail? • Hardware emulation! • Develop in software land • Test on real hardware • CD to other teams/real spacecraft
  • 10. Enablers for DART • NASA Core Flight Executive (Hardware/OS Abstraction) • Atlassian Bamboo (CI/CD) • Network architecture (SpaceWire) • COSMOS (Ground System) • Docker (Containers!)
  • 12. Container setup • 4 repos - Flight SW, Testbed SW, COSMOS, Docker_Env • 4 containers – Flight SW, Testbed SW, COSMOS, VNC • Run-time voluming of source code, containers are stateless • Provides outside dev environment with docker build capabilities • Keeps cross-compile toolchains standardized Directory Structure with Submoduled repos
  • 13. Network setup • One instance comprises 4 containers (docker-compose) • UDP SpaceWire abstraction between FSW and TBSW • TCP radio abstraction between Ground and TBSW • Xforwarding Ground to X11 Server to VNC
  • 14. VNC window • Shameless plug for the creator – thanks Jan! • https://github.com/suchja/x11client • https://github.com/suchja/x11server • X11Server focuses on VNC and X setup • X11Client focuses on the application (COSMOS) • Brought up with compose, share xauth cookie through voluming • Runs X virtual frame buffer with Openbox • Contains the X security issues to the containers (we think) X11Server (container) COSMOS (container) VNC Viewer (dev machine) Xauth
  • 15. Eclipse and Debugging • Eclipse Integration using Docker Tooling (Linux Tools project) • CDT Build within Docker Container (including cross compiling) • Run/Debug FSW (x86 Linux) in Docker Container • Visually Debug FSW (LEON3 RTEMS) on Custom Flight Hardware • Run Multi-Container App and System Tests (Docker Compose)
  • 18. Software CI • Goal: Parallel software testing of our software sim • Limitation: We only had one server to prototype on • Execution: • Bamboo with multiple agents on single server • Runs same setup as dev except for X11Server • Binaries/workbooks are passed through the chain, not containers • Re-tagged each docker image so there was no mangling with different branches • Docker-compose run with –p to provide unique keyed containers Server Agent 1 Agent 2 Agent 4Agent 3
  • 19. Hardware CI/CD Five complete sets of hardware (Testbeds) Three flows, similar steps: • Binary cross-compiled inside container • Loaded to single board computer via GRMON • Serial output piped back via SSH/Screen • L3 InControl used as Ground System
  • 21. Lessons Learned • If (Dev_env == CI_env); then debuggable = true; • Permissions can be problematic • When editing volume from outside, specify your user to run the container • Static IPs cause endless headaches • IP address spaces were not getting garbage collected, required daemon restart • Docker-networks can’t handle overlapping IPs/subnets • Bamboo assumes sandboxed code, Docker is global • Two layers of dependencies, jobs in a plan and branches in a plan • Dockercompose –p is magical • Our server can only handle 4 instances of our setup • Docker abstracts NEARLY* everything, but not everything • Linux Message Queues appear abstracted but are globally held in the kernel
  • 22. Lessons Learned • Bamboo latches the git commit once started • This is great for consistency, provides problems when tagging containers on commit hash “DETACHED HEAD” • Lock your Dockerfile FROM: version • Ubuntu:latest can change under the hood - lock a working version • Signal handling must go all the way down the rabbit hole • When using start scripts, signals must be propagated to the end application, particularly for graceful shutdown • Log Buffering – use “unbuffer” for better timestamps • Background processes output buffered causing timestamp bunching • Not everything HAS to get containerized • Docker bridge networks can be sniffed by host wireshark • Permissions and display forwarding proved more pain than worth
  • 23. What is next? • Move past single server: Docker Registry • Hardware stack trace • Clean up tagging scheme (possibly obsolete with –p) • Release manager/artifact handler? • Any brilliant ideas picked up at Dockercon
  • 24. Recap • DART • Why is space hard? • Voluming source code can be super helpful in development • VNC finally provides an easy window into containers
  • 26. Goddard Space Flight Center Johnson Space Center Langley Research Center Glenn Research Center Marshall Space Flight Center Planetary Defense Coordination Office Questions?