fuego test system status summaryfuegotest.org/ffiles/fuego-jamboree-status-june-2018.pdf · 2018....

37
Confidential PA1 10/23/2014 1 Fuego Test System Status Summary June 2018 Tim Bird Fuego Maintainer Sony Electronics 1

Upload: others

Post on 18-Aug-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Fuego Test System Status Summaryfuegotest.org/ffiles/Fuego-Jamboree-status-June-2018.pdf · 2018. 6. 23. · 2110/23/2014 PA1 Confidential Fuego release test • Complicated test

ConfidentialPA110/23/20141

FuegoTest System

Status SummaryJune 2018

Tim Bird

Fuego Maintainer

Sony Electronics

1

Page 2: Fuego Test System Status Summaryfuegotest.org/ffiles/Fuego-Jamboree-status-June-2018.pdf · 2018. 6. 23. · 2110/23/2014 PA1 Confidential Fuego release test • Complicated test

ConfidentialPA110/23/20142

Outline

IntroductionFeature ListFeature Status

2

Page 3: Fuego Test System Status Summaryfuegotest.org/ffiles/Fuego-Jamboree-status-June-2018.pdf · 2018. 6. 23. · 2110/23/2014 PA1 Confidential Fuego release test • Complicated test

ConfidentialPA110/23/20143

Micro-Introduction

Fuego =(Fuego Linux distribution +

host scripts +pre-packaged tests +

Jenkins)all inside a container

Page 4: Fuego Test System Status Summaryfuegotest.org/ffiles/Fuego-Jamboree-status-June-2018.pdf · 2018. 6. 23. · 2110/23/2014 PA1 Confidential Fuego release test • Complicated test

ConfidentialPA110/23/20144

Architecture Diagram

Host machine:

Docker container:

Target board

Webcontrol interfaceToolchains

ConfigBuildsLogs

VolumeMount

Container build system

• Fuego Linux

distribution

• Jenkins• Test programs• Scripts

Page 5: Fuego Test System Status Summaryfuegotest.org/ffiles/Fuego-Jamboree-status-June-2018.pdf · 2018. 6. 23. · 2110/23/2014 PA1 Confidential Fuego release test • Complicated test

ConfidentialPA110/23/20145

Core features

• Distribution of Linux for testing

• Build system• Architecture-neutral & inherently cross-platform

• Includes a collection of tests• Scripts for test execution

• Results parsing, analysis, and visualization

• Report generation

• Multiple transports

• Jenkins front end• Also has a command line tool

Page 6: Fuego Test System Status Summaryfuegotest.org/ffiles/Fuego-Jamboree-status-June-2018.pdf · 2018. 6. 23. · 2110/23/2014 PA1 Confidential Fuego release test • Complicated test

ConfidentialPA110/23/20146

Outline

IntroductionFeature ListFeature Status

6

Page 7: Fuego Test System Status Summaryfuegotest.org/ffiles/Fuego-Jamboree-status-June-2018.pdf · 2018. 6. 23. · 2110/23/2014 PA1 Confidential Fuego release test • Complicated test

ConfidentialPA110/23/20147

Slide key

• Italic header = reference material

Page 8: Fuego Test System Status Summaryfuegotest.org/ffiles/Fuego-Jamboree-status-June-2018.pdf · 2018. 6. 23. · 2110/23/2014 PA1 Confidential Fuego release test • Complicated test

ConfidentialPA110/23/20148

Feature Areas

• Installation

• Test Execution

• Results Analysis

• User Interface

• Visualization

• Reports

• Tests

• Fuego Distribution

• Infrastructure

• Usability

• Documentation

• Marketing

Page 9: Fuego Test System Status Summaryfuegotest.org/ffiles/Fuego-Jamboree-status-June-2018.pdf · 2018. 6. 23. · 2110/23/2014 PA1 Confidential Fuego release test • Complicated test

ConfidentialPA110/23/20149

Installation

• Docker build• Pre-built Docker image (partially completed)

• Problems with container customization

• Adding a board

• Adding a toolchain

• Populating Jenkins artifacts

• Provisioning setup (none)

Page 10: Fuego Test System Status Summaryfuegotest.org/ffiles/Fuego-Jamboree-status-June-2018.pdf · 2018. 6. 23. · 2110/23/2014 PA1 Confidential Fuego release test • Complicated test

ConfidentialPA110/23/201410

Pre-built docker image

• Ability to use Fuego without building the docker image• Create a pre-built Fuego docker image, and

host it at docker.io• e.g. “docker run fuego”

• Requires automatic container customization• Network proxy• User and group• Volume mount customization

• Includes refactoring the Fuego directory layout• Turned out to be too intrusive for 1.3 release

