bug 793022 - get mozilla-tests/config.py to not warn in python-mode. r=rail
authorAki Sasaki <asasaki@mozilla.com>
Mon, 28 Jan 2013 09:46:39 -0800
changeset 7768 97d8757436a9
parent 7767 1b025259c060
child 7769 700c342075ef
push id5948
push userasasaki@mozilla.com
push date2013-01-28 18:40 +0000
reviewersrail
bugs793022
bug 793022 - get mozilla-tests/config.py to not warn in python-mode. r=rail
mozilla-tests/config.py
--- a/mozilla-tests/config.py
+++ b/mozilla-tests/config.py
@@ -5,89 +5,84 @@ from buildbot.steps.shell import WithPro
 import project_branches
 reload(project_branches)
 from project_branches import PROJECT_BRANCHES, ACTIVE_PROJECT_BRANCHES
 
 import localconfig
 reload(localconfig)
 from localconfig import SLAVES, TRY_SLAVES, GLOBAL_VARS, GRAPH_CONFIG
 
-REMOTE_PROCESS_NAMES = { 'default':         'org.mozilla.fennec',
-                         'mozilla-beta':    'org.mozilla.firefox_beta',
-                         'mozilla-aurora':  'org.mozilla.fennec_aurora',
-                         'mozilla-release': 'org.mozilla.firefox',
-                       }
+REMOTE_PROCESS_NAMES = {'default': 'org.mozilla.fennec',
+                        'mozilla-beta': 'org.mozilla.firefox_beta',
+                        'mozilla-aurora': 'org.mozilla.fennec_aurora',
+                        'mozilla-release': 'org.mozilla.firefox',
+                        }
 
 MOZHARNESS_REBOOT_CMD = ['scripts/external_tools/count_and_reboot.py',
                          '-f', '../reboot_count.txt',
                          '-n', '1', '-z']
 
 TALOS_CMD = ['python', 'run_tests.py', '--noisy', WithProperties('%(configFile)s')]
 
-TALOS_ADDON_CMD = ['python', 'run_tests.py', '--noisy', '--amo', WithProperties('%(configFile)s')]
-
 TALOS_DIRTY_OPTS = {'talosAddOns': ['profiles/dirtyDBs.zip', 'profiles/dirtyMaxDBs.zip']}
 
-TALOS_TP_OPTS = {'plugins': {'32':'zips/flash32_10_3_183_5.zip', '64': 'zips/flash64_11_0_d1_98.zip'}, 'pagesets': ['zips/tp5.zip']}
-TALOS_TP_NEW_OPTS = {'plugins': {'32':'zips/flash32_10_3_183_5.zip', '64': 'zips/flash64_11_0_d1_98.zip'}, 'pagesets': ['zips/tp5n.zip']}
+TALOS_TP_OPTS = {'plugins': {'32': 'zips/flash32_10_3_183_5.zip', '64': 'zips/flash64_11_0_d1_98.zip'}, 'pagesets': ['zips/tp5.zip']}
+TALOS_TP_NEW_OPTS = {'plugins': {'32': 'zips/flash32_10_3_183_5.zip', '64': 'zips/flash64_11_0_d1_98.zip'}, 'pagesets': ['zips/tp5n.zip']}
 
-TALOS_BASELINE_ADDON_OPTS = {'releaseTester' : True}
+TALOS_REMOTE_FENNEC_OPTS = {'productName': 'fennec',
+                            'remoteTests': True,
+                            'remoteExtras': {'options': ['--sampleConfig', 'remote.config',
+                                                         '--output', 'local.yml',
+                                                         '--webServer', 'bm-remote.build.mozilla.org',
+                                                         '--browserWait', '60',
+                                                         ],
+                                             'processName': REMOTE_PROCESS_NAMES,
+                                             },
+                            }
 
