~launchpad-pqm/launchpad/devel

« back to all changes in this revision

Viewing changes to lib/canonical/config/tests/test_database_config.py

  • Committer: Stuart Bishop
  • Date: 2011-09-28 12:49:24 UTC
  • mfrom: (9893.10.1 trivial)
  • mto: This revision was merged to the branch mainline in revision 14178.
  • Revision ID: stuart.bishop@canonical.com-20110928124924-m5a22fymqghw6c5i
Merged trivial into distinct-db-users.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright 2010 Canonical Ltd.  This software is licensed under the
 
1
# Copyright 2010-2011 Canonical Ltd.  This software is licensed under the
2
2
# GNU Affero General Public License version 3 (see the file LICENSE).
3
3
 
4
4
__metaclass__ = type
5
5
 
6
 
from canonical.config import (
7
 
    config,
8
 
    DatabaseConfig,
9
 
    dbconfig,
10
 
    )
 
6
from canonical.config import DatabaseConfig
11
7
from canonical.launchpad.readonly import read_only_file_exists
12
8
from canonical.launchpad.tests.readonly import (
13
9
    remove_read_only_file,
21
17
 
22
18
    layer = DatabaseLayer
23
19
 
24
 
    def test_overlay(self):
25
 
        # The dbconfig option overlays the database configurations of a
26
 
        # chosen config section over the base section.
27
 
        self.assertRaises(
28
 
            AttributeError, getattr, config.database, 'dbuser')
29
 
        self.assertRaises(
30
 
            AttributeError, getattr, config.launchpad, 'main_master')
31
 
        self.assertEquals('launchpad_main', config.launchpad.dbuser)
32
 
        self.assertEquals('librarian', config.librarian.dbuser)
33
 
 
34
 
        dbconfig.setConfigSection('librarian')
35
 
        expected_db = (
36
 
            'dbname=%s host=localhost' % DatabaseLayer._db_fixture.dbname)
37
 
        self.assertEquals(expected_db, dbconfig.rw_main_master)
38
 
        self.assertEquals('librarian', dbconfig.dbuser)
39
 
 
40
 
        dbconfig.setConfigSection('launchpad')
41
 
        self.assertEquals(expected_db, dbconfig.rw_main_master)
42
 
        self.assertEquals('launchpad_main', dbconfig.dbuser)
43
 
 
44
20
    def test_override(self):
45
 
        # dbuser and isolation_level can be overridden at runtime, without
46
 
        # requiring a custom config overlay.
 
21
        # dbuser and isolation_level can be overridden at runtime.
47
22
        dbc = DatabaseConfig()
48
 
        dbc.setConfigSection('launchpad')
49
23
        self.assertEqual('launchpad_main', dbc.dbuser)
50
24
        self.assertEqual('serializable', dbc.isolation_level)
51
25
 
67
41
    def test_reset(self):
68
42
        # reset() removes any overrides.
69
43
        dbc = DatabaseConfig()
70
 
        dbc.setConfigSection('launchpad')
71
44
        self.assertEqual('launchpad_main', dbc.dbuser)
72
45
        dbc.override(dbuser='not_launchpad')
73
46
        self.assertEqual('not_launchpad', dbc.dbuser)
74
47
        dbc.reset()
75
48
        self.assertEqual('launchpad_main', dbc.dbuser)
76
49
 
77
 
    def test_required_values(self):
78
 
        # Some variables are required to have a value, such as dbuser.  So we
79
 
        # get a ValueError if they are not set.
80
 
        self.assertRaises(
81
 
            AttributeError, getattr, config.codehosting, 'dbuser')
82
 
        dbconfig.setConfigSection('codehosting')
83
 
        self.assertRaises(ValueError, getattr, dbconfig, 'dbuser')
84
 
        dbconfig.setConfigSection('launchpad')
85
 
 
86
50
    def test_main_master_and_main_slave(self):
87
51
        # DatabaseConfig provides two extra properties: main_master and
88
52
        # main_slave, which return the value of either
89
53
        # rw_main_master/rw_main_slave or ro_main_master/ro_main_slave,
90
54
        # depending on whether or not we're in read-only mode.
 
55
        dbc = DatabaseConfig()
91
56
        self.assertFalse(read_only_file_exists())
92
 
        self.assertEquals(dbconfig.rw_main_master, dbconfig.main_master)
93
 
        self.assertEquals(dbconfig.rw_main_slave, dbconfig.main_slave)
 
57
        self.assertEquals(dbc.rw_main_master, dbc.main_master)
 
58
        self.assertEquals(dbc.rw_main_slave, dbc.main_slave)
94
59
 
95
60
        touch_read_only_file()
96
61
        try:
97
62
            self.assertTrue(read_only_file_exists())
98
63
            self.assertEquals(
99
 
                dbconfig.ro_main_master, dbconfig.main_master)
 
64
                dbc.ro_main_master, dbc.main_master)
100
65
            self.assertEquals(
101
 
                dbconfig.ro_main_slave, dbconfig.main_slave)
 
66
                dbc.ro_main_slave, dbc.main_slave)
102
67
        finally:
103
68
            remove_read_only_file()