LAVA Scheduler

Registered by Paul Larson

The LAVA scheduler will handle queuing test jobs for the available test systems in the lab, and kicking off the dispatcher as machines become available to handle the tests. It should provide a API for command line tools and other systems to interface with, as well as a web UI (eventually)

Blueprint information

Paul Larson
Michael Hudson-Doyle
Needs approval
Michael Hudson-Doyle
Series goal:
Accepted for trunk
Milestone target:
Started by
Andy Doan
Completed by
Andy Doan

Related branches



[doanac, 2012-11-06]: the scheduler was implemented a long time ago.

LDS session resulted in following user stories:

* As a LAVA administrator, I would like to restrict access for scheduling jobs to a set of trusted users.

* As a LAVA user I want to define and submit test job CLI providing a test job definition (JSON) file and schedule it on a specified test system
 - Basic scheduler and Daemon provided for 2011.06

* As a LAVA user, I want to submit a test job to run on a type of board, so that it will be scheduled on the first available board of that type

* As a LAVA user, I want to be able to see the queue of test jobs
 - sort by state (queued, running, complete, incomplete, etc)
 - sort by board, or a board specific view
 - paginated

* As a LAVA user, I want to be able to view the output of a running test job

* As a LAVA user I want to define and submit a test job using a web UI, so that I can define the test without having to construct my own control file

* As a LAVA user I want to be able to cancel test jobs that I submitted so that they are not executed (no results reported)

* As a LAVA user I want to be able to easily retrieve results for a completed test jobs stored in Launch Control
These need better definition, or evaluation for whether they are really needed:
* As a LAVA admin I want to be able to add a new test suite description so that this test suite gets included in future test scheduling
* As a LAVA admin I want to be able to tag a board with different words (board attributes and capabilities) so that boards can be grouped and jobs submitted in different ways (for instance PM test enabled, Android supported, etc.)
 - anything other than the existing admin interface needed for this?
* As a LAVA admin I want to gather usage reports for each board or group of boards, so that I can identify which boards are often failing, are mostly reserved by developers, are used for specific test jobs, etc.
 - this should be broken up into some more specific user stories I think
* As a LAVA user, I would like to have an estimate for how long it will take until my job starts and completes
* As a LAVA user, if I submit a job with a combination of requirements that can not be satisfied by the current set of boards I want an immediate failure
 - or perhaps a different state, like blocked? Not sure, it shouldn't try to run, or submit results though.
 - example of this, would be, for instance, specifying that you want some board type, with a certain tag, where no board of that type has that tag.
* As a LAVA user I want to fetch a previously executed test job from history and resubmit it for new execution


* Mirsad to propose new blueprints covering user stories
* Validation team to analyze blueprints and work prioritization


Work Items

Dependency tree

* Blueprints in grey have been implemented.