Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 # Copyright 2015 The Chromium Authors. All rights reserved. | 1 # Copyright 2015 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 webapp2 | 5 import webapp2 |
| 6 | 6 |
| 7 from testing_utils import testing | 7 from testing_utils import testing |
| 8 | 8 |
| 9 from handlers import try_job_result | 9 from handlers import try_job_result |
| 10 from model.wf_analysis import WfAnalysis | 10 from model.wf_analysis import WfAnalysis |
| (...skipping 11 matching lines...) Expand all Loading... | |
| 22 self.master_name = 'm' | 22 self.master_name = 'm' |
| 23 self.builder_name = 'b' | 23 self.builder_name = 'b' |
| 24 self.build_number = 121 | 24 self.build_number = 121 |
| 25 self.mock_current_user(user_email='test@chromium.org', is_admin=True) | 25 self.mock_current_user(user_email='test@chromium.org', is_admin=True) |
| 26 | 26 |
| 27 def testGetTryJobResultReturnNoneIfNoFailureResultMap(self): | 27 def testGetTryJobResultReturnNoneIfNoFailureResultMap(self): |
| 28 analysis = WfAnalysis.Create( | 28 analysis = WfAnalysis.Create( |
| 29 self.master_name, self.builder_name, self.build_number) | 29 self.master_name, self.builder_name, self.build_number) |
| 30 analysis.put() | 30 analysis.put() |
| 31 | 31 |
| 32 result = try_job_result._GetTryJobResult( | 32 result = try_job_result._GetAllTryJobResults( |
| 33 self.master_name, self.builder_name, self.build_number) | 33 self.master_name, self.builder_name, self.build_number) |
| 34 | 34 |
| 35 self.assertEqual({}, result) | 35 self.assertEqual({}, result) |
| 36 | |
| 37 def testGetTryJobResultReturnNoneIfNoCompileFailure(self): | |
| 38 analysis = WfAnalysis.Create( | |
| 39 self.master_name, self.builder_name, self.build_number) | |
| 40 analysis.failure_result_map = { | |
| 41 'browser_tests': 'm/b/121' | |
| 42 } | |
| 43 analysis.put() | |
| 44 | |
| 45 result = try_job_result._GetTryJobResult( | |
| 46 self.master_name, self.builder_name, self.build_number) | |
| 47 | |
| 48 self.assertEqual({}, result) | |
| 49 | 36 |
| 50 def testGetTryJobResultReturnNoneIfNoTryJob(self): | 37 def testGetTryJobResultReturnNoneIfNoTryJob(self): |
| 51 analysis = WfAnalysis.Create( | 38 analysis = WfAnalysis.Create( |
| 52 self.master_name, self.builder_name, self.build_number) | 39 self.master_name, self.builder_name, self.build_number) |
| 53 analysis.failure_result_map = { | 40 analysis.failure_result_map = { |
| 54 'compile': 'm/b/121' | 41 'compile': 'm/b/121' |
| 55 } | 42 } |
| 56 analysis.put() | 43 analysis.put() |
| 57 | 44 |
| 58 result = try_job_result._GetTryJobResult( | 45 result = try_job_result._GetAllTryJobResults( |
| 59 self.master_name, self.builder_name, self.build_number) | 46 self.master_name, self.builder_name, self.build_number) |
| 60 | 47 |
| 61 self.assertEqual({}, result) | 48 expected_result = { |
| 49 'compile':{ | |
| 50 'step': 'compile', | |
| 51 'test': 'N/A', | |
| 52 'try_job_key': 'm/b/121' | |
| 53 } | |
| 54 } | |
| 55 | |
| 56 self.assertEqual(expected_result, result) | |
| 62 | 57 |
| 63 | 58 |
| 64 def testGetTryJobResultOnlyReturnStatusIfPending(self): | 59 def testGetTryJobResultOnlyReturnStatusIfPending(self): |
| 65 analysis = WfAnalysis.Create( | 60 analysis = WfAnalysis.Create( |
| 66 self.master_name, self.builder_name, self.build_number) | 61 self.master_name, self.builder_name, self.build_number) |
| 67 analysis.failure_result_map = { | 62 analysis.failure_result_map = { |
| 68 'compile': 'm/b/121' | 63 'compile': 'm/b/121' |
| 69 } | 64 } |
| 70 analysis.put() | 65 analysis.put() |
| 71 | 66 |
| 72 try_job = WfTryJob.Create( | 67 try_job = WfTryJob.Create( |
| 73 self.master_name, self.builder_name, self.build_number) | 68 self.master_name, self.builder_name, self.build_number) |
| 74 try_job.put() | 69 try_job.put() |
| 75 | 70 |
| 76 result = try_job_result._GetTryJobResult( | 71 result = try_job_result._GetAllTryJobResults( |
| 77 self.master_name, self.builder_name, self.build_number) | 72 self.master_name, self.builder_name, self.build_number) |
| 78 | 73 |
| 79 expected_result = { | 74 expected_result = { |
| 80 'status': 'Pending' | 75 'compile':{ |
| 76 'step': 'compile', | |
| 77 'test': 'N/A', | |
| 78 'try_job_key': 'm/b/121', | |
| 79 'status': 'Pending' | |
| 80 } | |
| 81 } | 81 } |
| 82 | 82 |
| 83 self.assertEqual(expected_result, result) | 83 self.assertEqual(expected_result, result) |
| 84 | 84 |
| 85 def testGetTryJobResultOnlyReturnUrlIfStarts(self): | 85 def testGetTryJobResultOnlyReturnUrlIfStarts(self): |
| 86 analysis = WfAnalysis.Create( | 86 analysis = WfAnalysis.Create( |
| 87 self.master_name, self.builder_name, self.build_number) | 87 self.master_name, self.builder_name, self.build_number) |
| 88 analysis.failure_result_map = { | 88 analysis.failure_result_map = { |
| 89 'compile': 'm/b/121' | 89 'compile': 'm/b/121' |
| 90 } | 90 } |
| 91 analysis.put() | 91 analysis.put() |
| 92 | 92 |
| 93 try_job = WfTryJob.Create( | 93 try_job = WfTryJob.Create( |
| 94 self.master_name, self.builder_name, self.build_number) | 94 self.master_name, self.builder_name, self.build_number) |
| 95 try_job.status = wf_analysis_status.ANALYZING | 95 try_job.status = wf_analysis_status.ANALYZING |
| 96 try_job.compile_results = [ | 96 try_job.compile_results = [ |
| 97 { | 97 { |
| 98 'result': None, | 98 'result': None, |
| 99 'url': 'url' | 99 'url': ('http://build.chromium.org/p/tryserver.chromium.linux/' |
| 100 'builders/linux_chromium_variable/builds/121') | |
| 100 } | 101 } |
| 101 ] | 102 ] |
| 102 try_job.put() | 103 try_job.put() |
| 103 | 104 |
| 104 result = try_job_result._GetTryJobResult( | 105 result = try_job_result._GetAllTryJobResults( |
| 105 self.master_name, self.builder_name, self.build_number) | 106 self.master_name, self.builder_name, self.build_number) |
| 106 | 107 |
| 107 expected_result = { | 108 expected_result = { |
| 108 'status': 'Analyzing', | 109 'compile':{ |
| 109 'try_job_url': 'url' | 110 'step': 'compile', |
| 111 'test': 'N/A', | |
| 112 'try_job_key': 'm/b/121', | |
| 113 'status': 'Running', | |
| 114 'try_job_build_number': 121, | |
| 115 'try_job_url': ('http://build.chromium.org/p/tryserver.chromium.' | |
| 116 'linux/builders/linux_chromium_variable/builds/121') | |
| 117 } | |
| 110 } | 118 } |
| 111 | |
| 112 self.assertEqual(expected_result, result) | 119 self.assertEqual(expected_result, result) |
| 113 | 120 |
| 114 def testGetTryJobResultOnlyReturnStatusIfError(self): | 121 def testGetTryJobResultOnlyReturnStatusIfError(self): |
| 115 analysis = WfAnalysis.Create( | 122 analysis = WfAnalysis.Create( |
| 116 self.master_name, self.builder_name, self.build_number) | 123 self.master_name, self.builder_name, self.build_number) |
| 117 analysis.failure_result_map = { | 124 analysis.failure_result_map = { |
| 118 'compile': 'm/b/121' | 125 'compile': 'm/b/121' |
| 119 } | 126 } |
| 120 analysis.put() | 127 analysis.put() |
| 121 | 128 |
| 122 try_job = WfTryJob.Create( | 129 try_job = WfTryJob.Create( |
| 123 self.master_name, self.builder_name, self.build_number) | 130 self.master_name, self.builder_name, self.build_number) |
| 124 try_job.status = wf_analysis_status.ERROR | 131 try_job.status = wf_analysis_status.ERROR |
| 125 try_job.compile_results = [ | 132 try_job.compile_results = [ |
| 126 { | 133 { |
| 127 'try_job_id': '1' | 134 'try_job_id': '1' |
| 128 } | 135 } |
| 129 ] | 136 ] |
| 130 try_job.put() | 137 try_job.put() |
| 131 | 138 |
| 132 result = try_job_result._GetTryJobResult( | 139 result = try_job_result._GetAllTryJobResults( |
| 133 self.master_name, self.builder_name, self.build_number) | 140 self.master_name, self.builder_name, self.build_number) |
| 134 | 141 |
| 135 expected_result = { | 142 expected_result = { |
| 136 'status': 'Error' | 143 'compile':{ |
| 144 'step': 'compile', | |
| 145 'test': 'N/A', | |
| 146 'try_job_key': 'm/b/121', | |
| 147 'status': 'Error' | |
| 148 } | |
| 137 } | 149 } |
| 138 | 150 |
| 139 self.assertEqual(expected_result, result) | 151 self.assertEqual(expected_result, result) |
| 140 | 152 |
| 141 def testGetTryJobResultWhenTryJobCompleted(self): | 153 def testGetTryJobResultWhenTryJobCompleted(self): |
| 142 analysis = WfAnalysis.Create( | 154 analysis = WfAnalysis.Create( |
| 143 self.master_name, self.builder_name, self.build_number) | 155 self.master_name, self.builder_name, self.build_number) |
| 144 analysis.failure_result_map = { | 156 analysis.failure_result_map = { |
| 145 'compile': 'm/b/121' | 157 'compile': 'm/b/121' |
| 146 } | 158 } |
| 147 analysis.put() | 159 analysis.put() |
| 148 | 160 |
| 149 try_job = WfTryJob.Create( | 161 try_job = WfTryJob.Create( |
| 150 self.master_name, self.builder_name, self.build_number) | 162 self.master_name, self.builder_name, self.build_number) |
| 151 try_job.status = wf_analysis_status.ANALYZED | 163 try_job.status = wf_analysis_status.ANALYZED |
| 152 try_job.compile_results = [ | 164 try_job.compile_results = [ |
| 153 { | 165 { |
| 154 'result': [ | 166 'result': [ |
| 155 ['rev1', 'passed'], | 167 ['rev1', 'passed'], |
| 156 ['rev2', 'failed'] | 168 ['rev2', 'failed'] |
| 157 ], | 169 ], |
| 158 'url': 'url', | 170 'url': ('http://build.chromium.org/p/tryserver.chromium.linux/' |
| 171 'builders/linux_chromium_variable/builds/121'), | |
| 159 'try_job_id': '1', | 172 'try_job_id': '1', |
| 160 'culprit': { | 173 'culprit': { |
| 161 'revision': 'rev2', | 174 'compile': { |
| 162 'commit_position': '2', | 175 'revision': 'rev2', |
| 163 'review_url': 'url_2' | 176 'commit_position': '2', |
| 177 'review_url': 'url_2' | |
| 178 } | |
| 164 } | 179 } |
| 165 } | 180 } |
| 166 ] | 181 ] |
| 167 try_job.put() | 182 try_job.put() |
| 168 | 183 |
| 169 result = try_job_result._GetTryJobResult( | 184 result = try_job_result._GetAllTryJobResults( |
| 170 self.master_name, self.builder_name, self.build_number) | 185 self.master_name, self.builder_name, self.build_number) |
| 171 | 186 |
| 172 expected_result = { | 187 expected_result = { |
| 173 'status': 'Analyzed', | 188 'compile':{ |
| 174 'try_job_url': 'url', | 189 'step': 'compile', |
| 175 'revision': 'rev2', | 190 'test': 'N/A', |
| 176 'commit_position': '2', | 191 'try_job_key': 'm/b/121', |
| 177 'review_url': 'url_2' | 192 'try_job_build_number': 121, |
| 193 'status': 'Completed', | |
| 194 'try_job_url': ( | |
| 195 'http://build.chromium.org/p/tryserver.chromium.linux/' | |
| 196 'builders/linux_chromium_variable/builds/121'), | |
| 197 'revision': 'rev2', | |
| 198 'commit_position': '2', | |
| 199 'review_url': 'url_2' | |
| 200 } | |
| 178 } | 201 } |
| 179 | 202 |
| 180 self.assertEqual(expected_result, result) | 203 self.assertEqual(expected_result, result) |
| 181 | 204 |
| 182 def testGetTryJobResultWhenTryJobCompletedAllPassed(self): | 205 def testGetTryJobResultWhenTryJobCompletedAllPassed(self): |
| 183 analysis = WfAnalysis.Create( | 206 analysis = WfAnalysis.Create( |
| 184 self.master_name, self.builder_name, self.build_number) | 207 self.master_name, self.builder_name, self.build_number) |
| 185 analysis.failure_result_map = { | 208 analysis.failure_result_map = { |
| 186 'compile': 'm/b/121' | 209 'compile': 'm/b/121' |
| 187 } | 210 } |
| 188 analysis.put() | 211 analysis.put() |
| 189 | 212 |
| 190 try_job = WfTryJob.Create( | 213 try_job = WfTryJob.Create( |
| 191 self.master_name, self.builder_name, self.build_number) | 214 self.master_name, self.builder_name, self.build_number) |
| 192 try_job.status = wf_analysis_status.ANALYZED | 215 try_job.status = wf_analysis_status.ANALYZED |
| 193 try_job.compile_results = [ | 216 try_job.compile_results = [ |
| 194 { | 217 { |
| 195 'result': [ | 218 'result': [ |
| 196 ['rev1', 'passed'], | 219 ['rev1', 'passed'], |
| 197 ['rev2', 'passed'] | 220 ['rev2', 'passed'] |
| 198 ], | 221 ], |
| 199 'url': 'url' | 222 'url': ('http://build.chromium.org/p/tryserver.chromium.linux/' |
| 223 'builders/linux_chromium_variable/builds/121') | |
| 200 } | 224 } |
| 201 ] | 225 ] |
| 202 try_job.put() | 226 try_job.put() |
| 203 | 227 |
| 204 result = try_job_result._GetTryJobResult( | 228 result = try_job_result._GetAllTryJobResults( |
| 205 self.master_name, self.builder_name, self.build_number) | 229 self.master_name, self.builder_name, self.build_number) |
| 206 | 230 |
| 207 expected_result = { | 231 expected_result = { |
| 208 'status': 'Analyzed', | 232 'compile':{ |
|
stgao
2016/02/02 21:08:32
nit: space ": {".
I guess pylint or gpylint will
chanli
2016/02/02 22:18:12
Done.
| |
| 209 'try_job_url': 'url' | 233 'step': 'compile', |
| 234 'test': 'N/A', | |
| 235 'try_job_key': 'm/b/121', | |
| 236 'try_job_build_number': 121, | |
| 237 'status': 'Completed', | |
| 238 'try_job_url': ( | |
| 239 'http://build.chromium.org/p/tryserver.chromium.linux/' | |
| 240 'builders/linux_chromium_variable/builds/121') | |
| 241 } | |
| 210 } | 242 } |
| 211 | 243 |
| 212 self.assertEqual(expected_result, result) | 244 self.assertEqual(expected_result, result) |
| 213 | 245 |
| 214 def testTryJobResultHandler(self): | 246 def testTryJobResultHandler(self): |
| 215 build_url = buildbot.CreateBuildUrl( | 247 build_url = buildbot.CreateBuildUrl( |
| 216 self.master_name, self.builder_name, self.build_number) | 248 self.master_name, self.builder_name, self.build_number) |
| 217 response = self.test_app.get('/try-job-result', params={'url': build_url}) | 249 response = self.test_app.get('/try-job-result', params={'url': build_url}) |
| 218 expected_results = {} | 250 expected_results = {} |
| 219 | 251 |
| 220 self.assertEqual(200, response.status_int) | 252 self.assertEqual(200, response.status_int) |
| 221 self.assertEqual(expected_results, response.json_body) | 253 self.assertEqual(expected_results, response.json_body) |
| 254 | |
| 255 | |
| 256 def testGetTryJobResultWhenTryJobForTestCompleted(self): | |
| 257 analysis = WfAnalysis.Create( | |
| 258 self.master_name, self.builder_name, self.build_number) | |
| 259 analysis.failure_result_map = { | |
| 260 'a_test': { | |
| 261 'a_test1': 'm/b/121', | |
| 262 'a_test2': 'm/b/121', | |
| 263 'a_test3': 'm/b/120' | |
| 264 }, | |
| 265 'b_test': { | |
| 266 'b_test1': 'm/b/121' | |
| 267 }, | |
| 268 'c_test': 'm/b/121', | |
| 269 'd_test': 'm/b/122' | |
| 270 } | |
| 271 analysis.put() | |
| 272 | |
| 273 try_job_120 = WfTryJob.Create( | |
| 274 self.master_name, self.builder_name, 120) | |
| 275 try_job_120.status = wf_analysis_status.ANALYZED | |
| 276 try_job_120.test_results = [ | |
| 277 { | |
| 278 'result': { | |
| 279 'rev0': { | |
| 280 'a_test': { | |
| 281 'status': 'failed', | |
| 282 'valid': True, | |
| 283 'failures': ['a_test3'] | |
| 284 } | |
| 285 } | |
| 286 }, | |
| 287 'url': ('http://build.chromium.org/p/tryserver.chromium.linux/' | |
| 288 'builders/linux_chromium_variable/builds/120'), | |
| 289 'try_job_id': '0', | |
| 290 'culprit': { | |
| 291 'a_test': { | |
| 292 'tests': { | |
| 293 'a_test3': { | |
| 294 'revision': 'rev0', | |
| 295 'commit_position': '0', | |
| 296 'review_url': 'url_0' | |
| 297 } | |
| 298 } | |
| 299 } | |
| 300 } | |
| 301 } | |
| 302 ] | |
| 303 try_job_120.put() | |
| 304 | |
| 305 try_job_121 = WfTryJob.Create( | |
| 306 self.master_name, self.builder_name, self.build_number) | |
| 307 try_job_121.status = wf_analysis_status.ANALYZED | |
| 308 try_job_121.test_results = [ | |
| 309 { | |
| 310 'result': { | |
| 311 'rev1': { | |
| 312 'a_test': { | |
| 313 'status': 'failed', | |
| 314 'valid': True, | |
| 315 'failures': ['a_test1'] | |
| 316 }, | |
| 317 'b_test': { | |
| 318 'status': 'failed', | |
| 319 'valid': True, | |
| 320 'failures': ['b_test1'] | |
| 321 }, | |
| 322 'c_test': { | |
| 323 'status': 'passed', | |
| 324 'valid': True | |
| 325 } | |
| 326 }, | |
| 327 'rev2': { | |
| 328 'a_test': { | |
| 329 'status': 'failed', | |
| 330 'valid': True, | |
| 331 'failures': ['a_test1', 'a_test2'] | |
| 332 }, | |
| 333 'b_test': { | |
| 334 'status': 'passed', | |
| 335 'valid': True | |
| 336 }, | |
| 337 'c_test': { | |
| 338 'status': 'failed', | |
| 339 'valid': True, | |
| 340 'failures': [] | |
| 341 } | |
| 342 } | |
| 343 }, | |
| 344 'url': ('http://build.chromium.org/p/tryserver.chromium.linux/' | |
| 345 'builders/linux_chromium_variable/builds/121'), | |
| 346 'try_job_id': '1', | |
| 347 'culprit': { | |
| 348 'a_test': { | |
| 349 'tests': { | |
| 350 'a_test1': { | |
| 351 'revision': 'rev1', | |
| 352 'commit_position': '1', | |
| 353 'review_url': 'url_1' | |
| 354 }, | |
| 355 'a_test2': { | |
| 356 'revision': 'rev2', | |
| 357 'commit_position': '2', | |
| 358 'review_url': 'url_2' | |
| 359 } | |
| 360 } | |
| 361 }, | |
| 362 'b_test': { | |
| 363 'tests': { | |
| 364 'b_test1': { | |
| 365 'revision': 'rev1', | |
| 366 'commit_position': '1', | |
| 367 'review_url': 'url_1' | |
| 368 } | |
| 369 } | |
| 370 }, | |
| 371 'c_test': { | |
| 372 'revision': 'rev2', | |
| 373 'commit_position': '2', | |
| 374 'review_url': 'url_2', | |
| 375 'tests': {} | |
| 376 } | |
| 377 } | |
| 378 } | |
| 379 ] | |
| 380 try_job_121.put() | |
| 381 | |
| 382 try_job_122 = WfTryJob.Create( | |
| 383 self.master_name, self.builder_name, 122) | |
| 384 try_job_122.status = wf_analysis_status.ANALYZED | |
| 385 try_job_122.test_results = [ | |
| 386 { | |
| 387 'result': { | |
| 388 'rev3': { | |
| 389 'd_test': { | |
| 390 'status': 'failed', | |
| 391 'valid': True, | |
| 392 'failures': [] | |
| 393 } | |
| 394 } | |
| 395 }, | |
| 396 'url': ('http://build.chromium.org/p/tryserver.chromium.linux/' | |
| 397 'builders/linux_chromium_variable/builds/122'), | |
| 398 'try_job_id': '2', | |
| 399 'culprit': { | |
| 400 'd_test': { | |
| 401 'revision': 'rev3', | |
| 402 'commit_position': '3', | |
| 403 'review_url': 'url_3', | |
| 404 'tests': {} | |
| 405 } | |
| 406 } | |
| 407 } | |
| 408 ] | |
| 409 try_job_122.put() | |
| 410 | |
| 411 result = try_job_result._GetAllTryJobResults( | |
| 412 self.master_name, self.builder_name, self.build_number) | |
| 413 | |
| 414 expected_result = { | |
| 415 'a_test-a_test1':{ | |
| 416 'step': 'a_test', | |
| 417 'test': 'a_test1', | |
| 418 'try_job_key': 'm/b/121', | |
| 419 'try_job_build_number': 121, | |
| 420 'status': 'Completed', | |
| 421 'try_job_url': ( | |
| 422 'http://build.chromium.org/p/tryserver.chromium.linux/' | |
| 423 'builders/linux_chromium_variable/builds/121'), | |
| 424 'revision': 'rev1', | |
| 425 'commit_position': '1', | |
| 426 'review_url': 'url_1' | |
| 427 }, | |
| 428 'a_test-a_test2':{ | |
| 429 'step': 'a_test', | |
| 430 'test': 'a_test2', | |
| 431 'try_job_key': 'm/b/121', | |
| 432 'try_job_build_number': 121, | |
| 433 'status': 'Completed', | |
| 434 'try_job_url': ( | |
| 435 'http://build.chromium.org/p/tryserver.chromium.linux/' | |
| 436 'builders/linux_chromium_variable/builds/121'), | |
| 437 'revision': 'rev2', | |
| 438 'commit_position': '2', | |
| 439 'review_url': 'url_2' | |
| 440 }, | |
| 441 'a_test-a_test3':{ | |
| 442 'step': 'a_test', | |
| 443 'test': 'a_test3', | |
| 444 'try_job_key': 'm/b/120', | |
| 445 'try_job_build_number': 120, | |
| 446 'status': 'Completed', | |
| 447 'try_job_url': ( | |
| 448 'http://build.chromium.org/p/tryserver.chromium.linux/' | |
| 449 'builders/linux_chromium_variable/builds/120'), | |
| 450 'revision': 'rev0', | |
| 451 'commit_position': '0', | |
| 452 'review_url': 'url_0' | |
| 453 }, | |
| 454 'b_test-b_test1':{ | |
| 455 'step': 'b_test', | |
| 456 'test': 'b_test1', | |
| 457 'try_job_key': 'm/b/121', | |
| 458 'try_job_build_number': 121, | |
| 459 'status': 'Completed', | |
| 460 'try_job_url': ( | |
| 461 'http://build.chromium.org/p/tryserver.chromium.linux/' | |
| 462 'builders/linux_chromium_variable/builds/121'), | |
| 463 'revision': 'rev1', | |
| 464 'commit_position': '1', | |
| 465 'review_url': 'url_1' | |
| 466 }, | |
| 467 'c_test':{ | |
| 468 'step': 'c_test', | |
| 469 'test': 'N/A', | |
| 470 'try_job_key': 'm/b/121', | |
| 471 'try_job_build_number': 121, | |
| 472 'status': 'Completed', | |
| 473 'try_job_url': ( | |
| 474 'http://build.chromium.org/p/tryserver.chromium.linux/' | |
| 475 'builders/linux_chromium_variable/builds/121'), | |
| 476 'revision': 'rev2', | |
| 477 'commit_position': '2', | |
| 478 'review_url': 'url_2' | |
| 479 }, | |
| 480 'd_test':{ | |
| 481 'step': 'd_test', | |
| 482 'test': 'N/A', | |
| 483 'try_job_key': 'm/b/122', | |
| 484 'try_job_build_number': 122, | |
| 485 'status': 'Completed', | |
| 486 'try_job_url': ( | |
| 487 'http://build.chromium.org/p/tryserver.chromium.linux/' | |
| 488 'builders/linux_chromium_variable/builds/122'), | |
| 489 'revision': 'rev3', | |
| 490 'commit_position': '3', | |
| 491 'review_url': 'url_3' | |
| 492 } | |
| 493 } | |
| 494 self.assertEqual(expected_result, result) | |
| OLD | NEW |