Bug 1458571 - Use base testing/profiles in raptor, r=rwood

This gets raptor to use the newly created "perf" profile that talos
also uses. There is a single pref that raptor sets that we can't set
in talos. To that end, this also creates a "raptor" specific profile.

This means to set a pref in talos and raptor, edit:
testing/profiles/perf/user.js

To set a pref in raptor only, edit:
testing/profiles/raptor/user.js

The performance of extensions can now be tested by dropping the
extension into:
testing/profiles/perf/extensions

MozReview-Commit-ID: LEJeytmmiFF

--HG--
extra : rebase_source : 0d2a6b18868f8cc6ff198ef868ad0324b57b1dc2
This commit is contained in:
Andrew Halberstadt 2018-05-04 11:19:49 -04:00
Родитель afea2c586c
Коммит 970f7e41b1
6 изменённых файлов: 37 добавлений и 120 удалений

Просмотреть файл

@ -418,6 +418,12 @@ ARCHIVE_FILES = {
'base': 'testing', 'base': 'testing',
'pattern': 'raptor/**', 'pattern': 'raptor/**',
}, },
{
'source': buildconfig.topsrcdir,
'base': 'testing/profiles',
'pattern': '**',
'dest': 'raptor/raptor/profile_data',
},
{ {
'source': buildconfig.topsrcdir, 'source': buildconfig.topsrcdir,
'base': 'third_party/webkit/PerformanceTests', 'base': 'third_party/webkit/PerformanceTests',

Просмотреть файл

@ -1,7 +1,8 @@
{ {
"mochitest": ["common"], "mochitest": ["common"],
"profileserver": ["common"], "profileserver": ["common"],
"web-platform-tests": ["common"], "raptor": ["perf", "raptor"],
"talos": ["perf"], "talos": ["perf"],
"valgrind": ["common"] "valgrind": ["common"],
"web-platform-tests": ["common"]
} }

Просмотреть файл

@ -0,0 +1,2 @@
Dropping extensions here will get them installed in all test harnesses
that make use of this profile.

Просмотреть файл

@ -0,0 +1,3 @@
// Preferences file used by the raptor harness
/* globals user_pref */
user_pref("dom.performance.time_to_non_blank_paint.enabled", true);

Просмотреть файл

@ -1,109 +0,0 @@
{
"app.normandy.api_url": "https://127.0.0.1/selfsupport-dummy/",
"app.update.enabled": false,
"browser.EULA.override": true,
"browser.aboutHomeSnippets.updateUrl": "https://127.0.0.1/about-dummy/",
"browser.addon-watch.interval": -1,
"browser.bookmarks.max_backups": 0,
"browser.cache.disk.smart_size.enabled": false,
"browser.cache.disk.smart_size.first_run": false,
"browser.chrome.dynamictoolbar": false,
"browser.contentHandlers.types.0.uri": "http://127.0.0.1/rss?url=%s",
"browser.contentHandlers.types.1.uri": "http://127.0.0.1/rss?url=%s",
"browser.contentHandlers.types.2.uri": "http://127.0.0.1/rss?url=%s",
"browser.contentHandlers.types.3.uri": "http://127.0.0.1/rss?url=%s",
"browser.contentHandlers.types.4.uri": "http://127.0.0.1/rss?url=%s",
"browser.contentHandlers.types.5.uri": "http://127.0.0.1/rss?url=%s",
"browser.dom.window.dump.enabled": true,
"browser.link.open_newwindow": 2,
"browser.newtabpage.activity-stream.default.sites": "",
"browser.newtabpage.activity-stream.feeds.section.topstories": false,
"browser.newtabpage.activity-stream.feeds.snippets": false,
"browser.newtabpage.activity-stream.telemetry": false,
"browser.newtabpage.activity-stream.tippyTop.service.endpoint": "",
"browser.ping-centre.production.endpoint": "https://127.0.0.1/pingcentre/dummy/",
"browser.ping-centre.staging.endpoint": "https://127.0.0.1/pingcentre/dummy/",
"browser.reader.detectedFirstArticle": true,
"browser.safebrowsing.blockedURIs.enabled": false,
"browser.safebrowsing.downloads.enabled": false,
"browser.safebrowsing.downloads.remote.url": "http://127.0.0.1/safebrowsing-dummy/downloads",
"browser.safebrowsing.malware.enabled": false,
"browser.safebrowsing.passwords.enabled": false,
"browser.safebrowsing.phishing.enabled": false,
"browser.safebrowsing.provider.google.gethashURL": "http://127.0.0.1/safebrowsing-dummy/gethash",
"browser.safebrowsing.provider.google.updateURL": "http://127.0.0.1/safebrowsing-dummy/update",
"browser.safebrowsing.provider.google4.gethashURL": "http://127.0.0.1/safebrowsing4-dummy/gethash",
"browser.safebrowsing.provider.google4.updateURL": "http://127.0.0.1/safebrowsing4-dummy/update",
"browser.safebrowsing.provider.mozilla.gethashURL": "http://127.0.0.1/safebrowsing-dummy/gethash",
"browser.safebrowsing.provider.mozilla.updateURL": "http://127.0.0.1/safebrowsing-dummy/update",
"browser.search.countryCode": "US",
"browser.search.geoSpecificDefaults": false,
"browser.search.geoip.url": "",
"browser.search.isUS": true,
"browser.shell.checkDefaultBrowser": false,
"browser.snippets.enabled": false,
"browser.snippets.syncPromo.enabled": false,
"browser.tabs.remote.autostart": false,
"browser.urlbar.userMadeSearchSuggestionsChoice": true,
"browser.warnOnQuit": false,
"browser.webapps.checkForUpdates": 0,
"datareporting.healthreport.documentServerURI": "http://127.0.0.1/healthreport/",
"datareporting.policy.dataSubmissionPolicyBypassNotification": true,
"devtools.chrome.enabled": false,
"devtools.debugger.remote-enabled": false,
"devtools.theme": "light",
"devtools.timeline.enabled": false,
"dom.allow_scripts_to_close_windows": true,
"dom.disable_open_during_load": false,
"dom.disable_window_flip": true,
"dom.disable_window_move_resize": true,
"dom.max_chrome_script_run_time": 0,
"dom.max_script_run_time": 0,
"dom.performance.time_to_non_blank_paint.enabled": true,
"dom.send_after_paint_to_content": true,
"experiments.manifest.uri": "https://127.0.0.1/experiments-dummy/manifest",
"extensions.autoDisableScopes": 10,
"extensions.blocklist.enabled": false,
"extensions.blocklist.url": "http://127.0.0.1/extensions-dummy/blocklistURL",
"extensions.checkCompatibility": false,
"extensions.enabledScopes": 5,
"extensions.getAddons.get.url": "http://127.0.0.1/extensions-dummy/repositoryGetURL",
"extensions.getAddons.getWithPerformance.url": "http://127.0.0.1/extensions-dummy/repositoryGetWithPerformanceURL",
"extensions.getAddons.search.browseURL": "http://127.0.0.1/extensions-dummy/repositoryBrowseURL",
"extensions.hotfix.url": "http://127.0.0.1/extensions-dummy/hotfixURL",
"extensions.legacy.enabled": true,
"extensions.systemAddon.update.url": "http://127.0.0.1/dummy-system-addons.xml",
"extensions.update.background.url": "http://127.0.0.1/extensions-dummy/updateBackgroundURL",
"extensions.update.enabled": false,
"extensions.update.notifyUser": false,
"extensions.update.url": "http://127.0.0.1/extensions-dummy/updateURL",
"extensions.webservice.discoverURL": "http://127.0.0.1/extensions-dummy/discoveryURL",
"general.useragent.updates.enabled": false,
"hangmonitor.timeout": 0,
"identity.fxaccounts.auth.uri": "https://127.0.0.1/fxa-dummy/",
"identity.fxaccounts.migrateToDevEdition": false,
"lightweightThemes.selectedThemeID": "",
"media.capturestream_hints.enabled": true,
"media.gmp-manager.updateEnabled": false,
"media.gmp-manager.url": "http://127.0.0.1/gmpmanager-dummy/update.xml",
"media.libavcodec.allow-obsolete": true,
"media.navigator.enabled": true,
"media.navigator.permission.disabled": true,
"media.peerconnection.enabled": true,
"network.http.speculative-parallel-limit": 0,
"network.proxy.http": "localhost",
"network.proxy.http_port": 80,
"network.proxy.type": 1,
"places.database.lastMaintenance": 2147483647,
"plugin.state.flash": 0,
"plugins.flashBlock.enabled": false,
"privacy.trackingprotection.annotate_channels": false,
"privacy.trackingprotection.enabled": false,
"privacy.trackingprotection.introURL": "http://127.0.0.1/trackingprotection/tour",
"privacy.trackingprotection.pbmode.enabled": false,
"security.enable_java": false,
"security.fileuri.strict_origin_policy": false,
"security.turn_off_all_security_so_that_viruses_can_take_over_this_computer": true,
"toolkit.telemetry.server": "https://127.0.0.1/telemetry-dummy/",
"xpinstall.signatures.required": false
}

Просмотреть файл

@ -21,6 +21,12 @@ here = os.path.abspath(os.path.dirname(__file__))
webext_dir = os.path.join(os.path.dirname(here), 'webext') webext_dir = os.path.join(os.path.dirname(here), 'webext')
sys.path.insert(0, here) sys.path.insert(0, here)
try:
from mozbuild.base import MozbuildObject
build = MozbuildObject.from_environment(cwd=here)
except ImportError:
build = None
from cmdline import parse_args from cmdline import parse_args
from control_server import RaptorControlServer from control_server import RaptorControlServer
from gen_test_config import gen_test_config from gen_test_config import gen_test_config
@ -44,16 +50,16 @@ class Raptor(object):
self.playback = None self.playback = None
# Create the profile # Create the profile
pref_file = os.path.join(here, 'preferences', '{}.json'.format(self.config['app'])) self.profile = create_profile(self.config['app'])
prefs = {}
if os.path.isfile(pref_file):
with open(pref_file, 'r') as fh:
prefs = json.load(fh)
try: # Merge in base profiles
self.profile = create_profile(self.config['app'], preferences=prefs) with open(os.path.join(self.profile_data_dir, 'profiles.json'), 'r') as fh:
except NotImplementedError: base_profiles = json.load(fh)['raptor']
self.profile = None
for name in base_profiles:
path = os.path.join(self.profile_data_dir, name)
self.log.info("Merging profile: {}".format(path))
self.profile.merge(path)
# Create the runner # Create the runner
self.output_handler = OutputHandler() self.output_handler = OutputHandler()
@ -64,6 +70,14 @@ class Raptor(object):
self.runner = runner_cls( self.runner = runner_cls(
binary, profile=self.profile, process_args=process_args) binary, profile=self.profile, process_args=process_args)
@property
def profile_data_dir(self):
if 'MOZ_DEVELOPER_REPO_DIR' in os.environ:
return os.path.join(os.environ['MOZ_DEVELOPER_REPO_DIR'], 'testing', 'profiles')
if build:
return os.path.join(build.topsrcdir, 'testing', 'profiles')
return os.path.join(here, 'profile_data')
def start_control_server(self): def start_control_server(self):
self.control_server = RaptorControlServer() self.control_server = RaptorControlServer()
self.control_server.start() self.control_server.start()