SlideShare a Scribd company logo
1 of 17
Introduction to Fuego: An
Automated Test Framework
for Linux Applications
Steven Chen
Agenda
• Introduction
• Background
• Installation
• Test Framework
• Basic Operations
• Demo
• References
Introduction
• Fuego is the official automated test framework for the LTSI project.
• It was formerly called "JTA" (for Jenkins-based Test Automation), but
the name was changed in March 2016 for branding purposes.
• This project has its own wiki, located at
http://bird.org/fuego/FrontPage
• Fuego is a test framework specifically designed for embedded Linux
testing. It supports automated testing of embedded targets from a
host system, as it's primary method of test execution.
Background
• Tim Bird gave a talk introducing Fuego, at Embedded Linux
Conference in April 2016, and LinuxCon Japan 2016. The slides were
improved a bit for the talk in Japan, but there's only video for the ELC
talk (not the LCJ talk). Therefore, here are links to the LCJ slides and
the ELC video. The slides are close enough that you should be able to
follow the presentation. The slides from LCJ are available
here: Introduction-to-Fuego-LCJ-2016.pdf
• And here is the video from
ELC: https://www.youtube.com/watch?v=YbL8oauJv1c
Installation
• Code for the test framework is available in 2 Git repositories:
https://bitbucket.org/tbird20d/fuego/
https://bitbucket.org/tbird20d/fuego-core/
• To use Fuego, you only need to download the first repo. It is setup
with following instructions:
1. install pre-requisite software Git and Docker
2. download the Fuego repository
3. build your Fuego container
4. start the container
5. access the interface
6. add your board to Fuego
7. run a test
Installation (continued)
• To accomplish the first 4 steps, do the following from a Linux
command prompt:
$ git clone https://bitbucket.org/tbird20d/fuego.git
$ cd fuego; ./install.sh
$ fuego-host-scripts/docker-create-container.sh
$ fuego-host-scripts/docker-start-container.sh
$ firefox http://localhost:8080/fuego or hostip address
Test Framework 1
• Our Test Setup
Host Centos 7
10.0.2.9
Target
Unbuntu
10.0.2.10
Test Framework 2 (see ref)
Test Framework 2 (see ref)
Why use
Docker?
• Performance
• Portability
Test Framework 3 - How Tests Work
A simple test that requires no building is Functional.bc
• the test script and test program source are found in the directory:
/home/jenkins/tests/Functional.bc
• It runs a shell script on a target to test the 'bc' program.
• Functional.bc files:
• bc-script.sh
declares "tarball=bc-script.tar.gz"
defines shell functions:
test_build - calls 'echo' (does nothing)
test_deploy - calls 'put bc-device.sh'
test_run - calls 'assert_define', 'report'
report references bc-device.sh
test_processing - calls 'log_compare'
looking for "OK"
sources $JTA_SCRIPTS_PATH/functional.sh
• bc-script.tar.gz
• bc-script/bc-device.sh
• Variables used (in bc-script.sh):
FUEGO_HOME TESTDIR FUNCTIONAL_BC_EXPR FUNCTIONAL_BC_RESULT
Basic Operations
• Adding a board
1. create a test directory on the target
2. create a board file (on the host)
3. add your board to the Jenkins interface
• Adding a toolchain
1. obtain (generate or retrieve) the toolchain
2. copy the toolchain to the container
3. install the toolchain inside the container
4. create a -tools.sh file for the toolchain
5. reference the toolchain in the appropriate board file
Demo
• Starting Jenkins User Interface
• Adding a Board - Target
• Adding a Yocto X86 Toolchain
• Running Tests on remote target
Jenkins User Interface
Adding a Board - Target
Running Tests
References
• http://events.linuxfoundation.org/sites/events/files/slides/Introducti
on-to-Fuego.pdf
• Docker
• http://www.infoworld.com/article/3072929/linux/containers-101-
linux-containers-and-docker-explained.html
• https://www.ubuntu.com/cloud/lxd

More Related Content

What's hot

Embedded Linux from Scratch to Yocto
Embedded Linux from Scratch to YoctoEmbedded Linux from Scratch to Yocto
Embedded Linux from Scratch to Yocto
Sherif Mousa
 

What's hot (20)

Gitlab ci, cncf.sk
Gitlab ci, cncf.skGitlab ci, cncf.sk
Gitlab ci, cncf.sk
 
Jenkins CI presentation
Jenkins CI presentationJenkins CI presentation
Jenkins CI presentation
 
