~launchpad-pqm/launchpad/devel

« back to all changes in this revision

Viewing changes to lib/canonical/database/ftests/test_zopelesstransactionmanager.txt

  • 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
 
= ZopelessTransactionManager =
2
 
 
3
 
The ZopelessTransactionManager used to be an alternative to the Zope
4
 
transaction manager and SQLOS database adapter.
5
 
 
6
 
With the move to Storm, it was converted to a small compatibility shim
7
 
used to configure the database adapter.
8
 
 
9
 
== Initialization ==
10
 
 
11
 
The ZopelessTransactionManager is initialized with its initZopeless()
12
 
class method.
13
 
 
14
 
    >>> from canonical.database.sqlbase import ZopelessTransactionManager
15
 
    >>> ZopelessTransactionManager.initZopeless(dbuser='launchpad_main')
16
 
 
17
 
After initZopeless() has been called, the '_installed' attribute of
18
 
ZopelessTransactionManager will be set to the transaction manager:
19
 
 
20
 
    >>> ZopelessTransactionManager._installed is ZopelessTransactionManager
21
 
    True
22
 
 
23
 
The initZopeless() call defaults to read committed isolation:
24
 
 
25
 
    >>> from canonical.database.sqlbase import cursor
26
 
    >>> c = cursor()
27
 
    >>> c.execute("SHOW transaction_isolation")
28
 
    >>> print c.fetchone()[0]
29
 
    read committed
30
 
 
31
 
The uninstall() method can be used to uninstall the transaction
32
 
manager:
33
 
 
34
 
    >>> ZopelessTransactionManager.uninstall()
35
 
    >>> print ZopelessTransactionManager._installed
36
 
    None
37
 
 
38
 
We can log in as alternative users with initZopeless():
39
 
 
40
 
    >>> ZopelessTransactionManager.initZopeless(dbuser='testadmin')
41
 
    >>> c = cursor()
42
 
    >>> c.execute("SELECT current_user")
43
 
    >>> print c.fetchone()[0]
44
 
    testadmin
45
 
    >>> ZopelessTransactionManager.uninstall()
46
 
 
47
 
Or we can specify other transaction isolation modes:
48
 
 
49
 
    >>> from canonical.database.sqlbase import (
50
 
    ...     ISOLATION_LEVEL_SERIALIZABLE)
51
 
    >>> ZopelessTransactionManager.initZopeless(
52
 
    ...     dbuser='librarian', isolation=ISOLATION_LEVEL_SERIALIZABLE)
53
 
    >>> c = cursor()
54
 
    >>> c.execute("SHOW transaction_isolation")
55
 
    >>> print c.fetchone()[0]
56
 
    serializable
57
 
    >>> ZopelessTransactionManager.uninstall()