diff --git a/mozilla/testing/performance/talos/places_generated_max/localstore.rdf b/mozilla/testing/performance/talos/places_generated_max/localstore.rdf new file mode 100644 index 00000000000..843c633f39f --- /dev/null +++ b/mozilla/testing/performance/talos/places_generated_max/localstore.rdf @@ -0,0 +1,22 @@ + + + + + + + + + + + + diff --git a/mozilla/testing/performance/talos/places_generated_max/prefs.js b/mozilla/testing/performance/talos/places_generated_max/prefs.js new file mode 100644 index 00000000000..7d160e0dba0 --- /dev/null +++ b/mozilla/testing/performance/talos/places_generated_max/prefs.js @@ -0,0 +1,11 @@ +// This file is needed to work around a Firefox bug where capability.principal +// prefs in user.js don't get recognized until the second browser launch +// which is too late for our purposes of using quit.js. Loading the principals +// from prefs.js avoids this issue. +user_pref("capability.principal.codebase.p0.granted", "UniversalPreferencesWrite UniversalXPConnect UniversalPreferencesRead"); +user_pref("capability.principal.codebase.p0.id", "file://"); +user_pref("capability.principal.codebase.p0.subjectName", ""); +user_pref("capability.principal.codebase.p1.granted", "UniversalPreferencesWrite UniversalXPConnect UniversalPreferencesRead"); +user_pref("capability.principal.codebase.p1.id", "http://localhost"); +user_pref("capability.principal.codebase.p1.subjectName", ""); +user_pref("signed.applets.codebase_principal_support", true); diff --git a/mozilla/testing/performance/talos/places_generated_med/localstore.rdf b/mozilla/testing/performance/talos/places_generated_med/localstore.rdf new file mode 100644 index 00000000000..843c633f39f --- /dev/null +++ b/mozilla/testing/performance/talos/places_generated_med/localstore.rdf @@ -0,0 +1,22 @@ + + + + + + + + + + + + diff --git a/mozilla/testing/performance/talos/places_generated_med/prefs.js b/mozilla/testing/performance/talos/places_generated_med/prefs.js new file mode 100644 index 00000000000..7d160e0dba0 --- /dev/null +++ b/mozilla/testing/performance/talos/places_generated_med/prefs.js @@ -0,0 +1,11 @@ +// This file is needed to work around a Firefox bug where capability.principal +// prefs in user.js don't get recognized until the second browser launch +// which is too late for our purposes of using quit.js. Loading the principals +// from prefs.js avoids this issue. +user_pref("capability.principal.codebase.p0.granted", "UniversalPreferencesWrite UniversalXPConnect UniversalPreferencesRead"); +user_pref("capability.principal.codebase.p0.id", "file://"); +user_pref("capability.principal.codebase.p0.subjectName", ""); +user_pref("capability.principal.codebase.p1.granted", "UniversalPreferencesWrite UniversalXPConnect UniversalPreferencesRead"); +user_pref("capability.principal.codebase.p1.id", "http://localhost"); +user_pref("capability.principal.codebase.p1.subjectName", ""); +user_pref("signed.applets.codebase_principal_support", true); diff --git a/mozilla/testing/performance/talos/places_generated_min/localstore.rdf b/mozilla/testing/performance/talos/places_generated_min/localstore.rdf new file mode 100644 index 00000000000..843c633f39f --- /dev/null +++ b/mozilla/testing/performance/talos/places_generated_min/localstore.rdf @@ -0,0 +1,22 @@ + + + + + + + + + + + + diff --git a/mozilla/testing/performance/talos/places_generated_min/prefs.js b/mozilla/testing/performance/talos/places_generated_min/prefs.js new file mode 100644 index 00000000000..7d160e0dba0 --- /dev/null +++ b/mozilla/testing/performance/talos/places_generated_min/prefs.js @@ -0,0 +1,11 @@ +// This file is needed to work around a Firefox bug where capability.principal +// prefs in user.js don't get recognized until the second browser launch +// which is too late for our purposes of using quit.js. Loading the principals +// from prefs.js avoids this issue. +user_pref("capability.principal.codebase.p0.granted", "UniversalPreferencesWrite UniversalXPConnect UniversalPreferencesRead"); +user_pref("capability.principal.codebase.p0.id", "file://"); +user_pref("capability.principal.codebase.p0.subjectName", ""); +user_pref("capability.principal.codebase.p1.granted", "UniversalPreferencesWrite UniversalXPConnect UniversalPreferencesRead"); +user_pref("capability.principal.codebase.p1.id", "http://localhost"); +user_pref("capability.principal.codebase.p1.subjectName", ""); +user_pref("signed.applets.codebase_principal_support", true); diff --git a/mozilla/testing/performance/talos/run_tests.py b/mozilla/testing/performance/talos/run_tests.py index 77b4a081a9a..dfc31c1534a 100755 --- a/mozilla/testing/performance/talos/run_tests.py +++ b/mozilla/testing/performance/talos/run_tests.py @@ -99,7 +99,7 @@ def send_to_csv(csv_dir, results): for res in results: browser_dump, counter_dump = results[res] writer = csv.writer(open(os.path.join(csv_dir, res + '.csv'), "wb")) - if res in ('ts', 'twinopen'): + if res in ('ts', 'twinopen', 'ts_places_generated_max', 'ts_places_generated_min', 'ts_places_generated_med'): i = 0 writer.writerow(['i', 'val']) for val in browser_dump: @@ -191,7 +191,7 @@ def send_to_graph(results_server, results_link, machine, date, browser_config, r utils.debug("Working with test: " + testname) utils.debug("Sending results: " + " ".join(browser_dump)) utils.stamped_msg("Generating results file: " + testname, "Started") - if testname in ('ts', 'twinopen'): + if testname in ('ts', 'twinopen', 'ts_places_generated_max', 'ts_places_generated_min', 'ts_places_generated_med'): #non-tpformat results for bd in browser_dump: vals.extend([[x, 'NULL'] for x in bd.split('|')]) @@ -211,7 +211,7 @@ def send_to_graph(results_server, results_link, machine, date, browser_config, r for count_type in cd: vals = [[x, 'NULL'] for x in cd[count_type]] counterName = testname + '_' + shortName(count_type) - if testname not in ('ts', 'twinopen'): + if testname in ('ts', 'twinopen', 'ts_places_generated_max', 'ts_places_generated_min', 'ts_places_generated_med'): counterName += browser_config['test_name_extension'] utils.stamped_msg("Generating results file: " + counterName, "Started") files.append(construct_file(machine, counterName, browser_config['branch_name'], browser_config['sourcestamp'], browser_config['buildid'], date, vals)) @@ -340,7 +340,6 @@ def test_file(filename): 'extra_args' : yaml_config['extra_args'], 'branch' : yaml_config['branch'], 'buildid' : yaml_config['buildid'], - 'profile_path' : yaml_config['profile_path'], 'env' : yaml_config['env'], 'dirs' : yaml_config['dirs'], 'init_url' : yaml_config['init_url']} @@ -352,8 +351,6 @@ def test_file(filename): browser_config['test_name_extension'] = '' #normalize paths to work accross platforms browser_config['browser_path'] = os.path.normpath(browser_config['browser_path']) - if browser_config['profile_path'] != {}: - browser_config['profile_path'] = os.path.normpath(browser_config['profile_path']) for dir in browser_config['dirs']: browser_config['dirs'][dir] = os.path.normpath(browser_config['dirs'][dir]) tests = yaml_config['tests'] diff --git a/mozilla/testing/performance/talos/sample.config b/mozilla/testing/performance/talos/sample.config index 669102e5edf..be666b363a0 100755 --- a/mozilla/testing/performance/talos/sample.config +++ b/mozilla/testing/performance/talos/sample.config @@ -23,8 +23,6 @@ branch: testbranch buildid: testbuildid -profile_path: base_profile - init_url: getInfo.html # Preferences to set in the test (use "preferences : {}" for no prefs) @@ -91,13 +89,47 @@ tests : win_counters : [] unix_counters : [] shutdown : True + profile_path: base_profile +- name: ts_places_generated_max + url : startup_test/startup_test.html?begin= + url_mod : str(int(time.time()*1000)) + resolution : 1 + cycles : 20 + timeout: 150 + win_counters : [] + unix_counters : [] + shutdown : True + profile_path: places_generated_max +- name: ts_places_generated_min + url : startup_test/startup_test.html?begin= + url_mod : str(int(time.time()*1000)) + resolution : 1 + cycles : 20 + timeout: 150 + win_counters : [] + unix_counters : [] + shutdown : True + profile_path: places_generated_min +- name: ts_places_generated_med + url : startup_test/startup_test.html?begin= + url_mod : str(int(time.time()*1000)) + resolution : 1 + cycles : 20 + timeout: 150 + win_counters : [] + unix_counters : [] + shutdown : True + profile_path: places_generated_med - name: tp +o url : '-tp page_load_test/tp3.manifest -tpchrome -tpnoisy -tpformat tinderbox -tpcycles 10' + resolution : 20 cycles : 1 win_counters : ['Working Set', 'Private Bytes', '% Processor Time'] unix_counters : [ 'Private Bytes', 'RSS'] shutdown : True + profile_path: base_profile - name: tp4 url : '-tp page_load_test/tp4.manifest -tpchrome -tpnoisy -tpformat tinderbox -tpcycles 10' resolution : 20 @@ -105,6 +137,7 @@ tests : win_counters : ['Working Set', 'Private Bytes', '% Processor Time'] unix_counters : [ 'Private Bytes', 'RSS'] shutdown : True + profile_path: base_profile - name: tp_js url : '"http://localhost/page_load_test/framecycler.html?quit=1&cycles=5"' resolution : 1 @@ -112,6 +145,7 @@ tests : win_counters : ['Working Set', 'Private Bytes', '% Processor Time'] unix_counters : [ 'Private Bytes', 'RSS'] shutdown : False + profile_path: base_profile - name: tdhtml url: '-tp page_load_test/dhtml/dhtml.manifest -tpchrome -tpnoisy -tpformat tinderbox -tpcycles 5' resolution : 1 @@ -119,6 +153,7 @@ tests : win_counters : [] unix_counters : [] shutdown : False + profile_path: base_profile - name: tgfx url: '-tp page_load_test/gfx/gfx.manifest -tpchrome -tpnoisy -tpformat tinderbox -tpcycles 5 -tprender' resolution : 1 @@ -126,6 +161,7 @@ tests : win_counters : [] unix_counters : [] shutdown : False + profile_path: base_profile - name: tsvg url: '-tp page_load_test/svg/svg.manifest -tpchrome -tpnoisy -tpformat tinderbox -tpcycles 5' resolution : 1 @@ -133,6 +169,7 @@ tests : win_counters : [] unix_counters : [] shutdown : False + profile_path: base_profile - name: twinopen url: startup_test/twinopen/winopen.xul?phase1=20 resolution: 1 @@ -141,6 +178,7 @@ tests : win_counters: [] unix_counters : [] shutdown : False + profile_path: base_profile - name: tjss url: '-tp page_load_test/jss/jss.manifest -tpchrome -tpnoisy -tpformat tinderbox -tpcycles 1' resolution : 1 @@ -148,6 +186,7 @@ tests : win_counters : [] unix_counters : [] shutdown : False + profile_path: base_profile - name: tsspider url: '-tp page_load_test/sunspider/sunspider.manifest -tpchrome -tpnoisy -tpformat tinderbox -tpcycles 5' resolution : 1 @@ -155,3 +194,4 @@ tests : win_counters : [] unix_counters : [] shutdown : False + profile_path: base_profile diff --git a/mozilla/testing/performance/talos/ttest.py b/mozilla/testing/performance/talos/ttest.py index 86ec84c1cfc..80b6d8085fb 100644 --- a/mozilla/testing/performance/talos/ttest.py +++ b/mozilla/testing/performance/talos/ttest.py @@ -84,33 +84,27 @@ RESULTS_TP_REGEX = re.compile('__start_tp_report(.*?)__end_tp_report.*?__startTi re.DOTALL | re.MULTILINE) RESULTS_REGEX_FAIL = re.compile('__FAIL(.*?)__FAIL', re.DOTALL|re.MULTILINE) -def createProfile(browser_config): - if browser_config["profile_path"] != {}: - # Create the new profile - temp_dir, profile_dir = ffsetup.CreateTempProfileDir(browser_config['profile_path'], - browser_config['preferences'], - browser_config['extensions']) - utils.debug("created profile") - else: - # no profile path was set in the config, set the profile_dir to an empty string. - profile_dir = "" +def createProfile(profile_path, browser_config): + # Create the new profile + temp_dir, profile_dir = ffsetup.CreateTempProfileDir(profile_path, + browser_config['preferences'], + browser_config['extensions']) + utils.debug("created profile") return profile_dir, temp_dir def initializeProfile(profile_dir, browser_config): - if browser_config["profile_path"] != {}: - if not (ffsetup.InitializeNewProfile(browser_config['browser_path'], browser_config['process'], browser_config['browser_wait'], browser_config['extra_args'], profile_dir, browser_config['init_url'], browser_config['browser_log'])): - raise talosError("failed to initialize browser") - time.sleep(browser_config['browser_wait']) - if ffprocess.checkAllProcesses(browser_config['process']): - raise talosError("browser failed to close after being initialized") + if not (ffsetup.InitializeNewProfile(browser_config['browser_path'], browser_config['process'], browser_config['browser_wait'], browser_config['extra_args'], profile_dir, browser_config['init_url'], browser_config['browser_log'])): + raise talosError("failed to initialize browser") + time.sleep(browser_config['browser_wait']) + if ffprocess.checkAllProcesses(browser_config['process']): + raise talosError("browser failed to close after being initialized") -def cleanupProfile(dir, browser_config): +def cleanupProfile(dir): # Delete the temp profile directory Make it writeable first, # because every once in a while browser seems to drop a read-only # file into it. - if browser_config["profile_path"] != {}: - ffsetup.MakeDirectoryContentsWritable(dir) - shutil.rmtree(dir) + ffsetup.MakeDirectoryContentsWritable(dir) + shutil.rmtree(dir) def checkForCrashes(browser_config, profile_dir): if platform.system() in ('Windows', 'Microsoft'): @@ -171,8 +165,10 @@ def runTest(browser_config, test_config): # add any provided directories to the installed browser for dir in browser_config['dirs']: ffsetup.InstallInBrowser(browser_config['browser_path'], browser_config['dirs'][dir]) - - profile_dir, temp_dir = createProfile(browser_config) + + # make profile path work cross-platform + test_config['profile_path'] = os.path.normpath(test_config['profile_path']) + profile_dir, temp_dir = createProfile(test_config['profile_path'], browser_config) if os.path.isfile(browser_config['browser_log']): os.chmod(browser_config['browser_log'], 0777) os.remove(browser_config['browser_log']) @@ -285,7 +281,7 @@ def runTest(browser_config, test_config): all_counter_results.append(counter_results) ffprocess.cleanupProcesses(browser_config['process'], browser_config['browser_wait']) - cleanupProfile(temp_dir, browser_config) + cleanupProfile(temp_dir) utils.restoreEnvironmentVars() if test_config['shutdown']: @@ -311,7 +307,7 @@ def runTest(browser_config, test_config): pass if vars().has_key('temp_dir'): - cleanupProfile(temp_dir, browser_config) + cleanupProfile(temp_dir) except talosError, te: utils.debug("cleanup error: " + te.msg) except: