|
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() |
|
|