SlideShare a Scribd company logo
1 of 11
Download to read offline
Bareon functional testing
/ CI
Bareon-func-test project structure (formely fpa-func-framework)
- Python API to start services on controller
- Python API to upload custom stub images, firmwares, etc
- Python API to control slave nodes
- /etc/bareon-func-test.conf
- virsh creds
- IPMI creds
- degree of parallelism (number of slaves)
- slaves are pooled
- optional DHCP, TFTP, PXE, HTTP params
Bareon project structure (formely fuel-agent)
- code
- unit tests
- run by tox in unit-tests env
- functional tests
- run by tox in func-tests env
- import bareon-func-framework
- setUp, tearDown are written using API provided by bareon-func-test
- default slave lab configuration (disk space, CPU’s, RAM) defined in base setUp.
- can be overridden for particular test, using bareon-func-test API.
- functional tests run if /etc/bareon-func-test.conf present, otherwise skipped.
bareon-func-test lab
bareon-func-test lab
Controller (one, VM or BM):
- initial node where bareon is fetched to run tests.
- hosts DHCP, TFTP, PXE and fake image service.
- all workers share single set of services
- spawns slaves (using python virsh bindings, or preconfigured BM nodes)
- manages pool of slaves
- executes tests using available number of slaves
- drives FPA in every test (ssh-ing to slave)
- if too much code overlaps with Ironic itself, may be based on Ironic
Slave node (many, VM or BM or both):
- depending of /etc/bareon-func-test.conf:
- can live inside controller (nested virt)
- can live on the same level with controller (networks for not nested?)
- can be a BM server
- booted via PXE
- runs ramdisk with agent
- runs tests (one by one, driven by controller)
Single test (ramdisk only)
Inputs:
- ramdisk build
- one slave node
- provision.json json
- a set of commands and params to execute on verify step
- lsblk
- parted
- etc
- expected output json
- optional params (inherited from base test case if not specified):
- a custom image
- a custom firmware
- etc
Outputs:
- ramdisk log
- passed: True/False
- in future:
- performance grade (basing on statistics)
Single test (involving reboot to tenant image)
Inputs:
- ramdisk build
- a special tenant image with callback and built-in key
- one slave node
- provision.json json
- a set of commands and params to execute on ramdisk verify step
- expected ramdisk output json
- a set of commands and params to execute on tenant image verify step
- expected tenant image output json
- optional params (inherited from base test case if not specified)
Outputs:
- ramdisk log
- tenant image boot log
- passed: True/False
- in future:
- performance grade (basing on statistics)
Logs
- both agent logs and tenant image logs are sent to controller, and published
- logs are sent continuously (where possible) to be able to trace possible kernel panic, etc
Group of tests (Test class)
- Share the same setup config:
- request specific image
- request specific firmware
- request specific node
- multiple disks
- existing data to test preserve
Parallelism
- Single controller node
- a shared PXE, TFTP, HTTP for all slaves
- Multiple virtual slave nodes (basing on config)
- spawned on demand using Python virsh bindings
- power management via virsh
- Multiple baremetal slave nodes (basing on config)
- need to set IPMI creds in config
- spawned via IPMI
- power management via virsh
- if we want to host a few labs in parallel (test a few ramdisks at time) need to split available
HW nodes between labs
- Parallel test execution is done via testr (OpenStack standard testing tool)
- we configure processes=number_of_slaves
Triggers in CI
Q&A

More Related Content

What's hot

Systemtap
SystemtapSystemtap
Systemtap
Feng Yu
 

What's hot (20)

Systemtap
SystemtapSystemtap
Systemtap
 
Cfg Mgmtcamp 2015 - Releases
Cfg Mgmtcamp 2015 - ReleasesCfg Mgmtcamp 2015 - Releases
Cfg Mgmtcamp 2015 - Releases
 
New Ways to Find Latency in Linux Using Tracing
New Ways to Find Latency in Linux Using TracingNew Ways to Find Latency in Linux Using Tracing
New Ways to Find Latency in Linux Using Tracing
 
How lve stats2 works for you and your customers
How lve stats2 works for you and your customersHow lve stats2 works for you and your customers
How lve stats2 works for you and your customers
 
Efficient kernel backporting
Efficient kernel backportingEfficient kernel backporting
Efficient kernel backporting
 
Epoll - from the kernel side
Epoll -  from the kernel sideEpoll -  from the kernel side
Epoll - from the kernel side
 
Windows IOCP vs Linux EPOLL Performance Comparison
Windows IOCP vs Linux EPOLL Performance ComparisonWindows IOCP vs Linux EPOLL Performance Comparison
Windows IOCP vs Linux EPOLL Performance Comparison
 
JavaOne 2015 Java Mixed-Mode Flame Graphs
JavaOne 2015 Java Mixed-Mode Flame GraphsJavaOne 2015 Java Mixed-Mode Flame Graphs
JavaOne 2015 Java Mixed-Mode Flame Graphs
 
