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] |