OLD | NEW |
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 import os | 5 import os |
6 import tempfile | 6 import tempfile |
7 import unittest | 7 import unittest |
8 | 8 |
| 9 from telemetry.core import util |
9 from telemetry.page import page_set | 10 from telemetry.page import page_set |
10 | 11 |
11 | 12 |
12 simple_archive_info = """ | 13 simple_archive_info = """ |
13 { | 14 { |
14 "archives": { | 15 "archives": { |
15 "data_01.wpr": ["http://www.foo.com/"], | 16 "data_01.wpr": ["http://www.foo.com/"], |
16 "data_02.wpr": ["http://www.bar.com/"] | 17 "data_02.wpr": ["http://www.bar.com/"] |
17 } | 18 } |
18 } | 19 } |
19 """ | 20 """ |
20 | 21 |
21 | 22 |
22 simple_set = """ | 23 simple_set = """ |
23 {"description": "hello", | 24 {"description": "hello", |
24 "archive_data_file": "%s", | 25 "archive_data_file": "%s", |
25 "pages": [ | 26 "pages": [ |
26 {"url": "http://www.foo.com/"}, | 27 {"url": "http://www.foo.com/"}, |
27 {"url": "http://www.bar.com/"} | 28 {"url": "http://www.bar.com/"} |
28 ] | 29 ] |
29 } | 30 } |
30 """ | 31 """ |
31 | 32 |
32 | 33 |
33 class TestPageSet(unittest.TestCase): | 34 class TestPageSet(unittest.TestCase): |
34 def testSimpleSet(self): | 35 def testSimpleSet(self): |
35 try: | 36 try: |
36 with tempfile.NamedTemporaryFile(delete=False) as f: | 37 with tempfile.NamedTemporaryFile(delete=False, suffix=".json") as f: |
37 f.write(simple_archive_info) | 38 f.write(simple_archive_info) |
38 | 39 |
39 with tempfile.NamedTemporaryFile(delete=False) as f2: | 40 with tempfile.NamedTemporaryFile(delete=False, suffix=".json") as f2: |
40 f2.write(simple_set % f.name.replace('\\', '\\\\')) | 41 f2.write(simple_set % f.name.replace('\\', '\\\\')) |
41 | 42 |
42 ps = page_set.PageSet.FromFile(f2.name) | 43 ps = page_set.PageSet.FromFile(f2.name) |
43 finally: | 44 finally: |
44 os.remove(f.name) | 45 os.remove(f.name) |
45 os.remove(f2.name) | 46 os.remove(f2.name) |
46 | 47 |
47 self.assertEquals('hello', ps.description) | 48 self.assertEquals('hello', ps.description) |
48 self.assertEquals(f.name, ps.archive_data_file) | 49 self.assertEquals(f.name, ps.archive_data_file) |
49 self.assertEquals(2, len(ps.pages)) | 50 self.assertEquals(2, len(ps.pages)) |
(...skipping 29 matching lines...) Expand all Loading... |
79 'pages': [ | 80 'pages': [ |
80 {'url': 'http://www.foo.com', | 81 {'url': 'http://www.foo.com', |
81 'stress_memory': {'action': 'javasciprt'} | 82 'stress_memory': {'action': 'javasciprt'} |
82 }, | 83 }, |
83 {'url': 'http://www.bar.com', | 84 {'url': 'http://www.bar.com', |
84 'navigate_steps': {'action': 'navigate2'}, | 85 'navigate_steps': {'action': 'navigate2'}, |
85 'repaint' : {'action': 'scroll'} | 86 'repaint' : {'action': 'scroll'} |
86 }, | 87 }, |
87 ]}, 'file://foo.js') | 88 ]}, 'file://foo.js') |
88 | 89 |
89 self.assertEquals(ps.pages[0].RunNavigateSteps, {'action': 'navigate'}) | 90 self.assertTrue(hasattr(ps.pages[0], 'RunNavigateSteps')) |
90 self.assertEquals(ps.pages[0].RunSmoothness, {'action': 'scroll'}) | 91 self.assertEquals(ps.pages[0].RunSmoothness, {'action': 'scroll'}) |
91 self.assertEquals(ps.pages[0].RunStressMemory, {'action': 'javasciprt'}) | 92 self.assertEquals(ps.pages[0].RunStressMemory, {'action': 'javasciprt'}) |
92 | 93 |
93 self.assertEquals(ps.pages[1].RunSmoothness, {'action': 'scroll'}) | 94 self.assertEquals(ps.pages[1].RunSmoothness, {'action': 'scroll'}) |
94 self.assertEquals(ps.pages[1].RunNavigateSteps, {'action': 'navigate2'}) | 95 self.assertEquals(ps.pages[1].RunNavigateSteps, {'action': 'navigate2'}) |
95 self.assertEquals(ps.pages[1].RunRepaint, {'action': 'scroll'}) | 96 self.assertEquals(ps.pages[1].RunRepaint, {'action': 'scroll'}) |
| 97 |
| 98 def testRunNavigateStepsInheritance(self): |
| 99 ps = page_set.PageSet.FromDict({ |
| 100 'serving_dirs': ['a/b'], |
| 101 'navigate_steps' : { 'action' : 'navigate1' }, |
| 102 'pages': [ |
| 103 {'url': 'http://www.foo.com', |
| 104 }, |
| 105 {'url': 'http://www.bar.com', |
| 106 'navigate_steps': {'action': 'navigate2'}, |
| 107 }, |
| 108 ]}, 'file://foo.js') |
| 109 |
| 110 self.assertEquals(ps.pages[0].RunNavigateSteps, {'action': 'navigate1'}) |
| 111 self.assertEquals(ps.pages[1].RunNavigateSteps, {'action': 'navigate2'}) |
| 112 |
| 113 |
| 114 def testSuccesfulPythonPageSetLoading(self): |
| 115 test_pps_dir = os.path.join(util.GetUnittestDataDir(), 'test_page_set.py') |
| 116 pps = page_set.PageSet.FromFile(test_pps_dir) |
| 117 self.assertEqual('TestPageSet', pps.__class__.__name__) |
| 118 self.assertEqual('A pageset for testing purpose', pps.description) |
| 119 self.assertEqual('data/test.json', pps.archive_data_file) |
| 120 self.assertEqual('data/credential', pps.credentials_path) |
| 121 self.assertEqual('desktop', pps.user_agent_type) |
| 122 self.assertEqual(test_pps_dir, pps.file_path) |
| 123 self.assertEqual(1, len(pps.pages)) |
| 124 google_page = pps.pages[0] |
| 125 self.assertEqual('https://www.google.com', google_page.url) |
| 126 self.assertIs(pps, google_page.page_set) |
| 127 self.assertTrue(hasattr(google_page, 'RunNavigateSteps')) |
| 128 self.assertTrue(5, google_page.RunGetActionRunner(action_runner=5)) |
| 129 |
| 130 def testMultiplePythonPageSetsLoading(self): |
| 131 test_pps_1_dir = os.path.join(util.GetUnittestDataDir(), |
| 132 'test_simple_one_page_set.py') |
| 133 test_pps_2_dir = os.path.join(util.GetUnittestDataDir(), |
| 134 'test_simple_two_page_set.py') |
| 135 pps1 = page_set.PageSet.FromFile(test_pps_1_dir) |
| 136 pps2 = page_set.PageSet.FromFile(test_pps_2_dir) |
| 137 |
| 138 self.assertEqual('TestSimpleOnePageSet', pps1.__class__.__name__) |
| 139 self.assertEqual('TestSimpleTwoPageSet', pps2.__class__.__name__) |
OLD | NEW |