Your Inner Sysadmin - Tutorial (SunshinePHP 2015)
Your Inner Sysadmin - Tutorial (SunshinePHP 2015)Your Inner Sysadmin - Tutorial (SunshinePHP 2015)
Your Inner Sysadmin - Tutorial (SunshinePHP 2015)
 
Operating Systems - A Primer
Operating Systems - A PrimerOperating Systems - A Primer
Operating Systems - A Primer
 
Watch Me Install Alfresco
Watch Me Install AlfrescoWatch Me Install Alfresco
Watch Me Install Alfresco
 
Xen server 6.0 xe command reference (1.1)
Xen server 6.0 xe command reference (1.1)Xen server 6.0 xe command reference (1.1)
Xen server 6.0 xe command reference (1.1)
 
Process scheduling
Process schedulingProcess scheduling
Process scheduling
 
Config Management Camp 2015 - How to Deploy CFEngine in the Open Internet
Config Management Camp 2015 - How to Deploy CFEngine in the Open InternetConfig Management Camp 2015 - How to Deploy CFEngine in the Open Internet
Config Management Camp 2015 - How to Deploy CFEngine in the Open Internet
 
Linux kernel debugging
Linux kernel debuggingLinux kernel debugging
Linux kernel debugging
 
Automating with ansible (Part B)
Automating with ansible (Part B)Automating with ansible (Part B)
Automating with ansible (Part B)
 
Automating with ansible (part a)
Automating with ansible (part a)Automating with ansible (part a)
Automating with ansible (part a)
 
[MathWorks] Versioning Infrastructure
[MathWorks] Versioning Infrastructure[MathWorks] Versioning Infrastructure
[MathWorks] Versioning Infrastructure
 
Linux kernel memory allocators
Linux kernel memory allocatorsLinux kernel memory allocators
Linux kernel memory allocators
 
Programming
ProgrammingProgramming
Programming
 

Similar to Bareon functional testing ci

Assurer - a pluggable server testing/monitoring framework
Assurer - a pluggable server testing/monitoring frameworkAssurer - a pluggable server testing/monitoring framework
Assurer - a pluggable server testing/monitoring framework
Gosuke Miyashita
 
Know More About Rational Performance - Snehamoy K
Know More About Rational Performance - Snehamoy KKnow More About Rational Performance - Snehamoy K
Know More About Rational Performance - Snehamoy K
Roopa Nadkarni
 
3 know more_about_rational_performance_tester_8-1-snehamoy_k
3 know more_about_rational_performance_tester_8-1-snehamoy_k3 know more_about_rational_performance_tester_8-1-snehamoy_k
3 know more_about_rational_performance_tester_8-1-snehamoy_k
IBM
 
Deployment with Fabric
Deployment with FabricDeployment with Fabric
Deployment with Fabric
andymccurdy
 
Dissecting the Hotspot JVM
Dissecting the Hotspot JVMDissecting the Hotspot JVM
Dissecting the Hotspot JVM
Ivan Ivanov
 

Similar to Bareon functional testing ci (20)

Osic tech talk presentation on ironic inspector
Osic tech talk presentation on ironic inspectorOsic tech talk presentation on ironic inspector
Osic tech talk presentation on ironic inspector
 
Testing angular js
Testing angular jsTesting angular js
Testing angular js
 
Quantifying Container Runtime Performance: OSCON 2017 Open Container Day
Quantifying Container Runtime Performance: OSCON 2017 Open Container DayQuantifying Container Runtime Performance: OSCON 2017 Open Container Day
Quantifying Container Runtime Performance: OSCON 2017 Open Container Day
 
Unit testing on embedded target with C++Test
Unit testing on embedded  target with C++TestUnit testing on embedded  target with C++Test
Unit testing on embedded target with C++Test
 
Jvm Performance Tunning
Jvm Performance TunningJvm Performance Tunning
Jvm Performance Tunning
 
Jvm Performance Tunning
Jvm Performance TunningJvm Performance Tunning
Jvm Performance Tunning
 
Linux Profiling at Netflix
Linux Profiling at NetflixLinux Profiling at Netflix
Linux Profiling at Netflix
 
Nano Server (ATD 11)
Nano Server (ATD 11)Nano Server (ATD 11)
Nano Server (ATD 11)
 
Assurer - a pluggable server testing/monitoring framework
Assurer - a pluggable server testing/monitoring frameworkAssurer - a pluggable server testing/monitoring framework
Assurer - a pluggable server testing/monitoring framework
 
Presto Testing Tools: Benchto & Tempto (Presto Boston Meetup 10062015)
Presto Testing Tools: Benchto & Tempto (Presto Boston Meetup 10062015)Presto Testing Tools: Benchto & Tempto (Presto Boston Meetup 10062015)
Presto Testing Tools: Benchto & Tempto (Presto Boston Meetup 10062015)
 
An Introduction to Java Compiler and Runtime
An Introduction to Java Compiler and RuntimeAn Introduction to Java Compiler and Runtime
An Introduction to Java Compiler and Runtime
 
