mirror of https://github.com/zulip/zulip.git
tests: Flush per-request caches automatically for query counts.
This commit is contained in:
parent
730ae61ce5
commit
751b8b5bb5
|
@ -3,7 +3,7 @@ from unittest import mock
|
|||
from django.utils.timezone import now as timezone_now
|
||||
|
||||
from zerver.lib.test_classes import ZulipTestCase
|
||||
from zerver.models import Client, UserActivity, UserProfile, flush_per_request_caches
|
||||
from zerver.models import Client, UserActivity, UserProfile
|
||||
|
||||
|
||||
class ActivityTest(ZulipTestCase):
|
||||
|
@ -31,18 +31,15 @@ class ActivityTest(ZulipTestCase):
|
|||
user_profile.is_staff = True
|
||||
user_profile.save(update_fields=["is_staff"])
|
||||
|
||||
flush_per_request_caches()
|
||||
with self.assert_database_query_count(18):
|
||||
result = self.client_get("/activity")
|
||||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
flush_per_request_caches()
|
||||
with self.assert_database_query_count(8):
|
||||
result = self.client_get("/realm_activity/zulip/")
|
||||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
iago = self.example_user("iago")
|
||||
flush_per_request_caches()
|
||||
with self.assert_database_query_count(5):
|
||||
result = self.client_get(f"/user_activity/{iago.id}/")
|
||||
self.assertEqual(result.status_code, 200)
|
||||
|
|
|
@ -56,6 +56,7 @@ from zerver.models import (
|
|||
Subscription,
|
||||
UserMessage,
|
||||
UserProfile,
|
||||
flush_per_request_caches,
|
||||
get_client,
|
||||
get_realm,
|
||||
get_stream,
|
||||
|
@ -181,6 +182,7 @@ def queries_captured(
|
|||
if not keep_cache_warm:
|
||||
cache = get_cache_backend(None)
|
||||
cache.clear()
|
||||
flush_per_request_caches()
|
||||
with mock.patch.multiple(
|
||||
TimeTrackingCursor, execute=cursor_execute, executemany=cursor_executemany
|
||||
):
|
||||
|
|
|
@ -32,7 +32,6 @@ from zerver.models import (
|
|||
Stream,
|
||||
UserActivityInterval,
|
||||
UserProfile,
|
||||
flush_per_request_caches,
|
||||
get_client,
|
||||
get_realm,
|
||||
get_stream,
|
||||
|
@ -60,7 +59,6 @@ class TestDigestEmailMessages(ZulipTestCase):
|
|||
# Remove RealmAuditLog rows, so we don't exclude polonius.
|
||||
RealmAuditLog.objects.all().delete()
|
||||
|
||||
flush_per_request_caches()
|
||||
# When this test is run in isolation, one additional query is run which
|
||||
# is equivalent to
|
||||
# ContentType.objects.get(app_label='zerver', model='userprofile')
|
||||
|
@ -137,7 +135,6 @@ class TestDigestEmailMessages(ZulipTestCase):
|
|||
# Remove RealmAuditoLog rows, so we don't exclude polonius.
|
||||
RealmAuditLog.objects.all().delete()
|
||||
|
||||
flush_per_request_caches()
|
||||
# When this test is run in isolation, one additional query is run which
|
||||
# is equivalent to
|
||||
# ContentType.objects.get(app_label='zerver', model='userprofile')
|
||||
|
@ -195,8 +192,6 @@ class TestDigestEmailMessages(ZulipTestCase):
|
|||
one_hour_ago = timezone_now() - datetime.timedelta(seconds=3600)
|
||||
cutoff = time.mktime(one_hour_ago.timetuple())
|
||||
|
||||
flush_per_request_caches()
|
||||
|
||||
# When this test is run in isolation, one additional query is run which
|
||||
# is equivalent to
|
||||
# ContentType.objects.get(app_label='zerver', model='userprofile')
|
||||
|
|
|
@ -32,7 +32,6 @@ from zerver.models import (
|
|||
UserMessage,
|
||||
UserPresence,
|
||||
UserProfile,
|
||||
flush_per_request_caches,
|
||||
get_client,
|
||||
get_realm,
|
||||
get_stream,
|
||||
|
@ -1248,7 +1247,6 @@ class FetchQueriesTest(ZulipTestCase):
|
|||
|
||||
self.login_user(user)
|
||||
|
||||
flush_per_request_caches()
|
||||
with self.assert_database_query_count(39):
|
||||
with mock.patch("zerver.lib.events.always_want") as want_mock:
|
||||
fetch_initial_state_data(user)
|
||||
|
@ -1298,7 +1296,6 @@ class FetchQueriesTest(ZulipTestCase):
|
|||
|
||||
for event_type in sorted(wanted_event_types):
|
||||
count = expected_counts[event_type]
|
||||
flush_per_request_caches()
|
||||
with self.assert_database_query_count(count):
|
||||
if event_type == "update_message_flags":
|
||||
event_types = ["update_message_flags", "message"]
|
||||
|
|
|
@ -29,7 +29,6 @@ from zerver.models import (
|
|||
Realm,
|
||||
UserActivity,
|
||||
UserProfile,
|
||||
flush_per_request_caches,
|
||||
get_realm,
|
||||
get_stream,
|
||||
get_system_bot,
|
||||
|
@ -246,7 +245,6 @@ class HomeTest(ZulipTestCase):
|
|||
self.client_post("/json/bots", bot_info)
|
||||
|
||||
# Verify succeeds once logged-in
|
||||
flush_per_request_caches()
|
||||
with self.assert_database_query_count(49):
|
||||
with patch("zerver.lib.cache.cache_set") as cache_mock:
|
||||
result = self._get_home_page(stream="Denmark")
|
||||
|
@ -302,7 +300,6 @@ class HomeTest(ZulipTestCase):
|
|||
self.login("hamlet")
|
||||
|
||||
# Verify succeeds once logged-in
|
||||
flush_per_request_caches()
|
||||
with queries_captured():
|
||||
with patch("zerver.lib.cache.cache_set"):
|
||||
result = self._get_home_page(stream="Denmark")
|
||||
|
@ -436,7 +433,6 @@ class HomeTest(ZulipTestCase):
|
|||
def test_num_queries_for_realm_admin(self) -> None:
|
||||
# Verify number of queries for Realm admin isn't much higher than for normal users.
|
||||
self.login("iago")
|
||||
flush_per_request_caches()
|
||||
with self.assert_database_query_count(50):
|
||||
with patch("zerver.lib.cache.cache_set") as cache_mock:
|
||||
result = self._get_home_page()
|
||||
|
@ -468,7 +464,6 @@ class HomeTest(ZulipTestCase):
|
|||
self._get_home_page()
|
||||
|
||||
# Then for the second page load, measure the number of queries.
|
||||
flush_per_request_caches()
|
||||
with self.assert_database_query_count(44):
|
||||
result = self._get_home_page()
|
||||
|
||||
|
|
|
@ -176,7 +176,6 @@ class MessageDictTest(ZulipTestCase):
|
|||
num_ids = len(ids)
|
||||
self.assertTrue(num_ids >= 600)
|
||||
|
||||
flush_per_request_caches()
|
||||
with self.assert_database_query_count(7):
|
||||
rows = list(MessageDict.get_raw_db_rows(ids))
|
||||
|
||||
|
|
|
@ -289,13 +289,14 @@ class EditMessageTest(EditMessageTestCase):
|
|||
# Check number of queries performed
|
||||
# 1 query for realm_id per message = 3
|
||||
# 1 query each for reactions & submessage for all messages = 2
|
||||
with self.assert_database_query_count(5):
|
||||
# 1 query for linkifiers
|
||||
# 1 query for display recipients
|
||||
with self.assert_database_query_count(7):
|
||||
MessageDict.to_dict_uncached(messages)
|
||||
|
||||
realm_id = 2 # Fetched from stream object
|
||||
# Check number of queries performed with realm_id
|
||||
# 1 query each for reactions & submessage for all messages = 2
|
||||
with self.assert_database_query_count(2):
|
||||
with self.assert_database_query_count(3):
|
||||
MessageDict.to_dict_uncached(messages, realm_id)
|
||||
|
||||
def test_save_message(self) -> None:
|
||||
|
@ -1374,7 +1375,7 @@ class EditMessageTest(EditMessageTestCase):
|
|||
# state + 1/user with a UserTopic row for the events data)
|
||||
# beyond what is typical were there not UserTopic records to
|
||||
# update. Ideally, we'd eliminate the per-user component.
|
||||
with self.assert_database_query_count(21):
|
||||
with self.assert_database_query_count(22):
|
||||
check_update_message(
|
||||
user_profile=hamlet,
|
||||
message_id=message_id,
|
||||
|
@ -1471,7 +1472,7 @@ class EditMessageTest(EditMessageTestCase):
|
|||
set_topic_visibility_policy(desdemona, muted_topics, UserTopic.VisibilityPolicy.MUTED)
|
||||
set_topic_visibility_policy(cordelia, muted_topics, UserTopic.VisibilityPolicy.MUTED)
|
||||
|
||||
with self.assert_database_query_count(30):
|
||||
with self.assert_database_query_count(31):
|
||||
check_update_message(
|
||||
user_profile=desdemona,
|
||||
message_id=message_id,
|
||||
|
@ -1502,7 +1503,7 @@ class EditMessageTest(EditMessageTestCase):
|
|||
set_topic_visibility_policy(desdemona, muted_topics, UserTopic.VisibilityPolicy.MUTED)
|
||||
set_topic_visibility_policy(cordelia, muted_topics, UserTopic.VisibilityPolicy.MUTED)
|
||||
|
||||
with self.assert_database_query_count(35):
|
||||
with self.assert_database_query_count(36):
|
||||
check_update_message(
|
||||
user_profile=desdemona,
|
||||
message_id=message_id,
|
||||
|
@ -1535,7 +1536,7 @@ class EditMessageTest(EditMessageTestCase):
|
|||
set_topic_visibility_policy(desdemona, muted_topics, UserTopic.VisibilityPolicy.MUTED)
|
||||
set_topic_visibility_policy(cordelia, muted_topics, UserTopic.VisibilityPolicy.MUTED)
|
||||
|
||||
with self.assert_database_query_count(30):
|
||||
with self.assert_database_query_count(31):
|
||||
check_update_message(
|
||||
user_profile=desdemona,
|
||||
message_id=message_id,
|
||||
|
@ -1558,7 +1559,7 @@ class EditMessageTest(EditMessageTestCase):
|
|||
second_message_id = self.send_stream_message(
|
||||
hamlet, stream_name, topic_name="changed topic name", content="Second message"
|
||||
)
|
||||
with self.assert_database_query_count(26):
|
||||
with self.assert_database_query_count(27):
|
||||
check_update_message(
|
||||
user_profile=desdemona,
|
||||
message_id=second_message_id,
|
||||
|
@ -1657,7 +1658,7 @@ class EditMessageTest(EditMessageTestCase):
|
|||
users_to_be_notified_via_muted_topics_event.append(user_topic.user_profile_id)
|
||||
|
||||
change_all_topic_name = "Topic 1 edited"
|
||||
with self.assert_database_query_count(26):
|
||||
with self.assert_database_query_count(27):
|
||||
check_update_message(
|
||||
user_profile=hamlet,
|
||||
message_id=message_id,
|
||||
|
@ -3691,7 +3692,7 @@ class EditMessageTest(EditMessageTestCase):
|
|||
"iago", "test move stream", "new stream", "test"
|
||||
)
|
||||
|
||||
with self.assert_database_query_count(56), self.assert_memcached_count(13):
|
||||
with self.assert_database_query_count(57), self.assert_memcached_count(14):
|
||||
result = self.client_patch(
|
||||
f"/json/messages/{msg_id}",
|
||||
{
|
||||
|
|
|
@ -77,7 +77,6 @@ from zerver.models import (
|
|||
Subscription,
|
||||
UserMessage,
|
||||
UserProfile,
|
||||
flush_per_request_caches,
|
||||
get_realm,
|
||||
get_stream,
|
||||
get_system_bot,
|
||||
|
@ -923,8 +922,7 @@ class LoginTest(ZulipTestCase):
|
|||
content="test message",
|
||||
)
|
||||
|
||||
# Clear all the caches.
|
||||
flush_per_request_caches()
|
||||
# Clear the ContentType cache.
|
||||
ContentType.objects.clear_cache()
|
||||
|
||||
# Ensure the number of queries we make is not O(streams)
|
||||
|
|
|
@ -102,7 +102,6 @@ from zerver.models import (
|
|||
UserMessage,
|
||||
UserProfile,
|
||||
active_non_guest_user_ids,
|
||||
flush_per_request_caches,
|
||||
get_default_stream_groups,
|
||||
get_realm,
|
||||
get_stream,
|
||||
|
@ -4625,7 +4624,6 @@ class SubscriptionAPITest(ZulipTestCase):
|
|||
user2 = self.example_user("iago")
|
||||
realm = get_realm("zulip")
|
||||
streams_to_sub = ["multi_user_stream"]
|
||||
flush_per_request_caches()
|
||||
with self.capture_send_event_calls(expected_num_events=5) as events:
|
||||
with self.assert_database_query_count(37):
|
||||
self.common_subscribe_to_streams(
|
||||
|
|
Loading…
Reference in New Issue