mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-14 03:07:31 +09:00
import FIREFOX_52_6_0esr_RELEASE from mozilla-esr52 hg repo
This commit is contained in:
commit
dcd9973243
150858 changed files with 23884658 additions and 0 deletions
190
testing/talos/tests/test_browser_output.py
Normal file
190
testing/talos/tests/test_browser_output.py
Normal file
|
|
@ -0,0 +1,190 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
"""
|
||||
test talos browser output parsing
|
||||
"""
|
||||
|
||||
import os
|
||||
import unittest
|
||||
|
||||
from talos.results import BrowserLogResults
|
||||
from talos.results import PageloaderResults
|
||||
from talos.utils import TalosError
|
||||
|
||||
here = os.path.dirname(os.path.abspath(__file__))
|
||||
|
||||
|
||||
class TestBrowserOutput(unittest.TestCase):
|
||||
|
||||
def test_ts_format(self):
|
||||
|
||||
# output file
|
||||
browser_ts = os.path.join(here, 'browser_output.ts.txt')
|
||||
|
||||
# parse the results
|
||||
browser_log = BrowserLogResults(browser_ts)
|
||||
|
||||
# ensure the results meet what we expect
|
||||
self.assertEqual(browser_log.format, 'tsformat')
|
||||
self.assertEqual(browser_log.browser_results.strip(), '392')
|
||||
self.assertEqual(browser_log.startTime, 1333663595953)
|
||||
self.assertEqual(browser_log.endTime, 1333663596551)
|
||||
|
||||
def test_tsvg_format(self):
|
||||
|
||||
# output file
|
||||
browser_tsvg = os.path.join(here, 'browser_output.tsvg.txt')
|
||||
|
||||
# parse the results
|
||||
browser_log = BrowserLogResults(browser_tsvg)
|
||||
|
||||
# ensure the results meet what we expect
|
||||
self.assertEqual(browser_log.format, 'tpformat')
|
||||
self.assertEqual(browser_log.startTime, 1333666702130)
|
||||
self.assertEqual(browser_log.endTime, 1333666702743)
|
||||
|
||||
# we won't validate the exact string because it is long
|
||||
raw_report = browser_log.browser_results.strip()
|
||||
raw_report.startswith('_x_x_mozilla_page_load')
|
||||
raw_report.endswith('|11;hixie-007.xml;1629;1651;1648;1652;1649')
|
||||
|
||||
# but we will ensure that it is parseable
|
||||
pageloader_results = PageloaderResults(raw_report)
|
||||
self.assertEqual(len(pageloader_results.results), 12)
|
||||
indices = [i['index'] for i in pageloader_results.results]
|
||||
self.assertEqual(indices, range(12))
|
||||
|
||||
# test hixie-001.xml just as a spot-check
|
||||
hixie_001 = pageloader_results.results[5]
|
||||
expected_values = [45643, 14976, 17807, 14971, 17235]
|
||||
self.assertEqual(hixie_001['runs'], expected_values)
|
||||
self.assertEqual(hixie_001['page'], 'hixie-001.xml')
|
||||
|
||||
def test_garbage(self):
|
||||
"""
|
||||
send in garbage input and ensure the output is the
|
||||
inability to find the report
|
||||
"""
|
||||
|
||||
garbage = "hjksdfhkhasdfjkhsdfkhdfjklasd"
|
||||
self.compare_error_message(garbage, "Could not find report")
|
||||
|
||||
def test_missing_end_report(self):
|
||||
"""what if you're not done with a report?"""
|
||||
garbage = "hjksdfhkhasdfjkhsdfkhdfjklasd"
|
||||
|
||||
input = self.start_report()
|
||||
input += garbage
|
||||
self.compare_error_message(input, "Could not find end token: '__end_report'")
|
||||
|
||||
def test_double_end_report(self):
|
||||
"""double end report tokens"""
|
||||
|
||||
garbage = "hjksdfhkhasdfjkhsdfkhdfjklasd"
|
||||
input = self.start_report() + garbage + self.end_report() + self.end_report()
|
||||
self.compare_error_message(input, "Unmatched number of tokens")
|
||||
|
||||
def test_end_report_before_start_report(self):
|
||||
"""the end report token occurs before the start report token"""
|
||||
|
||||
garbage = "hjksdfhkhasdfjkhsdfkhdfjklasd"
|
||||
input = self.end_report() + garbage + self.start_report()
|
||||
self.compare_error_message(input,
|
||||
"End token '%s' occurs before start token" %
|
||||
self.end_report())
|
||||
|
||||
def test_missing_timestamps(self):
|
||||
"""what if the timestamps are missing?"""
|
||||
|
||||
# make a bogus report but missing the timestamps
|
||||
garbage = "hjksdfhkhasdfjkhsdfkhdfjklasd"
|
||||
input = self.start_report() + garbage + self.end_report()
|
||||
|
||||
# it will fail
|
||||
self.compare_error_message(input, "Could not find startTime in browser output")
|
||||
|
||||
def test_wrong_order(self):
|
||||
"""what happens if you mix up the token order?"""
|
||||
|
||||
# i've secretly put the AfterTerminationTimestamp before
|
||||
# the BeforeLaunchTimestamp
|
||||
# Let's see if the parser notices
|
||||
bad_report = """__start_report392__end_report
|
||||
|
||||
Failed to load native module at path '/home/jhammel/firefox/components/libmozgnome.so':
|
||||
(80004005) libnotify.so.1: cannot open shared object file: No such file or directory
|
||||
Could not read chrome manifest
|
||||
'file:///home/jhammel/firefox/extensions/%7B972ce4c6-7e08-4474-a285-3208198ce6fd%7D/chrome.manifest'.
|
||||
[JavaScript Warning: "Use of enablePrivilege is deprecated.
|
||||
Please use code that runs with the system principal (e.g. an extension) instead.
|
||||
" {file: "http://localhost:15707/startup_test/startup_test.html?begin=1333663595557" line: 0}]
|
||||
__startTimestamp1333663595953__endTimestamp
|
||||
__startAfterTerminationTimestamp1333663596551__endAfterTerminationTimestamp
|
||||
__startBeforeLaunchTimestamp1333663595557__endBeforeLaunchTimestamp
|
||||
"""
|
||||
|
||||
self.compare_error_message(bad_report, "] found before " +
|
||||
"('__startBeforeLaunchTimestamp', " +
|
||||
"'__endBeforeLaunchTimestamp') " +
|
||||
"[character position:")
|
||||
|
||||
def test_multiple_reports(self):
|
||||
"""you're only allowed to have one report in a file"""
|
||||
|
||||
# this one works fine
|
||||
good_report = """__start_report392__end_report
|
||||
|
||||
Failed to load native module at path '/home/jhammel/firefox/components/libmozgnome.so':
|
||||
(80004005) libnotify.so.1: cannot open shared object file: No such file or directory
|
||||
Could not read chrome manifest
|
||||
'file:///home/jhammel/firefox/extensions/%7B972ce4c6-7e08-4474-a285-3208198ce6fd%7D/chrome.manifest'.
|
||||
[JavaScript Warning: "Use of enablePrivilege is deprecated.
|
||||
Please use code that runs with the system principal (e.g. an extension) instead.
|
||||
" {file: "http://localhost:15707/startup_test/startup_test.html?begin=1333663595557" line: 0}]
|
||||
__startTimestamp1333663595953__endTimestamp
|
||||
__startBeforeLaunchTimestamp1333663595557__endBeforeLaunchTimestamp
|
||||
__startAfterTerminationTimestamp1333663596551__endAfterTerminationTimestamp
|
||||
"""
|
||||
|
||||
# but there's no hope for this one
|
||||
bad_report = good_report + good_report # interesting math
|
||||
|
||||
self.compare_error_message(bad_report, "Multiple matches for %s,%s" %
|
||||
(self.start_report(), self.end_report()))
|
||||
|
||||
def start_report(self):
|
||||
"""return a start report token"""
|
||||
return BrowserLogResults.report_tokens[0][1][0] # start token
|
||||
|
||||
def end_report(self):
|
||||
"""return a start report token"""
|
||||
return BrowserLogResults.report_tokens[0][1][-1] # end token
|
||||
|
||||
def compare_error_message(self, browser_log, substr):
|
||||
"""
|
||||
ensures that exceptions give correct error messages
|
||||
- browser_log : a browser log file
|
||||
- substr : substring of the error message
|
||||
"""
|
||||
|
||||
try:
|
||||
BrowserLogResults(results_raw=browser_log)
|
||||
except TalosError as e:
|
||||
if substr not in str(e):
|
||||
import pdb
|
||||
pdb.set_trace()
|
||||
self.assertTrue(substr in str(e))
|
||||
|
||||
|
||||
class TestTalosError(unittest.TestCase):
|
||||
"""
|
||||
test TalosError class
|
||||
"""
|
||||
def test_browser_log_results(self):
|
||||
# an example that should fail
|
||||
# passing invalid value for argument result_raw
|
||||
with self.assertRaises(TalosError):
|
||||
BrowserLogResults(results_raw="__FAIL<bad test>__FAIL")
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
Loading…
Add table
Add a link
Reference in a new issue