2 # Copyright 2014 The Chromium OS Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file.
6 """Unit tests for cidb.py Setup methods."""
8 from __future__ import print_function
13 sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.dirname(
14 os.path.abspath(__file__)))))
16 from chromite.cbuildbot import constants
17 from chromite.lib import cidb
18 from chromite.lib import cros_test_lib
20 class CIDBConnectionFactoryTest(cros_test_lib.MoxTestCase):
21 """Test that CIDBConnectionFactory behaves as expected."""
24 # Ensure that we do not create any live connections in this unit test.
25 self.mox.StubOutWithMock(cidb, 'CIDBConnection')
26 # pylint: disable-msg=W0212
27 cidb.CIDBConnectionFactory._ClearCIDBSetup()
29 def testGetConnectionBeforeSetup(self):
30 """Calling GetConnection before Setup should raise exception."""
31 self.assertRaises(AssertionError,
32 cidb.CIDBConnectionFactory.GetCIDBConnectionForBuilder)
34 def testSetupProd(self):
35 """Test that SetupProd behaves as expected."""
36 # Expected constructor call
37 cidb.CIDBConnection(constants.CIDB_PROD_BOT_CREDS)
40 cidb.CIDBConnectionFactory.SetupProdCidb()
41 cidb.CIDBConnectionFactory.GetCIDBConnectionForBuilder()
42 self.assertTrue(cidb.CIDBConnectionFactory.IsCIDBSetup())
43 self.assertRaises(AssertionError, cidb.CIDBConnectionFactory.SetupProdCidb)
44 self.assertRaises(AssertionError, cidb.CIDBConnectionFactory.SetupDebugCidb)
45 self.assertRaises(AssertionError, cidb.CIDBConnectionFactory.SetupMockCidb)
46 self.assertRaises(AssertionError, cidb.CIDBConnectionFactory.SetupNoCidb)
48 def testSetupDebug(self):
49 """Test that SetupDebug behaves as expected."""
50 # Expected constructor call
51 cidb.CIDBConnection(constants.CIDB_DEBUG_BOT_CREDS)
54 cidb.CIDBConnectionFactory.SetupDebugCidb()
55 cidb.CIDBConnectionFactory.GetCIDBConnectionForBuilder()
56 self.assertTrue(cidb.CIDBConnectionFactory.IsCIDBSetup())
57 self.assertRaises(AssertionError, cidb.CIDBConnectionFactory.SetupProdCidb)
58 self.assertRaises(AssertionError, cidb.CIDBConnectionFactory.SetupDebugCidb)
59 self.assertRaises(AssertionError, cidb.CIDBConnectionFactory.SetupMockCidb)
60 self.assertRaises(AssertionError, cidb.CIDBConnectionFactory.SetupNoCidb)
62 def testInvalidateSetup(self):
63 """Test that cidb connection can be invalidated."""
64 cidb.CIDBConnectionFactory.SetupProdCidb()
65 cidb.CIDBConnectionFactory.InvalidateCIDBSetup()
66 self.assertRaises(AssertionError,
67 cidb.CIDBConnectionFactory.GetCIDBConnectionForBuilder)
69 def testSetupMock(self):
70 """Test that SetupDebug behaves as expected."""
71 # Set the CIDB to mock mode, but without supplying a mock
72 cidb.CIDBConnectionFactory.SetupMockCidb()
73 self.assertFalse(cidb.CIDBConnectionFactory.IsCIDBSetup())
74 self.assertRaises(AssertionError,
75 cidb.CIDBConnectionFactory.GetCIDBConnectionForBuilder)
77 # Calls to non-mock Setup methods should fail.
78 self.assertRaises(AssertionError, cidb.CIDBConnectionFactory.SetupProdCidb)
79 self.assertRaises(AssertionError, cidb.CIDBConnectionFactory.SetupDebugCidb)
83 cidb.CIDBConnectionFactory.SetupMockCidb(a)
84 self.assertTrue(cidb.CIDBConnectionFactory.IsCIDBSetup())
85 self.assertEqual(cidb.CIDBConnectionFactory.GetCIDBConnectionForBuilder(),
88 # Mock object can be changed by future SetupMockCidb call.
90 cidb.CIDBConnectionFactory.SetupMockCidb(b)
91 self.assertEqual(cidb.CIDBConnectionFactory.GetCIDBConnectionForBuilder(),
94 # Calls to non-mock Setup methods should still fail.
95 self.assertRaises(AssertionError, cidb.CIDBConnectionFactory.SetupProdCidb)
96 self.assertRaises(AssertionError, cidb.CIDBConnectionFactory.SetupDebugCidb)
98 def testSetupNo(self):
99 """Test that SetupNoCidb behaves as expected."""
100 cidb.CIDBConnectionFactory.SetupMockCidb()
101 cidb.CIDBConnectionFactory.SetupNoCidb()
102 cidb.CIDBConnectionFactory.SetupNoCidb()
103 self.assertTrue(cidb.CIDBConnectionFactory.IsCIDBSetup())
104 self.assertEqual(cidb.CIDBConnectionFactory.GetCIDBConnectionForBuilder(),
106 self.assertRaises(AssertionError, cidb.CIDBConnectionFactory.SetupProdCidb)
107 self.assertRaises(AssertionError, cidb.CIDBConnectionFactory.SetupDebugCidb)
108 self.assertRaises(AssertionError, cidb.CIDBConnectionFactory.SetupMockCidb)
111 if __name__ == '__main__':