mirror of
https://github.com/zulip/zulip.git
synced 2025-10-25 00:53:56 +00:00
profile_request: Replace MockRequest with HostRequestMock.
Since previously we use a custom mock request that doesn't inherit HttpRequest, there are some typing problems when we use it.
This commit is contained in:
@@ -297,6 +297,7 @@ class HostRequestMock(HttpRequest):
|
|||||||
client_name: Optional[str] = None,
|
client_name: Optional[str] = None,
|
||||||
meta_data: Optional[Dict[str, Any]] = None,
|
meta_data: Optional[Dict[str, Any]] = None,
|
||||||
tornado_handler: Optional[AsyncDjangoHandler] = DummyHandler(),
|
tornado_handler: Optional[AsyncDjangoHandler] = DummyHandler(),
|
||||||
|
path: str = "",
|
||||||
) -> None:
|
) -> None:
|
||||||
self.host = host
|
self.host = host
|
||||||
self.GET = QueryDict(mutable=True)
|
self.GET = QueryDict(mutable=True)
|
||||||
@@ -315,7 +316,7 @@ class HostRequestMock(HttpRequest):
|
|||||||
self.META = {"PATH_INFO": "test"}
|
self.META = {"PATH_INFO": "test"}
|
||||||
else:
|
else:
|
||||||
self.META = meta_data
|
self.META = meta_data
|
||||||
self.path = ""
|
self.path = path
|
||||||
self.user = user_profile
|
self.user = user_profile
|
||||||
self._body = b""
|
self._body = b""
|
||||||
self.content_type = ""
|
self.content_type = ""
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
import cProfile
|
import cProfile
|
||||||
import logging
|
import logging
|
||||||
import tempfile
|
import tempfile
|
||||||
from os import path
|
from typing import Any
|
||||||
from typing import Any, Dict
|
|
||||||
|
|
||||||
from django.contrib.sessions.backends.base import SessionBase
|
from django.contrib.sessions.backends.base import SessionBase
|
||||||
from django.core.management.base import CommandParser
|
from django.core.management.base import CommandParser
|
||||||
@@ -12,39 +11,17 @@ from zerver.lib.management import ZulipBaseCommand
|
|||||||
from zerver.lib.request import get_request_notes
|
from zerver.lib.request import get_request_notes
|
||||||
from zerver.lib.test_helpers import HostRequestMock
|
from zerver.lib.test_helpers import HostRequestMock
|
||||||
from zerver.middleware import LogRequests
|
from zerver.middleware import LogRequests
|
||||||
from zerver.models import UserMessage, UserProfile
|
from zerver.models import UserMessage
|
||||||
from zerver.views.message_fetch import get_messages_backend
|
from zerver.views.message_fetch import get_messages_backend
|
||||||
|
|
||||||
request_logger = LogRequests()
|
request_logger = LogRequests()
|
||||||
|
|
||||||
|
|
||||||
class MockSession:
|
class MockSession(SessionBase):
|
||||||
def __init__(self) -> None:
|
def __init__(self) -> None:
|
||||||
self.modified = False
|
self.modified = False
|
||||||
|
|
||||||
|
|
||||||
class MockRequest(HttpRequest):
|
|
||||||
def __init__(self, user: UserProfile) -> None:
|
|
||||||
self.user = user
|
|
||||||
self.path = "/"
|
|
||||||
self.method = "POST"
|
|
||||||
self.META = {"REMOTE_ADDR": "127.0.0.1"}
|
|
||||||
anchor = (
|
|
||||||
UserMessage.objects.filter(user_profile=self.user).order_by("-message")[200].message_id
|
|
||||||
)
|
|
||||||
self.REQUEST = {
|
|
||||||
"anchor": anchor,
|
|
||||||
"num_before": 1200,
|
|
||||||
"num_after": 200,
|
|
||||||
}
|
|
||||||
self.POST = self.REQUEST
|
|
||||||
self.GET: Dict[Any, Any] = {}
|
|
||||||
self.session = MockSession()
|
|
||||||
|
|
||||||
def get_full_path(self) -> str:
|
|
||||||
return self.path
|
|
||||||
|
|
||||||
|
|
||||||
def profile_request(request: HttpRequest) -> HttpResponse:
|
def profile_request(request: HttpRequest) -> HttpResponse:
|
||||||
request_logger.process_request(request)
|
request_logger.process_request(request)
|
||||||
prof = cProfile.Profile()
|
prof = cProfile.Profile()
|
||||||
@@ -66,4 +43,18 @@ class Command(ZulipBaseCommand):
|
|||||||
def handle(self, *args: Any, **options: Any) -> None:
|
def handle(self, *args: Any, **options: Any) -> None:
|
||||||
realm = self.get_realm(options)
|
realm = self.get_realm(options)
|
||||||
user = self.get_user(options["email"], realm)
|
user = self.get_user(options["email"], realm)
|
||||||
profile_request(MockRequest(user))
|
anchor = UserMessage.objects.filter(user_profile=user).order_by("-message")[200].message_id
|
||||||
|
mock_request = HostRequestMock(
|
||||||
|
post_data={
|
||||||
|
"anchor": anchor,
|
||||||
|
"num_before": 1200,
|
||||||
|
"num_after": 200,
|
||||||
|
},
|
||||||
|
user_profile=user,
|
||||||
|
meta_data={"REMOTE_ADDR": "127.0.0.1"},
|
||||||
|
path="/",
|
||||||
|
)
|
||||||
|
mock_request.session = MockSession()
|
||||||
|
get_request_notes(mock_request).log_data = None
|
||||||
|
|
||||||
|
profile_request(mock_request)
|
||||||
|
|||||||
Reference in New Issue
Block a user