CICD Pipeline Using Github Actions
CICD Pipeline Using Github ActionsCICD Pipeline Using Github Actions
CICD Pipeline Using Github Actions
 
Summer of Fuzz: macOS
Summer of Fuzz: macOSSummer of Fuzz: macOS
Summer of Fuzz: macOS
 
CI/CD
CI/CDCI/CD
CI/CD
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
Gitlab flow solo
Gitlab flow soloGitlab flow solo
Gitlab flow solo
 
Embedded Linux from Scratch to Yocto
Embedded Linux from Scratch to YoctoEmbedded Linux from Scratch to Yocto
Embedded Linux from Scratch to Yocto
 
Google mock training
Google mock trainingGoogle mock training
Google mock training
 
Basic Jenkins Guide.pptx
Basic Jenkins Guide.pptxBasic Jenkins Guide.pptx
Basic Jenkins Guide.pptx
 
CI/CD with Bitbucket pipelines
CI/CD with Bitbucket pipelinesCI/CD with Bitbucket pipelines
CI/CD with Bitbucket pipelines
 
The Yocto Project
The Yocto ProjectThe Yocto Project
The Yocto Project
 
Linux systems - Getting started with setting up and embedded platform
Linux systems - Getting started with setting up and embedded platformLinux systems - Getting started with setting up and embedded platform
Linux systems - Getting started with setting up and embedded platform
 
Getting started with GitHub Desktop
Getting started with GitHub DesktopGetting started with GitHub Desktop
Getting started with GitHub Desktop
 
Python ppt.pptx
Python ppt.pptxPython ppt.pptx
Python ppt.pptx
 
Git hub ppt presentation
Git hub ppt presentationGit hub ppt presentation
Git hub ppt presentation
 
CMake best practices
CMake best practicesCMake best practices
CMake best practices
 
Firmadyne
FirmadyneFirmadyne
Firmadyne
 
Android OTA updates
Android OTA updatesAndroid OTA updates
Android OTA updates
 
Introduction to CI/CD
Introduction to CI/CDIntroduction to CI/CD
Introduction to CI/CD
 

Similar to Introduce fuego

Using Jenkins with iOS projects
Using Jenkins with iOS projectsUsing Jenkins with iOS projects
Using Jenkins with iOS projects
AppsDojo
 
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
 

Similar to Introduce fuego (20)

Deliver Python Apps with Docker
Deliver Python Apps with DockerDeliver Python Apps with Docker
Deliver Python Apps with Docker
 
Atlanta Jenkins Area Meetup October 22nd 2015
Atlanta Jenkins Area Meetup October 22nd 2015Atlanta Jenkins Area Meetup October 22nd 2015
Atlanta Jenkins Area Meetup October 22nd 2015
 
Jenkins Pipelines
Jenkins PipelinesJenkins Pipelines
Jenkins Pipelines
 
Continuous Integration using Jenkins with Python
Continuous Integration using Jenkins with PythonContinuous Integration using Jenkins with Python
Continuous Integration using Jenkins with Python
 
Juc boston2014.pptx
Juc boston2014.pptxJuc boston2014.pptx
Juc boston2014.pptx
 
Using Jenkins with iOS projects
Using Jenkins with iOS projectsUsing Jenkins with iOS projects
Using Jenkins with iOS projects
 
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source ToolsTYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
 
Symfony under control. Continuous Integration and Automated Deployments in Sy...
Symfony under control. Continuous Integration and Automated Deployments in Sy...Symfony under control. Continuous Integration and Automated Deployments in Sy...
Symfony under control. Continuous Integration and Automated Deployments in Sy...
 
Symfony Under Control by Maxim Romanovsky
Symfony Under Control by Maxim RomanovskySymfony Under Control by Maxim Romanovsky
Symfony Under Control by Maxim Romanovsky
 
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
 
When to use Serverless? When to use Kubernetes?
When to use Serverless? When to use Kubernetes?When to use Serverless? When to use Kubernetes?
When to use Serverless? When to use Kubernetes?
 
Building Emmbedded Linux with Yocto project
Building Emmbedded Linux with Yocto projectBuilding Emmbedded Linux with Yocto project
Building Emmbedded Linux with Yocto project
 
habitat at docker bud
habitat at docker budhabitat at docker bud
habitat at docker bud
 
