~ubuntu-branches/ubuntu/vivid/software-center/vivid

« back to all changes in this revision

Viewing changes to tests/gtk3/test_memleak.py

  • Committer: Package Import Robot
  • Author(s): Michael Vogt, Andrew Hayzen
  • Date: 2012-11-05 13:56:26 UTC
  • mfrom: (192.1.4 precise-proposed)
  • Revision ID: package-import@ubuntu.com-20121105135626-semj5eqtx0tky7co
Tags: 5.5.0
[ Andrew Hayzen ]
* lp:~andrew-hayzen/software-center/accelerator-fix-lp744655:
  - fixes missing accelerator for a11y (LP: #744655)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
import logging
2
 
import unittest
3
 
 
4
 
from mock import Mock
5
 
 
6
 
from tests.utils import (
7
 
    do_events_with_sleep,
8
 
    get_test_db,
9
 
    setup_test_env,
10
 
)
11
 
setup_test_env()
12
 
 
13
 
 
14
 
from softwarecenter.backend.installbackend import get_install_backend
15
 
from softwarecenter.db.application import Application
16
 
from softwarecenter.db.pkginfo import get_pkg_info
17
 
from softwarecenter.ui.gtk3.app import SoftwareCenterAppGtk3
18
 
from softwarecenter.utils import (
19
 
    TraceActiveObjectTypes,
20
 
    TraceMemoryUsage,
21
 
    )
22
 
 
23
 
from tests.gtk3.windows import (
24
 
    get_test_window_appdetails,
25
 
    get_test_window_catview,
26
 
    )
27
 
 
28
 
 
29
 
class MemleakTestCase(unittest.TestCase):
30
 
    """The test suite for the recommendations ."""
31
 
 
32
 
    ITERATIONS = 2
33
 
 
34
 
    def test_memleak_app_recommendations(self):
35
 
        cache = get_pkg_info()
36
 
        cache.open(blocking=True)
37
 
        win = get_test_window_appdetails()
38
 
        view = win.get_data("view")
39
 
        app = Application("", "gedit")
40
 
        # get baseline
41
 
        view.show_app(app)
42
 
        do_events_with_sleep()
43
 
        with TraceMemoryUsage("AppdetailsView.show_app()"):
44
 
            with TraceActiveObjectTypes("view.recommended_for_app.set_pkgname"):
45
 
                for i in range(self.ITERATIONS):
46
 
                    view.recommended_for_app_panel.set_pkgname("gedit")
47
 
                    cache.open()
48
 
                    do_events_with_sleep()
49
 
 
50
 
    def test_memleak_appdetails(self):
51
 
        cache = get_pkg_info()
52
 
        cache.open(blocking=True)
53
 
        win = get_test_window_appdetails()
54
 
        view = win.get_data("view")
55
 
        app = Application("", "gedit")
56
 
        # get baseline
57
 
        view.show_app(app)
58
 
        do_events_with_sleep()
59
 
        with TraceMemoryUsage("AppdetailsView.show_app()"):
60
 
            for i in range(self.ITERATIONS):
61
 
                view.show_app(app, force=True)
62
 
                # this causes a huge memleak of ~35mb/run
63
 
                cache.open()
64
 
                do_events_with_sleep()
65
 
 
66
 
    def test_memleak_catview(self):
67
 
        db = get_test_db()
68
 
        win = get_test_window_catview(db)
69
 
        lobby = win.get_data("lobby")
70
 
        # get baseline
71
 
        do_events_with_sleep()
72
 
        with TraceMemoryUsage("LobbyView.on_db_reopen()"):
73
 
            for i in range(self.ITERATIONS):
74
 
                lobby._on_db_reopen(db)
75
 
                do_events_with_sleep()
76
 
 
77
 
    def test_memleak_subcatview(self):
78
 
        db = get_test_db()
79
 
        win = get_test_window_catview(db)
80
 
        lobby =  win.get_data("lobby")
81
 
        cat = [cat for cat in lobby.categories if cat.name == "Internet"][0]
82
 
        subcat = win.get_data("subcat")
83
 
        # get baseline
84
 
        subcat.set_subcategory(cat)
85
 
        do_events_with_sleep()
86
 
        with TraceMemoryUsage("SubcategoryView.set_subcategory()"):
87
 
            for i in range(self.ITERATIONS):
88
 
                subcat._set_subcategory(cat, 0)
89
 
                do_events_with_sleep()
90
 
 
91
 
    def test_memleak_app(self):
92
 
        options = Mock()
93
 
        options.display_navlog = False
94
 
        args = []
95
 
        # ensure the cache is fully ready before taking the baseline
96
 
        cache = get_pkg_info()
97
 
        cache.open(blocking=True)
98
 
        app = SoftwareCenterAppGtk3(options, args)
99
 
        app.window_main.show_all()
100
 
        do_events_with_sleep()
101
 
        with TraceMemoryUsage("app._on_transaction_finished"):
102
 
            for i in range(self.ITERATIONS):
103
 
                app._on_transaction_finished(None, None)
104
 
                cache.open()
105
 
                do_events_with_sleep()
106
 
 
107
 
    def test_memleak_pkginfo_open(self):
108
 
        cache = get_pkg_info()
109
 
        cache.open()
110
 
        do_events_with_sleep()
111
 
        with TraceMemoryUsage("PackageInfo.open()"):
112
 
            for i in range(self.ITERATIONS):
113
 
                cache.open()
114
 
                do_events_with_sleep()
115
 
 
116
 
    def test_memleak_backend_finished(self):
117
 
        backend = get_install_backend()
118
 
        backend.emit("transaction-finished", Mock())
119
 
        do_events_with_sleep()
120
 
        with TraceMemoryUsage("backend.emit('transaction-finished')"):
121
 
            for i in range(self.ITERATIONS):
122
 
                backend.emit("transaction-finished", Mock())
123
 
                do_events_with_sleep()
124
 
 
125
 
 
126
 
if __name__ == "__main__":
127
 
    logging.basicConfig(level=logging.WARN)
128
 
    unittest.main()