Chromium Code Reviews| Index: scripts/slave/unittests/gatekeeper_ng_test.py |
| diff --git a/scripts/slave/unittests/gatekeeper_ng_test.py b/scripts/slave/unittests/gatekeeper_ng_test.py |
| index bcd9a42f939087ac171d42b38697d69f69135b34..a1b312c19f628fb4c8ee98e56a8ec0dd51f93b08 100755 |
| --- a/scripts/slave/unittests/gatekeeper_ng_test.py |
| +++ b/scripts/slave/unittests/gatekeeper_ng_test.py |
| @@ -232,6 +232,7 @@ class GatekeeperTest(unittest.TestCase): |
| def call_gatekeeper(self): |
| """Sets up handlers for all the json and actually calls gatekeeper.""" |
| + self.url_calls = [] |
| self.handle_build_tree(self.masters) |
| ret = gatekeeper_ng.main() |
| if ret != 0: |
| @@ -357,6 +358,7 @@ class GatekeeperTest(unittest.TestCase): |
| sys.argv.extend([m.url for m in self.masters]) |
| sys.argv.extend(['--skip-build-db-update', |
| '--json', self.gatekeeper_file, |
| + '--process-finished-builds-on-new-builder', |
|
iannucci
2014/02/20 03:30:55
nope
ghost stip (do not use)
2014/02/22 10:03:07
Done.
|
| '--email-app-secret-file=%s' % self.email_secret_file]) |
| @@ -370,6 +372,7 @@ class GatekeeperTest(unittest.TestCase): |
| sys.argv.extend([m.url for m in self.masters]) |
| sys.argv.extend(['--skip-build-db-update', |
| '--json', self.gatekeeper_file, |
| + '--process-finished-builds-on-new-builder', |
| '--email-app-secret-file=%s' % self.email_secret_file]) |
| self.masters[0].builders[0].builds[0].results = 3 |
| @@ -395,6 +398,7 @@ class GatekeeperTest(unittest.TestCase): |
| sys.argv.extend([m.url for m in self.masters]) |
| sys.argv.extend(['--skip-build-db-update', |
| '--json', self.gatekeeper_file, |
| + '--process-finished-builds-on-new-builder', |
| '--email-app-secret-file=%s' % self.email_secret_file]) |
| @@ -417,6 +421,7 @@ class GatekeeperTest(unittest.TestCase): |
| sys.argv.extend([m.url for m in self.masters]) |
| sys.argv.extend(['--skip-build-db-update', |
| '--json', self.gatekeeper_file, |
| + '--process-finished-builds-on-new-builder', |
| '--email-app-secret-file=%s' % self.email_secret_file]) |
| self.masters[0].builders[0].builds[0].steps[2].results = [2, None] |
| @@ -432,6 +437,7 @@ class GatekeeperTest(unittest.TestCase): |
| sys.argv.extend([m.url for m in self.masters]) |
| sys.argv.extend(['--skip-build-db-update', |
| '--json', self.gatekeeper_file, |
| + '--process-finished-builds-on-new-builder', |
| '--email-app-secret-file=%s' % self.email_secret_file]) |
| self.masters[0].builders[0].builds[0].steps[1].results = [2, None] |
| @@ -452,6 +458,7 @@ class GatekeeperTest(unittest.TestCase): |
| sys.argv.extend([m.url for m in self.masters]) |
| sys.argv.extend(['--skip-build-db-update', |
| '--json', self.gatekeeper_file, |
| + '--process-finished-builds-on-new-builder', |
| '--email-app-secret-file=%s' % self.email_secret_file]) |
| self.masters[0].builders[0].builds[0].steps[1].results = [2, None] |
| @@ -472,6 +479,7 @@ class GatekeeperTest(unittest.TestCase): |
| sys.argv.extend([m.url for m in self.masters]) |
| sys.argv.extend(['--skip-build-db-update', |
| '--json', self.gatekeeper_file, |
| + '--process-finished-builds-on-new-builder', |
| '--email-app-secret-file=%s' % self.email_secret_file]) |
| self.masters[0].builders[0].builds[0].steps[1].results = [2, None] |
| @@ -492,6 +500,7 @@ class GatekeeperTest(unittest.TestCase): |
| sys.argv.extend([m.url for m in self.masters]) |
| sys.argv.extend(['--skip-build-db-update', |
| '--json', self.gatekeeper_file, |
| + '--process-finished-builds-on-new-builder', |
| '--email-app-secret-file=%s' % self.email_secret_file]) |
| self.add_gatekeeper_section(self.masters[0].url, |
| @@ -510,6 +519,7 @@ class GatekeeperTest(unittest.TestCase): |
| sys.argv.extend([m.url for m in self.masters]) |
| sys.argv.extend(['--skip-build-db-update', |
| '--json', self.gatekeeper_file, |
| + '--process-finished-builds-on-new-builder', |
| '--email-app-secret-file=%s' % self.email_secret_file]) |
| self.add_gatekeeper_section(self.masters[0].url, |
| @@ -526,6 +536,7 @@ class GatekeeperTest(unittest.TestCase): |
| sys.argv.extend([m.url for m in self.masters]) |
| sys.argv.extend(['--skip-build-db-update', |
| '--json', self.gatekeeper_file, |
| + '--process-finished-builds-on-new-builder', |
| '--email-app-secret-file=%s' % self.email_secret_file]) |
| self.add_gatekeeper_section(self.masters[0].url, |
| @@ -543,6 +554,7 @@ class GatekeeperTest(unittest.TestCase): |
| sys.argv.extend([m.url for m in self.masters]) |
| sys.argv.extend(['--skip-build-db-update', |
| '--json', self.gatekeeper_file, |
| + '--process-finished-builds-on-new-builder', |
| '--email-app-secret-file=%s' % self.email_secret_file]) |
| self.add_gatekeeper_section(self.masters[0].url, |
| @@ -565,6 +577,7 @@ class GatekeeperTest(unittest.TestCase): |
| sys.argv.extend([m.url for m in self.masters]) |
| sys.argv.extend(['--skip-build-db-update', |
| '--json', self.gatekeeper_file, |
| + '--process-finished-builds-on-new-builder', |
| '--email-app-secret-file=%s' % self.email_secret_file]) |
| self.add_gatekeeper_section(self.masters[0].url, |
| @@ -589,6 +602,7 @@ class GatekeeperTest(unittest.TestCase): |
| sys.argv.extend(['--skip-build-db-update', |
| '--no-email-app', '--set-status', |
| '--json', self.gatekeeper_file, |
| + '--process-finished-builds-on-new-builder', |
| '--password-file', self.status_secret_file]) |
| self.masters[0].builders[0].builds[0].steps[1].results = [2, None] |
| @@ -605,6 +619,7 @@ class GatekeeperTest(unittest.TestCase): |
| sys.argv.extend(['--skip-build-db-update', |
| '--no-email-app', '--set-status', |
| '--json', self.gatekeeper_file, |
| + '--process-finished-builds-on-new-builder', |
| '--password-file', self.status_secret_file]) |
| self.masters[0].builders[0].builds[0].steps[1].results = [2, None] |
| @@ -622,6 +637,7 @@ class GatekeeperTest(unittest.TestCase): |
| sys.argv.extend([m.url for m in self.masters]) |
| sys.argv.extend(['--skip-build-db-update', |
| '--json', self.gatekeeper_file, |
| + '--process-finished-builds-on-new-builder', |
| '--email-app-secret-file=%s' % self.email_secret_file]) |
| self.add_gatekeeper_section(self.masters[0].url, |
| @@ -643,6 +659,7 @@ class GatekeeperTest(unittest.TestCase): |
| sys.argv.extend([m.url for m in self.masters]) |
| sys.argv.extend(['--skip-build-db-update', |
| '--json', self.gatekeeper_file, |
| + '--process-finished-builds-on-new-builder', |
| '--email-app-secret-file=%s' % self.email_secret_file]) |
| subject_template = 'build %(result)s, oh no!' |
| @@ -701,7 +718,13 @@ class GatekeeperTest(unittest.TestCase): |
| def testIncrementalScanning(self): |
| """Test that builds in the build DB are skipped.""" |
| fd, dbfilename = tempfile.mkstemp() |
| - build_db = {self.masters[0].url: { 'mybuilder': 1 }} |
| + build_db = {'build_db_version': gatekeeper_ng.BUILD_DB_VERSION, |
| + 'sections': {}, |
| + 'masters': { |
| + self.masters[0].url: { 'mybuilder': [{'build': 1, |
| + 'finished': True}] } |
| + } |
| + } |
| os.write(fd, json.dumps(build_db)) |
| os.close(fd) |
| @@ -730,9 +753,16 @@ class GatekeeperTest(unittest.TestCase): |
| self.call_gatekeeper() |
| with open(dbfilename) as f: |
| new_build_db = json.load(f) |
| - self.assertEquals(new_build_db, {self.masters[0].url: {'mybuilder': 2}}) |
| + finished_new_builds = [ |
| + b for b in new_build_db['masters'][self.masters[0].url]['mybuilder'] if |
| + b.get('finished')] |
| + self.assertEquals(finished_new_builds, |
| + [{'build': 2, |
| + 'finished': True, |
| + 'triggered': ['2be9f9320c2d26b09e416d615ff047' |
| + '86abc74794bd5b669a1bb4228f884ddf50']}]) |
| - #check that gatekeeper indeed sent an email. |
| + # Check that gatekeeper indeed sent an email. |
| self.assertEquals(self.url_calls[-1]['url'], self.mailer_url) |
| mailer_data = GatekeeperTest.decode_param_json( |
| self.url_calls[-1]['params']) |
| @@ -749,6 +779,7 @@ class GatekeeperTest(unittest.TestCase): |
| sys.argv.extend([m.url for m in self.masters]) |
| sys.argv.extend(['--skip-build-db-update', |
| '--json', self.gatekeeper_file, |
| + '--process-finished-builds-on-new-builder', |
| '--email-app-secret-file=%s' % self.email_secret_file]) |
| self.masters[0].builders[0].builds[0].steps[1].results = [2, None] |
| @@ -781,6 +812,7 @@ class GatekeeperTest(unittest.TestCase): |
| sys.argv.extend([m.url for m in self.masters]) |
| sys.argv.extend(['--skip-build-db-update', |
| '--json', self.gatekeeper_file, |
| + '--process-finished-builds-on-new-builder', |
| '--email-app-secret-file=%s' % self.email_secret_file]) |
| self.masters[0].builders[0].builds[0].blame = [] |
| @@ -807,6 +839,7 @@ class GatekeeperTest(unittest.TestCase): |
| sys.argv.extend([m.url for m in self.masters]) |
| sys.argv.extend(['--skip-build-db-update', |
| '--json', self.gatekeeper_file, |
| + '--process-finished-builds-on-new-builder', |
| '--email-app-secret-file=%s' % self.email_secret_file]) |
| self.masters[0].builders[0].builds[0].steps[1].results = [2, None] |
| @@ -832,6 +865,7 @@ class GatekeeperTest(unittest.TestCase): |
| sys.argv.extend([m.url for m in self.masters]) |
| sys.argv.extend(['--skip-build-db-update', |
| '--json', self.gatekeeper_file, |
| + '--process-finished-builds-on-new-builder', |
| '--email-app-secret-file=%s' % self.email_secret_file]) |
| self.masters[0].builders[0].builds[0].steps[1].results = [2, None] |
| self.add_gatekeeper_section(self.masters[0].url, |
| @@ -869,6 +903,7 @@ class GatekeeperTest(unittest.TestCase): |
| sys.argv.extend([m.url for m in self.masters]) |
| sys.argv.extend(['--skip-build-db-update', |
| '--json', self.gatekeeper_file, |
| + '--process-finished-builds-on-new-builder', |
| '--email-app-secret-file=%s' % self.email_secret_file]) |
| self.masters[0].builders[0].builds[0].steps[1].results = [2, None] |
| @@ -897,6 +932,7 @@ class GatekeeperTest(unittest.TestCase): |
| sys.argv.extend([m.url for m in self.masters]) |
| sys.argv.extend(['--skip-build-db-update', |
| '--json', self.gatekeeper_file, |
| + '--process-finished-builds-on-new-builder', |
| '--email-app-secret-file=%s' % self.email_secret_file]) |
| self.masters[0].builders[0].builds[0].blame = [] |
| @@ -920,6 +956,7 @@ class GatekeeperTest(unittest.TestCase): |
| sys.argv.extend([m.url for m in self.masters]) |
| sys.argv.extend(['--skip-build-db-update', |
| '--json', self.gatekeeper_file, |
| + '--process-finished-builds-on-new-builder', |
| '--email-app-secret-file=%s' % self.email_secret_file, |
| '--set-status', '--password-file', self.status_secret_file |
| ]) |
| @@ -938,6 +975,7 @@ class GatekeeperTest(unittest.TestCase): |
| sys.argv.extend([m.url for m in self.masters]) |
| sys.argv.extend(['--skip-build-db-update', |
| '--json', self.gatekeeper_file, |
| + '--process-finished-builds-on-new-builder', |
| '--email-app-secret-file=%s' % self.email_secret_file, |
| '--set-status', '--password-file', self.status_secret_file |
| ]) |
| @@ -956,6 +994,7 @@ class GatekeeperTest(unittest.TestCase): |
| sys.argv.extend([m.url for m in self.masters]) |
| sys.argv.extend(['--skip-build-db-update', |
| '--json', self.gatekeeper_file, |
| + '--process-finished-builds-on-new-builder', |
| '--email-app-secret-file=%s' % self.email_secret_file, |
| '--set-status', '--password-file', self.status_secret_file |
| ]) |
| @@ -974,6 +1013,7 @@ class GatekeeperTest(unittest.TestCase): |
| sys.argv.extend([m.url for m in self.masters]) |
| sys.argv.extend(['--skip-build-db-update', |
| '--json', self.gatekeeper_file, |
| + '--process-finished-builds-on-new-builder', |
| '--email-app-secret-file=%s' % self.email_secret_file, |
| '--set-status', '--password-file', self.status_secret_file |
| ]) |
| @@ -993,6 +1033,7 @@ class GatekeeperTest(unittest.TestCase): |
| sys.argv.extend([m.url for m in self.masters]) |
| sys.argv.extend(['--skip-build-db-update', |
| '--json', self.gatekeeper_file, |
| + '--process-finished-builds-on-new-builder', |
| '--email-app-secret-file=%s' % self.email_secret_file, |
| '--set-status', '--password-file', self.status_secret_file |
| ]) |
| @@ -1014,6 +1055,7 @@ class GatekeeperTest(unittest.TestCase): |
| sys.argv.extend([m.url for m in self.masters]) |
| sys.argv.extend(['--skip-build-db-update', |
| '--json', self.gatekeeper_file, |
| + '--process-finished-builds-on-new-builder', |
| '--email-app-secret-file=%s' % self.email_secret_file, |
| '--set-status', '--password-file', self.status_secret_file |
| ]) |
| @@ -1047,6 +1089,7 @@ class GatekeeperTest(unittest.TestCase): |
| sys.argv.extend([m.url for m in self.masters]) |
| sys.argv.extend(['--skip-build-db-update', |
| '--json', self.gatekeeper_file, |
| + '--process-finished-builds-on-new-builder', |
| '--email-app-secret-file=%s' % self.email_secret_file, |
| '--set-status', '--password-file', self.status_secret_file |
| ]) |
| @@ -1076,6 +1119,7 @@ class GatekeeperTest(unittest.TestCase): |
| sys.argv.extend([m.url for m in self.masters]) |
| sys.argv.extend(['--skip-build-db-update', |
| '--json', self.gatekeeper_file, |
| + '--process-finished-builds-on-new-builder', |
| '--email-app-secret-file=%s' % self.email_secret_file]) |
| self.add_gatekeeper_section(self.masters[0].url, |
| @@ -1094,6 +1138,7 @@ class GatekeeperTest(unittest.TestCase): |
| sys.argv.extend([m.url for m in self.masters]) |
| sys.argv.extend(['--skip-build-db-update', |
| '--json', self.gatekeeper_file, |
| + '--process-finished-builds-on-new-builder', |
| '--email-app-secret-file=%s' % self.email_secret_file]) |
| # step3 won't fail the build. |
| @@ -1119,6 +1164,7 @@ class GatekeeperTest(unittest.TestCase): |
| sys.argv.extend([m.url for m in self.masters]) |
| sys.argv.extend(['--skip-build-db-update', |
| '--json', self.gatekeeper_file, |
| + '--process-finished-builds-on-new-builder', |
| '--email-app-secret-file=%s' % self.email_secret_file]) |
| # step4 will fail the build. |
| @@ -1141,6 +1187,7 @@ class GatekeeperTest(unittest.TestCase): |
| sys.argv.extend([m.url for m in self.masters]) |
| sys.argv.extend(['--skip-build-db-update', |
| '--json', self.gatekeeper_file, |
| + '--process-finished-builds-on-new-builder', |
| '--email-app-secret-file=%s' % self.email_secret_file, |
| '--set-status', '--password-file', self.status_secret_file |
| ]) |
| @@ -1175,6 +1222,7 @@ class GatekeeperTest(unittest.TestCase): |
| sys.argv.extend([master_url, |
| '--skip-build-db-update', |
| '--json', self.gatekeeper_file, |
| + '--process-finished-builds-on-new-builder', |
| '--email-app-secret-file=%s' % self.email_secret_file, |
| '--set-status', '--password-file', self.status_secret_file |
| ]) |
| @@ -1215,6 +1263,7 @@ class GatekeeperTest(unittest.TestCase): |
| sys.argv.extend([m.url for m in self.masters]) |
| sys.argv.extend(['--skip-build-db-update', |
| '--json', self.gatekeeper_file, |
| + '--process-finished-builds-on-new-builder', |
| '--email-app-secret-file=%s' % self.email_secret_file, |
| '--set-status', '--password-file', self.status_secret_file |
| ]) |
| @@ -1252,6 +1301,7 @@ class GatekeeperTest(unittest.TestCase): |
| sys.argv.extend([m.url for m in self.masters]) |
| sys.argv.extend(['--skip-build-db-update', |
| '--json', self.gatekeeper_file, |
| + '--process-finished-builds-on-new-builder', |
| '--no-email-app', '--set-status', |
| '--password-file', self.status_secret_file]) |
| @@ -1272,6 +1322,7 @@ class GatekeeperTest(unittest.TestCase): |
| sys.argv.extend([m.url for m in self.masters]) |
| sys.argv.extend(['--skip-build-db-update', |
| '--json', self.gatekeeper_file, |
| + '--process-finished-builds-on-new-builder', |
| '--no-email-app', '--set-status', |
| '--password-file', self.status_secret_file]) |
| @@ -1289,7 +1340,13 @@ class GatekeeperTest(unittest.TestCase): |
| def testUpdateBuildDBNotCompletedButFailed(self): |
| """Test that partial builds increment the DB if they failed.""" |
| fd, dbfilename = tempfile.mkstemp() |
| - build_db = {self.masters[0].url: { 'mybuilder': 1 }} |
| + build_db = {'build_db_version': gatekeeper_ng.BUILD_DB_VERSION, |
| + 'sections': {}, |
| + 'masters': { |
| + self.masters[0].url: { 'mybuilder': [{'build': 1, |
| + 'finished': True}] } |
| + } |
| + } |
| os.write(fd, json.dumps(build_db)) |
| os.close(fd) |
| @@ -1316,13 +1373,31 @@ class GatekeeperTest(unittest.TestCase): |
| urls = self.call_gatekeeper() |
| with open(dbfilename) as f: |
| new_build_db = json.load(f) |
| - self.assertEquals(new_build_db, {self.masters[0].url: {'mybuilder': 2}}) |
| + finished_new_builds = [ |
| + b for b in new_build_db['masters'][self.masters[0].url]['mybuilder'] if |
| + b.get('finished')] |
| + self.assertEquals(finished_new_builds, |
| + [{'build': 1, 'finished': True}]) |
| + unfinished_new_builds = [ |
| + b for b in new_build_db['masters'][self.masters[0].url]['mybuilder'] |
| + if not b.get('finished')] |
| + self.assertEquals(unfinished_new_builds, |
| + [{'build': 2, 'triggered': [ |
| + '2be9f9320c2d26b09e416d615' |
| + 'ff04786abc74794bd5b669a1bb4228f884ddf50']}]) |
| + |
| self.assertIn(self.status_url, urls) |
| def testDontUpdateBuildDBIfNotCompleted(self): |
| - """Test that partial builds don't increment the DB if still running.""" |
| + """Test that partial builds aren't marked as finished.""" |
| fd, dbfilename = tempfile.mkstemp() |
| - build_db = {self.masters[0].url: { 'mybuilder': 1 }} |
| + build_db = {'build_db_version': gatekeeper_ng.BUILD_DB_VERSION, |
| + 'sections': {}, |
| + 'masters': { |
| + self.masters[0].url: { 'mybuilder': [{'build': 1, |
| + 'finished': True}] } |
| + } |
| + } |
| os.write(fd, json.dumps(build_db)) |
| os.close(fd) |
| @@ -1348,9 +1423,128 @@ class GatekeeperTest(unittest.TestCase): |
| urls = self.call_gatekeeper() |
| with open(dbfilename) as f: |
| new_build_db = json.load(f) |
| - self.assertEquals(new_build_db, {self.masters[0].url: {'mybuilder': 1}}) |
| + finished_new_builds = [ |
| + b for b in new_build_db['masters'][self.masters[0].url]['mybuilder'] if |
| + b.get('finished')] |
| + self.assertEquals(finished_new_builds, |
| + [{'build': 1, 'finished': True}]) |
| + unfinished_new_builds = [ |
| + b for b in new_build_db['masters'][self.masters[0].url]['mybuilder'] |
| + if not b.get('finished')] |
| + self.assertEquals(unfinished_new_builds, |
| + [{'build': 2}]) |
| self.assertNotIn(self.status_url, urls) |
| + def testTriggeringDoesntTriggerOnSameBuild(self): |
| + """Test that a section won't fire twice on a build.""" |
| + fd, dbfilename = tempfile.mkstemp() |
| + build_db = {'build_db_version': gatekeeper_ng.BUILD_DB_VERSION, |
| + 'sections': {}, |
| + 'masters': { |
| + self.masters[0].url: { |
| + 'mybuilder': [], |
| + }, |
| + }, |
| + } |
| + os.write(fd, json.dumps(build_db)) |
| + os.close(fd) |
| + |
| + sys.argv.extend([m.url for m in self.masters]) |
| + sys.argv.extend(['--build-db=%s' % dbfilename, |
| + '--json', self.gatekeeper_file, |
| + '--no-email-app', '--set-status', |
| + '--password-file', self.status_secret_file]) |
| + |
| + self.masters[0].builders[0].builds[0].steps[1].results = [2, None] |
| + self.masters[0].builders[0].builds[0].finished = False |
| + self.add_gatekeeper_section(self.masters[0].url, |
| + self.masters[0].builders[0].name, |
| + {'closing_steps': ['step1']}) |
| + |
| + @contextlib.contextmanager |
| + def delfile(filename): |
| + yield |
| + os.unlink(filename) |
| + |
| + with delfile(dbfilename): |
| + urls = self.call_gatekeeper() |
| + urls += self.call_gatekeeper() |
| + with open(dbfilename) as f: |
| + new_build_db = json.load(f) |
| + print new_build_db |
| + finished_new_builds = [ |
| + b for b in new_build_db['masters'][self.masters[0].url]['mybuilder'] if |
| + b.get('finished')] |
| + self.assertEquals(finished_new_builds, []) |
| + unfinished_new_builds = [ |
| + b for b in new_build_db['masters'][self.masters[0].url]['mybuilder'] |
| + if not b.get('finished')] |
| + self.assertEquals(unfinished_new_builds, |
| + [{'build': 1, |
| + 'triggered': ['2be9f9320c2d26b09e416d615ff047' |
| + '86abc74794bd5b669a1bb4228f884ddf50']}]) |
| + self.assertEquals(1, len([u for u in urls if u == self.status_url])) |
| + |
| + def testTriggeringOneHashDoesntStopAnother(self): |
| + """Test that firing on one hash doesn't prevent another hash triggering.""" |
| + fd, dbfilename = tempfile.mkstemp() |
| + build_db = {'build_db_version': gatekeeper_ng.BUILD_DB_VERSION, |
| + 'sections': {}, |
| + 'masters': { |
| + self.masters[0].url: { 'mybuilder': [{'build': 1, |
| + 'finished': True}] } |
| + } |
| + } |
| + os.write(fd, json.dumps(build_db)) |
| + os.close(fd) |
| + |
| + sys.argv.extend([m.url for m in self.masters]) |
| + sys.argv.extend(['--build-db=%s' % dbfilename, |
| + '--json', self.gatekeeper_file, |
| + '--no-email-app', '--set-status', |
| + '--password-file', self.status_secret_file]) |
| + |
| + mybuild = self.create_generic_build(2, ['a_second_committer@chromium.org']) |
| + mybuild.finished = False |
| + self.masters[0].builders[0].builds.append(mybuild) |
| + self.masters[0].builders[0].builds[1].steps[1].results = [2, None] |
| + self.add_gatekeeper_section(self.masters[0].url, |
| + self.masters[0].builders[0].name, |
| + {'closing_steps': ['step1']}) |
| + |
| + @contextlib.contextmanager |
| + def delfile(filename): |
| + yield |
| + os.unlink(filename) |
| + |
| + with delfile(dbfilename): |
| + urls = self.call_gatekeeper() |
| + self.add_gatekeeper_section(self.masters[0].url, |
| + self.masters[0].builders[0].name, |
| + {'closing_steps': ['step2']}) |
| + self.masters[0].builders[0].builds[1].steps[2].results = [2, None] |
| + print 'nerdup', urls |
| + urls += self.call_gatekeeper() |
| + print 'nerdup kwarg', urls |
| + with open(dbfilename) as f: |
| + new_build_db = json.load(f) |
| + finished_new_builds = [ |
| + b for b in new_build_db['masters'][self.masters[0].url]['mybuilder'] if |
| + b.get('finished')] |
| + self.assertEquals(finished_new_builds, |
| + [{'build': 1, 'finished': True}]) |
| + unfinished_new_builds = [ |
| + b for b in new_build_db['masters'][self.masters[0].url]['mybuilder'] |
| + if not b.get('finished')] |
| + self.assertEquals(unfinished_new_builds, |
| + [{'build': 2, |
| + 'triggered': ['2be9f9320c2d26b09e416d615ff04786ab' |
| + 'c74794bd5b669a1bb4228f884ddf50', |
| + |
| + 'ac0bb2a7245af2aa43c257a3c4eda19dee' |
| + 'a4137bc1bce6a8b307047fd6149e32']}]) |
| + self.assertEquals(2, len([u for u in urls if u == self.status_url])) |
| + |
| ### JSON config file tests. |
| def testInheritFromCategory(self): |
| @@ -1358,6 +1552,7 @@ class GatekeeperTest(unittest.TestCase): |
| sys.argv.extend([m.url for m in self.masters]) |
| sys.argv.extend(['--skip-build-db-update', |
| '--json', self.gatekeeper_file, |
| + '--process-finished-builds-on-new-builder', |
| '--email-app-secret-file=%s' % self.email_secret_file]) |
| self.masters[0].builders[0].builds[0].steps[1].results = [2, None] |
| @@ -1379,6 +1574,7 @@ class GatekeeperTest(unittest.TestCase): |
| sys.argv.extend([m.url for m in self.masters]) |
| sys.argv.extend(['--skip-build-db-update', |
| '--json', self.gatekeeper_file, |
| + '--process-finished-builds-on-new-builder', |
| '--email-app-secret-file=%s' % self.email_secret_file]) |
| self.masters[0].builders[0].builds[0].steps[2].results = [2, None] |
| @@ -1401,6 +1597,7 @@ class GatekeeperTest(unittest.TestCase): |
| sys.argv.extend([m.url for m in self.masters]) |
| sys.argv.extend(['--skip-build-db-update', |
| '--json', self.gatekeeper_file, |
| + '--process-finished-builds-on-new-builder', |
| '--email-app-secret-file=%s' % self.email_secret_file]) |
| self.masters[0].builders[0].builds[0].steps[1].results = [2, None] |
| @@ -1423,6 +1620,7 @@ class GatekeeperTest(unittest.TestCase): |
| sys.argv.extend([m.url for m in self.masters]) |
| sys.argv.extend(['--skip-build-db-update', |
| '--json', self.gatekeeper_file, |
| + '--process-finished-builds-on-new-builder', |
| '--email-app-secret-file=%s' % self.email_secret_file]) |
| self.masters[0].builders[0].builds[0].steps[1].results = [2, None] |
| @@ -1456,6 +1654,7 @@ class GatekeeperTest(unittest.TestCase): |
| sys.argv.extend([m.url for m in self.masters]) |
| sys.argv.extend(['--skip-build-db-update', |
| '--json', self.gatekeeper_file, |
| + '--process-finished-builds-on-new-builder', |
| '--email-app-secret-file=%s' % self.email_secret_file]) |
| self.masters[0].builders[0].builds[0].steps[1].results = [2, None] |
| @@ -1497,6 +1696,7 @@ class GatekeeperTest(unittest.TestCase): |
| sys.argv.extend([m.url for m in self.masters]) |
| sys.argv.extend(['--skip-build-db-update', |
| '--json', self.gatekeeper_file, |
| + '--process-finished-builds-on-new-builder', |
| '--email-app-secret-file=%s' % self.email_secret_file]) |
| self.masters[0].builders[0].builds[0].steps[1].results = [2, None] |
| @@ -1521,6 +1721,7 @@ class GatekeeperTest(unittest.TestCase): |
| sys.argv.extend([m.url for m in self.masters]) |
| sys.argv.extend(['--skip-build-db-update', |
| '--json', self.gatekeeper_file, |
| + '--process-finished-builds-on-new-builder', |
| '--email-app-secret-file=%s' % self.email_secret_file]) |
| self.masters[0].builders[0].builds[0].steps[1].results = [2, None] |
| @@ -1550,6 +1751,7 @@ class GatekeeperTest(unittest.TestCase): |
| sys.argv.extend([m.url for m in self.masters]) |
| sys.argv.extend(['--skip-build-db-update', |
| '--json', self.gatekeeper_file, |
| + '--process-finished-builds-on-new-builder', |
| '--email-app-secret-file=%s' % self.email_secret_file]) |
| self.masters[0].builders[0].builds[0].steps[1].results = [2, None] |
| @@ -1581,6 +1783,7 @@ class GatekeeperTest(unittest.TestCase): |
| sys.argv.extend([m.url for m in self.masters]) |
| sys.argv.extend(['--skip-build-db-update', |
| '--json', self.gatekeeper_file, |
| + '--process-finished-builds-on-new-builder', |
| '--email-app-secret-file=%s' % self.email_secret_file, |
| '--filter-domain=squirrels.net,squirrels.com']) |
| @@ -1597,6 +1800,7 @@ class GatekeeperTest(unittest.TestCase): |
| sys.argv.extend([m.url for m in self.masters]) |
| sys.argv.extend(['--skip-build-db-update', |
| '--json', self.gatekeeper_file, |
| + '--process-finished-builds-on-new-builder', |
| '--email-app-secret-file=%s' % self.email_secret_file, |
| '--disable-domain-filter', |
| '--filter-domain=squirrels.net,squirrels.com']) |
| @@ -1630,6 +1834,7 @@ class GatekeeperTest(unittest.TestCase): |
| sys.argv.extend(['--skip-build-db-update', |
| '--no-email-app', '--set-status', |
| '--json', self.gatekeeper_file, |
| + '--process-finished-builds-on-new-builder', |
| '--password-file', self.status_secret_file]) |
| self.masters[0].builders[0].builds[0].steps[1].results = [2, None] |