Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Side by Side Diff: telemetry/telemetry/internal/story_runner_unittest.py

Issue 2153513002: [Telemetry] Ensure that story display names are unique (Closed) Base URL: git@github.com:catapult-project/catapult.git@master
Patch Set: fix typo Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | telemetry/telemetry/page/page_run_end_to_end_unittest.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 2014 The Chromium Authors. All rights reserved. 1 # Copyright 2014 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 math 5 import math
6 import os 6 import os
7 import StringIO 7 import StringIO
8 import sys 8 import sys
9 import unittest 9 import unittest
10 10
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 class MixedStateStorySet(story_module.StorySet): 127 class MixedStateStorySet(story_module.StorySet):
128 @property 128 @property
129 def allow_mixed_story_states(self): 129 def allow_mixed_story_states(self):
130 return True 130 return True
131 131
132 def SetupStorySet(allow_multiple_story_states, story_state_list): 132 def SetupStorySet(allow_multiple_story_states, story_state_list):
133 if allow_multiple_story_states: 133 if allow_multiple_story_states:
134 story_set = MixedStateStorySet() 134 story_set = MixedStateStorySet()
135 else: 135 else:
136 story_set = story_module.StorySet() 136 story_set = story_module.StorySet()
137 for story_state in story_state_list: 137 for i, story_state in enumerate(story_state_list):
138 story_set.AddStory(DummyLocalStory(story_state)) 138 story_set.AddStory(DummyLocalStory(story_state,
139 name='story%d' % i))
139 return story_set 140 return story_set
140 141
141 def _GetOptionForUnittest(): 142 def _GetOptionForUnittest():
142 options = options_for_unittests.GetCopy() 143 options = options_for_unittests.GetCopy()
143 options.output_formats = ['none'] 144 options.output_formats = ['none']
144 options.suppress_gtest_report = False 145 options.suppress_gtest_report = False
145 parser = options.CreateParser() 146 parser = options.CreateParser()
146 story_runner.AddCommandLineArgs(parser) 147 story_runner.AddCommandLineArgs(parser)
147 options.MergeDefaultValues(parser.get_default_values()) 148 options.MergeDefaultValues(parser.get_default_values())
148 story_runner.ProcessCommandLineArgs(parser, options) 149 story_runner.ProcessCommandLineArgs(parser, options)
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
289 290
290 manager = mock.MagicMock() 291 manager = mock.MagicMock()
291 test.WillRunStory = mock.MagicMock() 292 test.WillRunStory = mock.MagicMock()
292 test.Measure = mock.MagicMock() 293 test.Measure = mock.MagicMock()
293 test.DidRunStory = mock.MagicMock() 294 test.DidRunStory = mock.MagicMock()
294 manager.attach_mock(test.WillRunStory, TEST_WILL_RUN_STORY) 295 manager.attach_mock(test.WillRunStory, TEST_WILL_RUN_STORY)
295 manager.attach_mock(test.Measure, TEST_MEASURE) 296 manager.attach_mock(test.Measure, TEST_MEASURE)
296 manager.attach_mock(test.DidRunStory, TEST_DID_RUN_STORY) 297 manager.attach_mock(test.DidRunStory, TEST_DID_RUN_STORY)
297 298
298 story_set = story_module.StorySet() 299 story_set = story_module.StorySet()
299 story_set.AddStory(DummyLocalStory(TestSharedTbmState)) 300 story_set.AddStory(DummyLocalStory(TestSharedTbmState, name='foo'))
300 story_set.AddStory(DummyLocalStory(TestSharedTbmState)) 301 story_set.AddStory(DummyLocalStory(TestSharedTbmState, name='bar'))
301 story_set.AddStory(DummyLocalStory(TestSharedTbmState)) 302 story_set.AddStory(DummyLocalStory(TestSharedTbmState, name='baz'))
302 story_runner.Run( 303 story_runner.Run(
303 test, story_set, self.options, self.results) 304 test, story_set, self.options, self.results)
304 self.assertEquals(0, len(self.results.failures)) 305 self.assertEquals(0, len(self.results.failures))
305 self.assertEquals(3, GetNumberOfSuccessfulPageRuns(self.results)) 306 self.assertEquals(3, GetNumberOfSuccessfulPageRuns(self.results))
306 307
307 self.assertEquals(3*EXPECTED_CALLS_IN_ORDER, 308 self.assertEquals(3*EXPECTED_CALLS_IN_ORDER,
308 [call[0] for call in manager.mock_calls]) 309 [call[0] for call in manager.mock_calls])
309 310
310 def testCallOrderBetweenStoryTestAndSharedState(self): 311 def testCallOrderBetweenStoryTestAndSharedState(self):
311 """Check that the call order between StoryTest and SharedState is correct. 312 """Check that the call order between StoryTest and SharedState is correct.
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
367 class TestSharedStateForTearDown(TestSharedState): 368 class TestSharedStateForTearDown(TestSharedState):
368 num_of_tear_downs = 0 369 num_of_tear_downs = 0
369 370
370 def RunStory(self, results): 371 def RunStory(self, results):
371 pass 372 pass
372 373
373 def TearDownState(self): 374 def TearDownState(self):
374 TestSharedStateForTearDown.num_of_tear_downs += 1 375 TestSharedStateForTearDown.num_of_tear_downs += 1
375 376
376 story_set = story_module.StorySet() 377 story_set = story_module.StorySet()
377 story_set.AddStory(DummyLocalStory(TestSharedStateForTearDown)) 378 story_set.AddStory(DummyLocalStory(TestSharedStateForTearDown, name='foo'))
378 story_set.AddStory(DummyLocalStory(TestSharedStateForTearDown)) 379 story_set.AddStory(DummyLocalStory(TestSharedStateForTearDown, name='bar'))
379 story_set.AddStory(DummyLocalStory(TestSharedStateForTearDown)) 380 story_set.AddStory(DummyLocalStory(TestSharedStateForTearDown, name='baz'))
380 381
381 TestSharedStateForTearDown.num_of_tear_downs = 0 382 TestSharedStateForTearDown.num_of_tear_downs = 0
382 story_runner.Run(mock.MagicMock(), story_set, self.options, self.results) 383 story_runner.Run(mock.MagicMock(), story_set, self.options, self.results)
383 self.assertEquals(TestSharedStateForTearDown.num_of_tear_downs, 1) 384 self.assertEquals(TestSharedStateForTearDown.num_of_tear_downs, 1)
384 385
385 TestSharedStateForTearDown.num_of_tear_downs = 0 386 TestSharedStateForTearDown.num_of_tear_downs = 0
386 story_runner.Run(mock.MagicMock(), story_set, self.options, self.results, 387 story_runner.Run(mock.MagicMock(), story_set, self.options, self.results,
387 tear_down_after_story=True) 388 tear_down_after_story=True)
388 self.assertEquals(TestSharedStateForTearDown.num_of_tear_downs, 3) 389 self.assertEquals(TestSharedStateForTearDown.num_of_tear_downs, 3)
389 390
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
482 483
483 def RunPage(self, *_): 484 def RunPage(self, *_):
484 old_run_count = self.run_count 485 old_run_count = self.run_count
485 self.run_count += 1 486 self.run_count += 1
486 if old_run_count == 1: 487 if old_run_count == 1:
487 raise UnknownException('FooBarzException') 488 raise UnknownException('FooBarzException')
488 489
489 def ValidateAndMeasurePage(self, page, tab, results): 490 def ValidateAndMeasurePage(self, page, tab, results):
490 pass 491 pass
491 492
492 s1 = DummyLocalStory(TestSharedPageState) 493 s1 = DummyLocalStory(TestSharedPageState, name='foo')
493 s2 = DummyLocalStory(TestSharedPageState) 494 s2 = DummyLocalStory(TestSharedPageState, name='bar')
494 story_set.AddStory(s1) 495 story_set.AddStory(s1)
495 story_set.AddStory(s2) 496 story_set.AddStory(s2)
496 test = Test() 497 test = Test()
497 with self.assertRaises(UnknownException): 498 with self.assertRaises(UnknownException):
498 story_runner.Run( 499 story_runner.Run(
499 test, story_set, self.options, self.results) 500 test, story_set, self.options, self.results)
500 self.assertEqual(set([s2]), self.results.pages_that_failed) 501 self.assertEqual(set([s2]), self.results.pages_that_failed)
501 self.assertEqual(set([s1]), self.results.pages_that_succeeded) 502 self.assertEqual(set([s1]), self.results.pages_that_succeeded)
502 self.assertIn('FooBarzException', self.fake_stdout.getvalue()) 503 self.assertIn('FooBarzException', self.fake_stdout.getvalue())
503 504
504 def testRaiseBrowserGoneExceptionFromRunPage(self): 505 def testRaiseBrowserGoneExceptionFromRunPage(self):
505 self.SuppressExceptionFormatting() 506 self.SuppressExceptionFormatting()
506 story_set = story_module.StorySet() 507 story_set = story_module.StorySet()
507 508
508 class Test(legacy_page_test.LegacyPageTest): 509 class Test(legacy_page_test.LegacyPageTest):
509 def __init__(self, *args): 510 def __init__(self, *args):
510 super(Test, self).__init__(*args) 511 super(Test, self).__init__(*args)
511 self.run_count = 0 512 self.run_count = 0
512 513
513 def RunPage(self, *_): 514 def RunPage(self, *_):
514 old_run_count = self.run_count 515 old_run_count = self.run_count
515 self.run_count += 1 516 self.run_count += 1
516 if old_run_count == 0: 517 if old_run_count == 0:
517 raise exceptions.BrowserGoneException( 518 raise exceptions.BrowserGoneException(
518 None, 'i am a browser crash message') 519 None, 'i am a browser crash message')
519 520
520 def ValidateAndMeasurePage(self, page, tab, results): 521 def ValidateAndMeasurePage(self, page, tab, results):
521 pass 522 pass
522 523
523 story_set.AddStory(DummyLocalStory(TestSharedPageState)) 524 story_set.AddStory(DummyLocalStory(TestSharedPageState, name='foo'))
524 story_set.AddStory(DummyLocalStory(TestSharedPageState)) 525 story_set.AddStory(DummyLocalStory(TestSharedPageState, name='bar'))
525 test = Test() 526 test = Test()
526 story_runner.Run( 527 story_runner.Run(
527 test, story_set, self.options, self.results) 528 test, story_set, self.options, self.results)
528 self.assertEquals(2, test.run_count) 529 self.assertEquals(2, test.run_count)
529 self.assertEquals(1, len(self.results.failures)) 530 self.assertEquals(1, len(self.results.failures))
530 self.assertEquals(1, GetNumberOfSuccessfulPageRuns(self.results)) 531 self.assertEquals(1, GetNumberOfSuccessfulPageRuns(self.results))
531 532
532 def testAppCrashThenRaiseInTearDownFatal(self): 533 def testAppCrashThenRaiseInTearDownFatal(self):
533 self.SuppressExceptionFormatting() 534 self.SuppressExceptionFormatting()
534 story_set = story_module.StorySet() 535 story_set = story_module.StorySet()
(...skipping 19 matching lines...) Expand all
554 def RunPage(self, *_): 555 def RunPage(self, *_):
555 old_run_count = self.run_count 556 old_run_count = self.run_count
556 self.run_count += 1 557 self.run_count += 1
557 if old_run_count == 0: 558 if old_run_count == 0:
558 unit_test_events.append('app-crash') 559 unit_test_events.append('app-crash')
559 raise exceptions.AppCrashException 560 raise exceptions.AppCrashException
560 561
561 def ValidateAndMeasurePage(self, page, tab, results): 562 def ValidateAndMeasurePage(self, page, tab, results):
562 pass 563 pass
563 564
564 story_set.AddStory(DummyLocalStory(TestTearDownSharedState)) 565 story_set.AddStory(DummyLocalStory(TestTearDownSharedState, name='foo'))
565 story_set.AddStory(DummyLocalStory(TestTearDownSharedState)) 566 story_set.AddStory(DummyLocalStory(TestTearDownSharedState, name='bar'))
566 test = Test() 567 test = Test()
567 568
568 with self.assertRaises(DidRunTestError): 569 with self.assertRaises(DidRunTestError):
569 story_runner.Run( 570 story_runner.Run(
570 test, story_set, self.options, self.results) 571 test, story_set, self.options, self.results)
571 self.assertEqual(['app-crash', 'dump-state', 'tear-down-state'], 572 self.assertEqual(['app-crash', 'dump-state', 'tear-down-state'],
572 unit_test_events) 573 unit_test_events)
573 # The AppCrashException gets added as a failure. 574 # The AppCrashException gets added as a failure.
574 self.assertEquals(1, len(self.results.failures)) 575 self.assertEquals(1, len(self.results.failures))
575 576
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
715 def CanRunStory(self, story): 716 def CanRunStory(self, story):
716 return True 717 return True
717 718
718 def TearDownState(self): 719 def TearDownState(self):
719 pass 720 pass
720 721
721 def DumpStateUponFailure(self, story, results): 722 def DumpStateUponFailure(self, story, results):
722 pass 723 pass
723 724
724 class FailingStory(story_module.Story): 725 class FailingStory(story_module.Story):
725 def __init__(self): 726 def __init__(self, name):
726 super(FailingStory, self).__init__( 727 super(FailingStory, self).__init__(
727 shared_state_class=SimpleSharedState, 728 shared_state_class=SimpleSharedState,
728 is_local=True) 729 is_local=True, name=name)
729 self.was_run = False 730 self.was_run = False
730 731
731 def Run(self, shared_state): 732 def Run(self, shared_state):
732 self.was_run = True 733 self.was_run = True
733 raise legacy_page_test.Failure 734 raise legacy_page_test.Failure
734 735
735 @property 736 @property
736 def url(self): 737 def url(self):
737 return 'data:,' 738 return 'data:,'
738 739
739 self.SuppressExceptionFormatting() 740 self.SuppressExceptionFormatting()
740 741
741 story_set = story_module.StorySet() 742 story_set = story_module.StorySet()
742 for _ in range(num_failing_stories): 743 for i in range(num_failing_stories):
743 story_set.AddStory(FailingStory()) 744 story_set.AddStory(FailingStory(name='failing%d' % i))
744 745
745 options = _GetOptionForUnittest() 746 options = _GetOptionForUnittest()
746 options.output_formats = ['none'] 747 options.output_formats = ['none']
747 options.suppress_gtest_report = True 748 options.suppress_gtest_report = True
748 if options_max_failures: 749 if options_max_failures:
749 options.max_failures = options_max_failures 750 options.max_failures = options_max_failures
750 751
751 results = results_options.CreateResults(EmptyMetadataForTest(), options) 752 results = results_options.CreateResults(EmptyMetadataForTest(), options)
752 story_runner.Run( 753 story_runner.Run(
753 DummyTest(), story_set, options, 754 DummyTest(), story_set, options,
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after
988 mock.call.test.WillRunStory(root_mock.state.platform), 989 mock.call.test.WillRunStory(root_mock.state.platform),
989 mock.call.state.WillRunStory(root_mock.story), 990 mock.call.state.WillRunStory(root_mock.story),
990 mock.call.state.CanRunStory(root_mock.story), 991 mock.call.state.CanRunStory(root_mock.story),
991 mock.call.state.RunStory(root_mock.results), 992 mock.call.state.RunStory(root_mock.results),
992 mock.call.test.Measure(root_mock.state.platform, root_mock.results), 993 mock.call.test.Measure(root_mock.state.platform, root_mock.results),
993 mock.call.state.DumpStateUponFailure(root_mock.story, root_mock.results), 994 mock.call.state.DumpStateUponFailure(root_mock.story, root_mock.results),
994 mock.call.results.AddValue(FailureValueMatcher('foo')), 995 mock.call.results.AddValue(FailureValueMatcher('foo')),
995 mock.call.state.DidRunStory(root_mock.results), 996 mock.call.state.DidRunStory(root_mock.results),
996 mock.call.test.DidRunStory(root_mock.state.platform) 997 mock.call.test.DidRunStory(root_mock.state.platform)
997 ]) 998 ])
OLDNEW
« no previous file with comments | « no previous file | telemetry/telemetry/page/page_run_end_to_end_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698