Merge ~cgrabowski/maas:backport-perftests-split-to-3.2 into maas:3.2

Proposed by Christian Grabowski
Status: Merged
Approved by: Christian Grabowski
Approved revision: ee5c222dae442633edd5eaed0ce40fc2619bc375
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~cgrabowski/maas:backport-perftests-split-to-3.2
Merge into: maas:3.2
Diff against target: 258 lines (+44/-49)
8 files modified
Makefile (+2/-2)
dev/null (+0/-9)
src/maasperf/tests/conftest.py (+41/-0)
src/maasperf/tests/maasserver/models/__init__.py (+0/-0)
src/maasperf/tests/maasserver/websockets/__init__.py (+0/-0)
src/maasserver/conftest.py (+0/-30)
src/maastesting/perftest.py (+1/-2)
src/maastesting/scripts.py (+0/-6)
Reviewer Review Type Date Requested Status
MAAS Lander Approve
Alexsander de Souza Approve
Review via email: mp+424321@code.launchpad.net

Commit message

move performance tests so they're easier to select/skip for runners

    Drop the marker for performance tests and move them under src/maasperf.
    bin/pytest doesn't look there by default, while the bin/test.perf runner only runs tests under that tree.

    (cherry picked from commit fa5728e6ad5e902f01bfc2d0cd85e021c6b85bd7)

To post a comment you must log in.
Revision history for this message
Alexsander de Souza (alexsander-souza) wrote :

+1

review: Approve
Revision history for this message
MAAS Lander (maas-lander) wrote :

UNIT TESTS
-b backport-perftests-split-to-3.2 lp:~cgrabowski/maas/+git/maas into -b 3.2 lp:~maas-committers/maas

STATUS: FAILED
LOG: http://maas-ci.internal:8080/job/maas/job/branch-tester/12896/console
COMMIT: cb1204713c28325bb53a4f1be1012c22fb8394ed

review: Needs Fixing
Revision history for this message
MAAS Lander (maas-lander) wrote :

UNIT TESTS
-b backport-perftests-split-to-3.2 lp:~cgrabowski/maas/+git/maas into -b 3.2 lp:~maas-committers/maas