Poky meets Debian: Understanding how to make an embedded Linux by using an ex...
Poky meets Debian: Understanding how to make an embedded Linux by using an ex...Poky meets Debian: Understanding how to make an embedded Linux by using an ex...
Poky meets Debian: Understanding how to make an embedded Linux by using an ex...
 
Docker based-Pipelines with Codefresh
Docker based-Pipelines with CodefreshDocker based-Pipelines with Codefresh
Docker based-Pipelines with Codefresh
 
Jenkins_1679702972.pdf
Jenkins_1679702972.pdfJenkins_1679702972.pdf
Jenkins_1679702972.pdf
 
jenkins.pdf
jenkins.pdfjenkins.pdf
jenkins.pdf
 
Behat sauce
Behat sauceBehat sauce
Behat sauce
 
Cape Cod Web Technology Meetup - 3
Cape Cod Web Technology Meetup - 3Cape Cod Web Technology Meetup - 3
Cape Cod Web Technology Meetup - 3
 
DevOps Workshop Part 1
DevOps Workshop Part 1DevOps Workshop Part 1
DevOps Workshop Part 1
 

Recently uploaded

Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
VictoriaMetrics
 

Recently uploaded (20)

WSO2CON 2024 - Designing Event-Driven Enterprises: Stories of Transformation
WSO2CON 2024 - Designing Event-Driven Enterprises: Stories of TransformationWSO2CON 2024 - Designing Event-Driven Enterprises: Stories of Transformation
WSO2CON 2024 - Designing Event-Driven Enterprises: Stories of Transformation
 
WSO2CON2024 - Why Should You Consider Ballerina for Your Next Integration
WSO2CON2024 - Why Should You Consider Ballerina for Your Next IntegrationWSO2CON2024 - Why Should You Consider Ballerina for Your Next Integration
WSO2CON2024 - Why Should You Consider Ballerina for Your Next Integration
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
WSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - KeynoteWSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - Keynote
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
WSO2CON 2024 - Architecting AI in the Enterprise: APIs and Applications
WSO2CON 2024 - Architecting AI in the Enterprise: APIs and ApplicationsWSO2CON 2024 - Architecting AI in the Enterprise: APIs and Applications
WSO2CON 2024 - Architecting AI in the Enterprise: APIs and Applications
 
WSO2CON 2024 Slides - Unlocking Value with AI
WSO2CON 2024 Slides - Unlocking Value with AIWSO2CON 2024 Slides - Unlocking Value with AI
WSO2CON 2024 Slides - Unlocking Value with AI
 
WSO2CON 2024 - How CSI Piemonte Is Apifying the Public Administration
WSO2CON 2024 - How CSI Piemonte Is Apifying the Public AdministrationWSO2CON 2024 - How CSI Piemonte Is Apifying the Public Administration
WSO2CON 2024 - How CSI Piemonte Is Apifying the Public Administration
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
 
WSO2CON 2024 - Building a Digital Government in Uganda
WSO2CON 2024 - Building a Digital Government in UgandaWSO2CON 2024 - Building a Digital Government in Uganda
WSO2CON 2024 - Building a Digital Government in Uganda
 
WSO2Con2024 - GitOps in Action: Navigating Application Deployment in the Plat...
WSO2Con2024 - GitOps in Action: Navigating Application Deployment in the Plat...WSO2Con2024 - GitOps in Action: Navigating Application Deployment in the Plat...
WSO2Con2024 - GitOps in Action: Navigating Application Deployment in the Plat...
 
WSO2Con2024 - Unleashing the Financial Potential of 13 Million People
WSO2Con2024 - Unleashing the Financial Potential of 13 Million PeopleWSO2Con2024 - Unleashing the Financial Potential of 13 Million People
WSO2Con2024 - Unleashing the Financial Potential of 13 Million People
 
WSO2CON 2024 - How CSI Piemonte Is Apifying the Public Administration
WSO2CON 2024 - How CSI Piemonte Is Apifying the Public AdministrationWSO2CON 2024 - How CSI Piemonte Is Apifying the Public Administration
WSO2CON 2024 - How CSI Piemonte Is Apifying the Public Administration
 
AzureNativeQumulo_HPC_Cloud_Native_Benchmarks.pdf
AzureNativeQumulo_HPC_Cloud_Native_Benchmarks.pdfAzureNativeQumulo_HPC_Cloud_Native_Benchmarks.pdf
AzureNativeQumulo_HPC_Cloud_Native_Benchmarks.pdf
 
