User:Lukasblakk/TryServerSyntax

From MozillaWiki
Jump to navigation Jump to search

Syntax for Custom Try Requests

The goal of this syntax is to allow user to select particular build/unittest/talos combinations in their hg commit message or in pushed config.info file.

Syntax

-try [dbo] --p [desktop_platforms] --m [mobile_platforms] --u [unittests] --t [talos_suites]

This covers:

  • Build Types both(b) || opt(o) || debug(d)
  • Platforms none || --p {linux,linux64,osx,osx64,win32,win64}
  • Mobile none || --m {mobile-maemo5-qt, android, etc}
  • Unittest Suites all || --u {crashtest,reftest,mochitest{1,2,3,4,5},xpcshell,etc}
  • Talos Suites all || --t {tp4,tscroll,tspider,etc}

Order

Specify build types (opt/debug/both) first then either all platforms or specify what you want then all unittest suites, no unittest suites, or specify a suite (then run for each platform built) then all talos suites, no talos suites, or specify suite (then run for each platform built)

This allows us to cut off at any point and just to a default 'None' for any info not submitted. If the user submits just a build type, they get a "Does is compile?" try run.

Problem with this syntax

Does the test specified for all the builds on a platform, not specific to opt/debug builder combination (eg. doing crashtest for opt build and not debug build) this could potentially be addressed in a future iteration if that level of granularity is needed to help with wait times.

Usage Examples

In an hg commit message

 # both opt/debug builds, all platforms, no unittests/talos
 hg commit -m "bug 432432 testing something -try b" 

 # linux debug build, with all unittests, no talos
 hg commit -m "bug 432432 testing something -try d --p linux --u all"

 # mobile-only builds
 hg commit -m "bug 432432 testing something -try o --p none"

 # all builds, desktop platforms, no mobile, unittests & talos (both options work):
 hg commit -m "bug 432432 testing something -try b --m none --ut all"
 hg commit -m "bug 432432 testing something -try b --m none --u all --t all"

 # opt builds on all platforms with talos tp4 & tscroll (no unittests) 
 hg commit -m "bug 432432 testing something -try o --t tp4,tscroll"

In a try.info file

try.info file pushed to $topsrc_dir would look like:

-try b --m none --u all --t all

Scheduler/Builder Parsing

Using argparse which needs the -- before optional arguments.

Required arguments

first split: type of build

Now we know opt || debug || both

Optional arguments

If the following exist they will be handled as follows:

second split: desktop_platforms (if not present default is all)

Now we can create builders and sendchanges for each combo of opt/debug platform builders specified

second split: mobile_platforms (if not present default is all)

Now we can create builders and sendchanges for each mobile platform builder specified

fourth split: unittests || (unittest && talos) (if not present default is none)

if third split exists and is only u: grab array after for test names to build schedulers
if third split exists and is ut: then they want all of both

fifth split: talos (if not present default is none, without overriding -ut from third split)

if fourth split exists and is t: grab array after for test names to build schedulers