Index: tools/telemetry/telemetry/unittest/page_set_smoke_test.py |
diff --git a/tools/telemetry/telemetry/unittest/page_set_smoke_test.py b/tools/telemetry/telemetry/unittest/page_set_smoke_test.py |
index 4c7599de7d49eb1b6a4cdd8beeb2ee9517b41c9e..b5e22aed033d60324a8fdbf826379e87cb193fc7 100644 |
--- a/tools/telemetry/telemetry/unittest/page_set_smoke_test.py |
+++ b/tools/telemetry/telemetry/unittest/page_set_smoke_test.py |
@@ -15,6 +15,7 @@ from telemetry.page import page_set_archive_info |
class PageSetSmokeTest(unittest.TestCase): |
def CheckArchive(self, page_set): |
+ """Verify that all URLs of pages in page_set have an associated archive. """ |
# TODO: Eventually these should be fatal. |
if not page_set.archive_data_file: |
logging.warning('Skipping %s: no archive data file', page_set.file_path) |
@@ -38,6 +39,7 @@ class PageSetSmokeTest(unittest.TestCase): |
page.url, page_set.archive_data_file)) |
def CheckCredentials(self, page_set): |
+ """Verify that all pages in page_set use proper credentials""" |
credentials = browser_credentials.BrowserCredentials() |
if page_set.credentials_path: |
credentials.credentials_path = ( |
@@ -51,14 +53,58 @@ class PageSetSmokeTest(unittest.TestCase): |
except browser_credentials.CredentialsError: |
self.fail(fail_message) |
+ def CheckTypes(self, page_set): |
+ """Verify that page_set and its page's base attributes have the right types. |
+ """ |
+ self.CheckTypesOfPageSetBasicAttributes(page_set) |
+ for page in page_set.pages: |
+ self.CheckTypesOfPageBasicAttributes(page) |
+ |
+ def CheckTypesOfPageSetBasicAttributes(self, page_set): |
+ if page_set.file_path is not None: |
+ self.assertTrue( |
+ isinstance(page_set.file_path, str), |
+ msg='page_set %\'s file_path must have type string') |
+ |
+ self.assertTrue( |
+ isinstance(page_set.description, str), |
+ msg='page_set\'s description must have type string') |
+ |
+ self.assertTrue( |
+ isinstance(page_set.archive_data_file, str), |
+ msg='page_set\'s archive_data_file path must have type string') |
+ |
+ if page_set.user_agent_type is not None: |
+ self.assertTrue( |
+ isinstance(page_set.user_agent_type, str), |
+ msg='page_set\'s user_agent_type must have type string') |
+ |
+ self.assertTrue( |
+ isinstance(page_set.make_javascript_deterministic, bool), |
+ msg='page_set\'s make_javascript_deterministic must have type bool') |
+ |
+ self.assertTrue( |
+ isinstance(page_set.startup_url, str), |
+ msg='page_set\'s startup_url must have type string') |
+ |
+ def CheckTypesOfPageBasicAttributes(self, page): |
+ self.assertTrue( |
+ isinstance(page.url, str), |
+ msg='page %s \'s url must have type string' % page.display_name) |
+ self.assertTrue( |
+ isinstance(page.page_set, page_set_module.PageSet), |
+ msg='page %s \'s page_set must be an instance of ' |
+ 'telemetry.page.page_set.PageSet' % page.display_name) |
+ self.assertTrue( |
+ isinstance(page.name, str), |
+ msg='page %s \'s name field must have type string' % page.display_name) |
+ |
def RunSmokeTest(self, page_sets_dir): |
"""Run smoke test on all page sets in page_sets_dir. |
Subclass of PageSetSmokeTest is supposed to call this in some test |
method to run smoke test. |
""" |
- # Instantiate all page sets and verify that all URLs have an associated |
- # archive. |
page_sets = discover.GetAllPageSetFilenames(page_sets_dir) |
for page_set_path in page_sets: |
@@ -66,3 +112,4 @@ class PageSetSmokeTest(unittest.TestCase): |
logging.info('Testing %s', page_set.file_path) |
self.CheckArchive(page_set) |
self.CheckCredentials(page_set) |
+ self.CheckTypes(page_set) |