Opened 10 years ago

Last modified 8 months ago

#23746 new New feature

Remedy assertNumQueries dependence on some caches state — at Version 1

Reported by: Wojtek Ruszczewski Owned by: nobody
Component: Testing framework Version: dev
Severity: Normal Keywords:
Cc: Tim Graham, Ülgen Sarıkavak Triage Stage: Accepted
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: yes
Easy pickings: no UI/UX: no

Description (last modified by Wojtek Ruszczewski)

The assertNumQueries manager / method may return different results depending on what is in various caches. Consequently, some tests using it rely on test ordering, particularly those that count some content type queries. For instance if you run the suite in reverse you'll see test_group_permission_performance failing due to ContentType being or not being asked about auth.Group in some preceding test 1.

The proposed solution resets "query" caches on entering the manager (with a switch to disable it for actual caching tests). After introducing the change 10 tests started to fail (ContentType cache tests and some prefetch_related tests), 2 specific workarounds were no longer necessary (#17377, #20432) and a failure from PR 3426 disappeared 2.


Note to prospective reviewers: Are there any other caches that should be cleared besides the ContentType and Site? Related objects caches maybe? Do the affected prefetch_related operations actually require content type queries? Would it be better to clear all the caches after every test case to avoid other kinds of dependencies?

[1] What happens in the likewise failing with "--reverse" test_user_permission_performance is a bit intriguing and probably more involved -- two identical content type queries, savepoint, content type insertion and a release?

[2] Only tested with Python 3.3 / Postgres,

Change History (1)

comment:1 by Wojtek Ruszczewski, 10 years ago

Description: modified (diff)
Note: See TracTickets for help on using tickets.
Back to Top