WSO2Con2024 - Simplified Integration: Unveiling the Latest Features in WSO2 L...
WSO2Con2024 - Simplified Integration: Unveiling the Latest Features in WSO2 L...WSO2Con2024 - Simplified Integration: Unveiling the Latest Features in WSO2 L...
WSO2Con2024 - Simplified Integration: Unveiling the Latest Features in WSO2 L...
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the Situation
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
WSO2Con2024 - Hello Choreo Presentation - Kanchana
WSO2Con2024 - Hello Choreo Presentation - KanchanaWSO2Con2024 - Hello Choreo Presentation - Kanchana
WSO2Con2024 - Hello Choreo Presentation - Kanchana
 

Introduce fuego

  • 1. Introduction to Fuego: An Automated Test Framework for Linux Applications Steven Chen
  • 2. Agenda • Introduction • Background • Installation • Test Framework • Basic Operations • Demo • References
  • 3. Introduction • Fuego is the official automated test framework for the LTSI project. • It was formerly called "JTA" (for Jenkins-based Test Automation), but the name was changed in March 2016 for branding purposes. • This project has its own wiki, located at http://bird.org/fuego/FrontPage • Fuego is a test framework specifically designed for embedded Linux testing. It supports automated testing of embedded targets from a host system, as it's primary method of test execution.
  • 4. Background • Tim Bird gave a talk introducing Fuego, at Embedded Linux Conference in April 2016, and LinuxCon Japan 2016. The slides were improved a bit for the talk in Japan, but there's only video for the ELC talk (not the LCJ talk). Therefore, here are links to the LCJ slides and the ELC video. The slides are close enough that you should be able to follow the presentation. The slides from LCJ are available here: Introduction-to-Fuego-LCJ-2016.pdf • And here is the video from ELC: https://www.youtube.com/watch?v=YbL8oauJv1c
  • 5. Installation • Code for the test framework is available in 2 Git repositories: https://bitbucket.org/tbird20d/fuego/ https://bitbucket.org/tbird20d/fuego-core/ • To use Fuego, you only need to download the first repo. It is setup with following instructions: 1. install pre-requisite software Git and Docker 2. download the Fuego repository 3. build your Fuego container 4. start the container 5. access the interface 6. add your board to Fuego 7. run a test
  • 6. Installation (continued) • To accomplish the first 4 steps, do the following from a Linux command prompt: $ git clone https://bitbucket.org/tbird20d/fuego.git $ cd fuego; ./install.sh $ fuego-host-scripts/docker-create-container.sh $ fuego-host-scripts/docker-start-container.sh $ firefox http://localhost:8080/fuego or hostip address
  • 7. Test Framework 1 • Our Test Setup Host Centos 7 10.0.2.9 Target Unbuntu 10.0.2.10
  • 8. Test Framework 2 (see ref)
  • 9. Test Framework 2 (see ref)
  • 11. Test Framework 3 - How Tests Work A simple test that requires no building is Functional.bc • the test script and test program source are found in the directory: /home/jenkins/tests/Functional.bc • It runs a shell script on a target to test the 'bc' program. • Functional.bc files: • bc-script.sh declares "tarball=bc-script.tar.gz" defines shell functions: test_build - calls 'echo' (does nothing) test_deploy - calls 'put bc-device.sh' test_run - calls 'assert_define', 'report' report references bc-device.sh test_processing - calls 'log_compare' looking for "OK" sources $JTA_SCRIPTS_PATH/functional.sh • bc-script.tar.gz • bc-script/bc-device.sh • Variables used (in bc-script.sh): FUEGO_HOME TESTDIR FUNCTIONAL_BC_EXPR FUNCTIONAL_BC_RESULT
  • 12. Basic Operations • Adding a board 1. create a test directory on the target 2. create a board file (on the host) 3. add your board to the Jenkins interface • Adding a toolchain 1. obtain (generate or retrieve) the toolchain 2. copy the toolchain to the container 3. install the toolchain inside the container 4. create a -tools.sh file for the toolchain 5. reference the toolchain in the appropriate board file
  • 13. Demo • Starting Jenkins User Interface • Adding a Board - Target • Adding a Yocto X86 Toolchain • Running Tests on remote target
  • 15. Adding a Board - Target
  • 17. References • http://events.linuxfoundation.org/sites/events/files/slides/Introducti on-to-Fuego.pdf • Docker • http://www.infoworld.com/article/3072929/linux/containers-101- linux-containers-and-docker-explained.html • https://www.ubuntu.com/cloud/lxd