mirror of
https://github.com/facefusion/facefusion.git
synced 2026-09-17 04:55:26 +02:00
Session aware stores (#1235)
* session aware process manager via store creator * remove unused clear_session_id * restore original scopes * stateless test helpers * more updates * more updates * more updates * more updates --------- Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5.1
parent
5bc9c80c55
commit
c358ba7cf6
@@ -2,6 +2,7 @@ import os
|
||||
import tempfile
|
||||
|
||||
from facefusion.filesystem import are_images, create_directory, is_directory, is_file, remove_directory, resolve_file_paths
|
||||
from facefusion.session_context import resolve_local_id
|
||||
from facefusion.types import JobStatus
|
||||
|
||||
|
||||
@@ -10,7 +11,9 @@ def is_test_job_file(file_path : str, job_status : JobStatus) -> bool:
|
||||
|
||||
|
||||
def get_test_job_file(file_path : str, job_status : JobStatus) -> str:
|
||||
return os.path.join(get_test_jobs_directory(), job_status, file_path)
|
||||
jobs_path = os.path.join(get_test_jobs_directory(), resolve_local_id())
|
||||
|
||||
return os.path.join(jobs_path, job_status, file_path)
|
||||
|
||||
|
||||
def get_test_jobs_directory() -> str:
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
@@ -6,6 +7,7 @@ import pytest
|
||||
from facefusion import ffmpeg, ffmpeg_builder, process_manager
|
||||
from facefusion.download import conditional_download
|
||||
from facefusion.jobs.job_manager import clear_jobs, count_step_total, init_jobs
|
||||
from facefusion.session_context import resolve_local_id
|
||||
from .assert_helper import get_test_example_file, get_test_examples_directory, get_test_jobs_directory, get_test_output_path, is_test_job_file
|
||||
|
||||
|
||||
@@ -32,8 +34,10 @@ def before_all() -> None:
|
||||
|
||||
@pytest.fixture(scope = 'function', autouse = True)
|
||||
def before_each() -> None:
|
||||
jobs_path = os.path.join(get_test_jobs_directory(), resolve_local_id())
|
||||
|
||||
clear_jobs(get_test_jobs_directory())
|
||||
init_jobs(get_test_jobs_directory())
|
||||
init_jobs(jobs_path)
|
||||
|
||||
|
||||
def test_job_list() -> None:
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
@@ -6,6 +7,7 @@ import pytest
|
||||
from facefusion import ffmpeg, ffmpeg_builder, process_manager
|
||||
from facefusion.download import conditional_download
|
||||
from facefusion.jobs.job_manager import clear_jobs, init_jobs, move_job_file, set_steps_status
|
||||
from facefusion.session_context import resolve_local_id
|
||||
from .assert_helper import get_test_example_file, get_test_examples_directory, get_test_jobs_directory, get_test_output_path, is_test_output_file, prepare_test_output_directory
|
||||
|
||||
|
||||
@@ -32,8 +34,11 @@ def before_all() -> None:
|
||||
|
||||
@pytest.fixture(scope = 'function', autouse = True)
|
||||
def before_each() -> None:
|
||||
jobs_path = os.path.join(get_test_jobs_directory(), resolve_local_id())
|
||||
|
||||
clear_jobs(get_test_jobs_directory())
|
||||
init_jobs(get_test_jobs_directory())
|
||||
init_jobs(jobs_path)
|
||||
|
||||
prepare_test_output_directory()
|
||||
|
||||
|
||||
|
||||
@@ -1,4 +1,43 @@
|
||||
from facefusion.process_manager import end, is_pending, is_processing, is_stopping, set_process_state, start, stop
|
||||
import pytest
|
||||
|
||||
from facefusion.process_manager import clear_process_state, end, get_process_state, init_process_state, is_pending, is_processing, is_stopping, set_process_state, start, stop
|
||||
from facefusion.session_context import set_session_id
|
||||
|
||||
|
||||
@pytest.fixture(scope = 'function', autouse = True)
|
||||
def before_each() -> None:
|
||||
set_session_id('session-a')
|
||||
clear_process_state()
|
||||
set_session_id('session-b')
|
||||
clear_process_state()
|
||||
set_session_id('session-a')
|
||||
|
||||
|
||||
def test_init_process_state() -> None:
|
||||
assert get_process_state() is None
|
||||
|
||||
init_process_state()
|
||||
|
||||
assert get_process_state() == 'pending'
|
||||
|
||||
|
||||
def test_get_process_state() -> None:
|
||||
set_process_state('processing')
|
||||
set_session_id('session-b')
|
||||
set_process_state('stopping')
|
||||
|
||||
assert get_process_state() == 'stopping'
|
||||
|
||||
set_session_id('session-a')
|
||||
|
||||
assert get_process_state() == 'processing'
|
||||
|
||||
|
||||
def test_clear_process_state() -> None:
|
||||
set_process_state('processing')
|
||||
clear_process_state()
|
||||
|
||||
assert get_process_state() is None
|
||||
|
||||
|
||||
def test_start() -> None:
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
import pytest
|
||||
|
||||
from facefusion.session_context import get_session_id, resolve_local_id, set_session_id
|
||||
|
||||
|
||||
@pytest.fixture(scope = 'function', autouse = True)
|
||||
def before_each() -> None:
|
||||
set_session_id(resolve_local_id())
|
||||
|
||||
|
||||
def test_get_session_id() -> None:
|
||||
assert get_session_id() == resolve_local_id()
|
||||
|
||||
set_session_id('session-a')
|
||||
|
||||
assert get_session_id() == 'session-a'
|
||||
|
||||
|
||||
def test_resolve_local_id() -> None:
|
||||
assert resolve_local_id() == resolve_local_id()
|
||||
@@ -0,0 +1,64 @@
|
||||
from facefusion.store_creator import create_store, delete_content, get_content, has_content, init_content, set_content
|
||||
|
||||
|
||||
def test_create_store() -> None:
|
||||
store = create_store({ 'total': 0 })
|
||||
|
||||
assert store.get('__init__') == { 'total': 0 }
|
||||
assert store.get('content_set') == {}
|
||||
|
||||
|
||||
def test_init_content() -> None:
|
||||
store = create_store({ 'total': 0 })
|
||||
|
||||
init_content(store, 'session-a')
|
||||
|
||||
assert store.get('content_set').get('session-a') == { 'total': 0 }
|
||||
|
||||
|
||||
def test_has_content() -> None:
|
||||
store = create_store({ 'total': 0 })
|
||||
|
||||
assert has_content(store, 'session-a') is False
|
||||
|
||||
init_content(store, 'session-a')
|
||||
|
||||
assert has_content(store, 'session-a') is True
|
||||
assert has_content(store, 'session-b') is False
|
||||
|
||||
|
||||
def test_get_content() -> None:
|
||||
store = create_store({ 'total': 0 })
|
||||
|
||||
init_content(store, 'session-a')
|
||||
|
||||
assert get_content(store, 'session-a') == { 'total': 0 }
|
||||
assert get_content(store, 'session-b') is None
|
||||
|
||||
get_content(store, 'session-a')['total'] += 1
|
||||
|
||||
assert get_content(store, 'session-a') == { 'total': 1 }
|
||||
|
||||
|
||||
def test_set_content() -> None:
|
||||
store = create_store({ 'total': 0 })
|
||||
|
||||
set_content(store, 'session-a', { 'total': 3 })
|
||||
|
||||
assert get_content(store, 'session-a') == { 'total': 3 }
|
||||
assert has_content(store, 'session-b') is False
|
||||
|
||||
|
||||
def test_delete_content() -> None:
|
||||
store = create_store({ 'total': 0 })
|
||||
|
||||
init_content(store, 'session-a')
|
||||
init_content(store, 'session-b')
|
||||
delete_content(store, 'session-a')
|
||||
|
||||
assert list(store.get('content_set').keys()) == [ 'session-b' ]
|
||||
|
||||
delete_content(store, 'session-a')
|
||||
|
||||
assert list(store.get('content_set').keys()) == [ 'session-b' ]
|
||||
|
||||
Reference in New Issue
Block a user