InvokeAI/tests/test_profiler.py

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

54 lines
1.7 KiB
Python
Raw Permalink Normal View History

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