14a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair# Copyright 2015 The Chromium Authors. All rights reserved. 24a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair# Use of this source code is governed by a BSD-style license that can be 34a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair# found in the LICENSE file. 44a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair 54a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclairimport unittest 64a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair 74a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclairfrom dashboard import buildbucket_job 84a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclairfrom dashboard import testing_common 94a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair 104a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair 114a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclairclass BuildbucketJobTest(testing_common.TestCase): 124a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair 134a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair def setUp(self): 144a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair super(BuildbucketJobTest, self).setUp() 154a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair self._args_base = { 16cef7893435aa41160dd1255c43cb8498279738ccChris Craik 'try_job_id': 1, 1746b43bff003ceda46cf9a5d40a47f7674996d2e0Zhen Wang 'recipe_tester_name': 'linux_perf_bisect', 184a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair 'good_revision': '1', 194a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair 'bad_revision': '2', 204a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair 'test_command': 'tools/perf/dummy_command', 214a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair 'metric': 'dummy_metric', 224a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair 'repeats': '5', 234a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair 'timeout_minutes': '10', 244a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair 'bug_id': None, 254a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair 'gs_bucket': 'dummy_bucket', 264a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair 'builder_host': None, 274a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair 'builder_port': None, 284a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair } 294a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair 304a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair def testCreateJob(self): 314a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair job = buildbucket_job.BisectJob(**self._args_base) 324a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair params = job.GetBuildParameters() 334a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair assert isinstance(params, dict) 344a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair self.assertIn('builder_name', params) 354a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair properties = params['properties'] 364a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair assert isinstance(properties, dict) 374a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair bisect_config = properties['bisect_config'] 384a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair assert isinstance(bisect_config, dict) 394a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair self.assertIn('test_type', bisect_config) 404a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair self.assertIn('command', bisect_config) 414a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair self.assertIn('src', bisect_config['command']) 424a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair self.assertIn('metric', bisect_config) 434a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair self.assertIn('good_revision', bisect_config) 444a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair self.assertIn('bad_revision', bisect_config) 454a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair self.assertIn('repeat_count', bisect_config) 464a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair self.assertIn('max_time_minutes', bisect_config) 474a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair 484a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair def testMissingRequiredArgs(self): 494a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair self._args_base['test_command'] = None 504a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair with self.assertRaises(ValueError): 514a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair job = buildbucket_job.BisectJob(**self._args_base) 524a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair _ = job.GetBuildParameters() 534a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair 544a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclairif __name__ == '__main__': 554a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair unittest.main() 56