| Index: appengine_apps/trooper_o_matic/appengine_module/trooper_o_matic/test/cron_test.py
|
| diff --git a/appengine_apps/trooper_o_matic/appengine_module/trooper_o_matic/test/cron_test.py b/appengine_apps/trooper_o_matic/appengine_module/trooper_o_matic/test/cron_test.py
|
| deleted file mode 100644
|
| index 656a1ff4aa153000821cef48dd8f960a57825e0b..0000000000000000000000000000000000000000
|
| --- a/appengine_apps/trooper_o_matic/appengine_module/trooper_o_matic/test/cron_test.py
|
| +++ /dev/null
|
| @@ -1,147 +0,0 @@
|
| -# Copyright (c) 2014 The Chromium Authors. All rights reserved.
|
| -# Use of this source code is governed by a BSD-style license that can be
|
| -# found in the LICENSE file.
|
| -
|
| -"""Unit tests for cron handlers.
|
| -
|
| -This test requires the WebTest module. To install:
|
| -sudo apt-get install python-pip
|
| -sudo pip install WebTest
|
| -"""
|
| -import datetime
|
| -import json
|
| -import unittest
|
| -import webapp2
|
| -import webtest
|
| -
|
| -from google.appengine.ext import testbed
|
| -
|
| -from appengine_module.trooper_o_matic import cron
|
| -from appengine_module.trooper_o_matic import models
|
| -from appengine_module.trooper_o_matic.test import testing_common
|
| -from appengine_module.trooper_o_matic.test import test_data
|
| -
|
| -
|
| -
|
| -
|
| -def MockNow():
|
| - return datetime.datetime(2014, 1, 1, 12)
|
| -
|
| -# Fill in empty data for all 24 hour periods not mocked out.
|
| -for hour in range(0, 24):
|
| - for master in ['chromium', 'chromium.win']:
|
| - h = (MockNow() - datetime.timedelta(hours=hour)).strftime('%Y-%m-%dT%H:%MZ')
|
| - url = ('https://chrome-infra-stats.appspot.com/_ah/api/stats/v1/steps/%s/'
|
| - 'overall__build__result__/%s') % (master, h)
|
| - if not test_data.URLFETCH_RESPONSES.get(url):
|
| - test_data.URLFETCH_RESPONSES[url] = {
|
| - 'content': json.dumps({'step_records': []}),
|
| - 'statuscode': 200,
|
| - }
|
| -
|
| -
|
| -class CronTest(unittest.TestCase):
|
| -
|
| - def setUp(self):
|
| - super(CronTest, self).setUp()
|
| - self.testbed = testbed.Testbed()
|
| - # needed because some appengine libraries expects a . in this value
|
| - self.testbed.setup_env(current_version_id='testbed.version')
|
| - self.testbed.activate()
|
| - self.testbed.init_datastore_v3_stub()
|
| - self.testbed.init_memcache_stub()
|
| - self.testbed.init_urlfetch_stub()
|
| - testing_common.StubUrlfetch(test_data.URLFETCH_RESPONSES,
|
| - stub=self.testbed.get_stub('urlfetch'))
|
| - app = webapp2.WSGIApplication([
|
| - ('/check-cq', cron.CheckCQHandler),
|
| - ('/check-tree/(.*)', cron.CheckTreeHandler),
|
| - ('/check-tree-status/([^/]*)/(.*)', cron.CheckTreeStatusHandler),
|
| - ])
|
| - self.testapp = webtest.TestApp(app)
|
| - cron.datetime_now = MockNow
|
| -
|
| - def tearDown(self):
|
| - try:
|
| - self.testbed.deactivate()
|
| - finally:
|
| - super(CronTest, self).tearDown()
|
| -
|
| - def testCheckCq(self):
|
| - self.testapp.get('/check-cq')
|
| - stats = models.CqStat.query().fetch()
|
| - self.assertEqual(2, len(stats))
|
| - self.assertEqual('blink', stats[0].key.parent().id())
|
| - self.assertEqual(27, stats[0].min)
|
| - self.assertEqual(45, stats[0].max)
|
| - self.assertEqual(3, stats[0].length)
|
| - self.assertEqual('chromium', stats[1].key.parent().id())
|
| - self.assertEqual(5, stats[1].length)
|
| - self.assertEqual(20, stats[1].min)
|
| - self.assertEqual(61, stats[1].max)
|
| - in_queue_stats = models.CqTimeInQueueForPatchStat().query().fetch()
|
| - self.assertEqual(2, len(in_queue_stats))
|
| - self.assertEqual(45, in_queue_stats[0].min)
|
| - self.assertEqual(56, in_queue_stats[0].max)
|
| - self.assertEqual(5, in_queue_stats[1].length)
|
| - total_time_stats = models.CqTotalTimeForPatchStat().query().fetch()
|
| - self.assertEqual(45, total_time_stats[0].min)
|
| - self.assertEqual(59, total_time_stats[0].max)
|
| - self.assertEqual(2, len(total_time_stats))
|
| - self.assertEqual(5, total_time_stats[1].length)
|
| -
|
| - def testCheckTree(self):
|
| - self.testapp.get('/check-tree/chromium')
|
| - trees = models.Tree.query().fetch()
|
| - self.assertEqual(1, len(trees))
|
| - self.assertEqual('chromium', trees[0].key.id())
|
| - stats = models.BuildTimeStat.query().fetch()
|
| - self.assertEqual(1, len(stats))
|
| - self.assertEqual(5, stats[0].num_builds)
|
| - self.assertEqual(4, stats[0].num_over_median_slo)
|
| - self.assertEqual(1, stats[0].num_over_max_slo)
|
| - self.assertEqual(4, len(stats[0].slo_offenders))
|
| - self.assertEqual('chromium', stats[0].slo_offenders[0].tree)
|
| - self.assertEqual('chromium', stats[0].slo_offenders[1].tree)
|
| - self.assertEqual('chromium', stats[0].slo_offenders[2].tree)
|
| - self.assertEqual('chromium', stats[0].slo_offenders[0].master)
|
| - self.assertEqual('chromium', stats[0].slo_offenders[1].master)
|
| - self.assertEqual('chromium.win', stats[0].slo_offenders[2].master)
|
| - self.assertEqual('Linux', stats[0].slo_offenders[0].builder)
|
| - self.assertEqual('Android', stats[0].slo_offenders[1].builder)
|
| - self.assertEqual('Windows 8', stats[0].slo_offenders[2].builder)
|
| - self.assertEqual(500, stats[0].slo_offenders[0].buildnumber)
|
| - self.assertEqual(2500, stats[0].slo_offenders[1].buildnumber)
|
| - self.assertEqual(5500, stats[0].slo_offenders[2].buildnumber)
|
| - self.assertEqual(5500, stats[0].slo_offenders[0].buildtime)
|
| - self.assertEqual(28900, stats[0].slo_offenders[1].buildtime)
|
| - self.assertEqual(5500, stats[0].slo_offenders[2].buildtime)
|
| - self.assertEqual(0, stats[0].slo_offenders[0].result)
|
| - self.assertEqual(0, stats[0].slo_offenders[1].result)
|
| - self.assertEqual(1, stats[0].slo_offenders[2].result)
|
| - self.assertEqual(5400, stats[0].slo_offenders[0].slo_median_buildtime)
|
| - self.assertEqual(28800, stats[0].slo_offenders[0].slo_max_buildtime)
|
| -
|
| - def testCheckTreeStatusSevenDays(self):
|
| - self.testapp.get('/check-tree-status/chromium/7')
|
| - projects = models.Project.query().fetch()
|
| - self.assertEqual(len(projects), 1)
|
| - self.assertEqual('chromium', projects[0].key.id())
|
| - stats = models.TreeOpenStat.query().fetch()
|
| - self.assertEqual(1, len(stats))
|
| - self.assertEqual(7, stats[0].num_days)
|
| - self.assertEqual(78.57142857142857, stats[0].percent_open)
|
| -
|
| - def testCheckTreeStatusOneDayNoChanges(self):
|
| - self.testapp.get('/check-tree-status/chromium/1')
|
| - projects = models.Project.query().fetch()
|
| - self.assertEqual(1, len(projects))
|
| - self.assertEqual('chromium', projects[0].key.id())
|
| - stats = models.TreeOpenStat.query().fetch()
|
| - self.assertEqual(1, len(stats))
|
| - self.assertEqual(1, stats[0].num_days)
|
| - self.assertEqual(100.0, stats[0].percent_open)
|
| -
|
| -
|
| -if __name__ == '__main__':
|
| - unittest.main()
|
|
|