Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(414)

Side by Side Diff: scripts/slave/unittests/gatekeeper_ng_test.py

Issue 105773005: Add ability to specify email subject for gatekeeper_ng. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build
Patch Set: Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright 2013 The Chromium Authors. All rights reserved. 2 # Copyright 2013 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 """Unit tests for gatekeeper_ng.py. 6 """Unit tests for gatekeeper_ng.py.
7 7
8 This is a basic check that gatekeeper_ng.py can properly interpret builds and 8 This is a basic check that gatekeeper_ng.py can properly interpret builds and
9 close the tree. 9 close the tree.
10 10
(...skipping 526 matching lines...) Expand 10 before | Expand all | Expand 10 after
537 self.masters[0].builders[0].builds[0].steps[1].results = [2, None] 537 self.masters[0].builders[0].builds[0].steps[1].results = [2, None]
538 self.add_gatekeeper_section(self.masters[0].url, 538 self.add_gatekeeper_section(self.masters[0].url,
539 self.masters[0].builders[0].name, 539 self.masters[0].builders[0].name,
540 {'closing_steps': ['step2']}) 540 {'closing_steps': ['step2']})
541 541
542 self.handle_url_str(self.status_url, 'the status') 542 self.handle_url_str(self.status_url, 'the status')
543 543
544 urls = self.call_gatekeeper() 544 urls = self.call_gatekeeper()
545 self.assertNotIn(self.status_url, urls) 545 self.assertNotIn(self.status_url, urls)
546 546
547 def testDefaultSubjectTemplate(self):
548 """Test that the subject template is set by default."""
549 sys.argv.extend([m.url for m in self.masters])
550 sys.argv.extend(['--skip-build-db-update',
551 '--json', self.gatekeeper_file,
552 '--email-app-secret-file=%s' % self.email_secret_file])
553
554 self.add_gatekeeper_section(self.masters[0].url,
555 self.masters[0].builders[0].name,
556 {'closing_steps': ['step4']})
557
558 self.call_gatekeeper()
559
560 # Check that gatekeeper indeed sent an email.
561 self.assertEquals(self.url_calls[-1]['url'], self.mailer_url)
562 mailer_data = GatekeeperTest.decode_param_json(self.url_calls[-1]['params'])
563 self.assertEquals(mailer_data['subject_template'], unicode(
564 'buildbot %(result)s in %(projectName)s on %(builder)s, '
565 'revision %(revision)s'))
566
567
547 def testEmailJson(self): 568 def testEmailJson(self):
548 """Test that the email json is formatted correctly.""" 569 """Test that the email json is formatted correctly."""
549 sys.argv.extend([m.url for m in self.masters]) 570 sys.argv.extend([m.url for m in self.masters])
550 sys.argv.extend(['--skip-build-db-update', 571 sys.argv.extend(['--skip-build-db-update',
551 '--json', self.gatekeeper_file, 572 '--json', self.gatekeeper_file,
552 '--email-app-secret-file=%s' % self.email_secret_file]) 573 '--email-app-secret-file=%s' % self.email_secret_file])
553 574
575 subject_template = 'build %(result)s, oh no!'
554 self.masters[0].builders[0].builds[0].results = 3 576 self.masters[0].builders[0].builds[0].results = 3
555 self.add_gatekeeper_master_config(self.masters[0].url, 577 self.add_gatekeeper_master_config(self.masters[0].url,
556 {'respect_build_status': True}) 578 {'respect_build_status': True})
557 self.add_gatekeeper_section(self.masters[0].url, 579 self.add_gatekeeper_section(self.masters[0].url,
558 self.masters[0].builders[0].name, 580 self.masters[0].builders[0].name,
559 {}, 581 {'subject_template': subject_template},
560 idx=0) 582 idx=0)
561 583
562 self.call_gatekeeper() 584 self.call_gatekeeper()
563 585
564 self.assertEquals(self.url_calls[-1]['url'], self.mailer_url) 586 self.assertEquals(self.url_calls[-1]['url'], self.mailer_url)
565 mailer_data = GatekeeperTest.decode_param_json( 587 mailer_data = GatekeeperTest.decode_param_json(
566 self.url_calls[-1]['params']) 588 self.url_calls[-1]['params'])
567 self.assertEquals(mailer_data['recipients'], ['a_committer@chromium.org']) 589 self.assertEquals(mailer_data['recipients'], ['a_committer@chromium.org'])
568 590
569 build_url = self.masters[0].url + '/builders/%s/builds/%d' % ( 591 build_url = self.masters[0].url + '/builders/%s/builds/%d' % (
(...skipping 20 matching lines...) Expand all
590 self.assertEquals(mailer_data['result'], 3) 612 self.assertEquals(mailer_data['result'], 3)
591 self.assertEquals(mailer_data['blamelist'], ['a_committer@chromium.org']) 613 self.assertEquals(mailer_data['blamelist'], ['a_committer@chromium.org'])
592 self.assertEquals(mailer_data['changes'], 614 self.assertEquals(mailer_data['changes'],
593 self.masters[0].builders[0].builds[0].sourcestamp['changes']) 615 self.masters[0].builders[0].builds[0].sourcestamp['changes'])
594 self.assertEquals(mailer_data['waterfall_url'], unicode( 616 self.assertEquals(mailer_data['waterfall_url'], unicode(
595 self.masters[0].url + '/waterfall')) 617 self.masters[0].url + '/waterfall'))
596 618
597 self.assertEquals(mailer_data['build_url'], unicode(build_url)) 619 self.assertEquals(mailer_data['build_url'], unicode(build_url))
598 self.assertEquals(mailer_data['project_name'], unicode('Chromium FYI')) 620 self.assertEquals(mailer_data['project_name'], unicode('Chromium FYI'))
599 self.assertEquals(mailer_data['from_addr'], 'buildbot@chromium.org') 621 self.assertEquals(mailer_data['from_addr'], 'buildbot@chromium.org')
622 self.assertEquals(mailer_data['subject_template'],
623 unicode(subject_template))
600 624
601 625
602 #### BuildDB operation. 626 #### BuildDB operation.
603 627
604 def testIncrementalScanning(self): 628 def testIncrementalScanning(self):
605 """Test that builds in the build DB are skipped.""" 629 """Test that builds in the build DB are skipped."""
606 fd, dbfilename = tempfile.mkstemp() 630 fd, dbfilename = tempfile.mkstemp()
607 build_db = {self.masters[0].url: { 'mybuilder': 1 }} 631 build_db = {self.masters[0].url: { 'mybuilder': 1 }}
608 os.write(fd, json.dumps(build_db)) 632 os.write(fd, json.dumps(build_db))
609 os.close(fd) 633 os.close(fd)
(...skipping 814 matching lines...) Expand 10 before | Expand all | Expand 10 after
1424 def testCheckedInConfigIsValid(self): 1448 def testCheckedInConfigIsValid(self):
1425 sys.argv.extend(['--verify', 1449 sys.argv.extend(['--verify',
1426 '--json', 1450 '--json',
1427 os.path.join(SCRIPT_DIR, os.pardir, 'gatekeeper.json')]) 1451 os.path.join(SCRIPT_DIR, os.pardir, 'gatekeeper.json')])
1428 self.call_gatekeeper() 1452 self.call_gatekeeper()
1429 1453
1430 1454
1431 if __name__ == '__main__': 1455 if __name__ == '__main__':
1432 with utils.print_coverage(include=[__file__]): 1456 with utils.print_coverage(include=[__file__]):
1433 unittest.main() 1457 unittest.main()
OLDNEW
« scripts/slave/gatekeeper_ng.py ('K') | « scripts/slave/gatekeeper_ng.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698