Tracking bug for running unittests on user desktop OS

RESOLVED FIXED

Status

defect
P2
normal
RESOLVED FIXED
10 years ago
6 years ago

People

(Reporter: joduinn, Assigned: joduinn)

Tracking

Firefox Tracking Flags

(Not tracked)

Details

Attachments

(6 attachments, 16 obsolete attachments)

2.10 KB, patch
joduinn
: review+
jhford
: feedback+
armenzg
: checked-in+
Details | Diff | Splinter Review
10.03 KB, patch
catlee
: review+
lsblakk
: checked-in+
Details | Diff | Splinter Review
7.89 KB, patch
catlee
: review+
lsblakk
: checked-in+
Details | Diff | Splinter Review
7.70 KB, patch
catlee
: review+
lsblakk
: checked-in+
Details | Diff | Splinter Review
1.59 KB, patch
lsblakk
: review+
lsblakk
: checked-in+
Details | Diff | Splinter Review
1.19 KB, patch
joduinn
: review+
lsblakk
: checked-in+
Details | Diff | Splinter Review
Until now, we've always run unittests on the same OS that we build on. This is because of an original unittest requirement of doing a build on the machine immediately before running any unittests. This meant that we could only run unittests on osx10.5, win2k3 and centos5, even though these are not typical user desktop OS. 

It would be better if we ran unittests on more typical user desktop OS. We already have Talos perf tests running on osx10.4, osx10.5, WinXP, Win7, fedora12, fedora12x64, and soon also osx10.6. Running unittests on those OS would be more representative of typical users.

One approach would have been to build out a separate pool of machines imaged with these same 7 identical OSs. However, that would require maintaining two different sets of 7 ref images, and also reducing our burst capability across the divided pools. Instead we decided to increase the pool-o-slaves to handle extra load and then run unittests on the same pool-o-slaves that already run Talos. This would be easier to maintain, scale better and handle burst loads better.

Some pre-req projects were:
1) separate out unittests from the builds. This allows us to run unittests on a pre-existing build, separate from the machine that actually generated the build. Details in bug#383136.
2) unify account/password/network configurations of talos machines to line up with what are used by the build+unittest machines. Details in bug#537065.
3) rebase talos machines on newer still-available hardware. This allowed us to build out a larger pool of identically spec'd slaves. Its unclear if this larger pool-o-slaves increased enough to handle the extra load of the newly added talos OS, and *also* handle the load of running unittests on those OS. However, because we're now using still-available hardware, we can further grow the pool-o-slaves if needed. Details in bug#537065


Whats left to do? 

