| OLD | NEW |
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright 2014 The Chromium Authors. All rights reserved. | 2 # Copyright 2014 The Chromium Authors. All rights reserved. |
| 3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 5 | 5 |
| 6 """Tests for scripts/master/master_gen.py.""" | 6 """Tests for scripts/master/master_gen.py.""" |
| 7 | 7 |
| 8 import os | 8 import os |
| 9 import tempfile | 9 import tempfile |
| 10 import unittest | 10 import unittest |
| (...skipping 11 matching lines...) Expand all Loading... |
| 22 "Test Linux": { | 22 "Test Linux": { |
| 23 "properties": { | 23 "properties": { |
| 24 "config": "Release" | 24 "config": "Release" |
| 25 }, | 25 }, |
| 26 "recipe": "test_recipe", | 26 "recipe": "test_recipe", |
| 27 "slave_pools": ["main"], | 27 "slave_pools": ["main"], |
| 28 "slavebuilddir": "test" | 28 "slavebuilddir": "test" |
| 29 } | 29 } |
| 30 }, | 30 }, |
| 31 "git_repo_url": "https://chromium.googlesource.com/test/test.git", | 31 "git_repo_url": "https://chromium.googlesource.com/test/test.git", |
| 32 "master_base_class": "_FakeMaster", | 32 "master_base_class": "_FakeMasterBase", |
| 33 "master_port": 20999, | 33 "master_port": 20999, |
| 34 "master_port_alt": 40999, | 34 "master_port_alt": 40999, |
| 35 "master_type": "waterfall", | 35 "master_type": "waterfall", |
| 36 "slave_port": 30999, | 36 "slave_port": 30999, |
| 37 "slave_pools": { | 37 "slave_pools": { |
| 38 "main": { | 38 "main": { |
| 39 "slave_data": { | 39 "slave_data": { |
| 40 "bits": 64, | 40 "bits": 64, |
| 41 "os": "linux", | 41 "os": "linux", |
| 42 "version": "precise" | 42 "version": "precise" |
| 43 }, | 43 }, |
| 44 "slaves": ["vm9999-m1"], | 44 "slaves": ["vm9999-m1"], |
| 45 }, | 45 }, |
| 46 }, | 46 }, |
| 47 "templates": ["templates"], | 47 "templates": ["templates"], |
| 48 } | 48 } |
| 49 """ | 49 """ |
| 50 | 50 |
| 51 | 51 |
| 52 class _FakeMaster(object): | 52 # This class fakes the base class from master_site_config.py. |
| 53 class _FakeMasterBase(object): |
| 53 in_production = False | 54 in_production = False |
| 54 is_production_host = False | 55 is_production_host = False |
| 56 |
| 57 |
| 58 # This class fakes the actual master class in master_site_config.py. |
| 59 class _FakeMaster(_FakeMasterBase): |
| 55 project_name = 'test' | 60 project_name = 'test' |
| 56 project_url = 'https://example.com/' | 61 master_port = '20999' |
| 62 slave_port = '30999' |
| 63 master_port_alt = '40999' |
| 64 buildbot_url = 'https://build.chromium.org/p/test' |
| 57 buildbucket_bucket = None | 65 buildbucket_bucket = None |
| 58 | 66 service_account_file = None |
| 59 @classmethod | |
| 60 def GetBotPassword(cls): | |
| 61 return '' | |
| 62 | 67 |
| 63 | 68 |
| 64 class PopulateBuildmasterConfigTest(unittest.TestCase): | 69 class PopulateBuildmasterConfigTest(unittest.TestCase): |
| 65 def test_waterfall(self): | 70 def test_waterfall(self): |
| 66 try: | 71 try: |
| 67 fp = tempfile.NamedTemporaryFile(delete=False) | 72 fp = tempfile.NamedTemporaryFile(delete=False) |
| 68 fp.write(SAMPLE_BUILDERS_PY) | 73 fp.write(SAMPLE_BUILDERS_PY) |
| 69 fp.close() | 74 fp.close() |
| 70 | 75 |
| 71 setattr(_FakeMaster, '_FakeMaster', _FakeMaster) | |
| 72 c = {} | 76 c = {} |
| 73 master_gen.PopulateBuildmasterConfig(c, fp.name, _FakeMaster) | 77 master_gen.PopulateBuildmasterConfig(c, fp.name, _FakeMaster) |
| 74 | 78 |
| 75 self.assertEqual(len(c['builders']), 1) | 79 self.assertEqual(len(c['builders']), 1) |
| 76 self.assertEqual(c['builders'][0]['name'], 'Test Linux') | 80 self.assertEqual(c['builders'][0]['name'], 'Test Linux') |
| 77 | 81 |
| 78 self.assertEqual(len(c['change_source']), 1) | 82 self.assertEqual(len(c['change_source']), 1) |
| 79 self.assertEqual(len(c['schedulers']), 1) | 83 self.assertEqual(len(c['schedulers']), 1) |
| 80 finally: | 84 finally: |
| 81 os.remove(fp.name) | 85 os.remove(fp.name) |
| 82 | 86 |
| 83 def test_tryserver(self): | 87 def test_tryserver(self): |
| 84 try: | 88 try: |
| 85 contents = SAMPLE_BUILDERS_PY.replace('waterfall', 'tryserver') | 89 contents = SAMPLE_BUILDERS_PY.replace('waterfall', 'tryserver') |
| 86 fp = tempfile.NamedTemporaryFile(delete=False) | 90 fp = tempfile.NamedTemporaryFile(delete=False) |
| 87 fp.write(contents) | 91 fp.write(contents) |
| 88 fp.close() | 92 fp.close() |
| 89 | 93 |
| 90 setattr(_FakeMaster, '_FakeMaster', _FakeMaster) | |
| 91 c = {} | 94 c = {} |
| 92 master_gen.PopulateBuildmasterConfig(c, fp.name, _FakeMaster) | 95 master_gen.PopulateBuildmasterConfig(c, fp.name, _FakeMaster) |
| 93 | 96 |
| 94 self.assertEqual(len(c['builders']), 1) | 97 self.assertEqual(len(c['builders']), 1) |
| 95 self.assertEqual(c['builders'][0]['name'], 'Test Linux') | 98 self.assertEqual(c['builders'][0]['name'], 'Test Linux') |
| 96 | 99 |
| 97 self.assertEqual(len(c['change_source']), 0) | 100 self.assertEqual(len(c['change_source']), 0) |
| 98 self.assertEqual(len(c['schedulers']), 1) | 101 self.assertEqual(len(c['schedulers']), 1) |
| 99 finally: | 102 finally: |
| 100 os.remove(fp.name) | 103 os.remove(fp.name) |
| 101 | 104 |
| 102 | 105 |
| 103 | 106 |
| 104 if __name__ == '__main__': | 107 if __name__ == '__main__': |
| 105 unittest.TestCase.maxDiff = None | 108 unittest.TestCase.maxDiff = None |
| 106 unittest.main() | 109 unittest.main() |
| OLD | NEW |