PageRenderTime 34ms CodeModel.GetById 10ms RepoModel.GetById 0ms app.codeStats 0ms

/tools/perf_expectations/update_perf_expectations_unittest.py

https://gitlab.com/jonnialva90/iridium-browser
Python | 204 lines | 156 code | 15 blank | 33 comment | 7 complexity | ea3aedd04ef503abb5ca3bd856c67b4e MD5 | raw file
  1. #!/usr/bin/env python
  2. # Copyright (c) 2013 The Chromium Authors. All rights reserved.
  3. # Use of this source code is governed by a BSD-style license that can be
  4. # found in the LICENSE file.
  5. """Unit tests for update_perf_expectations."""
  6. import copy
  7. from StringIO import StringIO
  8. import unittest
  9. import make_expectations as perf_ex_lib
  10. import update_perf_expectations as upe_mod
  11. # A separate .json file contains the list of test cases we'll use.
  12. # The tests used to be defined inline here, but are >80 characters in length.
  13. # Now they are expected to be defined in file ./sample_test_cases.json.
  14. # Create a dictionary of tests using .json file.
  15. all_tests = perf_ex_lib.ConvertJsonIntoDict(
  16. perf_ex_lib.ReadFile('sample_test_cases.json'))
  17. # Get all keys.
  18. all_tests_keys = all_tests.keys()
  19. def VerifyPreparedTests(self, tests_to_update, reva, revb):
  20. # Work with a copy of the set of tests.
  21. all_tests_copy = copy.deepcopy(all_tests)
  22. upe_mod.PrepareTestsForUpdate(tests_to_update, all_tests_copy, reva, revb)
  23. # Make sure reva < revb
  24. if reva > revb:
  25. temp = reva
  26. reva = revb
  27. revb = temp
  28. # Run through all tests and make sure only those that were
  29. # specified to be modified had their 'sha1' value removed.
  30. for test_key in all_tests_keys:
  31. new_test_value = all_tests_copy[test_key]
  32. original_test_value = all_tests[test_key]
  33. if test_key in tests_to_update:
  34. # Make sure there is no "sha1".
  35. self.assertFalse('sha1' in new_test_value)
  36. # Make sure reva and revb values are correctly set.
  37. self.assertEqual(reva, new_test_value['reva'])
  38. self.assertEqual(revb, new_test_value['revb'])
  39. else:
  40. # Make sure there is an "sha1" value
  41. self.assertTrue('sha1' in new_test_value)
  42. # Make sure the sha1, reva and revb values have not changed.
  43. self.assertEqual(original_test_value['sha1'], new_test_value['sha1'])
  44. self.assertEqual(original_test_value['reva'], new_test_value['reva'])
  45. self.assertEqual(original_test_value['revb'], new_test_value['revb'])
  46. class UpdatePerfExpectationsTest(unittest.TestCase):
  47. def testFilterMatch(self):
  48. """Verifies different regular expressions test filter."""
  49. self.maxDiff = None
  50. # Tests to update specified by a single literal string.
  51. tests_to_update = 'win-release/media_tests_av_perf/fps/tulip2.webm'
  52. expected_tests_list = ['win-release/media_tests_av_perf/fps/tulip2.webm']
  53. self.assertEqual(expected_tests_list,
  54. upe_mod.GetMatchingTests(tests_to_update,
  55. all_tests_keys))
  56. # Tests to update specified by a single reg-ex
  57. tests_to_update = 'win-release/media_tests_av_perf/fps.*'
  58. expected_tests_list = ['win-release/media_tests_av_perf/fps/crowd1080.webm',
  59. 'win-release/media_tests_av_perf/fps/crowd2160.webm',
  60. 'win-release/media_tests_av_perf/fps/crowd360.webm',
  61. 'win-release/media_tests_av_perf/fps/crowd480.webm',
  62. 'win-release/media_tests_av_perf/fps/crowd720.webm',
  63. 'win-release/media_tests_av_perf/fps/tulip2.m4a',
  64. 'win-release/media_tests_av_perf/fps/tulip2.mp3',
  65. 'win-release/media_tests_av_perf/fps/tulip2.mp4',
  66. 'win-release/media_tests_av_perf/fps/tulip2.ogg',
  67. 'win-release/media_tests_av_perf/fps/tulip2.ogv',
  68. 'win-release/media_tests_av_perf/fps/tulip2.wav',
  69. 'win-release/media_tests_av_perf/fps/tulip2.webm']
  70. actual_list = upe_mod.GetMatchingTests(tests_to_update,
  71. all_tests_keys)
  72. actual_list.sort()
  73. self.assertEqual(expected_tests_list, actual_list)
  74. # Tests to update are specified by a single reg-ex, spanning multiple OSes.
  75. tests_to_update = '.*-release/media_tests_av_perf/fps.*'
  76. expected_tests_list = ['linux-release/media_tests_av_perf/fps/tulip2.m4a',
  77. 'linux-release/media_tests_av_perf/fps/tulip2.mp3',
  78. 'linux-release/media_tests_av_perf/fps/tulip2.mp4',
  79. 'linux-release/media_tests_av_perf/fps/tulip2.ogg',
  80. 'linux-release/media_tests_av_perf/fps/tulip2.ogv',
  81. 'linux-release/media_tests_av_perf/fps/tulip2.wav',
  82. 'win-release/media_tests_av_perf/fps/crowd1080.webm',
  83. 'win-release/media_tests_av_perf/fps/crowd2160.webm',
  84. 'win-release/media_tests_av_perf/fps/crowd360.webm',
  85. 'win-release/media_tests_av_perf/fps/crowd480.webm',
  86. 'win-release/media_tests_av_perf/fps/crowd720.webm',
  87. 'win-release/media_tests_av_perf/fps/tulip2.m4a',
  88. 'win-release/media_tests_av_perf/fps/tulip2.mp3',
  89. 'win-release/media_tests_av_perf/fps/tulip2.mp4',
  90. 'win-release/media_tests_av_perf/fps/tulip2.ogg',
  91. 'win-release/media_tests_av_perf/fps/tulip2.ogv',
  92. 'win-release/media_tests_av_perf/fps/tulip2.wav',
  93. 'win-release/media_tests_av_perf/fps/tulip2.webm']
  94. actual_list = upe_mod.GetMatchingTests(tests_to_update,
  95. all_tests_keys)
  96. actual_list.sort()
  97. self.assertEqual(expected_tests_list, actual_list)
  98. def testLinesFromInputFile(self):
  99. """Verifies different string formats specified in input file."""
  100. # Tests to update have been specified by a single literal string in
  101. # an input file.
  102. # Use the StringIO class to mock a file object.
  103. lines_from_file = StringIO(
  104. 'win-release/media_tests_av_perf/fps/tulip2.webm')
  105. contents = lines_from_file.read()
  106. expected_tests_list = ['win-release/media_tests_av_perf/fps/tulip2.webm']
  107. actual_list = upe_mod.GetTestsToUpdate(contents, all_tests_keys)
  108. actual_list.sort()
  109. self.assertEqual(expected_tests_list, actual_list)
  110. lines_from_file.close()
  111. # Tests to update specified by a single reg-ex in an input file.
  112. lines_from_file = StringIO('win-release/media_tests_av_perf/fps/tulip2.*\n')
  113. contents = lines_from_file.read()
  114. expected_tests_list = ['win-release/media_tests_av_perf/fps/tulip2.m4a',
  115. 'win-release/media_tests_av_perf/fps/tulip2.mp3',
  116. 'win-release/media_tests_av_perf/fps/tulip2.mp4',
  117. 'win-release/media_tests_av_perf/fps/tulip2.ogg',
  118. 'win-release/media_tests_av_perf/fps/tulip2.ogv',
  119. 'win-release/media_tests_av_perf/fps/tulip2.wav',
  120. 'win-release/media_tests_av_perf/fps/tulip2.webm']
  121. actual_list = upe_mod.GetTestsToUpdate(contents, all_tests_keys)
  122. actual_list.sort()
  123. self.assertEqual(expected_tests_list, actual_list)
  124. lines_from_file.close()
  125. # Tests to update specified by multiple lines in an input file.
  126. lines_from_file = StringIO(
  127. '.*-release/media_tests_av_perf/fps/tulip2.*\n'
  128. 'win-release/media_tests_av_perf/dropped_fps/tulip2.*\n'
  129. 'linux-release/media_tests_av_perf/audio_latency/latency')
  130. contents = lines_from_file.read()
  131. expected_tests_list = [
  132. 'linux-release/media_tests_av_perf/audio_latency/latency',
  133. 'linux-release/media_tests_av_perf/fps/tulip2.m4a',
  134. 'linux-release/media_tests_av_perf/fps/tulip2.mp3',
  135. 'linux-release/media_tests_av_perf/fps/tulip2.mp4',
  136. 'linux-release/media_tests_av_perf/fps/tulip2.ogg',
  137. 'linux-release/media_tests_av_perf/fps/tulip2.ogv',
  138. 'linux-release/media_tests_av_perf/fps/tulip2.wav',
  139. 'win-release/media_tests_av_perf/dropped_fps/tulip2.wav',
  140. 'win-release/media_tests_av_perf/dropped_fps/tulip2.webm',
  141. 'win-release/media_tests_av_perf/fps/tulip2.m4a',
  142. 'win-release/media_tests_av_perf/fps/tulip2.mp3',
  143. 'win-release/media_tests_av_perf/fps/tulip2.mp4',
  144. 'win-release/media_tests_av_perf/fps/tulip2.ogg',
  145. 'win-release/media_tests_av_perf/fps/tulip2.ogv',
  146. 'win-release/media_tests_av_perf/fps/tulip2.wav',
  147. 'win-release/media_tests_av_perf/fps/tulip2.webm']
  148. actual_list = upe_mod.GetTestsToUpdate(contents, all_tests_keys)
  149. actual_list.sort()
  150. self.assertEqual(expected_tests_list, actual_list)
  151. lines_from_file.close()
  152. def testPreparingForUpdate(self):
  153. """Verifies that tests to be modified are changed as expected."""
  154. tests_to_update = [
  155. 'linux-release/media_tests_av_perf/audio_latency/latency',
  156. 'linux-release/media_tests_av_perf/fps/tulip2.m4a',
  157. 'linux-release/media_tests_av_perf/fps/tulip2.mp3',
  158. 'linux-release/media_tests_av_perf/fps/tulip2.mp4',
  159. 'linux-release/media_tests_av_perf/fps/tulip2.ogg',
  160. 'linux-release/media_tests_av_perf/fps/tulip2.ogv',
  161. 'linux-release/media_tests_av_perf/fps/tulip2.wav',
  162. 'win-release/media_tests_av_perf/dropped_fps/tulip2.wav',
  163. 'win-release/media_tests_av_perf/dropped_fps/tulip2.webm',
  164. 'win-release/media_tests_av_perf/fps/tulip2.mp3',
  165. 'win-release/media_tests_av_perf/fps/tulip2.mp4',
  166. 'win-release/media_tests_av_perf/fps/tulip2.ogg',
  167. 'win-release/media_tests_av_perf/fps/tulip2.ogv',
  168. 'win-release/media_tests_av_perf/fps/tulip2.wav',
  169. 'win-release/media_tests_av_perf/fps/tulip2.webm']
  170. # Test regular positive integers.
  171. reva = 12345
  172. revb = 54321
  173. VerifyPreparedTests(self, tests_to_update, reva, revb)
  174. # Test negative values.
  175. reva = -54321
  176. revb = 12345
  177. with self.assertRaises(ValueError):
  178. upe_mod.PrepareTestsForUpdate(tests_to_update, all_tests, reva, revb)
  179. # Test reva greater than revb.
  180. reva = 54321
  181. revb = 12345
  182. upe_mod.PrepareTestsForUpdate(tests_to_update, all_tests, reva, revb)
  183. # Test non-integer values
  184. reva = 'sds'
  185. revb = 12345
  186. with self.assertRaises(ValueError):
  187. upe_mod.PrepareTestsForUpdate(tests_to_update, all_tests, reva, revb)
  188. if __name__ == '__main__':
  189. unittest.main()