Page 11: Fuego Test System Status Summaryfuegotest.org/ffiles/Fuego-Jamboree-status-June-2018.pdf · 2018. 6. 23. · 2110/23/2014 PA1 Confidential Fuego release test • Complicated test

ConfidentialPA110/23/201411

Execution

• Launch – jenkins job or command line• main.sh, ftc run-test

• Test customization (plans, specs, criteria)• Overlay system (ovgen.py)• Test dependency system (need_check.sh)• Transports (serial, ssh, local, ttc, lava)• Build system

• Source retrieval• Deployment• Remote execution• Log retrieval• Error handling/Abort• Timeouts

Page 12: Fuego Test System Status Summaryfuegotest.org/ffiles/Fuego-Jamboree-status-June-2018.pdf · 2018. 6. 23. · 2110/23/2014 PA1 Confidential Fuego release test • Complicated test

ConfidentialPA110/23/201412

Results Analysis

• Log parsing• Unified Output Format

• log_compare

• Pass-criteria• per-board pass-criteria

• Jenkins history

Page 13: Fuego Test System Status Summaryfuegotest.org/ffiles/Fuego-Jamboree-status-June-2018.pdf · 2018. 6. 23. · 2110/23/2014 PA1 Confidential Fuego release test • Complicated test

ConfidentialPA110/23/201413

User Interface

• Jenkins UI

• Job launching

• ftc to manage Jenkins objects• ftc add-node, add-job, add-view

• History, status, result indicators• Not very rich (no icon for abort or skip)

• log links, results description

• Failure reason (missing)

Page 14: Fuego Test System Status Summaryfuegotest.org/ffiles/Fuego-Jamboree-status-June-2018.pdf · 2018. 6. 23. · 2110/23/2014 PA1 Confidential Fuego release test • Complicated test

ConfidentialPA110/23/201414

Visualization

• Charts• Tables

• Plots (jquery flot module)

• chart_config• A few items missing from JTA (hide/unhide data sets)

• Log splitting by testcase

Page 15: Fuego Test System Status Summaryfuegotest.org/ffiles/Fuego-Jamboree-status-June-2018.pdf · 2018. 6. 23. · 2110/23/2014 PA1 Confidential Fuego release test • Complicated test

ConfidentialPA110/23/201415

Log splitting by testcase

• Ability to split the test log into pieces, according to testcase boundaries

• Only works for some logs

• Requires slight modification to test’s parser.py

• Addition to UI• Can click on testcase in Jenkins UI, and see

section of log related to that testcase

• Very handy for examining results details

Page 16: Fuego Test System Status Summaryfuegotest.org/ffiles/Fuego-Jamboree-status-June-2018.pdf · 2018. 6. 23. · 2110/23/2014 PA1 Confidential Fuego release test • Complicated test

ConfidentialPA110/23/201416

Reports

• ftc list-runs, gen-report• field control

• output formats

• --where (filtering)• (time comparisons are a bit confusing)

• (could use a batch id)

• Dynamic documents• chart insertion (missing)

• coverage (very little)

Page 17: Fuego Test System Status Summaryfuegotest.org/ffiles/Fuego-Jamboree-status-June-2018.pdf · 2018. 6. 23. · 2110/23/2014 PA1 Confidential Fuego release test • Complicated test

ConfidentialPA110/23/201417

Report generation improvements

• More output formats• html, rst, pdf, excel, csv

• Control of fields displayed• header_fields

• report fields

• More filtering (--where options)• especially tguid:result

• Try this:• ftc gen-report –where “tguid:result!=PASS”

Page 18: Fuego Test System Status Summaryfuegotest.org/ffiles/Fuego-Jamboree-status-June-2018.pdf · 2018. 6. 23. · 2110/23/2014 PA1 Confidential Fuego release test • Complicated test

ConfidentialPA110/23/201418

Tests

• LTP – see next slide

• kselftest

• Realtime, Filesystem, Network

• POSIX

• System benchmarks

• Security/vulnerability

• autopkg

• ptest

• Fuego self-tests / release test

Page 19: Fuego Test System Status Summaryfuegotest.org/ffiles/Fuego-Jamboree-status-June-2018.pdf · 2018. 6. 23. · 2110/23/2014 PA1 Confidential Fuego release test • Complicated test

ConfidentialPA110/23/201419

LTP

• lots of specs

• skiplists• Autodetect skiplist items

• supports separate build and manual deploy

• one_test• execute a single test program

• Problems:• realtime parsing is not good

• should separate POSIX from other tests

Page 20: Fuego Test System Status Summaryfuegotest.org/ffiles/Fuego-Jamboree-status-June-2018.pdf · 2018. 6. 23. · 2110/23/2014 PA1 Confidential Fuego release test • Complicated test

