| import re | |
| from logging import Logger | |
| from pathlib import Path | |
| from tempfile import TemporaryDirectory | |
| import pytest | |
| from invokeai.app.util.profiler import Profiler | |
| def test_profiler_starts(): | |
| with TemporaryDirectory() as tempdir: | |
| profiler = Profiler(logger=Logger("test_profiler"), output_dir=Path(tempdir)) | |
| assert not profiler._profiler | |
| assert not profiler.profile_id | |
| profiler.start("test") | |
| assert profiler._profiler | |
| assert profiler.profile_id == "test" | |
| profiler.stop() | |
| assert not profiler._profiler | |
| assert not profiler.profile_id | |
| profiler.start("test2") | |
| assert profiler._profiler | |
| assert profiler.profile_id == "test2" | |
| profiler.stop() | |
| def test_profiler_profiles(): | |
| with TemporaryDirectory() as tempdir: | |
| profiler = Profiler(logger=Logger("test_profiler"), output_dir=Path(tempdir)) | |
| profiler.start("test") | |
| for _ in range(1000000): | |
| pass | |
| profiler.stop() | |
| assert (Path(tempdir) / "test.prof").exists() | |
| def test_profiler_profiles_with_prefix(): | |
| with TemporaryDirectory() as tempdir: | |
| profiler = Profiler(logger=Logger("test_profiler"), output_dir=Path(tempdir), prefix="prefix") | |
| profiler.start("test") | |
| for _ in range(1000000): | |
| pass | |
| profiler.stop() | |
| assert (Path(tempdir) / "prefix_test.prof").exists() | |
| def test_profile_fails_if_not_set_up(): | |
| with TemporaryDirectory() as tempdir: | |
| profiler = Profiler(logger=Logger("test_profiler"), output_dir=Path(tempdir)) | |
| match = re.escape("Profiler not initialized. Call start() first.") | |
| with pytest.raises(RuntimeError, match=match): | |
| profiler.stop() | |