Add settings and live sidebar counts
This commit is contained in:
parent
2a99edeec3
commit
a809bde16c
16 changed files with 696 additions and 51 deletions
|
|
@ -20,6 +20,7 @@ from repub.model import (
|
|||
Source,
|
||||
create_source,
|
||||
initialize_database,
|
||||
save_setting,
|
||||
)
|
||||
from repub.web import create_app, get_job_runtime, render_execution_logs, render_runs
|
||||
|
||||
|
|
@ -137,6 +138,68 @@ def test_job_runtime_run_now_writes_log_and_stats_and_marks_success(
|
|||
runtime.shutdown()
|
||||
|
||||
|
||||
def test_job_runtime_respects_max_concurrent_jobs_setting(tmp_path: Path) -> None:
|
||||
db_path = tmp_path / "max-concurrency.db"
|
||||
log_dir = tmp_path / "out" / "logs"
|
||||
initialize_database(db_path)
|
||||
save_setting("max_concurrent_jobs", 1)
|
||||
|
||||
with _slow_feed_server() as feed_url:
|
||||
first_source = create_source(
|
||||
name="First source",
|
||||
slug="first-source",
|
||||
source_type="feed",
|
||||
notes="",
|
||||
spider_arguments="",
|
||||
enabled=False,
|
||||
cron_minute="*/5",
|
||||
cron_hour="*",
|
||||
cron_day_of_month="*",
|
||||
cron_day_of_week="*",
|
||||
cron_month="*",
|
||||
feed_url=feed_url,
|
||||
)
|
||||
second_source = create_source(
|
||||
name="Second source",
|
||||
slug="second-source",
|
||||
source_type="feed",
|
||||
notes="",
|
||||
spider_arguments="",
|
||||
enabled=False,
|
||||
cron_minute="*/5",
|
||||
cron_hour="*",
|
||||
cron_day_of_month="*",
|
||||
cron_day_of_week="*",
|
||||
cron_month="*",
|
||||
feed_url=feed_url,
|
||||
)
|
||||
first_job = Job.get(Job.source == first_source)
|
||||
second_job = Job.get(Job.source == second_source)
|
||||
|
||||
runtime = JobRuntime(log_dir=log_dir)
|
||||
try:
|
||||
runtime.start()
|
||||
first_execution_id = runtime.run_job_now(first_job.id, reason="manual")
|
||||
|
||||
assert first_execution_id is not None
|
||||
_wait_for_running_execution(first_execution_id)
|
||||
|
||||
second_execution_id = runtime.run_job_now(second_job.id, reason="manual")
|
||||
|
||||
assert second_execution_id is None
|
||||
assert (
|
||||
JobExecution.select()
|
||||
.where(JobExecution.running_status == JobExecutionStatus.RUNNING)
|
||||
.count()
|
||||
== 1
|
||||
)
|
||||
runtime.request_execution_cancel(first_execution_id)
|
||||
finished_execution = _wait_for_terminal_execution(first_execution_id)
|
||||
assert finished_execution.running_status == JobExecutionStatus.CANCELED
|
||||
finally:
|
||||
runtime.shutdown()
|
||||
|
||||
|
||||
def test_job_runtime_cancel_marks_execution_canceled(tmp_path: Path) -> None:
|
||||
initialize_database(tmp_path / "cancel.db")
|
||||
with _slow_feed_server() as feed_url:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue