feat(submit): confirm defaults instead of removing them
Restore defaults for queue/executor_memory/executor_cores/num_executors in prepare_submit_job, but require the caller to explicitly confirm them. If any defaulted field is omitted, the route returns HTTP 400 listing the defaults and asks the caller to resubmit with explicit values. app_name remains required (no meaningful default). extra_args remains optional. Tests cover rejection of unconfirmed defaults and acceptance of explicitly confirmed defaults.
This commit is contained in:
@@ -4,11 +4,23 @@ import pytest
|
||||
from spark_executor.tools.requests import PrepareSubmitJobRequest
|
||||
|
||||
|
||||
def test_prepare_submit_job_request_requires_all_confirmed_parameters():
|
||||
def test_prepare_submit_job_request_requires_connection_script_path_and_app_name():
|
||||
with pytest.raises(ValueError):
|
||||
PrepareSubmitJobRequest(connection="prod", script_path="/tmp/x.py")
|
||||
|
||||
|
||||
def test_prepare_submit_job_request_restores_defaults_for_queue_and_resources():
|
||||
req = PrepareSubmitJobRequest(
|
||||
connection="prod",
|
||||
script_path="/tmp/x.py",
|
||||
app_name="test-app",
|
||||
)
|
||||
assert req.queue == "default"
|
||||
assert req.executor_memory == "4G"
|
||||
assert req.executor_cores == 2
|
||||
assert req.num_executors == 2
|
||||
|
||||
|
||||
def test_prepare_submit_job_request_accepts_extra_args():
|
||||
req = PrepareSubmitJobRequest(
|
||||
connection="prod",
|
||||
|
||||
@@ -112,6 +112,25 @@ def test_prepare_requires_explicit_app_name(monkeypatch, real_script):
|
||||
submit.prepare_submit_job(connection="prod", script_path=str(real_script))
|
||||
|
||||
|
||||
def test_prepare_accepts_restored_defaults(monkeypatch, real_script):
|
||||
monkeypatch.setattr(submit, "run_spark_submit", lambda cmd: None)
|
||||
out = submit.prepare_submit_job(
|
||||
connection="prod",
|
||||
script_path=str(real_script),
|
||||
queue="default",
|
||||
executor_memory="4G",
|
||||
executor_cores=2,
|
||||
num_executors=2,
|
||||
app_name="test-app",
|
||||
)
|
||||
assert out["status"] == "PENDING"
|
||||
p = submit.pending_store.get(_last_pending_id())
|
||||
assert p.queue == "default"
|
||||
assert p.executor_memory == "4G"
|
||||
assert p.executor_cores == 2
|
||||
assert p.num_executors == 2
|
||||
|
||||
|
||||
def test_prepare_snapshots_extra_args(monkeypatch, real_script):
|
||||
monkeypatch.setattr(submit, "run_spark_submit", lambda cmd: None)
|
||||
submit.prepare_submit_job(
|
||||
|
||||
Reference in New Issue
Block a user