STATUS: SUCCESS
COMMIT: ee5c222dae442633edd5eaed0ce40fc2619bc375

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
diff --git a/Makefile b/Makefile
index 8aba789..ea62f89 100644
--- a/Makefile
+++ b/Makefile
@@ -139,13 +139,13 @@ test-py: bin/test.parallel bin/subunit-1to2 bin/subunit2junitxml bin/subunit2pyu
139test-perf: bin/test.perf139test-perf: bin/test.perf
140 GIT_BRANCH=$(shell git rev-parse --abbrev-ref HEAD) \140 GIT_BRANCH=$(shell git rev-parse --abbrev-ref HEAD) \
141 GIT_HASH=$(shell git rev-parse HEAD) \141 GIT_HASH=$(shell git rev-parse HEAD) \
142 find . -type d -name perf | xargs bin/test.perf142 bin/test.perf
143.PHONY: test-perf143.PHONY: test-perf
144144
145test-perf-quiet: bin/test.perf145test-perf-quiet: bin/test.perf
146 GIT_BRANCH=$(shell git rev-parse --abbrev-ref HEAD) \146 GIT_BRANCH=$(shell git rev-parse --abbrev-ref HEAD) \
147 GIT_HASH=$(shell git rev-parse HEAD) \147 GIT_HASH=$(shell git rev-parse HEAD) \
148 find . -type d -name perf | xargs bin/test.perf -q --disable-warnings --show-capture=no --no-header --no-summary148 bin/test.perf -q --disable-warnings --show-capture=no --no-header --no-summary
149.PHONY: test-perf-quiet149.PHONY: test-perf-quiet
150150
151update-initial-sql: bin/database bin/maas-region cleandb151update-initial-sql: bin/database bin/maas-region cleandb
diff --git a/conftest.py b/conftest.py
152deleted file mode 100644152deleted file mode 100644
index 9029b08..0000000
--- a/conftest.py
+++ /dev/null
@@ -1,20 +0,0 @@
1import pytest
2
3
4def pytest_addoption(parser):
5 parser.addoption(
6 "--perf",
7 action="store_true",
8 default=False,
9 help="run performance tests",
10 )
11
12
13def pytest_collection_modifyitems(config, items):
14 if config.getoption("--perf"):
15 # We want to run the performance tests
16 return
17 skip_perf = pytest.mark.skip(reason="need --perf option to run")
18 for item in items:
19 if "perftest" in item.keywords:
20 item.add_marker(skip_perf)
diff --git a/src/maascli/perf/__init__.py b/src/maasperf/__init__.py
21similarity index 100%0similarity index 100%
22rename from src/maascli/perf/__init__.py1rename from src/maascli/perf/__init__.py
23rename to src/maasperf/__init__.py2rename to src/maasperf/__init__.py
diff --git a/src/maasserver/api/perf/__init__.py b/src/maasperf/tests/__init__.py
24similarity index 100%3similarity index 100%
25rename from src/maasserver/api/perf/__init__.py4rename from src/maasserver/api/perf/__init__.py
26rename to src/maasperf/tests/__init__.py5rename to src/maasperf/tests/__init__.py
diff --git a/src/maasserver/models/perf/__init__.py b/src/maasperf/tests/cli/__init__.py
27similarity index 100%6similarity index 100%
28rename from src/maasserver/models/perf/__init__.py7rename from src/maasserver/models/perf/__init__.py
29rename to src/maasperf/tests/cli/__init__.py8rename to src/maasperf/tests/cli/__init__.py
diff --git a/src/maascli/perf/conftest.py b/src/maasperf/tests/cli/conftest.py
30similarity index 100%9similarity index 100%
31rename from src/maascli/perf/conftest.py10rename from src/maascli/perf/conftest.py
32rename to src/maasperf/tests/cli/conftest.py11rename to src/maasperf/tests/cli/conftest.py
diff --git a/src/maascli/perf/test_machines.py b/src/maasperf/tests/cli/test_machines.py
33similarity index 100%12similarity index 100%
34rename from src/maascli/perf/test_machines.py13rename from src/maascli/perf/test_machines.py
35rename to src/maasperf/tests/cli/test_machines.py14rename to src/maasperf/tests/cli/test_machines.py
diff --git a/src/maasperf/tests/conftest.py b/src/maasperf/tests/conftest.py
36new file mode 10064415new file mode 100644
index 0000000..f44495e
--- /dev/null
+++ b/src/maasperf/tests/conftest.py
@@ -0,0 +1,41 @@
1# Copyright 2022 Canonical Ltd. This software is licensed under the
2# GNU Affero General Public License version 3 (see the file LICENSE).
3
4from pytest import fixture
5
6from maasserver.models.user import get_auth_tokens
7from maasserver.testing.factory import factory as maasserver_factory
8from maasserver.testing.testclient import MAASSensibleOAuthClient
9
10
11# override pytest-django's db setup
12@fixture(scope="session")
13def django_db_setup():
14 pass
15
16
17@fixture(scope="session")
18def factory():
19 return maasserver_factory
20
21
22@fixture()
23def admin(factory):
24 return factory.make_admin()
25
26
27@fixture()
28def maas_user(factory):
29 return factory.make_User()
30
31
32@fixture()
33def api_client(maas_user):
34 return MAASSensibleOAuthClient(
35 user=maas_user, token=get_auth_tokens(maas_user)[0]
36 )
37
38
39@fixture()
40def admin_api_client(admin):
41 return MAASSensibleOAuthClient(user=admin, token=get_auth_tokens(admin)[0])
diff --git a/src/maasserver/websockets/handlers/perf/__init__.py b/src/maasperf/tests/maasserver/api/__init__.py
0similarity index 100%42similarity index 100%
1rename from src/maasserver/websockets/handlers/perf/__init__.py43rename from src/maasserver/websockets/handlers/perf/__init__.py
2rename to src/maasperf/tests/maasserver/api/__init__.py44rename to src/maasperf/tests/maasserver/api/__init__.py
diff --git a/src/maasserver/api/perf/test_machines.py b/src/maasperf/tests/maasserver/api/test_machines.py
3similarity index 100%45similarity index 100%
4rename from src/maasserver/api/perf/test_machines.py46rename from src/maasserver/api/perf/test_machines.py
5rename to src/maasperf/tests/maasserver/api/test_machines.py47rename to src/maasperf/tests/maasserver/api/test_machines.py
diff --git a/src/maasperf/tests/maasserver/models/__init__.py b/src/maasperf/tests/maasserver/models/__init__.py
6new file mode 10064448new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/maasperf/tests/maasserver/models/__init__.py
diff --git a/src/maasserver/models/perf/conftest.py b/src/maasperf/tests/maasserver/models/conftest.py
7similarity index 100%49similarity index 100%
8rename from src/maasserver/models/perf/conftest.py50rename from src/maasserver/models/perf/conftest.py
9rename to src/maasperf/tests/maasserver/models/conftest.py51rename to src/maasperf/tests/maasserver/models/conftest.py
diff --git a/src/maasserver/models/perf/test_machine.py b/src/maasperf/tests/maasserver/models/test_machine.py
10similarity index 100%52similarity index 100%
11rename from src/maasserver/models/perf/test_machine.py53rename from src/maasserver/models/perf/test_machine.py
12rename to src/maasperf/tests/maasserver/models/test_machine.py54rename to src/maasperf/tests/maasserver/models/test_machine.py
diff --git a/src/maasperf/tests/maasserver/websockets/__init__.py b/src/maasperf/tests/maasserver/websockets/__init__.py
13new file mode 10064455new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/maasperf/tests/maasserver/websockets/__init__.py
diff --git a/src/maasserver/websockets/handlers/perf/conftest.py b/src/maasperf/tests/maasserver/websockets/conftest.py
14similarity index 100%56similarity index 100%
15rename from src/maasserver/websockets/handlers/perf/conftest.py57rename from src/maasserver/websockets/handlers/perf/conftest.py
16rename to src/maasperf/tests/maasserver/websockets/conftest.py58rename to src/maasperf/tests/maasserver/websockets/conftest.py
diff --git a/src/maasserver/websockets/handlers/perf/test_machines.py b/src/maasperf/tests/maasserver/websockets/test_machines.py
17similarity index 100%59similarity index 100%
18rename from src/maasserver/websockets/handlers/perf/test_machines.py60rename from src/maasserver/websockets/handlers/perf/test_machines.py
19rename to src/maasperf/tests/maasserver/websockets/test_machines.py61rename to src/maasperf/tests/maasserver/websockets/test_machines.py
diff --git a/src/maasserver/conftest.py b/src/maasserver/conftest.py
index f44495e..688ad7c 100644
--- a/src/maasserver/conftest.py
+++ b/src/maasserver/conftest.py
@@ -3,39 +3,9 @@
33
4from pytest import fixture4from pytest import fixture
55
6from maasserver.models.user import get_auth_tokens
7from maasserver.testing.factory import factory as maasserver_factory6from maasserver.testing.factory import factory as maasserver_factory
8from maasserver.testing.testclient import MAASSensibleOAuthClient
9
10
11# override pytest-django's db setup
12@fixture(scope="session")
13def django_db_setup():
14 pass
157
168
17@fixture(scope="session")9@fixture(scope="session")
18def factory():10def factory():
19 return maasserver_factory11 return maasserver_factory
20
21
22@fixture()
23def admin(factory):
24 return factory.make_admin()
25
26
27@fixture()
28def maas_user(factory):
29 return factory.make_User()
30
31
32@fixture()
33def api_client(maas_user):
34 return MAASSensibleOAuthClient(
35 user=maas_user, token=get_auth_tokens(maas_user)[0]
36 )
37
38
39@fixture()
40def admin_api_client(admin):
41 return MAASSensibleOAuthClient(user=admin, token=get_auth_tokens(admin)[0])
diff --git a/src/maastesting/perftest.py b/src/maastesting/perftest.py
index 46ddb8a..46ca79d 100644
--- a/src/maastesting/perftest.py
+++ b/src/maastesting/perftest.py
@@ -64,7 +64,6 @@ class PerfTester:
64def perf_test(commit_transaction=False, db_only=False):64def perf_test(commit_transaction=False, db_only=False):
65 def inner(fn):65 def inner(fn):
66 @wraps(fn)66 @wraps(fn)
67 @mark.perftest
68 @mark.django_db67 @mark.django_db
69 def wrapper(*args, **kwargs):68 def wrapper(*args, **kwargs):
70 from django.db import transaction69 from django.db import transaction
@@ -112,7 +111,7 @@ def run_perf_tests(env):
112 perf_tester = PerfTester(env.get("GIT_BRANCH"), env.get("GIT_HASH"))111 perf_tester = PerfTester(env.get("GIT_BRANCH"), env.get("GIT_HASH"))
113112
114 pytest_main(113 pytest_main(
115 args=["--perf", "-m", "perftest", "--reuse-db"] + cmd_args,114 args=["--reuse-db", "src/maasperf"] + cmd_args,
116 )115 )
117 finally:116 finally:
118 perf_test_finish(env.get("OUTPUT_FILE"))117 perf_test_finish(env.get("OUTPUT_FILE"))
diff --git a/src/maastesting/scripts.py b/src/maastesting/scripts.py
index afdee65..18acde6 100644
--- a/src/maastesting/scripts.py
+++ b/src/maastesting/scripts.py
@@ -53,8 +53,6 @@ def run_region():
53 "--cover-branches",53 "--cover-branches",
54 # exclude pytest tests54 # exclude pytest tests
55 "--exclude-dir-file=src/maastesting/pytest.dirs",55 "--exclude-dir-file=src/maastesting/pytest.dirs",
56 # exclude perf tests
57 "--exclude=perf",
58 # Reduce the logging level to INFO here as56 # Reduce the logging level to INFO here as
59 # DebuggingLoggerMiddleware logs the content of all the57 # DebuggingLoggerMiddleware logs the content of all the
60 # requests at DEBUG level: we don't want this in the58 # requests at DEBUG level: we don't want this in the
@@ -99,8 +97,6 @@ def run_region_legacy():
99 "--cover-branches",97 "--cover-branches",
100 # exclude pytest tests98 # exclude pytest tests
101 "--exclude-dir-file=src/maastesting/pytest.dirs",99 "--exclude-dir-file=src/maastesting/pytest.dirs",
102 # exclude perf tests
103 "--exclude=perf",
104 # Reduce the logging level to INFO here as DebuggingLoggerMiddleware100 # Reduce the logging level to INFO here as DebuggingLoggerMiddleware
105 # logs the content of all the requests at DEBUG level: we don't want101 # logs the content of all the requests at DEBUG level: we don't want
106 # this in the tests as it's too verbose.102 # this in the tests as it's too verbose.
@@ -129,8 +125,6 @@ def run_rack():
129 "--cover-branches",125 "--cover-branches",
130 # exclude pytest tests126 # exclude pytest tests
131 "--exclude-dir-file=src/maastesting/pytest.dirs",127 "--exclude-dir-file=src/maastesting/pytest.dirs",
132 # exclude perf tests
133 "--exclude=perf",
134 ]128 ]
135 inject_test_options(options)129 inject_test_options(options)
136 update_environ()130 update_environ()
diff --git a/src/maastesting/tests/conftest.py b/src/maastesting/tests/conftest.py
137deleted file mode 100644131deleted file mode 100644
index 83dd6e4..0000000
--- a/src/maastesting/tests/conftest.py
+++ /dev/null
@@ -1,9 +0,0 @@
1# Copyright 2022 Canonical Ltd. This software is licensed under the
2# GNU Affero General Public License version 3 (see the file LICENSE).
3
4from pytest import fixture
5
6
7@fixture(scope="session")
8def django_db_setup():
9 pass

Subscribers

People subscribed via source and target branches