Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / third_party / chromite / lib / cidb_setup_unittest.py
1 #!/usr/bin/python
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.
5
6 """Unit tests for cidb.py Setup methods."""
7
8 from __future__ import print_function
9
10 import os
11 import sys
12
13 sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.dirname(
14     os.path.abspath(__file__)))))
15
16 from chromite.cbuildbot import constants
17 from chromite.lib import cidb
18 from chromite.lib import cros_test_lib
19
20 class CIDBConnectionFactoryTest(cros_test_lib.MoxTestCase):
21   """Test that CIDBConnectionFactory behaves as expected."""
22
23   def setUp(self):
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()
28
29   def testGetConnectionBeforeSetup(self):
30     """Calling GetConnection before Setup should raise exception."""
31     self.assertRaises(AssertionError,
32                       cidb.CIDBConnectionFactory.GetCIDBConnectionForBuilder)
33
34   def testSetupProd(self):
35     """Test that SetupProd behaves as expected."""
36     # Expected constructor call
37     cidb.CIDBConnection(constants.CIDB_PROD_BOT_CREDS)
38     self.mox.ReplayAll()
39
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)
47
48   def testSetupDebug(self):
49     """Test that SetupDebug behaves as expected."""
50     # Expected constructor call
51     cidb.CIDBConnection(constants.CIDB_DEBUG_BOT_CREDS)
52     self.mox.ReplayAll()
53
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)
61
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)
68
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)
76
77     # Calls to non-mock Setup methods should fail.
78     self.assertRaises(AssertionError, cidb.CIDBConnectionFactory.SetupProdCidb)
79     self.assertRaises(AssertionError, cidb.CIDBConnectionFactory.SetupDebugCidb)
80
81     # Now supply a mock.
82     a = object()
83     cidb.CIDBConnectionFactory.SetupMockCidb(a)
84     self.assertTrue(cidb.CIDBConnectionFactory.IsCIDBSetup())
85     self.assertEqual(cidb.CIDBConnectionFactory.GetCIDBConnectionForBuilder(),
86                      a)
87
88     # Mock object can be changed by future SetupMockCidb call.
89     b = object()
90     cidb.CIDBConnectionFactory.SetupMockCidb(b)
91     self.assertEqual(cidb.CIDBConnectionFactory.GetCIDBConnectionForBuilder(),
92                      b)
93
94     # Calls to non-mock Setup methods should still fail.
95     self.assertRaises(AssertionError, cidb.CIDBConnectionFactory.SetupProdCidb)
96     self.assertRaises(AssertionError, cidb.CIDBConnectionFactory.SetupDebugCidb)
97
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(),
105                      None)
106     self.assertRaises(AssertionError, cidb.CIDBConnectionFactory.SetupProdCidb)
107     self.assertRaises(AssertionError, cidb.CIDBConnectionFactory.SetupDebugCidb)
108     self.assertRaises(AssertionError, cidb.CIDBConnectionFactory.SetupMockCidb)
109
110
111 if __name__ == '__main__':
112   cros_test_lib.main()