mirror of
https://github.com/django-components/django-components.git
synced 2025-08-29 10:24:05 +00:00
feat: benchmarking (#999)
* feat: add benchmarking dashboard, CI hook on PR, and store lifetime results * refactor: change python env to 3.13 in benchmarks * refactor: add verbosity, use 3.11 for benchmarking * fix: OSError: [Errno 7] Argument list too long * refactor: add debug statements * refactor: remove extraneous -e * refactor: fix tests and linter errors * fix: track main package in coverage * refactor: fix test coverage testing * refactor: fix repo owner name in benchmark on pushing comment * refactor: add asv monkeypatch to docs workflow * refactor: temporarily allow building docs in forks * refactor: use py 3.13 for benchmarking * refactor: run only a single benchmark for PRs to speed them up * refactor: install asv in the docs build workflow * refactor: use hatch docs env to generate benhcmarks in docs CI * refactor: more trying * refactor: move tests * Add benchmark results for 0.137 * Trigger Build * Add benchmark results for 0.138 * refactor: set constant machine name when benchmarking * Add benchmark results for 0.139 * refactor: fix issue with paths too long * Add benchmark results for 0.140 * docs: update comment * refactor: remove test benchmarking data * refactor: fix comment * refactor: allow the benchmark workflow to write to PRs * refactor: use personal access token to set up the PR benchmark bot * refactor: split the benchmark PR flow into two to make it work with PRs from forks * refactor: update deprecated actions/upload-artifact@v3 to v4 * refactor: fix missing directory in benchmarking workflow * refactor: fix triggering of second workflow * refactor: fix workflow finally? * docs: add comments to cut-offs and direct people to benchmarks PR --------- Co-authored-by: github-actions <github-actions@github.com>
This commit is contained in:
parent
dcd4203eea
commit
f36581ed86
90 changed files with 40817 additions and 443 deletions
|
@ -19,14 +19,50 @@ response_stash = None
|
|||
middleware = ComponentDependencyMiddleware(get_response=lambda _: response_stash)
|
||||
|
||||
|
||||
class GenIdPatcher:
|
||||
def __init__(self):
|
||||
self._gen_id_count = 10599485
|
||||
|
||||
# Mock the `generate` function used inside `gen_id` so it returns deterministic IDs
|
||||
def start(self):
|
||||
# Random number so that the generated IDs are "hex-looking", e.g. a1bc3d
|
||||
self._gen_id_count = 10599485
|
||||
|
||||
def mock_gen_id(*args, **kwargs):
|
||||
self._gen_id_count += 1
|
||||
return hex(self._gen_id_count)[2:]
|
||||
|
||||
self._gen_id_patch = patch("django_components.util.misc.generate", side_effect=mock_gen_id)
|
||||
self._gen_id_patch.start()
|
||||
|
||||
def stop(self):
|
||||
self._gen_id_patch.stop()
|
||||
self._gen_id_count = 10599485
|
||||
|
||||
|
||||
class CsrfTokenPatcher:
|
||||
def __init__(self):
|
||||
self._csrf_token = "predictabletoken"
|
||||
|
||||
def start(self):
|
||||
self._csrf_token_patch = patch("django.middleware.csrf.get_token", return_value=self._csrf_token)
|
||||
self._csrf_token_patch.start()
|
||||
|
||||
def stop(self):
|
||||
self._csrf_token_patch.stop()
|
||||
|
||||
|
||||
class BaseTestCase(SimpleTestCase):
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self._start_gen_id_patch()
|
||||
self.gen_id_patcher = GenIdPatcher()
|
||||
self.gen_id_patcher.start()
|
||||
self.csrf_token_patcher = CsrfTokenPatcher()
|
||||
self.csrf_token_patcher.start()
|
||||
|
||||
def tearDown(self):
|
||||
self._stop_gen_id_patch()
|
||||
|
||||
self.gen_id_patcher.stop()
|
||||
self.csrf_token_patcher.stop()
|
||||
super().tearDown()
|
||||
registry.clear()
|
||||
|
||||
|
@ -42,22 +78,6 @@ class BaseTestCase(SimpleTestCase):
|
|||
from django_components.component import component_node_subclasses_by_name
|
||||
component_node_subclasses_by_name.clear()
|
||||
|
||||
# Mock the `generate` function used inside `gen_id` so it returns deterministic IDs
|
||||
def _start_gen_id_patch(self):
|
||||
# Random number so that the generated IDs are "hex-looking", e.g. a1bc3d
|
||||
self._gen_id_count = 10599485
|
||||
|
||||
def mock_gen_id(*args, **kwargs):
|
||||
self._gen_id_count += 1
|
||||
return hex(self._gen_id_count)[2:]
|
||||
|
||||
self._gen_id_patch = patch("django_components.util.misc.generate", side_effect=mock_gen_id)
|
||||
self._gen_id_patch.start()
|
||||
|
||||
def _stop_gen_id_patch(self):
|
||||
self._gen_id_patch.stop()
|
||||
self._gen_id_count = 10599485
|
||||
|
||||
|
||||
request = Mock()
|
||||
mock_template = Mock()
|
||||
|
@ -179,8 +199,8 @@ def parametrize_context_behavior(cases: List[ContextBehParam], settings: Optiona
|
|||
engine.engine.template_loaders[0].reset()
|
||||
|
||||
# Reset gen_id
|
||||
self._stop_gen_id_patch()
|
||||
self._start_gen_id_patch()
|
||||
self.gen_id_patcher.stop()
|
||||
self.gen_id_patcher.start()
|
||||
|
||||
# Reset template cache
|
||||
from django_components.cache import component_media_cache, template_cache
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue