~launchpad-pqm/launchpad/devel

« back to all changes in this revision

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

  • Committer: Launchpad Patch Queue Manager
  • Date: 2011-09-19 23:43:35 UTC
  • mfrom: (13970.10.13 ztm-murder)
  • Revision ID: launchpad@pqm.canonical.com-20110919234335-wl2iifzeioub5uhc
[r=sinzui][no-qa] Stripped of its transaction management
 functionality,
 ZopelessTransactionManager is demoted to a mere database configuration
 manager.

Show diffs side-by-side

added added

removed removed

Lines of Context:
12
12
class method.
13
13
 
14
14
    >>> from canonical.database.sqlbase import ZopelessTransactionManager
15
 
    >>> ztm = ZopelessTransactionManager.initZopeless(
16
 
    ...     dbuser='launchpad_main')
17
 
 
18
 
The returned transaction manager happens to be the same as the
19
 
ZopelessTransactionManager class:
20
 
 
21
 
    >>> ztm is ZopelessTransactionManager
22
 
    True
 
15
    >>> ZopelessTransactionManager.initZopeless(dbuser='launchpad_main')
23
16
 
24
17
After initZopeless() has been called, the '_installed' attribute of
25
18
ZopelessTransactionManager will be set to the transaction manager:
26
19
 
27
 
    >>> ZopelessTransactionManager._installed is ztm
 
20
    >>> ZopelessTransactionManager._installed is ZopelessTransactionManager
28
21
    True
29
22
 
30
23
The initZopeless() call defaults to read committed isolation:
35
28
    >>> print c.fetchone()[0]
36
29
    read committed
37
30
 
38
 
We can commit transactions:
39
 
 
40
 
    >>> c.execute("UPDATE person SET name = 'something' WHERE id = 1")
41
 
    >>> ztm.commit()
42
 
 
43
 
We can also explicitly start transactions with begin(), and abort
44
 
transactions:
45
 
 
46
 
    >>> ztm.begin()
47
 
    >>> c = cursor()
48
 
    >>> c.execute("UPDATE person SET name = 'blah' WHERE id = 1")
49
 
    >>> ztm.abort()
50
 
    >>> c = cursor()
51
 
    >>> c.execute("SELECT name FROM person WHERE id = 1")
52
 
    >>> print c.fetchone()[0]
53
 
    something
54
 
 
55
31
The uninstall() method can be used to uninstall the transaction
56
32
manager:
57
33
 
58
 
    >>> ztm.uninstall()
 
34
    >>> ZopelessTransactionManager.uninstall()
59
35
    >>> print ZopelessTransactionManager._installed
60
36
    None
61
37
 
62
38
We can log in as alternative users with initZopeless():
63
39
 
64
 
    >>> ztm = ZopelessTransactionManager.initZopeless(dbuser='testadmin')
 
40
    >>> ZopelessTransactionManager.initZopeless(dbuser='testadmin')
65
41
    >>> c = cursor()
66
42
    >>> c.execute("SELECT current_user")
67
43
    >>> print c.fetchone()[0]
68
44
    testadmin
69
 
    >>> ztm.uninstall()
 
45
    >>> ZopelessTransactionManager.uninstall()
70
46
 
71
47
Or we can specify other transaction isolation modes:
72
48
 
73
49
    >>> from canonical.database.sqlbase import (
74
50
    ...     ISOLATION_LEVEL_SERIALIZABLE)
75
 
    >>> ztm = ZopelessTransactionManager.initZopeless(
 
51
    >>> ZopelessTransactionManager.initZopeless(
76
52
    ...     dbuser='librarian', isolation=ISOLATION_LEVEL_SERIALIZABLE)
77
53
    >>> c = cursor()
78
54
    >>> c.execute("SHOW transaction_isolation")
79
55
    >>> print c.fetchone()[0]
80
56
    serializable
81
 
    >>> ztm.uninstall()
 
57
    >>> ZopelessTransactionManager.uninstall()