-TALOS_REMOTE_FENNEC_OPTS = { 'productName':  'fennec',
-                             'remoteTests':  True,
-                             'remoteExtras': { 'options': [ '--sampleConfig', 'remote.config',
-                                                            '--output', 'local.yml',
-                                                            '--webServer', 'bm-remote.build.mozilla.org',
-                                                            '--browserWait', '60',
-                                                          ],
-                                               'processName': REMOTE_PROCESS_NAMES,
-                                             },
-                           }
-
-UNITTEST_REMOTE_EXTRAS = { 'processName': REMOTE_PROCESS_NAMES,
-                         }
+UNITTEST_REMOTE_EXTRAS = {'processName': REMOTE_PROCESS_NAMES}
 ANDROID_UNITTEST_REMOTE_EXTRAS = deepcopy(UNITTEST_REMOTE_EXTRAS)
 ANDROID_UNITTEST_REMOTE_EXTRAS['cmdOptions'] = ['--bootstrap']
 
 BRANCHES = {
     'mozilla-central':     {},
     'mozilla-aurora':      {},
     'mozilla-release':     {},
     'mozilla-beta':        {},
     'mozilla-esr10':       {
         'datazilla_url': None,
         'platforms': {
             'macosx': {},
             'macosx64': {},
             'win32': {},
             'linux': {},
-            'linux64' : {},
+            'linux64': {},
         },
         'lock_platforms': True,
     },
     'mozilla-esr17':       {
         'datazilla_url': None,
         'platforms': {
             'macosx': {},
             'macosx64': {},
             'win32': {},
             'linux': {},
-            'linux64' : {},
+            'linux64': {},
         },
         'lock_platforms': True,
     },
-    'mozilla-b2g18':       {
+    'mozilla-b2g18': {
         'datazilla_url': None,
         'platforms': {
             # desktop per sicking in Bug 829513
             'macosx64': {},
             'win32': {},
             'linux': {},
-            'linux64' : {},
-            'android-noion' : {},
+            'linux64': {},
+            'android-noion': {},
             'ics_armv7a_gecko': {},
             'b2g_panda': {},
         },
         'lock_platforms': True,
     },
     'mozilla-b2g18_v1_0_0': {
         'datazilla_url': None,
         'platforms': {
@@ -97,41 +92,41 @@ BRANCHES = {
             'linux': {},
             'linux64': {},
             'android-noion': {},
             'ics_armv7a_gecko': {},
             'b2g_panda': {},
         },
         'lock_platforms': True,
     },
-    'try':                 { 'coallesce_jobs': False},
+    'try': {'coallesce_jobs': False},
 }
 
 # Talos
 PLATFORMS = {
     'macosx': {},
     'macosx64': {},
     'win32': {},
     'linux': {},
-    'linux64' : {},
+    'linux64': {},
     'android': {},
     'android-armv6': {},
     'android-noion': {},
 }
 
 # work around path length problem bug 599795
 # leopard-o == leopard-old
 PLATFORMS['macosx']['slave_platforms'] = ['leopard-o']
 PLATFORMS['macosx']['env_name'] = 'mac-perf'
 PLATFORMS['macosx']['leopard-o'] = {'name': "Rev3 MacOSX Leopard 10.5.8"}
 PLATFORMS['macosx']['stage_product'] = 'firefox'
 PLATFORMS['macosx']['mozharness_config'] = {
     'mozharness_python': '/tools/buildbot/bin/python',
     'hg_bin': 'hg',
-    'reboot_command': ['/tools/buildbot/bin/python'] + MOZHARNESS_REBOOT_CMD,}
+    'reboot_command': ['/tools/buildbot/bin/python'] + MOZHARNESS_REBOOT_CMD}
 
 PLATFORMS['macosx64']['slave_platforms'] = ['leopard', 'snowleopard',
                                             'lion', 'mountainlion']
 PLATFORMS['macosx64']['env_name'] = 'mac-perf'
 PLATFORMS['macosx64']['leopard'] = {'name': "Rev3 MacOSX Leopard 10.5.8"}
 PLATFORMS['macosx64']['snowleopard'] = {'name': "Rev4 MacOSX Snow Leopard 10.6"}
 PLATFORMS['macosx64']['lion'] = {'name': "Rev4 MacOSX Lion 10.7"}
 PLATFORMS['macosx64']['mountainlion'] = {'name': "Rev5 MacOSX Mountain Lion 10.8"}
@@ -204,45 +199,43 @@ for platform, platform_config in PLATFOR
     for slave_platform in platform_config['slave_platforms']:
         platform_config[slave_platform]['slaves'] = sorted(SLAVES[slave_platform])
         if slave_platform in TRY_SLAVES:
             platform_config[slave_platform]['try_slaves'] = sorted(TRY_SLAVES[slave_platform])
         else:
             platform_config[slave_platform]['try_slaves'] = platform_config[slave_platform]['slaves']
 
 ALL_PLATFORMS = PLATFORMS['linux']['slave_platforms'] + \
-                PLATFORMS['linux64']['slave_platforms'] + \
-                PLATFORMS['win32']['slave_platforms'] + \
-                PLATFORMS['macosx64']['slave_platforms']
+    PLATFORMS['linux64']['slave_platforms'] + \
+    PLATFORMS['win32']['slave_platforms'] + \
+    PLATFORMS['macosx64']['slave_platforms']
 # Don't use ubuntu{32,64} for talos for now
 ALL_PLATFORMS.remove('ubuntu32')
 ALL_PLATFORMS.remove('ubuntu64')
 
 WIN7_ONLY = ['win7']
 
 NO_WIN = PLATFORMS['macosx64']['slave_platforms'] + PLATFORMS['linux']['slave_platforms'] + PLATFORMS['linux64']['slave_platforms']
 # Don't use ubuntu{,3264} for talos for now
 NO_WIN.remove('ubuntu32')
 NO_WIN.remove('ubuntu64')
 
 NO_MAC = PLATFORMS['linux']['slave_platforms'] + \
-         PLATFORMS['linux64']['slave_platforms'] + \
-         PLATFORMS['win32']['slave_platforms']
+    PLATFORMS['linux64']['slave_platforms'] + \
+    PLATFORMS['win32']['slave_platforms']
 # Don't use ubuntu{32,64} for talos for now
 NO_MAC.remove('ubuntu32')
 NO_MAC.remove('ubuntu64')
 
 MAC_ONLY = PLATFORMS['macosx64']['slave_platforms']
 
 ANDROID = PLATFORMS['android']['slave_platforms']
 
 ANDROID_ARMV6 = PLATFORMS['android-armv6']['slave_platforms']
 
-ADDON_TESTER_PLATFORMS = ['win7', 'fedora', 'snowleopard']
-
 SUITES = {
     'chrome': {
         'enable_by_default': False,
         'suites': GRAPH_CONFIG + ['--activeTests', 'tscroll:a11y:ts_paint:tpaint:tsspider', '--mozAfterPaint'],
         'options': ({}, NO_MAC),
     },
     # chrome_mac compared to chrome is that it does not contain a11y and only run on Mac
     'chrome_mac': {
@@ -430,16 +423,17 @@ UNITTEST_SUITES = {
         ('mobile-mochitest-browser-chrome', ['mobile-mochitest-browser-chrome']),
         #('reftest', ['reftest']),
         #('crashtest', ['crashtest']),
         #('xpcshell', ['xpcshell']),
         #('jsreftest', ['jsreftest']),
     ],
 }
 
+
 def removeSuite(suiteName, suiteList):
     '''It removes 'suite' from 'suiteList' and returns it.
 
     Keyword arguments:
     suiteName -- it is the name of the suite that we want to remove
     suiteList -- it is the list of suites from where we want to remove
                  suiteList is a list of tuples. The tuples is formed
                  of a string and a list of suites.
@@ -449,16 +443,17 @@ def removeSuite(suiteName, suiteList):
         name, suites = info
         # Let's see if suiteName is on this list of suites
         if suiteName in suites:
             suites = suites[:]
             suites.remove(suiteName)
             suiteList[i] = (name, suites)
     return suiteList
 
+
 def addSuite(suiteGroupName, newSuiteName, suiteList):
     # In UNITTEST_SUITES we have opt, debug and mobile unit tests keys.
     # Each one of these have a list of tuples of test suites.
     #     e.g. suiteGroup = ('reftest', ['reftest])
     newSuiteList = []
     added = False
     for tup in suiteList:
         name, suites = tup
@@ -467,36 +462,38 @@ def addSuite(suiteGroupName, newSuiteNam
             added = True
         newSuiteList.append((name, suites))
 
     if not added:
         newSuiteList.append((suiteGroupName, [newSuiteName]))
 
     return newSuiteList
 
+
 def loadDefaultValues(BRANCHES, branch, branchConfig):
     BRANCHES[branch]['repo_path'] = branchConfig.get('repo_path', 'projects/' + branch)
     BRANCHES[branch]['branch_name'] = branchConfig.get('branch_name', branch.title())
     BRANCHES[branch]['mobile_branch_name'] = branchConfig.get('mobile_branch_name', branch.title())
     BRANCHES[branch]['build_branch'] = branchConfig.get('build_branch', branch.title())
     BRANCHES[branch]['talos_command'] = branchConfig.get('talos_cmd', TALOS_CMD)
     BRANCHES[branch]['fetch_symbols'] = branchConfig.get('fetch_symbols', True)
     BRANCHES[branch]['talos_from_source_code'] = branchConfig.get('talos_from_source_code', True)
     BRANCHES[branch]['support_url_base'] = branchConfig.get('support_url_base', 'http://build.mozilla.org/talos')
     BRANCHES[branch]['enable_unittests'] = branchConfig.get('enable_unittests', True)
     BRANCHES[branch]['pgo_strategy'] = branchConfig.get('pgo_strategy', None)
 
+
 def loadCustomTalosSuites(BRANCHES, SUITES, branch, branchConfig):
     coallesceJobs = branchConfig.get('coallesce_jobs', True)
     BRANCHES[branch]['suites'] = deepcopy(SUITES)
     # Check if Talos is enabled, if False, set 0 runs for all suites
-    if branchConfig.get('enable_talos') == False:
+    if branchConfig.get('enable_talos') is False:
         branchConfig['talos_suites'] = {}
         for suite in SUITES.keys():
-            branchConfig['talos_suites'][suite]  = 0
+            branchConfig['talos_suites'][suite] = 0
 
     # Want to turn on/off a talos suite? Set it in the PROJECT_BRANCHES[branch]['talos_suites']
     # This is the default and will make all talosConfig.get(key,0) calls
     # to default to 0 a.k.a. disabled suite
     talosConfig = {}
     if branchConfig.get('talos_suites'):
         for suite, settings in branchConfig['talos_suites'].items():
             # Normally the setting is just 0 or 1 for talosConfig to enable/disable a test
@@ -513,30 +510,32 @@ def loadCustomTalosSuites(BRANCHES, SUIT
     for suite in SUITES.keys():
         if not SUITES[suite]['enable_by_default']:
             # Suites that are turned off by default
             BRANCHES[branch][suite + '_tests'] = (talosConfig.get(suite, 0), coallesceJobs) + SUITES[suite]['options']
         else:
             # Suites that are turned on by default
             BRANCHES[branch][suite + '_tests'] = (talosConfig.get(suite, 1), coallesceJobs) + SUITES[suite]['options']
 
+
 def loadTalosSuites(BRANCHES, SUITES, branch):
     '''
     This is very similar to loadCustomTalosSuites and is to deal with branches that are not in project_branches.py
     but in config.py. Both functions could be unified later on when we do further refactoring.
     '''
     coallesceJobs = BRANCHES[branch].get('coallesce_jobs', True)
     for suite in SUITES.keys():
         if not SUITES[suite]['enable_by_default']:
             # Suites that are turned off by default
             BRANCHES[branch][suite + '_tests'] = (0, coallesceJobs) + SUITES[suite]['options']
         else:
             # Suites that are turned on by default
             BRANCHES[branch][suite + '_tests'] = (1, coallesceJobs) + SUITES[suite]['options']
 
+
 def loadCustomUnittestSuites(BRANCHES, branch, branchConfig):
     # If you want a project branch to have a different set of unit tests you can
     # do the following:
     #  - add a key called "add_test_suites"
     #  - add a tuple for each test suite with the following format:
     #      ('OS_nick', 'platform', 'opt|debug', 'new or existing group', 'suite name')
     #      e.g. ('macosx64', 'snowleopard', 'debug', 'mochitest-other', 'a11y')
     #
@@ -544,141 +543,141 @@ def loadCustomUnittestSuites(BRANCHES, b
     #    BRANCHES['mozilla-central']['platforms']['win32']['win7']['debug_unittest_suites'] \
     #        += [('jetpack', ['jetpack'])]
     #
     for suiteToAdd in branchConfig.get('add_test_suites', []):
         type = 'opt_unittest_suites' if suiteToAdd[2] == 'opt' else 'debug_unittest_suites'
         # 'debug_unittest_suites' or 'opt_unittest_suites' is a list of tuple
         # addSuite() modifies that list and returns a new one with the added suite
         BRANCHES[branch]['platforms'][suiteToAdd[0]][suiteToAdd[1]][type] = \
-            addSuite( suiteGroupName=suiteToAdd[3], newSuiteName=suiteToAdd[4],
-                      suiteList=BRANCHES[branch]['platforms'][suiteToAdd[0]][suiteToAdd[1]][type])
+            addSuite(suiteGroupName=suiteToAdd[3], newSuiteName=suiteToAdd[4],
+                     suiteList=BRANCHES[branch]['platforms'][suiteToAdd[0]][suiteToAdd[1]][type])
 
 ANDROID_UNITTEST_DICT = {
     'opt_unittest_suites': [
         ('mochitest-1', (
             {'suite': 'mochitest-plain',
              'testManifest': 'android.json',
              'totalChunks': 8,
              'thisChunk': 1,
-            },
+             },
         )),
         ('mochitest-2', (
             {'suite': 'mochitest-plain',
              'testManifest': 'android.json',
              'totalChunks': 8,
              'thisChunk': 2,
-            },
+             },
         )),
         ('mochitest-3', (
             {'suite': 'mochitest-plain',
              'testManifest': 'android.json',
              'totalChunks': 8,
              'thisChunk': 3,
-            },
+             },
         )),
         ('mochitest-4', (
             {'suite': 'mochitest-plain',
              'testManifest': 'android.json',
              'totalChunks': 8,
              'thisChunk': 4,
-            },
+             },
         )),
         ('mochitest-5', (
             {'suite': 'mochitest-plain',
              'testManifest': 'android.json',
              'totalChunks': 8,
              'thisChunk': 5,
-            },
+             },
         )),
         ('mochitest-6', (
             {'suite': 'mochitest-plain',
              'testManifest': 'android.json',
              'totalChunks': 8,
              'thisChunk': 6,
-            },
+             },
         )),
         ('mochitest-7', (
             {'suite': 'mochitest-plain',
              'testManifest': 'android.json',
              'totalChunks': 8,
              'thisChunk': 7,
-            },
+             },
         )),
         ('mochitest-8', (
             {'suite': 'mochitest-plain',
              'testManifest': 'android.json',
              'totalChunks': 8,
              'thisChunk': 8,
-           },
+             },
         )),
         ('reftest-1', (
             {'suite': 'reftest',
              'totalChunks': 4,
              'thisChunk': 1,
-            },
+             },
         )),
         ('reftest-2', (
             {'suite': 'reftest',
              'totalChunks': 4,
              'thisChunk': 2,
-            },
+             },
         )),
         ('reftest-3', (
             {'suite': 'reftest',
              'totalChunks': 4,
              'thisChunk': 3,
-            },
+             },
         )),
         ('reftest-4', (
             {'suite': 'reftest',
              'totalChunks': 4,
              'thisChunk': 4,
-            },
+             },
         )),
         # disabled for constant timeouts, bug 728119
         # ('crashtest-1', (
         #     {'suite': 'crashtest',
         #      'totalChunks': 3,
         #      'thisChunk': 1,
-        #     },
+        #      },
         # )),
         ('crashtest-2', (
             {'suite': 'crashtest',
              'totalChunks': 3,
              'thisChunk': 2,
-            },
+             },
         )),
         ('crashtest-3', (
             {'suite': 'crashtest',
              'totalChunks': 3,
              'thisChunk': 3,
-            },
+             },
         )),
         ('jsreftest-1', (
             {'suite': 'jsreftest',
              'totalChunks': 3,
              'thisChunk': 1,
-            },
+             },
         )),
         ('jsreftest-2', (
             {'suite': 'jsreftest',
              'totalChunks': 3,
              'thisChunk': 2,
-            },
+             },
         )),
         ('jsreftest-3', (
             {'suite': 'jsreftest',
              'totalChunks': 3,
              'thisChunk': 3,
-            },
+             },
         )),
         ('robocop', (
             {'suite': 'mochitest-robocop',
-            },
+             },
         )),
     ],
     'debug_unittest_suites': [],
 }
 
 ANDROID_NOION_UNITTEST_DICT = {
     'opt_unittest_suites': [],
     'debug_unittest_suites': [],
@@ -692,45 +691,45 @@ ANDROID_ARMV6_UNITTEST_DICT = deepcopy(A
 
 ANDROID_PLAIN_UNITTEST_DICT = {
     'opt_unittest_suites': [],
     'debug_unittest_suites': [],
 }
 
 ANDROID_PLAIN_REFTEST_DICT = {
     'opt_unittest_suites': [
-          ('plain-reftest-1', (
+        ('plain-reftest-1', (
             {'suite': 'reftestsmall',
              'totalChunks': 4,
              'thisChunk': 1,
-             'extra_args' : '--ignore-window-size'
-            },
-         )),
-         ('plain-reftest-2', (
+             'extra_args': '--ignore-window-size'
+             },
+        )),
+        ('plain-reftest-2', (
             {'suite': 'reftestsmall',
              'totalChunks': 4,
              'thisChunk': 2,
-             'extra_args' : '--ignore-window-size'
-            },
-         )),
-         ('plain-reftest-3', (
+             'extra_args': '--ignore-window-size'
+             },
+        )),
+        ('plain-reftest-3', (
             {'suite': 'reftestsmall',
              'totalChunks': 4,
              'thisChunk': 3,
-             'extra_args' : '--ignore-window-size'
-            },
-         )),
-         ('plain-reftest-4', (
+             'extra_args': '--ignore-window-size'
+             },
+        )),
+        ('plain-reftest-4', (
             {'suite': 'reftestsmall',
              'totalChunks': 4,
              'thisChunk': 4,
-             'extra_args' : '--ignore-window-size'
-            },
-         )),
-     ],
+             'extra_args': '--ignore-window-size'
+             },
+        )),
+    ],
 }
 
 
 for suite in ANDROID_UNITTEST_DICT['opt_unittest_suites']:
     if suite[0].startswith('reftest'):
         continue
     ANDROID_PLAIN_UNITTEST_DICT['opt_unittest_suites'].append(suite)
 
@@ -743,166 +742,179 @@ ANDROID_PANDA_UNITTEST_DICT = {
 for suite in ANDROID_PLAIN_UNITTEST_DICT['opt_unittest_suites']:
     if suite[0].startswith('reftest') or suite[0].startswith('plain-reftest'):
         continue
     ANDROID_PANDA_UNITTEST_DICT['opt_unittest_suites'].append(suite)
 
 # You must define opt_unittest_suites when enable_opt_unittests is True for a
 # platform. Likewise debug_unittest_suites for enable_debug_unittests
 PLATFORM_UNITTEST_VARS = {
-        'linux': {
-            'product_name': 'firefox',
-            'app_name': 'browser',
-            'brand_name': 'Minefield',
-            'builds_before_reboot': 1,
-            'unittest-env' : {'DISPLAY': ':0'},
-            'enable_opt_unittests': True,
-            'enable_debug_unittests': True,
-            'fedora': {
-                'opt_unittest_suites' : \
-                    UNITTEST_SUITES['opt_unittest_suites'][:] + \
-                    [('reftest-ipc', ['reftest-ipc'])] + \
-                    [('reftest-no-accel', ['opengl-no-accel'])] + \
-                    [('crashtest-ipc', ['crashtest-ipc'])],
-                'debug_unittest_suites' : UNITTEST_SUITES['debug_unittest_suites'][:],
-                'mobile_unittest_suites' : UNITTEST_SUITES['mobile_unittest_suites'][:],
-            },
-            'ubuntu32': {
-                'opt_unittest_suites': [
-                    ('mochitest', dict(suite='mochitest-plain', chunkByDir=4, totalChunks=5)),
-                    ('mochitest-other', ['mochitest-a11y', 'mochitest-ipcplugins']),
-                    ('crashtest', ['crashtest']),
-                    ('jsreftest', ['jsreftest']),
-                ],
-                'debug_unittest_suites': [
-                    ('mochitest', dict(suite='mochitest-plain', chunkByDir=4, totalChunks=5)),
-                    ('mochitest-other', ['mochitest-a11y', 'mochitest-ipcplugins']),
-                    ('crashtest', ['crashtest']),
-                    ('jsreftest', ['jsreftest']),
-                ]
-            },
+    'linux': {
+        'product_name': 'firefox',
+        'app_name': 'browser',
+        'brand_name': 'Minefield',
+        'builds_before_reboot': 1,
+        'unittest-env': {'DISPLAY': ':0'},
+        'enable_opt_unittests': True,
+        'enable_debug_unittests': True,
+        'fedora': {
+            'opt_unittest_suites': UNITTEST_SUITES['opt_unittest_suites'][:] + [
+                ('reftest-ipc', ['reftest-ipc']),
+                ('reftest-no-accel', ['opengl-no-accel']),
+                ('crashtest-ipc', ['crashtest-ipc'])
+            ],
+            'debug_unittest_suites': UNITTEST_SUITES['debug_unittest_suites'][:],
+            'mobile_unittest_suites': UNITTEST_SUITES['mobile_unittest_suites'][:],
         },
-        'linux64': {
-            'product_name': 'firefox',
-            'app_name': 'browser',
-            'brand_name': 'Minefield',
-            'builds_before_reboot': 1,
-            'unittest-env' : {'DISPLAY': ':0'},
-            'enable_opt_unittests': True,
-            'enable_debug_unittests': True,
-            'fedora64': {
-                'opt_unittest_suites' : UNITTEST_SUITES['opt_unittest_suites'][:],
-                'debug_unittest_suites' : UNITTEST_SUITES['debug_unittest_suites'][:],
-            },
-            'ubuntu64': {
-                'opt_unittest_suites': [
-                    ('mochitest', dict(suite='mochitest-plain', chunkByDir=4, totalChunks=5)),
-                    ('mochitest-other', ['mochitest-a11y', 'mochitest-ipcplugins']),
-                    ('crashtest', ['crashtest']),
-                    ('jsreftest', ['jsreftest']),
-                ],
-                'debug_unittest_suites': [
-                    ('mochitest', dict(suite='mochitest-plain', chunkByDir=4, totalChunks=5)),
-                    ('mochitest-other', ['mochitest-a11y', 'mochitest-ipcplugins']),
-                    ('crashtest', ['crashtest']),
-                    ('jsreftest', ['jsreftest']),
-                ]
-            },
+        'ubuntu32': {
+            'opt_unittest_suites': [
+                ('mochitest', dict(suite='mochitest-plain', chunkByDir=4, totalChunks=5)),
+                ('mochitest-other', ['mochitest-a11y', 'mochitest-ipcplugins']),
+                ('crashtest', ['crashtest']),
+                ('jsreftest', ['jsreftest']),
+            ],
+            'debug_unittest_suites': [
+                ('mochitest', dict(suite='mochitest-plain', chunkByDir=4, totalChunks=5)),
+                ('mochitest-other', ['mochitest-a11y', 'mochitest-ipcplugins']),
+                ('crashtest', ['crashtest']),
+                ('jsreftest', ['jsreftest']),
+            ],
         },
-        'win32': {
-            'product_name': 'firefox',
-            'app_name': 'browser',
-            'brand_name': 'Minefield',
-            'builds_before_reboot': 1,
-            'mochitest_leak_threshold': 484,
-            'crashtest_leak_threshold': 484,
-            'env_name' : 'win32-perf-unittest',
-            'enable_opt_unittests': True,
-            'enable_debug_unittests': True,
-            'xp': {
-                'opt_unittest_suites' : UNITTEST_SUITES['opt_unittest_suites'][:],
-                'debug_unittest_suites' : UNITTEST_SUITES['debug_unittest_suites'][:],
-            },
-            'win7': {
-                'opt_unittest_suites' : \
-                    UNITTEST_SUITES['opt_unittest_suites'][:] + \
-                    [('reftest-no-accel', ['reftest-no-d2d-d3d'])],
-                'debug_unittest_suites' : UNITTEST_SUITES['debug_unittest_suites'][:],
-            }
+    },
+    'linux64': {
+        'product_name': 'firefox',
+        'app_name': 'browser',
+        'brand_name': 'Minefield',
+        'builds_before_reboot': 1,
+        'unittest-env': {'DISPLAY': ':0'},
+        'enable_opt_unittests': True,
+        'enable_debug_unittests': True,
+        'fedora64': {
+            'opt_unittest_suites': UNITTEST_SUITES['opt_unittest_suites'][:],
+            'debug_unittest_suites': UNITTEST_SUITES['debug_unittest_suites'][:],
         },
-        'macosx': {
-            'product_name': 'firefox',
-            'app_name': 'browser',
-            'brand_name': 'Minefield',
-            'builds_before_reboot': 1,
-            'enable_opt_unittests': True,
-            'enable_debug_unittests': True,
-            'leopard-o': {
-                'opt_unittest_suites' : [],
-                'debug_unittest_suites' : removeSuite('mochitest-a11y', UNITTEST_SUITES['debug_unittest_suites'][:]),
-            },
+        'ubuntu64': {
+            'opt_unittest_suites': [
+                ('mochitest', dict(suite='mochitest-plain', chunkByDir=4, totalChunks=5)),
+                ('mochitest-other', ['mochitest-a11y', 'mochitest-ipcplugins']),
+                ('crashtest', ['crashtest']),
+                ('jsreftest', ['jsreftest']),
+            ],
+            'debug_unittest_suites': [
+                ('mochitest', dict(suite='mochitest-plain', chunkByDir=4, totalChunks=5)),
+                ('mochitest-other', ['mochitest-a11y', 'mochitest-ipcplugins']),
+                ('crashtest', ['crashtest']),
+                ('jsreftest', ['jsreftest']),
+            ],
         },
-        'macosx64': {
-            'product_name': 'firefox',
-            'app_name': 'browser',
-            'brand_name': 'Minefield',
-            'builds_before_reboot': 1,
-            'enable_opt_unittests': True,
-            'enable_debug_unittests': True,
-            'leopard': {
-                'opt_unittest_suites' : removeSuite('mochitest-a11y', UNITTEST_SUITES['opt_unittest_suites'][:]),
-                'debug_unittest_suites' : [],
-            },
-            'snowleopard': {
-                'opt_unittest_suites' : removeSuite('mochitest-a11y', UNITTEST_SUITES['opt_unittest_suites'][:]),
-                'debug_unittest_suites' : removeSuite('mochitest-a11y', UNITTEST_SUITES['debug_unittest_suites'][:]),
-            },
-            'lion': {
-                'opt_unittest_suites' : removeSuite('mochitest-a11y', UNITTEST_SUITES['opt_unittest_suites'][:]),
-                'debug_unittest_suites' : removeSuite('mochitest-a11y', UNITTEST_SUITES['debug_unittest_suites'][:]),
-            },
-             'mountainlion': {
-                'opt_unittest_suites' : removeSuite('mochitest-a11y', UNITTEST_SUITES['opt_unittest_suites'][:]),
-                'debug_unittest_suites' : removeSuite('mochitest-a11y', UNITTEST_SUITES['debug_unittest_suites'][:]),
-            },
+    },
+    'ubuntu64': {
+        'opt_unittest_suites': [
+            ('mochitest', dict(suite='mochitest-plain', chunkByDir=4, totalChunks=5)),
+            ('mochitest-other', ['mochitest-a11y', 'mochitest-ipcplugins']),
+            ('crashtest', ['crashtest']),
+            ('jsreftest', ['jsreftest']),
+        ],
+        'debug_unittest_suites': [
+            ('mochitest', dict(suite='mochitest-plain', chunkByDir=4, totalChunks=5)),
+            ('mochitest-other', ['mochitest-a11y', 'mochitest-ipcplugins']),
+            ('crashtest', ['crashtest']),
+            ('jsreftest', ['jsreftest']),
+        ],
+    },
+    'win32': {
+        'product_name': 'firefox',
+        'app_name': 'browser',
+        'brand_name': 'Minefield',
+        'builds_before_reboot': 1,
+        'mochitest_leak_threshold': 484,
+        'crashtest_leak_threshold': 484,
+        'env_name': 'win32-perf-unittest',
+        'enable_opt_unittests': True,
+        'enable_debug_unittests': True,
+        'xp': {
+            'opt_unittest_suites': UNITTEST_SUITES['opt_unittest_suites'][:],
+            'debug_unittest_suites': UNITTEST_SUITES['debug_unittest_suites'][:],
         },
-        'android': {
-            'product_name': 'fennec',
-            'app_name': 'browser',
-            'brand_name': 'Minefield',
-            'is_remote': True,
-            'host_utils_url': 'http://bm-remote.build.mozilla.org/tegra/tegra-host-utils.%%(foopy_type)s.742597.zip',
-            'enable_opt_unittests': True,
-            'enable_debug_unittests': False,
-            'remote_extras': ANDROID_UNITTEST_REMOTE_EXTRAS,
-            'tegra_android': deepcopy(ANDROID_PLAIN_UNITTEST_DICT),
-            'panda_android': deepcopy(ANDROID_PANDA_UNITTEST_DICT),
+        'win7': {
+            'opt_unittest_suites': UNITTEST_SUITES['opt_unittest_suites'][:] +
+            [('reftest-no-accel', ['reftest-no-d2d-d3d'])],
+            'debug_unittest_suites': UNITTEST_SUITES['debug_unittest_suites'][:],
+        }
+    },
+    'macosx': {
+        'product_name': 'firefox',
+        'app_name': 'browser',
+        'brand_name': 'Minefield',
+        'builds_before_reboot': 1,
+        'enable_opt_unittests': True,
+        'enable_debug_unittests': True,
+        'leopard-o': {
+            'opt_unittest_suites': [],
+            'debug_unittest_suites': removeSuite('mochitest-a11y', UNITTEST_SUITES['debug_unittest_suites'][:]),
         },
-        'android-armv6': {
-            'product_name': 'fennec',
-            'app_name': 'browser',
-            'brand_name': 'Minefield',
-            'is_remote': True,
-            'host_utils_url': 'http://bm-remote.build.mozilla.org/tegra/tegra-host-utils.%%(foopy_type)s.742597.zip',
-            'enable_opt_unittests': True,
-            'enable_debug_unittests': False,
-            'remote_extras': ANDROID_UNITTEST_REMOTE_EXTRAS,
-            'tegra_android-armv6': deepcopy(ANDROID_ARMV6_UNITTEST_DICT),
+    },
+    'macosx64': {
+        'product_name': 'firefox',
+        'app_name': 'browser',
+        'brand_name': 'Minefield',
+        'builds_before_reboot': 1,
+        'enable_opt_unittests': True,
+        'enable_debug_unittests': True,
+        'leopard': {
+            'opt_unittest_suites': removeSuite('mochitest-a11y', UNITTEST_SUITES['opt_unittest_suites'][:]),
+            'debug_unittest_suites': [],
         },
-        'android-noion': {
-            'product_name': 'fennec',
-            'app_name': 'browser',
-            'brand_name': 'Minefield',
-            'is_remote': True,
-            'host_utils_url': 'http://bm-remote.build.mozilla.org/tegra/tegra-host-utils.%%(foopy_type)s.742597.zip',
-            'enable_opt_unittests': True,
-            'enable_debug_unittests': False,
-            'remote_extras': ANDROID_UNITTEST_REMOTE_EXTRAS,
-            'tegra_android-noion': deepcopy(ANDROID_NOION_UNITTEST_DICT),
+        'snowleopard': {
+            'opt_unittest_suites': removeSuite('mochitest-a11y', UNITTEST_SUITES['opt_unittest_suites'][:]),
+            'debug_unittest_suites': removeSuite('mochitest-a11y', UNITTEST_SUITES['debug_unittest_suites'][:]),
         },
+        'lion': {
+            'opt_unittest_suites': removeSuite('mochitest-a11y', UNITTEST_SUITES['opt_unittest_suites'][:]),
+            'debug_unittest_suites': removeSuite('mochitest-a11y', UNITTEST_SUITES['debug_unittest_suites'][:]),
+        },
+        'mountainlion': {
+            'opt_unittest_suites': removeSuite('mochitest-a11y', UNITTEST_SUITES['opt_unittest_suites'][:]),
+            'debug_unittest_suites': removeSuite('mochitest-a11y', UNITTEST_SUITES['debug_unittest_suites'][:]),
+        },
+    },
+    'android': {
+        'product_name': 'fennec',
+        'app_name': 'browser',
+        'brand_name': 'Minefield',
+        'is_remote': True,
+        'host_utils_url': 'http://bm-remote.build.mozilla.org/tegra/tegra-host-utils.%%(foopy_type)s.742597.zip',
+        'enable_opt_unittests': True,
+        'enable_debug_unittests': False,
+        'remote_extras': ANDROID_UNITTEST_REMOTE_EXTRAS,
+        'tegra_android': deepcopy(ANDROID_PLAIN_UNITTEST_DICT),
+        'panda_android': deepcopy(ANDROID_PANDA_UNITTEST_DICT),
+    },
+    'android-armv6': {
+        'product_name': 'fennec',
+        'app_name': 'browser',
+        'brand_name': 'Minefield',
+        'is_remote': True,
+        'host_utils_url': 'http://bm-remote.build.mozilla.org/tegra/tegra-host-utils.%%(foopy_type)s.742597.zip',
+        'enable_opt_unittests': True,
+        'enable_debug_unittests': False,
+        'remote_extras': ANDROID_UNITTEST_REMOTE_EXTRAS,
+        'tegra_android-armv6': deepcopy(ANDROID_ARMV6_UNITTEST_DICT),
+    },
+    'android-noion': {
+        'product_name': 'fennec',
+        'app_name': 'browser',
+        'brand_name': 'Minefield',
+        'is_remote': True,
+        'host_utils_url': 'http://bm-remote.build.mozilla.org/tegra/tegra-host-utils.%%(foopy_type)s.742597.zip',
+        'enable_opt_unittests': True,
+        'enable_debug_unittests': False,
+        'remote_extras': ANDROID_UNITTEST_REMOTE_EXTRAS,
+        'tegra_android-noion': deepcopy(ANDROID_NOION_UNITTEST_DICT),
+    },
 }
 
 # Copy project branches into BRANCHES keys
 for branch in ACTIVE_PROJECT_BRANCHES:
     BRANCHES[branch] = deepcopy(PROJECT_BRANCHES[branch])
 
 # Copy unittest vars in first, then platform vars
 for branch in BRANCHES.keys():
@@ -941,17 +953,17 @@ for branch in BRANCHES.keys():
                         value = deepcopy(value)
                         if isinstance(value, str):
                             value = value % locals()
                         BRANCHES[branch]['platforms'][platform][key] = value
             else:
                 BRANCHES[branch][key] = deepcopy(value)
 
     # Merge in any project branch config for platforms
-    if branch in ACTIVE_PROJECT_BRANCHES and PROJECT_BRANCHES[branch].has_key('platforms'):
+    if branch in ACTIVE_PROJECT_BRANCHES and 'platforms' in PROJECT_BRANCHES[branch]:
         for platform, platform_config in PROJECT_BRANCHES[branch]['platforms'].items():
             if platform in PLATFORMS:
                 for key, value in platform_config.items():
                     value = deepcopy(value)
                     if isinstance(value, str):
                         value = value % locals()
                     BRANCHES[branch]['platforms'][platform][key] = value
 
@@ -1116,17 +1128,17 @@ for branch in ('mozilla-aurora', 'mozill
     BRANCHES[branch]["platforms"]["android"]["tegra_android"]["opt_unittest_suites"] = deepcopy(ANDROID_UNITTEST_DICT["opt_unittest_suites"])
 #-------------------------------------------------------------------------
 # End Load reftests small for m-c based branches and exclude them for the rest
 #-------------------------------------------------------------------------
 
 
 #exclude android builds from running on non-cedar branches on pandas
 for branch in BRANCHES.keys():
-    if 'android' in BRANCHES[branch]['platforms'] and branch not in ("cedar","mozilla-central", "try", "mozilla-inbound") :
+    if 'android' in BRANCHES[branch]['platforms'] and branch not in ("cedar", "mozilla-central", "try", "mozilla-inbound"):
         del BRANCHES[branch]['platforms']['android']['panda_android']
         BRANCHES[branch]['platforms']['android']['slave_platforms'] = ['tegra_android']
 
 # Let's load Marionette for the following branches:
 for branch in ('mozilla-central', 'mozilla-inbound', 'try', 'fx-team', 'services-central', ):
     for pf in PLATFORMS:
         if 'android' in pf:
             # this is just for desktop Firefox
@@ -1137,26 +1149,27 @@ for branch in ('mozilla-central', 'mozil
                 # for now, only run windows tests on try because of bug 795513
                 continue
             config_file = "marionette/windows_config.py"
         for slave_pf in PLATFORMS[pf]['slave_platforms']:
             if pf == "macosx" and slave_pf in ("leopard-o", "leopard"):
                 # we don't run on OSX 10.5
                 continue
             # Marionette is only enabled on debug builds
-            BRANCHES[branch]['platforms'][pf][slave_pf]['debug_unittest_suites'] += [('marionette',
-                { 'suite': 'marionette',
-                  'script_path': 'scripts/marionette.py',
-                  'use_mozharness': True,
-                  'extra_args': [
-                      "--cfg", config_file
-                  ],
-                  'reboot_command': PLATFORMS[pf]['mozharness_config']['reboot_command'],
-                  'hg_bin': PLATFORMS[pf]['mozharness_config']['hg_bin'],
-                })]
+            BRANCHES[branch]['platforms'][pf][slave_pf]['debug_unittest_suites'] += [(
+                'marionette',
+                {'suite': 'marionette',
+                 'script_path': 'scripts/marionette.py',
+                 'use_mozharness': True,
+                 'extra_args': [
+                     "--cfg", config_file
+                 ],
+                 'reboot_command': PLATFORMS[pf]['mozharness_config']['reboot_command'],
+                 'hg_bin': PLATFORMS[pf]['mozharness_config']['hg_bin'],
+                 })]
 
 ### start of mozharness desktop unittests
 mozharness_unittest_suites = [
     {'suite_name': 'mochitest-1', 'suite_category': 'mochitest', 'sub_categories': ['plain1']},
     {'suite_name': 'mochitest-2', 'suite_category': 'mochitest', 'sub_categories': ['plain2']},
     {'suite_name': 'mochitest-3', 'suite_category': 'mochitest', 'sub_categories': ['plain3']},
     {'suite_name': 'mochitest-4', 'suite_category': 'mochitest', 'sub_categories': ['plain4']},
     {'suite_name': 'mochitest-5', 'suite_category': 'mochitest', 'sub_categories': ['plain5']},