This page describes the CE Linux Forum Open Test Lab, which is currently under construction.
Table Of Contents:
Contents
Lab Resources - web site, wiki and mailing list
Lab control web site: http://testlab.celinuxforum.org/
Lab wiki: http://testlab.celinuxforum.org/otlwiki
Lab mailing list: http://tree.celinuxforum.org/mailman/listinfo/opentestlab
[ Material following this should be moved to test lab wiki from this main CELF wiki ]
Introduction and Purpose
This document describes the Open Test Lab of the CE Linux Forum.
The purpose of the lab is, at the highest level, the same as the purpose of the forum, which is to help enhance Linux and Linux technologies for use in Consumer Electronics products.
The lab exists to provide testing and quality assurance benefits to the entire Linux community, including CE Linux forum members.
The core of the lab is located in San Jose, but a satellite lab (an extension to the main lab) is planned for Tokyo, and additional lab nodes may be added to the lab as part of a completely distributed lab model.
The lab is available for use by CE Linux Forum members, and will be made available to open source community members as well.
Usage Models
The lab provides resources for a number of different testing activities:
- Interactive board usage via remote access - In this mode, an individual developer reserves a target board in the lab, and interactively compiles the kernel and other software, loads it on the target board, and runs tests on the board. This mode allows a developer to have access to hardware which they don't have on their own desk.
- Automated multi-platform testing - A developer can also request that the same test be performed across multiple platforms. This is useful to see whether a particular feature or fix works on multiple platforms, or to compare performance or functionality results between platforms.
- Nightly regression tests - The test lab will be configured with a set of tests to run at periodic intervals (e.g. nightly), using software updated to latest versions. This will be used to test for regression of features or functionality, and results will be provided to the public. In particular, the results are intended to be useful to the open source community, to notify developers about problems in new versions of Linux software.
- Private test usage - In addition to public use of lab hardware, and publishing of open results, tests from the lab will be made available for private use. That is, a client can use the tests and test infrastructure of the lab to test a board locally. The lab infrastructure should make this very easy. The intent of this is to make the lab useful for internal quality assurance testing, whether for private individuals or large corporations.
Benefits of Testing
[It's good to test software. It makes it better. This part needs work, but it is pretty obvious.]
Benefits of Remote Access to Boards
The preferred mode of developing and testing software on a development board is to have the board in-hand (locally). However, sometimes it is not feasible for every interested developer to obtain a board. Sometimes development boards are expensive, or are made in limited quantities. This is especially true of prototype boards, which may have a limited development lifetime. Making a board available via the CELF test lab may help a developer who could not afford a development board, or who may not have priority to receive one.
In some situations, it is too much trouble to obtain a board when only a simple test needs to be performed or a small piece of data needs to be collected. For example, an indepedent developer might ordinarily have to perform a lot of tedious and time-consuming tasks in order to obtain a board. This might consist of waiting for necessary permissions, exchanging paperwork for a board loan, shipping, and having to do board-specific setup. For a quick test this overhead might not be worth the trouble. By lowering the barriers to access a development board, it is hoped that it will lead to increased use and testing on that board, by a wide variety of developers and for a wide variety of development tasks.
Not all development tasks can be performed under this model. For some tasks, such as evaluating audio or video performance or quality, it really is required to have a board locally. However, some tasks CAN be performed quite effectively remotely.
Network Effects
There are network effects (benefits which accrue from increased interconnections between parts of a system) which derive from the increased usability and availability of embedded development boards. A board supplier benefits from increased use (including development and testing) of a board that is available to a wider audience. For an embedded developer, it is useful to have access to boards that they would not otherwise be able to use. Also, when a variety of boards can be tested in a uniform manner, it helps to find bugs and problems in code. For many open source developers, even the ability to compile the same code on another architecture may help find bugs and problems in new code.
One of the most important reasons for the CELF Open Test Lab is to create an environment where these needs are met, and where the embedded Linux developers can reinforce their efforts to make progress on technology improvements for Linux.
Due to a number of factors unique to the embedded space, the community of developers that work on Linux for embedded products is fragmented. Through use of the test lab, it is hoped that this fragmentation can be reduced, and greater progress at improving Linux for this space can be made.
Architecture
Lab architecture
The documentation for the lab is divided into several different documents, as described below:
See TestLabArchitecture - Architecture document for the lab. This document describes the major functional elements of the lab, the expected operations between the elements, and the use cases for the major activities supported by the lab.
See RemoteBoardAccessSpec - This is the specification for how a host interfaces with a target board (including building software and controlling the target)
See TestLabServerSpec - This describes the test lab server, including the interfaces between the lab clients and the server, and interfaces between the server machine and host machines in the lab.
Architecture Diagram
Here is an architecture diagram of the CELF test lab:
|
Lab Hardware
The hardware for the lab is described here. Some of this equipment has been purchased, and some target boards have been delivered already.
Her are some of the individual hardware items that will be used in the lab:
server - accessible from the outside: See http://testlab.celinuxforum.org/
- firewall
- host/target combinations
- control modules
TargetSwitchControlFromParallelPort - this page has information about how to build your own module to control target switches using the parallel port on a standard PC (the host)
- how to use a USB-to-serial converter for serial console access
web-controlled power control module - http://www.digital-loggers.com/EPC.html
Additional information about the hardware for the lab is kept in the internal wiki for lab administrators.
Lab Software
Software for the lab is being developed now, and will be available from TestLabPrograms
Here are some of the individual software items needed for the lab.
web server - see http://testlab.celinuxforum.org/
- test server
- software repository
target control software - TargetProgramUsageGuide
Lab Tests
The test lab is building a repository of actual tests.
The list of currently available tests is at: LabTests
Lab Facilities
San Jose lab (main lab)
The main test lab is located at: {{{CE Linux Forum Test Lab Suite 171 1900 Wyatt Drive San Jose, CA, 95054 }}}
Tokyo lab (satellite lab)
We are working on creating a satellite lab in Tokyo, in order to provide ease-of-access to our membership in Japan.
We are currently pursuing negotiations with an outside party to utilize space in their facility. We will publish information about this facility as soon as it becomes available.
Lab Roles
CELF Lab Director
This person directs the overall operation of the lab, including coordinating contracts, obtaining lab facilities, managing lab personnel (where appropriate).
People:
- Tim Bird
- Satoru Ueda (?) in Japan
Responsibilities:
- obtain (lease or borrow) lab space
- hire lab manager
- resolve legal issues, such as contracts, etc.
- organize meetings and teleconferences for interested parties
- prepare high-level documents and demos??
- manage translation of test documents and infrastructure, where needed
- handle unexpected issues
Lab Manager
A lab manager is responsible for day-to-day operation of the lab. Most lab functions are automated, or are driven by user interaction. Therefore, the lab manager responsibility is primarily oriented to maintaining the operation of the lab, and fixing any problems that arise.
People:
- Hired in US by CELF
- Sato-san in Japan (by OSDL)??
Responsibilities:
- receive hardware shipped to lab (and perform setup??)
- maintain target board hardware
- detect broken boards, work with support engineer to troubleshoot and repair
- maintain host software (base linux distribution on host machines)
- maintain server base linux distribution (including web server config, if server is in lab)
- apply security updates to server
- maintain lab firewall, if applicable
Board Support Engineer
People:
- contact provided by semiconductor company which provides board??
Responsibilities:
- install toolchains and other software required on host machine
- provide custom target control hardware (if applicable)
- work with lab manager to keep target hardware operational in lab
- answer hardware maintenance questions about the target
Test Developer
People:
- open to CELF engineers and public
Responsibilities:
- write tests for use in lab
Lab Software Developer
People:
- (possibly Tim, or Lab manager (if experienced enough) or contractor from OLS)
Responsibilities:
- develop framework for initiating automated tests (re-use OSDL framework if possible)
- integrate lab with OSDL binary test framework
- develop CGI scripts for publishing results from automated regression tests
- develop CGI scripts for user registration (can re-use wiki registration)
- develop CGI scripts for board reservation
Lab User
People:
- open to public (with registration approval)
Responsibilities:
- reserve boards for interactive or automated testing
- submit kernel, configuration, patches, or user programs for custom tests
- request automated test (single or multi-board)
- work interactively on a single board, remotely
- evaluate results from test (delivered via web site)
Unassigned responsibilities
- user registration approval - someone (a person or committee) needs to approve user
registrations for interactive access to boards. This is similar to SourceForge project approval (which grants ssh privileges on a SF site).
Documents
Lab Architecture Document
(see above for now)
Lab Manager's Guide
- lab maintenance instructions
- how a test is added to the test panoply
- how a new nightly regression test is added
- how a new board is added to the lab
- model of private setup and test, then submission of both host and target
- how a remote board is added to the lab
- how to remove a remote board
- support instructions
- how to manage the firewall
- how to manage the web site
- how to manage the hosts
- how to manage the target hardware
Board Supplier's Guide
- instructions for semi-conductor vendors who wish to add a board to the lab
- what is required of the firmware
- what is required on the host
- hardware required to control power and reset on the target
- etc.
See TestLabBoardSuppliersGuide
Test Developer's Guide
- specification for how to write tests for the lab
- test API
- acceptable languages
- compiling tests for use on targets (cross-compiling environment standards)
- automating your test across multiple targets
- samples for individual tests
- results format specifications (HTML output??)
- how to submit a new test to the lab
- (see user's guide for how to run tests)
- testing your test
- how to update an existing test
Lab User's Guide
- lab usage instructions
- how to see what tests are available
- how to see what boards are available
- how to use a board interactively
- how to run a test privately (download a test and run it locally)
Lab Startup
Phase 1 - basic lab operation
Next steps:
- purchase lab server machine - done
- install linux and web server on lab server - done
- set up lab wiki - done
- transfer pages from CELF wiki to lab wiki
- write documents listed above
- develop sample test (as part of Test Developer's Guide)
Initial site plan:
- 2 sites: San Jose and Tokyo
- San Jose site:
- one lab manager, hired by CELF, part time - Nomad Global Solutions
- lab server, firewall, 2 hosts and 2 target boards
- OSK, Versatile, Intel boxes
- Tokyo site:
- one lab manager (volunteer?)
- (firewall??), 1 host and 3 target boards
- San Jose site:
- Miscellaneous notes:
- First phase will be to get host/target system operational, and second phase will be to integrate with distribution build capabilities of OSDL binary test system.
For each target board in the lab, the following should be supported from the host machine for that board:
- control of power on/power off for a target board
- control of target board reset
- access to serial console of the board
- ability to upload a kernel for use on the board (or use one from the host via tftp)
- ability to upload a rootfs for use with the board (or use one from the host via nfs)
- ability to publish results on lab web site
A board in this system would need to support:
- download of kernel at boot time via tfttp
- use of NFS-mounted root filesystem
- software control of board reset
- serial console
- telnet?
Board provider must supply the following software: [need detail here]
For regressions, a download site for the kernel (or kernel patches on top of a base) must be provided.
Phase 2 - broader board solicitation and test suite buildup
- orient semiconductor vendors and solicit more boards/hosts
- request CELF members (and public) to add more tests to test suite
Phase 3 - more fancy stuff
- reservation system
- reservation system should lock board for single user use
- ability to reserve board for a specific start time and duration
- logging in to a one-target host automatically reserves the board for a default period (starting now), and switches to that user's configuration
- ability to save kernel to system flash
- ability to save rootfs to system flash
- ability to view system graphics screen