Deploying Symfony2 app with Ansible
Deploying Symfony2 app with AnsibleDeploying Symfony2 app with Ansible
Deploying Symfony2 app with Ansible
 
JavaCro'14 - Unit testing in AngularJS – Slaven Tomac
JavaCro'14 - Unit testing in AngularJS – Slaven TomacJavaCro'14 - Unit testing in AngularJS – Slaven Tomac
JavaCro'14 - Unit testing in AngularJS – Slaven Tomac
 
Know More About Rational Performance - Snehamoy K
Know More About Rational Performance - Snehamoy KKnow More About Rational Performance - Snehamoy K
Know More About Rational Performance - Snehamoy K
 
3 know more_about_rational_performance_tester_8-1-snehamoy_k
3 know more_about_rational_performance_tester_8-1-snehamoy_k3 know more_about_rational_performance_tester_8-1-snehamoy_k
3 know more_about_rational_performance_tester_8-1-snehamoy_k
 
RichFaces - Testing on Mobile Devices
RichFaces - Testing on Mobile DevicesRichFaces - Testing on Mobile Devices
RichFaces - Testing on Mobile Devices
 
Jak se ^bonami\.(cz|pl|sk)$ vešlo do kontejneru
Jak se ^bonami\.(cz|pl|sk)$ vešlo do kontejneruJak se ^bonami\.(cz|pl|sk)$ vešlo do kontejneru
Jak se ^bonami\.(cz|pl|sk)$ vešlo do kontejneru
 
Oracle ebs db platform migration
Oracle ebs db platform migrationOracle ebs db platform migration
Oracle ebs db platform migration
 
Deployment with Fabric
Deployment with FabricDeployment with Fabric
Deployment with Fabric
 
Dissecting the Hotspot JVM
Dissecting the Hotspot JVMDissecting the Hotspot JVM
Dissecting the Hotspot JVM
 

Recently uploaded

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 

Recently uploaded (20)

TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 

Bareon functional testing ci

  • 2. Bareon-func-test project structure (formely fpa-func-framework) - Python API to start services on controller - Python API to upload custom stub images, firmwares, etc - Python API to control slave nodes - /etc/bareon-func-test.conf - virsh creds - IPMI creds - degree of parallelism (number of slaves) - slaves are pooled - optional DHCP, TFTP, PXE, HTTP params Bareon project structure (formely fuel-agent) - code - unit tests - run by tox in unit-tests env - functional tests - run by tox in func-tests env - import bareon-func-framework - setUp, tearDown are written using API provided by bareon-func-test - default slave lab configuration (disk space, CPU’s, RAM) defined in base setUp. - can be overridden for particular test, using bareon-func-test API. - functional tests run if /etc/bareon-func-test.conf present, otherwise skipped.
  • 4. bareon-func-test lab Controller (one, VM or BM): - initial node where bareon is fetched to run tests. - hosts DHCP, TFTP, PXE and fake image service. - all workers share single set of services - spawns slaves (using python virsh bindings, or preconfigured BM nodes) - manages pool of slaves - executes tests using available number of slaves - drives FPA in every test (ssh-ing to slave) - if too much code overlaps with Ironic itself, may be based on Ironic Slave node (many, VM or BM or both): - depending of /etc/bareon-func-test.conf: - can live inside controller (nested virt) - can live on the same level with controller (networks for not nested?) - can be a BM server - booted via PXE - runs ramdisk with agent - runs tests (one by one, driven by controller)
  • 5. Single test (ramdisk only) Inputs: - ramdisk build - one slave node - provision.json json - a set of commands and params to execute on verify step - lsblk - parted - etc - expected output json - optional params (inherited from base test case if not specified): - a custom image - a custom firmware - etc Outputs: - ramdisk log - passed: True/False - in future: - performance grade (basing on statistics)
  • 6. Single test (involving reboot to tenant image) Inputs: - ramdisk build - a special tenant image with callback and built-in key - one slave node - provision.json json - a set of commands and params to execute on ramdisk verify step - expected ramdisk output json - a set of commands and params to execute on tenant image verify step - expected tenant image output json - optional params (inherited from base test case if not specified) Outputs: - ramdisk log - tenant image boot log - passed: True/False - in future: - performance grade (basing on statistics)
  • 7. Logs - both agent logs and tenant image logs are sent to controller, and published - logs are sent continuously (where possible) to be able to trace possible kernel panic, etc
  • 8. Group of tests (Test class) - Share the same setup config: - request specific image - request specific firmware - request specific node - multiple disks - existing data to test preserve
  • 9. Parallelism - Single controller node - a shared PXE, TFTP, HTTP for all slaves - Multiple virtual slave nodes (basing on config) - spawned on demand using Python virsh bindings - power management via virsh - Multiple baremetal slave nodes (basing on config) - need to set IPMI creds in config - spawned via IPMI - power management via virsh - if we want to host a few labs in parallel (test a few ramdisks at time) need to split available HW nodes between labs - Parallel test execution is done via testr (OpenStack standard testing tool) - we configure processes=number_of_slaves
  • 11. Q&A