Merge lp:~frankban/launchpad/bug-1003097-isolation-failure into lp:launchpad

Proposed by Francesco Banconi on 2012-05-23
Status: Merged
Approved by: Gary Poster on 2012-05-23
Approved revision: no longer in the source branch.
Merged at revision: 15301
Proposed branch: lp:~frankban/launchpad/bug-1003097-isolation-failure
Merge into: lp:launchpad
Diff against target: 17 lines (+6/-1)
1 file modified
lib/lp/bugs/browser/tests/test_bugtask.py (+6/-1)
To merge this branch: bzr merge lp:~frankban/launchpad/bug-1003097-isolation-failure
Reviewer Review Type Date Requested Status
Gary Poster (community) 2012-05-23 Approve on 2012-05-23
Review via email: mp+107024@code.launchpad.net

Description of the Change

== Summary ==

TestBugTaskView.test_rendered_query_counts_constant_with_team_memberships fails when run by itself during a query count assertion. This happen because the test is relying on a hot cache.
The cached query is::

    SELECT id, product, project, distribution
    FROM PillarName WHERE (id = (SELECT alias_for FROM PillarName WHERE name=u'ubuntu')
        OR name=u'ubuntu')
        AND alias_for IS NULL
    LIMIT 1

Ths query is executed by Browser.open(TASK-URL) calls, indirectly invoked by other tests in the same TestCase.

== Changes ==

Increased the query count in the assertion.

NO-QA

== Tests ==

$ bin/test -vv -t lp.bugs.browser.tests.test_bugtask.TestBugTaskView
Running tests at level 1
Running lp.testing.layers.LaunchpadFunctionalLayer tests:
  Set up lp.testing.layers.BaseLayer in 0.092 seconds.
  Set up lp.testing.layers.DatabaseLayer in 2.330 seconds.
  Set up lp.testing.layers.LibrarianLayer in 5.376 seconds.
  Set up lp.testing.layers.MemcachedLayer in 0.128 seconds.
  Set up lp.testing.layers.RabbitMQLayer in 2.557 seconds.
  Set up lp.testing.layers.LaunchpadLayer in 0.000 seconds.
  Set up lp.testing.layers.FunctionalLayer in 3.889 seconds.
  Set up lp.testing.layers.LaunchpadFunctionalLayer in 0.000 seconds.
  Running:
 lp.bugs.browser.tests.test_bugtask.TestBugTaskView.test_bugtag_urls_are_encoded
 lp.bugs.browser.tests.test_bugtask.TestBugTaskView.test_error_for_changing_target_with_invalid_status
 lp.bugs.browser.tests.test_bugtask.TestBugTaskView.test_interesting_activity
 lp.bugs.browser.tests.test_bugtask.TestBugTaskView.test_rendered_query_counts_constant_with_attachments
 lp.bugs.browser.tests.test_bugtask.TestBugTaskView.test_rendered_query_counts_constant_with_team_memberships
 lp.bugs.browser.tests.test_bugtask.TestBugTaskView.test_rendered_query_counts_reduced_with_branches
  Ran 6 tests with 0 failures and 0 errors in 28.117 seconds.
Tearing down left over layers:
  Tear down lp.testing.layers.LaunchpadFunctionalLayer in 0.000 seconds.
  Tear down lp.testing.layers.LaunchpadLayer in 0.000 seconds.
  Tear down lp.testing.layers.LibrarianLayer in 0.003 seconds.
  Tear down lp.testing.layers.MemcachedLayer in 0.100 seconds.
  Tear down lp.testing.layers.RabbitMQLayer ... not supported
  Tear down lp.testing.layers.FunctionalLayer ... not supported
  Tear down lp.testing.layers.DatabaseLayer in 0.607 seconds.
  Tear down lp.testing.layers.BaseLayer in 0.002 seconds.

$ bin/test -vv -t lp.bugs.browser.tests.test_bugtask.TestBugTaskView.test_rendered_query_counts_constant_with_team_memberships
Running tests at level 1
Running lp.testing.layers.LaunchpadFunctionalLayer tests:
  Set up lp.testing.layers.BaseLayer in 0.099 seconds.
  Set up lp.testing.layers.DatabaseLayer in 2.417 seconds.
  Set up lp.testing.layers.LibrarianLayer in 5.339 seconds.
  Set up lp.testing.layers.MemcachedLayer in 0.113 seconds.
  Set up lp.testing.layers.RabbitMQLayer in 2.076 seconds.
  Set up lp.testing.layers.LaunchpadLayer in 0.000 seconds.
  Set up lp.testing.layers.FunctionalLayer in 3.786 seconds.
  Set up lp.testing.layers.LaunchpadFunctionalLayer in 0.000 seconds.
  Running:
 lp.bugs.browser.tests.test_bugtask.TestBugTaskView.test_rendered_query_counts_constant_with_team_memberships
  Ran 1 tests with 0 failures and 0 errors in 5.914 seconds.
Tearing down left over layers:
  Tear down lp.testing.layers.LaunchpadFunctionalLayer in 0.000 seconds.
  Tear down lp.testing.layers.LaunchpadLayer in 0.000 seconds.
  Tear down lp.testing.layers.LibrarianLayer in 0.004 seconds.
  Tear down lp.testing.layers.MemcachedLayer in 0.101 seconds.
  Tear down lp.testing.layers.RabbitMQLayer ... not supported
  Tear down lp.testing.layers.FunctionalLayer ... not supported
  Tear down lp.testing.layers.DatabaseLayer in 0.659 seconds.
  Tear down lp.testing.layers.BaseLayer in 0.002 seconds.

To post a comment you must log in.
Gary Poster (gary) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'lib/lp/bugs/browser/tests/test_bugtask.py'
2--- lib/lp/bugs/browser/tests/test_bugtask.py 2012-05-10 22:48:06 +0000
3+++ lib/lp/bugs/browser/tests/test_bugtask.py 2012-05-23 14:31:00 +0000
4@@ -140,7 +140,12 @@
5 self.getUserBrowser(url, person_no_teams)
6 # This may seem large: it is; there is easily another 30% fat in
7 # there.
8- self.assertThat(recorder, HasQueryCount(LessThan(88)))
9+ # If this test is run in isolation, the query count is 88.
10+ # Other tests in this TestCase could cache the
11+ # "SELECT id, product, project, distribution FROM PillarName ..."
12+ # query by previously browsing the task url, in which case the
13+ # query count is decreased by one.
14+ self.assertThat(recorder, HasQueryCount(LessThan(89)))
15 count_with_no_teams = recorder.count
16 # count with many teams
17 self.invalidate_caches(task)