This bug is to track:
- enabling running-unittests-on-preexisting-build on each talos OS - maybe each OS would be different dep bug?
- disabling unittests on the build machines
Duplicate of this bug: 479146
It's hard for me to understand how "run unit tests on different OSes" is a duplicate of "keep fixed performance characteristics for the unit test systems", even having read this bug a few times now.  Could someone point me at the context that explains how they're related?
If we move our tests to hardware, VM settings will no longer be applicable ?
Oh, OK -- one really has to read between the lines to see that part, I guess!  Thank you, I didn't manage to make that connection on my previous readings.
I am setting bug 548768 as blocking because I was unable to get gnuwin32's tar working on the slaves.  We don't want Cygwin and I was unable to get gnuwin32's tar or bzip working on the windows 7 test machine.
Depends on: 549733
Depends on: 549738
Set a dependency on talos staging, as it needs to be in good shape to test this stuff.
Priority: -- → P2
(In reply to comment #0)
...
> This bug is to track:
> - enabling running-unittests-on-preexisting-build on each talos OS - maybe each
> OS would be different dep bug?
- running unittests manually first, on each OS, is in each of the dep bugs.
- patch master.cfg to run unittests on minis
- patch TBPL to handle unittests on different OS (bug#532560)
- run concurrently and watch for variances/problems. Also watch for wait
time/load problems.
> - disabling unittests on the build machines


I think thats it, but chime in if I missed anything?
Duplicate of this bug: 518455
Have taken rev3 boxes offline to be used a proof of concept (ie, manual set up only of unit test on talos):

- talos-r3-w7-001
- talos-r3-fed-001
- talos-r3-fed64-001
- talos-r3-snow-001
- talos-r3-leopard-001
Depends on: 551048
Alice is going to run point on this.
Assignee: nobody → anodelman
Blocks: 520722
No longer depends on: 520722
(In reply to comment #9)
> - talos-r3-fed-001
> - talos-r3-fed64-001
These have been put back to the pool. No tool chain changes have been done to them.
Nuke ~/armenzg-unittests if needed/wanted.
Update:

- armenzg: unit test require no tool chain changes on fedora, will move on to looking at automating the process with a factory that inherits from TalosFactory, also look into getting sendchanges for packaged unit tests to talos-staging-master02
- lsblakk: possibly require buildbotcustom directory on mac machines, will have to investigate further as automation comes up
- jhford: w7 blocked on packaged unit tests as zips, starting on xp
- alice: bring up new talos staging using borrowed production rev3 machines

coming up:
- alice: need to hand off before going on long weekend so that we don't get blocked
(In reply to comment #12)
> Update:
> 
> - armenzg: unit test require no tool chain changes on fedora, will move on to
> looking at automating the process with a factory that inherits from
> TalosFactory, also look into getting sendchanges for packaged unit tests to
> talos-staging-master02

Why not use UnittestPackagedBuildFactory?  I expect it could be used with only minor modifications.
since we are changing to zipped tests, it might be worthwhile to verify that unzip works as expected on all platforms.
(In reply to comment #12)
> - armenzg: ... getting sendchanges for packaged unit tests to
> talos-staging-master02

The sendchange-unittest currently gets send to the localhost:
    master: localhost:9010
    branch: mozilla-central-linux-opt-unittest
    revision: b3e305eb173c
    comments: 
    user: sendchange-unittest
    files: ['http://stage.mozilla.org/pub/mozilla.org/firefox/tinderbox-builds/mozilla-central-linux/1268302881/firefox-3.7a3pre.en-US.linux-i686.tar.bz2']

We should add another one for staging-master02 (sending to both places until we do the flip).
Something like:
    master: talos-staging-master02.build.mozilla.org:9010
    branch: mozilla-central-linux-opt-unittest

The code in question is:
http://hg.mozilla.org/build/buildbotcustom/file/tip/process/factory.py#l1322

We will also have to do this change for debug builds.
This sendchanges happen as soon as the build (and other stuff) gets uploaded.
This will activate the sendchange for normal and debug builds.
Attachment #431932 - Flags: feedback?(jhford)
Lukas this gets the job done with UnittestPackaged factories. As catlee mentioned this factory gets everything done.

This patch adds the builders, the schedulers and the factories for the test builders for Linux. I did not have time to do more and nothing with regards the debug test builders.

This is the sendchange I used locally:

buildbot sendchange --master='localhost:9010' --branch=mozilla-central-linux-opt-unittest --revision=85fe77e1b558 --comment='' --user=sendchange-unittest 'http://stage.mozilla.org/pub/mozilla.org/firefox/tinderbox-builds/mozilla-central-linux/1268329194/firefox-3.7a3pre.en-US.linux-i686.tar.bz2'
Attachment #431954 - Flags: feedback?(lsblakk)
For the record, the previous patch added the test builders for Fedora 12 and my VM started doing packaged unit tests.

The patch can be easily modified to make it available for all other platforms and adding the debug test builders.

The most tedious thing will be to put just the right info in config.py

As I mentioned on IRC and on my previous comment that my only concern is to try to hack TalosUnittestFactory when UnittestPackagedUnittestFactory already gets the job done.
Pro: tests packages by default, override when we do not want them
Con: disk space usage for things that don't run packaged unittests.  aiui, that is the current production try server.

I am going to test this in sm01 right now.
Attachment #432156 - Flags: review?
Attachment #431932 - Flags: review?(joduinn)
Attachment #431932 - Flags: feedback?(jhford)
Attachment #431932 - Flags: feedback+
Comment on attachment 431932 [details] [diff] [review]
sendchange-unitests being sent to talos-staging-master02

I ran this in staging at the same time as my patch and i did verify that the sendchange went through.  It showed on talos-staging-master02 as

Changed by: sendchange
Changed at: Fri 12 Mar 2010 17:49:01
Branch: mozilla-central-linux64
Revision: a9b980fcb73a

Changed files:

    * http://stage.mozilla.org/pub/mozilla.org/firefox/tinderbox-builds/mozilla-central-linux64/1268444163/firefox-3.7a3pre.en-US.linux-x86_64.tar.bz2

Comments:

Properties:
Comment on attachment 432156 [details] [diff] [review]
default packageTests factory argument to be true

Yes, we want this! *stamp*
Attachment #432156 - Flags: review?(joduinn) → review+
Comment on attachment 431932 [details] [diff] [review]
sendchange-unitests being sent to talos-staging-master02

>diff --git a/mozilla2-staging/config.py b/mozilla2-staging/config.py
>--- a/mozilla2-staging/config.py
>+++ b/mozilla2-staging/config.py
>@@ -56,17 +56,18 @@ GLOBAL_VARS = {
>     'talos_masters': [
>         ('talos-staging-master02.build.mozilla.org:9010', False),
>         ('talos-staging-master.mozilla.org:9010', False),
>         ('talos-master02.build.mozilla.org:9010', False),
>     ],
>     # List of unittest masters to notify of new builds to test,
>     # and if a failure to notify the master should result in a warning
>     'unittest_masters': [('localhost:9010', True, 0),
>-                         ('localhost:9011', True, 0)],
>+                         ('localhost:9011', True, 0),
>+                         ('talos-staging-master02.build.mozilla.org:9010', True, 0),],

nit: remove extra comma, to get " 0)],"

r+ with this fix.



>     'unittest_suites': [
>         ('mochitests', ['mochitest-plain']),
>         ('mochitest-other', ['mochitest-chrome', 'mochitest-browser-chrome',
>             'mochitest-a11y']),
>         ('reftest', ['reftest']),
>         ('crashtest', ['crashtest']),
>         ('xpcshell', ['xpcshell']),
>     ],
>diff --git a/mozilla2/config.py b/mozilla2/config.py
>--- a/mozilla2/config.py
>+++ b/mozilla2/config.py
>@@ -57,17 +57,18 @@ GLOBAL_VARS = {
>         ('talos-master.mozilla.org:9010', True),
>         ('talos-master.mozilla.org:9012', False),
>         ('talos-staging-master.mozilla.org:9010', False),
>         ('talos-staging-master02.build.mozilla.org:9010', False),
>         ('talos-master02.build.mozilla.org:9010', False),
>     ],
>     # List of unittest masters to notify of new builds to test,
>     # and if a failure to notify the master should result in a warning
>-    'unittest_masters': [('localhost:9010', False, 0)],
>+    'unittest_masters': [('localhost:9010', False, 0),
>+                         ('talos-staging-master02.build.mozilla.org:9010', False, 0)],
>     'unittest_suites': [
>         ('mochitests', ['mochitest-plain']),
>         ('mochitest-other', ['mochitest-chrome', 'mochitest-browser-chrome',
>             'mochitest-a11y']),
>         ('reftest', ['reftest']),
>         ('crashtest', ['crashtest']),
>         ('xpcshell', ['xpcshell']),
>     ],
Attachment #431932 - Flags: review?(joduinn) → review+
ok, this bug has been added to https://wiki.mozilla.org/ReleaseEngineering:Maintenance for landing when we are able to.
Depends on: 552430
Comment on attachment 432156 [details] [diff] [review]
default packageTests factory argument to be true

This patch is incorrect.
If you look at:
http://hg.mozilla.org/build/buildbotcustom/file/tip/misc.py#l598
> elif pf.get('enable_opt_unittests'):
>    packageTests = True
You will see that you are enabling optimized unittests in all branches and all platforms. We should only turn optimized unitests were needed.

Instead try adding "packageTests" in the platform you want:
http://hg.mozilla.org/build/buildbotcustom/file/tip/misc.py#l603
> packageTests = pf.get('packageTests', packageTests)

This should have the same effect but without triggering packaged unittests.

I have filed bug 552430 to keep track of the work involved on uploading linux 64 tests for staging testing of unit tests on talos for Linux 64.
Attachment #432156 - Flags: review+ → review-
(In reply to comment #25)
> (From update of attachment 432156 [details] [diff] [review])
> This patch is incorrect.
> If you look at:
> http://hg.mozilla.org/build/buildbotcustom/file/tip/misc.py#l598
> > elif pf.get('enable_opt_unittests'):
> >    packageTests = True
> You will see that you are enabling optimized unittests in all branches and all
> platforms. We should only turn optimized unitests were needed.

Actually, the way I read that is if you have enabled optimized unit tests, then you will upload the packaged test file, not the reverse (i.e. opt_unittest depends on having packaged tests uploaded).  The packageTests factory argument just enables the make package-tests step from my reading of the code (http://hg.mozilla.org/build/buildbotcustom/file/aed4cb0172ca/process/factory.py#l824)

> Instead try adding "packageTests" in the platform you want:
> http://hg.mozilla.org/build/buildbotcustom/file/tip/misc.py#l603
> > packageTests = pf.get('packageTests', packageTests)

Yes, we could do that.  As the purpose this bug is to stop running unit tests on build machines, we will need to have packaged unit tests for all platforms on all branches unless we want to keep certain branches/platforms on build machine unit tests.  This seems like the most appropriate default under the circumstances.

> This should have the same effect but without triggering packaged unittests.
> 
> I have filed bug 552430 to keep track of the work involved on uploading linux
> 64 tests for staging testing of unit tests on talos for Linux 64.

sure, that is fine.  I will put new things and move the conversation over there.
In testing this on talos-staging, I've installed mercurial 1.3.1 on talos-r3-fed-001 with:
  yum install mercurial
Status update:
http://hg.mozilla.org/users/lsblakk_mozilla.com/buildbotcustom/rev/7af72111c5d0
http://hg.mozilla.org/users/lsblakk_mozilla.com/buildbot-configs/rev/128ec338de4b

I'm getting the builders created, with the right slaves attached - now just need to get the sendchanges triggering the right builders eg: 'macosx' triggers leopard/snowleopard builders.
for the geriatric machines I created a dictionary to map build factory platforms to test running platforms.  that logic is in nightlybuildfactory at the end of doupload() iirc
Depends on: 553337
Depends on: 553339
I installed hg on talos-r3-snow-001 through vnc from :

http://mercurial.berkwood.com/binaries/Mercurial-1.5-py2.6-macosx10.6.zip

so that I didn't have to install anything else (xcode, macports)
Comment on attachment 431932 [details] [diff] [review]
sendchange-unitests being sent to talos-staging-master02

http://hg.mozilla.org/build/buildbot-configs/rev/2e782932a01c
Attachment #431932 - Flags: checked-in+
Attachment #432156 - Attachment is obsolete: true
Depends on: fedora-oranges
In testing this on talos-staging, I've installed mercurial 1.3.1 on
talos-r3-fed64-001 with:
  yum install mercurial
Tested in talos-staging.

NOTE:

@@ -187,17 +188,17 @@ class MozillaBuildFactory(BuildFactory):
+         command=['bash', '-l','-c',

added this so that snowleopard could grab the correct PYTHONPATH from a local .bash_profile since both leopard and snowleopard use the same env.
Attachment #431954 - Attachment is obsolete: true
Attachment #435034 - Flags: review?(anodelman)
Attachment #435034 - Flags: feedback?(nrthomas)
Attachment #431954 - Flags: feedback?(lsblakk)
Attachment #435035 - Flags: review?(anodelman)
Attachment #435035 - Flags: feedback?(nrthomas)
Attachment #435037 - Flags: review?(anodelman)
Attachment #435037 - Flags: feedback?(nrthomas)
Attachment #435035 - Flags: feedback?(nrthomas) → feedback?(catlee)
Attachment #435037 - Flags: feedback?(nrthomas) → feedback?(catlee)
Attachment #435034 - Flags: feedback?(nrthomas) → review?(catlee)
Comment on attachment 435034 [details] [diff] [review]
Buildbotcustom patch to add unittests to talos

>-def generateTalosBranchObjects(branch, branch_config, PLATFORMS, SUITES,
>-        factory_class=TalosFactory):
>+def generateTalosBranchObjects(branch, branch_config, PLATFORMS, SUITES, 
>+        ACTIVE_UNITTEST_PLATFORMS, factory_class=TalosFactory):
>     branchObjects = {'schedulers': [], 'builders': [], 'status': []}
>     branch_builders = []
>+    test_builders = []
> 
>     branchName = branch_config['branch_name']
>     buildBranch = branch_config['build_branch']
>     talosCmd = branch_config['talos_command']
> 
>     for platform, platform_config in PLATFORMS.items():
>         for slave_platform in platform_config['slave_platforms']:
>             for suite, talosConfig in SUITES.items():
>@@ -1725,22 +1731,62 @@ def generateTalosBranchObjects(branch, b
>                               treeStableTimer=0,
>                               builderNames=[builder['name']],
>                               numberOfBuildsToTrigger=tests,
>                               )
>                 branchObjects['schedulers'].append(s)
>                 branchObjects['builders'].append(builder)
>                 branch_builders.append(builder['name'])
> 
>+            if platform in ACTIVE_UNITTEST_PLATFORMS.keys():
>+                testTypes = []
>+
>+                if branch_config['platforms'][platform].get('enable_opt_unittests'):
>+                    testTypes.append('opt')
>+                if branch_config['platforms'][platform].get('enable_debug_unittests'):
>+                    testTypes.append('debug')
>+
>+                for test_type in testTypes:
>+                    test_builders = []
>+                    triggeredUnittestBuilders = []
>+
>+                    # create builder names for TinderboxMailNotifier
>+                    for suites_name, suites in branch_config['unittest_suites']:
>+                        test_builders.extend(generateTestBuilderNames(
>+                            '%s %s %s test' % (platform_name, branch, test_type), suites_name, suites))
>+
>+                    triggeredUnittestBuilders.append(('%s-%s-%s-unittest' % (branch, slave_platform, test_type), test_builders, True))
>+
>+                    for suites_name, suites in branch_config['unittest_suites']:
>+                        # Remove mochitest-a11y from test suites since the packaged builds are not
>+                        # built with a11y enabled
>+                        if platform.startswith("macosx") and 'mochitest-a11y' in suites:
>+                            # Create a new factory that doesn't have mochitest-a11y
>+                           suites = suites[:]
>+                           suites.remove('mochitest-a11y')

So, I realize this a11y code is a mess, but won't this result in builder names getting generated for mochitest-a11y in the block above, and then no builders created below?

>+
>+                        # create the builders
>+                        branchObjects['builders'].extend(generateTestBuilder(
>+                                branch_config, branch, platform, "%s %s %s test" % (platform_name, branch, test_type),
>+                                "%s-%s-%s-unittest" % (branch, slave_platform, test_type),
>+                                suites_name, suites, branch_config.get('mochitest_leak_threshold', None),
>+                                branch_config.get('crashtest_leak_threshold', None),
>+                                platform_config[slave_platform]['slaves']))
>+
>+                    for scheduler_name, test_builders, merge in triggeredUnittestBuilders:
>+                        scheduler_branch = ('%s-%s-%s-unittest' % (branch, platform, test_type))
>+                        branchObjects['schedulers'].append(NoMergeScheduler(name=scheduler_name, 
>+                            branch=scheduler_branch, builderNames=test_builders, treeStableTimer=0))

>@@ -5255,19 +5256,22 @@ class WinmoBuildFactory(MobileBuildFacto
> 
> class UnittestPackagedBuildFactory(MozillaBuildFactory):
>     def __init__(self, platform, test_suites, env={}, productName='firefox',
>             mochitest_leak_threshold=None, crashtest_leak_threshold=None,
>             totalChunks=None, thisChunk=None, chunkByDir=None, downloadSymbols=True,
>             **kwargs):
>         self.platform = platform.split('-')[0]
> 
>-        self.env = MozillaEnvironments['%s-unittest' % self.platform].copy()
>+        self.env = deepcopy(MozillaEnvironments['%s-unittest' % self.platform])
>         self.env['MINIDUMP_STACKWALK'] = getPlatformMinidumpPath(self.platform)
>         self.env.update(env)
>+        # copy in overwritten env vars
>+        for key, value in env.items():
>+            self.env[key] = value
>         self.productName = productName
> 

What problem did you run into that required a deepcopy of the environment?
self.env should be a shallow dictionary, with only strings as values, so the
original .copy() should have been sufficient to get an isolated copy of the
environment.

You've also left in 'self.env.update(env)', which does exactly what your new
for loop does.
Attachment #435035 - Flags: feedback?(catlee) → feedback+
Comment on attachment 435037 [details] [diff] [review]
production configs adding unittests to Talos

Looks good here too.  Are you planning on pushing macosx out as soon as it's ready?
Attachment #435037 - Flags: feedback?(catlee) → feedback+
(In reply to comment #37)
> (From update of attachment 435037 [details] [diff] [review])
> Looks good here too.  Are you planning on pushing macosx out as soon as it's
> ready?

Yes, we'll roll out Leopard and Snow Leopard right away. Fedora will follow when we've got all bugs known and tracked.
Alice I would like to know if these machines will stay in the long-term on staging for my site-staging.pp changes.
> - talos-r3-fed-001
> - talos-r3-fed64-001
> - talos-r3-snow-001
> - talos-r3-leopard-001
so it turns out I didn't need the deepcopy, and I took the unittest_suites into the per-platform config so that the a11y block in generateTalosBranchObjects is no longer needed either.
Attachment #435034 - Attachment is obsolete: true
Attachment #435290 - Flags: review?(anodelman)
Attachment #435290 - Flags: feedback?(catlee)
Attachment #435034 - Flags: review?(catlee)
Attachment #435034 - Flags: review?(anodelman)
just moved the unittest_suites into the branch[platforms] so we can take a11y out for macosx in the configs instead of in misc.py
Attachment #435035 - Attachment is obsolete: true
Attachment #435291 - Flags: review?(anodelman)
Attachment #435035 - Flags: review?(anodelman)
same changes as in staging - also set reboot to 1 build
Attachment #435037 - Attachment is obsolete: true
Attachment #435292 - Flags: review?(anodelman)
Attachment #435037 - Flags: review?(anodelman)
Comment on attachment 435290 [details] [diff] [review]
Buildbotcustom patch to add unittests to talos

Does it look like 'bash -l -c' has any effect on any other platform?  It might be totally overkill, but we could also limit only running the -l switch on mac platforms.
Attachment #435290 - Flags: review?(anodelman) → review+
Comment on attachment 435292 [details] [diff] [review]
production configs adding unittests to Talos

I find the deepcopy stuff a little weird, but it seems that you are avoiding having to re-write env and test names and such for unit test per-platform over and over - and that I do approve of.
Attachment #435292 - Flags: review?(anodelman) → review+
carrying forward alice's r+ -- I just cleaned up an extra space and the import of deepcopy which is no longer needed here.
Attachment #435290 - Attachment is obsolete: true
Attachment #435303 - Flags: review?(catlee)
Attachment #435290 - Flags: feedback?(catlee)
now with reboots set to 1 to match production
Attachment #435291 - Attachment is obsolete: true
Attachment #435304 - Flags: review?(anodelman)
Attachment #435291 - Flags: review?(anodelman)
Comment on attachment 435304 [details] [diff] [review]
staging configs adding unittests to Talos

Ship it!
Attachment #435304 - Flags: review?(anodelman) → review+
Comment on attachment 435303 [details] [diff] [review]
Buildbotcustom patch to add unittests to talos

We need to be able to have different suites of tests for opt/debug on the same platform.  For example, right now we want to run a11y tests on macosx debug, but not on macosx opt.

Can you adjust the config.py patch so that there's a default set of test suites that gets copied in for each platform, and override macosx opt does that it doesn't run a11y?

Also, the TinderboxMailNotifier needs to be using errorparser="unittest" for the unittest builders.
Attachment #435303 - Flags: review?(catlee) → review-
Lukas you can run now talos-r3-leopard-001 if you want through staging to see that it works after the puppet changes.

I will get you the snow leopard machine when the mounting /N bug gets resolved (bug 555790).
Tested in staging - adds ability to have different suites of tests for opt/debug on the same platform.  Configs patch (to be attached next) has a default set of test suites that gets copied in for each platform, mac opt unittests are overridden to take out mochitest-a11y

Also, added a separate TinderboxMailNotifier so as to use errorparser="unittest" for the unittest builders.

Finally, in the configs I had set up ACTIVE_BRANCHES to make it easier to turn branches on and off through master.cfg but I realized that I had attached that to the ACTIVE_UNITTEST_PLATFORMS so I refactored that and in doing so added ACTIVE_UNITTEST_PLATFORMS to the generateTalosReleaseBranchObjects params since that gets called within generateTalosBranchObjects and then in turn calls generateTalosBranchObjects. This way it just cycles the platform's active Unittest platforms back around but won't create any additional builders.
Attachment #435303 - Attachment is obsolete: true
Attachment #435733 - Flags: review?(catlee)
flagging catlee for feedback on the changes specific to the new buildbotcustom handling of default unittests for both opt/debug
Attachment #435734 - Flags: feedback?(catlee)
Attachment #435304 - Attachment is obsolete: true
flagging catlee for feedback just on the changes specific to the new handling of default unittests (same as staging)
Attachment #435292 - Attachment is obsolete: true
Attachment #435736 - Flags: feedback?(catlee)
Current status:

- pushing hard to get leopard/snow leopard in production by end of week, currently blocked on puppet working on snow leopard + finalization of buildbot-configs
- winxp/win7 blocked on unitest packages as zips, blocked on installation of hg and getting successful staging runs
- fed/fed64 blocked on people (needs investigation of failures so that they can be properly farmed out to appropriate teams)

Current plan:
1. leopard/snow leopard working in production by end of week
2. after leopard/snow leopard up move on to the issues found during linux staging and run them down
3. get unit test packages as zips pushed to production
4. staging of win7/winxp machine
Comment on attachment 435733 [details] [diff] [review]
Buildbotcustom patch to add unittests to talos

>+                    for scheduler_name, test_builders, merge in triggeredUnittestBuilders:
>+                        scheduler_branch = ('%s-%s-%s-unittest' % (branch, platform, test_type))
>+                        branchObjects['schedulers'].append(NoMergeScheduler(name=scheduler_name, 
>+                            branch=scheduler_branch, builderNames=test_builders, treeStableTimer=0))
>+

What if merge is True here?  We'll want to use a regular scheduler in that case, right?

>-         command=['bash', '-c',
>+         command=['bash', '-l','-c',

Why do we need '-l' here?
Attachment #435733 - Flags: review?(catlee) → review-
Comment on attachment 435734 [details] [diff] [review]
staging configs adding unittests to Talos

jsreftest should be run on all platforms, not just macosx.

and mochitest-a11y won't be running on macosx-debug if I'm reading this correctly.
Attachment #435734 - Flags: feedback?(catlee) → feedback-
Comment on attachment 435736 [details] [diff] [review]
production configs adding unittests to Talos

same as staging
Attachment #435736 - Flags: feedback?(catlee) → feedback-
> What if merge is True here?  We'll want to use a regular scheduler in that
> case, right?

Funny enough merge is set to True by default in generateBranchObjects as well as in generateTalosBranchObjects so thanks for catching it.  I put in a regular Scheduler option same as in the former.

> 
> >-         command=['bash', '-c',
> >+         command=['bash', '-l','-c',
> 
> Why do we need '-l' here?

This is to source the local bash_profile which is needed on snow leopard.  It has a different PYTHONPATH than the leopard slaves and yet the two share the same env since those are per platform (macosx) and not per slave_platform (leopard, snowleopard).  Adding the -l doesn't affect slaves with no bash_profile override of PYTHONPATH so it seems like a safe thing to do.
Attachment #435733 - Attachment is obsolete: true
Attachment #436057 - Flags: review?(catlee)
Added jsreftest to default unittest set.

In staging I have tested the configs and mac-debug builds do get a mochitest-a11y step in the mochitest-other builder with these configs.
Attachment #435734 - Attachment is obsolete: true
Attachment #436059 - Flags: review?(catlee)
same as for staging - added jsreftest to default unittest suites.
Attachment #435736 - Attachment is obsolete: true
Attachment #436060 - Flags: review?(catlee)
Catlee, disregard the comment about 'bash' '-l'  because it appears that armenzg worked around this issue in his puppet installation of mercurial for leopard/snow leopard.  I've tested in staging on puppet slaves without the -l and hg clone worked fine.

Also, in this patch (which still handles the merge/nomerge) I shortened the builddir prefix to -u instead of -unittest because we were having installdmg.sh "failed to mount" on the longer builddir-named builder mozilla-central-leopard-debug-unittest-mochitest-other and with a shorter builddir name it no longer had an issue.  Now all builddirs are along the lines of mozilla-central-leopard-debug-u-mochitest-other.
Attachment #436057 - Attachment is obsolete: true
Attachment #436086 - Flags: review?(catlee)
Attachment #436057 - Flags: review?(catlee)
(In reply to comment #57)
> 
> This is to source the local bash_profile which is needed on snow leopard.  It
> has a different PYTHONPATH than the leopard slaves and yet the two share the
> same env since those are per platform (macosx) and not per slave_platform
> (leopard, snowleopard).  Adding the -l doesn't affect slaves with no
> bash_profile override of PYTHONPATH so it seems like a safe thing to do.
Lukas, the bash_profile is using PYTHONPATH=/Library/Python/2.5/site-packages instead of PYTHONPATH=/usr/local/lib/python2.5/site-packages (since it was non-existent).

You might want to run your patch without -l and it should probably fine since both platforms now use the same PYTHONPATH.
Talos darwin slaves now have mercurial installed.
We are ready puppet wise to turn unit tests on them.
Blocks: 524775
taking a11y out of mac debug unittest suites until bug 524775 is fixed.
Attachment #436059 - Attachment is obsolete: true
Attachment #436235 - Flags: review?(catlee)
Attachment #436059 - Flags: review?(catlee)
taking debug a11y out of mac unittest suites until bug 524775 is fixed.
Attachment #436060 - Attachment is obsolete: true
Attachment #436236 - Flags: review?(catlee)
Attachment #436060 - Flags: review?(catlee)
Attachment #436086 - Flags: review?(catlee) → review+
Attachment #436236 - Flags: review?(catlee) → review+
Attachment #436235 - Flags: review?(catlee) → review+
No longer blocks: 555327
Comment on attachment 436692 [details] [diff] [review]
talos-pool amendments to accomodate packaged unittest changes in talos-r3

r+ from alice in IRC
the last, very important, piece of config update.
Attachment #436697 - Flags: review?(joduinn)
Comment on attachment 436697 [details] [diff] [review]
Turns on sendchange notification for talos-master from production-master

*stamp*
Attachment #436697 - Flags: review?(joduinn) → review+
Comment on attachment 436697 [details] [diff] [review]
Turns on sendchange notification for talos-master from production-master

http://hg.mozilla.org/build/buildbot-configs/rev/9f1626be3147
Attachment #436697 - Flags: checked-in+
Depends on: 557918
No longer blocks: 520722
Depends on: 557921
No longer blocks: 558258
Blocks: 558258
Depends on: darwin_unittests
I filed bug 558777 to track everything wrt to Leopard and Snow Leopard.

I have transferred all related dependent bugs to it.
Depends on: darwin_unittests
I have filed bug 558781 to track everything wrt to running unit tests for Windows XP and Windows 7.

I have transferred all related dependent bugs to it.
Depends on: fedora_unittests
I have filed bug 558782 to track everything wrt to running unit tests for
Fedora and Fedora 64.

I have transferred all related dependent bugs to it.
No longer depends on: fedora-oranges, 557918, 549733, 551758, 552430
Depends on: 559454
No longer depends on: 559454
No longer depends on: 558521
Assignee: anodelman → joduinn
Bug 557294 will get us more Rev3 machines (post delivery imaging is also needed) which we need to enable unit tests on more branches than just mozilla-central. This will help us put our wait times back to normal on production-talos.
Depends on: 557294
No longer blocks: 549120
afaict, all the comments, patches and depbugs here are done. Which makes this bug officially FIXED!

(let me know if I missed anything!)
Status: NEW → RESOLVED
Closed: 9 years ago
Resolution: --- → FIXED
Depends on: 614955
No longer depends on: 614955
The only thing left is to add XP debug unit tests in bug 614955 but I don't want to mess anymore with the dependencies.
Product: mozilla.org → Release Engineering
You need to log in before you can comment on or make changes to this bug.