blob: e85fa906c25328165388cfab2fd505fddfc4f311 [file] [log] [blame]
# Copyright 2015 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.
import unittest
from dashboard import add_point_queue
from dashboard import testing_common
from dashboard import utils
from dashboard.models import graph_data
from dashboard.models import stoppage_alert
class GetOrCreateAncestorsTest(testing_common.TestCase):
def setUp(self):
super(GetOrCreateAncestorsTest, self).setUp()
self.SetCurrentUser('foo@bar.com', is_admin=True)
def testGetOrCreateAncestors_GetsExistingEntities(self):
master_key = graph_data.Master(id='ChromiumPerf', parent=None).put()
bot_key = graph_data.Bot(id='win7', parent=master_key).put()
suite_key = graph_data.Test(id='dromaeo', parent=bot_key).put()
subtest_key = graph_data.Test(id='dom', parent=suite_key).put()
graph_data.Test(id='modify', parent=subtest_key).put()
actual_parent = add_point_queue._GetOrCreateAncestors(
'ChromiumPerf', 'win7', 'dromaeo/dom/modify')
self.assertEqual('modify', actual_parent.key.id())
# No extra Test or Bot objects should have been added to the database
# beyond the four that were put in before the _GetOrCreateAncestors call.
self.assertEqual(1, len(graph_data.Master.query().fetch()))
self.assertEqual(1, len(graph_data.Bot.query().fetch()))
self.assertEqual(3, len(graph_data.Test.query().fetch()))
def testGetOrCreateAncestors_CreatesAllExpectedEntities(self):
parent = add_point_queue._GetOrCreateAncestors(
'ChromiumPerf', 'win7', 'dromaeo/dom/modify')
self.assertEqual('modify', parent.key.id())
# Check that all the Bot and Test entities were correctly added.
created_masters = graph_data.Master.query().fetch()
created_bots = graph_data.Bot.query().fetch()
created_tests = graph_data.Test.query().fetch()
self.assertEqual(1, len(created_masters))
self.assertEqual(1, len(created_bots))
self.assertEqual(3, len(created_tests))
self.assertEqual('ChromiumPerf', created_masters[0].key.id())
self.assertIsNone(created_masters[0].key.parent())
self.assertEqual('win7', created_bots[0].key.id())
self.assertEqual('ChromiumPerf', created_bots[0].key.parent().id())
self.assertEqual('dromaeo', created_tests[0].key.id())
self.assertIsNone(created_tests[0].parent_test)
self.assertEqual('win7', created_tests[0].bot.id())
self.assertEqual('dom', created_tests[1].key.id())
self.assertEqual('dromaeo', created_tests[1].parent_test.id())
self.assertIsNone(created_tests[1].bot)
self.assertEqual('modify', created_tests[2].key.id())
self.assertEqual('dom', created_tests[2].parent_test.id())
self.assertIsNone(created_tests[2].bot)
def testGetOrCreateAncestors_UpdatesStoppageAlert(self):
testing_common.AddTests(['M'], ['b'], {'suite': {'foo': {}}})
row = testing_common.AddRows('M/b/suite/foo', {123})[0]
test = utils.TestKey('M/b/suite/foo').get()
alert_key = stoppage_alert.CreateStoppageAlert(test, row).put()
test.stoppage_alert = alert_key
test.put()
add_point_queue._GetOrCreateAncestors('M', 'b', 'suite/foo')
self.assertIsNone(test.key.get().stoppage_alert)
self.assertTrue(alert_key.get().recovered)
if __name__ == '__main__':
unittest.main()