ConfidentialPA110/23/201420

New tests

• Realtime benchmarks:• backfire, deadlinetest, migratetest, pmqtest,

ptsematest, sigwaittest, svsematest

• Other tests (updated or new):• dbench4, dd, iperf3, vuls, autopkgtest, year2038

• LTP_one_test

• fuego_board_status

• Fuego self-tests:• fuego_lint, fuego_tguid_check, fuego_ftc_check

• fuego_release_test

Page 21: Fuego Test System Status Summaryfuegotest.org/ffiles/Fuego-Jamboree-status-June-2018.pdf · 2018. 6. 23. · 2110/23/2014 PA1 Confidential Fuego release test • Complicated test

ConfidentialPA110/23/201421

Fuego release test

• Complicated test to do a full release test• Builds docker container

• Runs docker container for “release under test”, alongside “test-runner” container

• Checks Jenkins web interface• Using HTML DOM element checks

• Using comparisons of web page rendered images

• Adds capabilities to Fuego distribution for testing of other DUT web or image features

Page 22: Fuego Test System Status Summaryfuegotest.org/ffiles/Fuego-Jamboree-status-June-2018.pdf · 2018. 6. 23. · 2110/23/2014 PA1 Confidential Fuego release test • Complicated test

ConfidentialPA110/23/201422

Fuego Distribution Additions

• clitest• Tests expected output of commands

• Selenium• Web page HTML testing

• Chromium, imagemagick, python-pillow• Web page image testing

• pexpect, flake8 (python lint) • Fuego self-test

• python-reportlab• Report formats

• iperf3• Network testing

Page 23: Fuego Test System Status Summaryfuegotest.org/ffiles/Fuego-Jamboree-status-June-2018.pdf · 2018. 6. 23. · 2110/23/2014 PA1 Confidential Fuego release test • Complicated test

ConfidentialPA110/23/201423

Web page and image comparison tools

• Added Selenium to Fuego distribution• For web page testing

• Added Chromium to Fuego distribution• For web page rendering automation

• Added tools for:• Comparison of returned HTML• Web page image capture• Image comparison

• With support for masked regions

• Note: This is not generalized yet• Need to read Functional.fuego_release_test scripts

and use as example

Page 24: Fuego Test System Status Summaryfuegotest.org/ffiles/Fuego-Jamboree-status-June-2018.pdf · 2018. 6. 23. · 2110/23/2014 PA1 Confidential Fuego release test • Complicated test

ConfidentialPA110/23/201424

Infrastructure

• bitbucket git repositories

• Hardware board control

• Individual test phases

• ftc outside the docker container

Page 25: Fuego Test System Status Summaryfuegotest.org/ffiles/Fuego-Jamboree-status-June-2018.pdf · 2018. 6. 23. · 2110/23/2014 PA1 Confidential Fuego release test • Complicated test

ConfidentialPA110/23/201425

Hardware board control

• General feature is ability to control board under automation• Added in 1.3:

• Hook for hardware board reboot

• Shows method for adding board control hooks

• Goal is to support provisioning and other hardware functions, as well• ex. off-DUT test hardware control and multiplexing

• Would rather re-use some other board control layer• e.g. LAVA, labgrid, Dryad (from SLAV), ttc, etc.

Page 26: Fuego Test System Status Summaryfuegotest.org/ffiles/Fuego-Jamboree-status-June-2018.pdf · 2018. 6. 23. · 2110/23/2014 PA1 Confidential Fuego release test • Complicated test

ConfidentialPA110/23/201426

Individual test phases

• Ability to run test phases individually• Main purpose is to allow separation of:

• Test program build (on host)

• Test execution on target

• Can use ftc option:• ftc run-test –p ‘pcb’

• Executes pre_test, pre_check and build phases, then stops

• Can use environment variable• FUEGO_TEST_PHASES=“pre_test pre_check build”

Page 27: Fuego Test System Status Summaryfuegotest.org/ffiles/Fuego-Jamboree-status-June-2018.pdf · 2018. 6. 23. · 2110/23/2014 PA1 Confidential Fuego release test • Complicated test

ConfidentialPA110/23/201427

ftc outside the dockercontainer

• docker adds unneeded overhead to some commands

• Some commands can now be run outside the docker container• New fuego.conf file to specify directory locations

• list-runs, gen-report can be done directly on host

• Partial step towards use of low-level Fuego functionality with alternate UIs and frameworks

Page 28: Fuego Test System Status Summaryfuegotest.org/ffiles/Fuego-Jamboree-status-June-2018.pdf · 2018. 6. 23. · 2110/23/2014 PA1 Confidential Fuego release test • Complicated test

ConfidentialPA110/23/201428

Usability

• End user• License• Web site• Ease of installation/use

