agl development tools what’s new in ffiot.bzh/download/public/2018/als-tokyo/stephane/... ·...
TRANSCRIPT
Stéphane DesneuxCTO at IoT.bzh<[email protected]>
AGL Development ToolsWhat’s new in FF ?
June 2018AGL Development Tools - What's new in FF ? 2
IoT.bzh Crew7 in 2017, 15 as of today
June 2018AGL Development Tools - What's new in FF ? 3
1st Technical Contributor
June 2018AGL Development Tools - What's new in FF ? 4
Agenda
XDS : Apps and Bindings development
● Code / X-Build / Run / Debug
● Monitor a single binding
● Supervision: one daemon to spy them all
Bindings Test Framework
AGL profiles and YoMo
Roadmap / Q&A
June 2018AGL Development Tools - What's new in FF ? 5
XDS – Quick Overview
● Dedicated to Applications Developers– enables development without Yocto skills
● Cross-platform build using AGL SDK
– leverages AGL/Yocto toolchain● Deploy on development boards or VMs● Remote debugging from IDE● Documentation on
http://docs.automotivelinux.org
June 2018AGL Development Tools - What's new in FF ? 6
XDS – Reducing complexity
● Easy target access – console, SSH, …
● Developer uses common IDEs– VS Code, Netbeans, Eclipse...
● Dashboard Web App to manage configurations and trigger actions
● XDS API for CI workflows & specific environments● Command line tool also available (xds-cli)
June 2018AGL Development Tools - What's new in FF ? 7
XDS – Key Features● Multi-platform : no dependencies on developer host
(Linux / Windows / MacOS)
● Easy to setupNear-zero install, no admin privileges required
● Application sources remain localCompatibility with existing IT policies (e.g. corporate backup, git, ...)
● Cross toolchain & tools embedded in a container :
● Local : run locally (local subsystem, virtual machine, docker container ...)
● On-premises : run on a local build server● Cloud : SaaS
● Leverage specific OS capabilities where applicable(e.g. Linux for Windows Subsystem, docker)
June 2018AGL Development Tools - What's new in FF ? 8
XDS – Architecture
AGL repo
Development HostLinux / Windows / MacOS
Development HostLinux / Windows / MacOS
XDS Server ContainerLocal or remote
XDS Server ContainerLocal or remote
App sources
IDE UI(NetBeans, Eclipse,
Visual Studio Code, …)
XDS-server
File Sync
Local networkor
Cloud network
REST + WS
These blocks may be bypassed when files can be shared over a local network (eg. NFS mount or docker volume)
TargetTarget
deployment
Files
App sources(duplicated)
Cross Toolchain B
Cross Toolchain A
XDS-agent
File Sync
Direct link(eg. USB <=> Ethernet)
Files
Command line
XDS-cli
June 2018AGL Development Tools - What's new in FF ? 9
XDS – Dashboard
● Available on http://localhost:8800
NEW UI !
June 2018AGL Development Tools - What's new in FF ? 10
1) Install xds-server on a build server machine
2) Install xds-agent and start-it on your machine
3) Browse XDS dashboard: http://localhost:8800
4) Add a new project
5) Cross build/compile your project using either :
1) Dashboard build page
2) IDE using xds-cli
6) Deploy app
7) Source debug from IDE (xds-gdb)
XDS – Operations
June 2018AGL Development Tools - What's new in FF ? 11
XDS – Demo
● Explore Dashboard● Log on the target (terminal → Qemu)● Build helloworld-service (VS Code)
https://github.com/iotbzh/helloworld-service/● Run (VS Code)● Command line tools for IDEs (xds-cli, xds-gdb)
June 2018AGL Development Tools - What's new in FF ? 12
Agenda
XDS : Apps and Bindings development
● Code / X-Build / Run / Debug
● Monitor a single binding
● Supervision: one daemon to spy them all
Bindings Test Framework
AGL profiles and YoMo
Roadmap / Q&A
June 2018AGL Development Tools - What's new in FF ? 13
Monitoring – API & UI
● Monitoring API is built in the binder
● Monitor API is enabled by AppFW in any binder(--monitoring option)
● UI is available easily:
http://<host>:<port>/monitoring/
NOTE THE TRAILING SLASH !
June 2018AGL Development Tools - What's new in FF ? 14
Monitoring – outcome
● Trace verbs calls
– API calls with args
– Results with data● Trace events content● View internal log calls (AFB_NOTICE et al.)● Filtering available to reduce “noise”:
– Filter per API
– Filter per trace type
June 2018AGL Development Tools - What's new in FF ? 15
Monitoring – UI Overview & Demo
●TODO
June 2018AGL Development Tools - What's new in FF ? 16
Agenda
XDS : Apps and Bindings development
● Code / X-Build / Run / Debug
● Monitor a single binding
● Supervision: one daemon to spy them all
Bindings Test Framework
AGL profiles and YoMo
Roadmap / Q&A
June 2018AGL Development Tools - What's new in FF ? 17
Supervision – How it works ?
June 2018AGL Development Tools - What's new in FF ? 18
Supervision
● xds-service binding running on target● Collects data from supervisor daemon● Send them to harvester binding for storage in
a TimeDB
– currently tested: traces are stored in influxdb● XDS Dashboard: Grafana draws reports based
on influxdb records
June 2018AGL Development Tools - What's new in FF ? 19
Supervision – Interaction graph
● Example: 2 apps simulate requests to 2 low level bindings and receive responses and events
June 2018AGL Development Tools - What's new in FF ? 20
Supervision – Visualize in XDS
VIDEO
June 2018AGL Development Tools - What's new in FF ? 21
Agenda
XDS : Apps and Bindings development
● Code / X-Build / Run / Debug
● Monitor a single binding
● Supervision: one daemon to spy them all
Bindings Test Framework
AGL profiles and YoMo
Roadmap / Q&A
June 2018AGL Development Tools - What's new in FF ? 22
afb-test – How it works
● afb-test is a binding● It is run as an extra in the binder that also
loads the binding to be tested
June 2018AGL Development Tools - What's new in FF ? 23
afb-test – Main features
● Write the tests in LUA using new ‘AFT’ framework● Uses LuaUnit (xUnit interface)● Reports in several common formats: Text, TAP, JUnit, ...● To test API verbs:
– Call a verb with arguments
– Get the result back and assert content● To test API events:
– Install a callback function triggered when a particular event is received
– Inside callback, assert event data if needed
June 2018AGL Development Tools - What's new in FF ? 24
afb-test – Example using AFT
June 2018AGL Development Tools - What's new in FF ? 25
Agenda
XDS : Apps and Bindings development
● Code / X-Build / Run / Debug
● Monitor a single binding
● Supervision: one daemon to spy them all
Bindings Test Framework
AGL profiles and YoMo
Roadmap / Q&A
June 2018AGL Development Tools - What's new in FF ? 26
YoMo – Binary feeds for Yocto
● A project to distribute packages built using Yocto through binary RPM feeds
● For target boards:
– Assemble a minimal core image common to all profiles
– Declare RPM repositories
– Use dnf to install/upgrade the target system● For development:
– Install minimal (core) SDK
– Install/Upgrade SDK with profile specific packages using RPMs
June 2018AGL Development Tools - What's new in FF ? 27
YoMo - Architecture
June 2018AGL Development Tools - What's new in FF ? 28
YoMo – Outcome
● Avoid rebuilding over and over again Yocto images :
– gain of time for integration teams
– repeatable results for the community ● Applications developers MUST NOT use
bitbake, but binary images and SDK
June 2018AGL Development Tools - What's new in FF ? 29
YoMo – Further information
● Available at:
https://github.com/iotbzh/YoMo ● See talk by Khiem Nguyen, Renesas:
June 2018AGL Development Tools - What's new in FF ? 30
Agenda
XDS : Apps and Bindings development
● Code / X-Build / Run / Debug
● Monitor a single binding
● Supervision: one daemon to spy them all
Bindings Test Framework
AGL profiles and YoMo
Roadmap / Q&A
June 2018AGL Development Tools - What's new in FF ? 31
AGL Devtools Roadmap
● XDS v1.1 released, available for FF
– cross-build/run/debug from IDE● XDS v2.x targeting GG
– Supervision to be integrated
– Offline data collecting for KPI analysis● Afb-test
– Initial integration for FF
– Deployment in AGL bindings for GG● YoMo
– Still WIP
– Discussions with upstream Yocto project to see how to converge
June 2018AGL Development Tools - What's new in FF ? 32
Q&A
Gulf of Morbihan, south of Brittany, France
June 2018AGL Development Tools - What's new in FF ? 33
References● XDS– Documentation: http://docs.automotivelinux.org/...
– Source code: https://git.automotivelinux.org/src/xds/xds-*/● Bindings Test Framework: https://github.com/iotbzh/afb-test● YoMo: https://github.com/iotbzh/yomo