• Consistency• Obviousness

• Robustness• Error Handling

• Developer support• Coding style• Languages (bash, python, json)• Debugging• Documentation

Page 29: Fuego Test System Status Summaryfuegotest.org/ffiles/Fuego-Jamboree-status-June-2018.pdf · 2018. 6. 23. · 2110/23/2014 PA1 Confidential Fuego release test • Complicated test

ConfidentialPA110/23/201429

Contributor guidelines

• Recently added to wiki

• Coding style guide• Mostly indentation (4 spaces, no tabs)

• See http://fuegotest.org/wiki/Coding_style

• License guide

• Patch submission tips

• See http://fuegotest.org/wiki/License_And_Contribution_Policy

Page 30: Fuego Test System Status Summaryfuegotest.org/ffiles/Fuego-Jamboree-status-June-2018.pdf · 2018. 6. 23. · 2110/23/2014 PA1 Confidential Fuego release test • Complicated test

ConfidentialPA110/23/201430

Documentation

• Installation (quickstart guide)• End-user docs (wiki, pdf)

• User’s guide (adding...)• Walkthroughs (none)• Jenkins help (none)

• Setting up triggers (needed)• Setting up notifications (needed)

• Developer docs (wiki)• Architecture• API reference

• Tutorials ??• (Some presentations exist, but they’re old)

Page 31: Fuego Test System Status Summaryfuegotest.org/ffiles/Fuego-Jamboree-status-June-2018.pdf · 2018. 6. 23. · 2110/23/2014 PA1 Confidential Fuego release test • Complicated test

ConfidentialPA110/23/201431

Documentation conversion

• Conversion of docs to reStructuredText• Replace PDF and wiki docs with rst

• Move all docs under source repository

• Use sphynx to create multiple formats

• Publish on readthedocs.io

• Made some progress• Have sphynx templates in place

• Got stuck on markup conversion• Considered automation, but hit some hurdles

• See http://fuegotest.org/wiki/rst_docs

Page 32: Fuego Test System Status Summaryfuegotest.org/ffiles/Fuego-Jamboree-status-June-2018.pdf · 2018. 6. 23. · 2110/23/2014 PA1 Confidential Fuego release test • Complicated test

ConfidentialPA110/23/201432

Marketing

• Outreach

• Visibility

• User growth• (slower than expected)

Page 33: Fuego Test System Status Summaryfuegotest.org/ffiles/Fuego-Jamboree-status-June-2018.pdf · 2018. 6. 23. · 2110/23/2014 PA1 Confidential Fuego release test • Complicated test

ConfidentialPA110/23/201433

Test server (prototype)

• Test store (put-test, get-test)

• Distributed test requests (put-request)

• Aggregation• Results sharing (put-run)

• Data mining (nothing)

Page 34: Fuego Test System Status Summaryfuegotest.org/ffiles/Fuego-Jamboree-status-June-2018.pdf · 2018. 6. 23. · 2110/23/2014 PA1 Confidential Fuego release test • Complicated test

ConfidentialPA110/23/201434

Outline

IntroductionFeature ListFeature Status

34

Page 35: Fuego Test System Status Summaryfuegotest.org/ffiles/Fuego-Jamboree-status-June-2018.pdf · 2018. 6. 23. · 2110/23/2014 PA1 Confidential Fuego release test • Complicated test

ConfidentialPA110/23/201435

Feature StatusFeature Area Status Potential Improvements

Installation Pretty Good Pre-built image, provisioning help

Test Execution Good Handle timeouts better

Results Analysis Very Good Report of failure reason

User Interface Good ??

Visualization Good Add more chart_config options

Reports OK Integration into dynamic docs

Tests OK More tests

Fuego Distribution Good Ability to load packages as needed

Infrastructure OK Move to gitlab

Usability OK ??

Documentation OK Need tutorials and walkthroughs

Marketing Good ??

Test server Not Good Finish implementation, provide server

code

Page 36: Fuego Test System Status Summaryfuegotest.org/ffiles/Fuego-Jamboree-status-June-2018.pdf · 2018. 6. 23. · 2110/23/2014 PA1 Confidential Fuego release test • Complicated test

ConfidentialPA110/23/201436

Final Thoughts

• Don’t want to focus on negatives

• Fuego is a very rich, capable, flexible system

• An amazing amount of features• It’s often easy to implement a new feature,

because of rich existing infrastructure

• Can usually support what you want to do

• Very friendly community

Page 37: Fuego Test System Status Summaryfuegotest.org/ffiles/Fuego-Jamboree-status-June-2018.pdf · 2018. 6. 23. · 2110/23/2014 PA1 Confidential Fuego release test • Complicated test

ConfidentialPA110/23/201437

Fuego