Skip to content

Commit 0fdc8cd

Browse files
committed
refactor: enhance parameter handling in execution scripts for improved flexibility
1 parent 40f549d commit 0fdc8cd

3 files changed

Lines changed: 68 additions & 52 deletions

File tree

manager_scripts/rest_server.py

Lines changed: 33 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -130,40 +130,38 @@ def start_script():
130130
body = request.get_json(silent=True) or {}
131131
payload_size = body.get("payload_size")
132132
run_idx = body.get("run_idx", 1)
133-
period_ms = body.get("period_ms", 100)
134-
eval_time = body.get("eval_time", 60)
135-
136-
if payload_size is None:
137-
return jsonify({"error": "payload_size required"}), 400
133+
period_ms = body.get("period_ms")
134+
eval_time = body.get("eval_time")
138135

139136
try:
140-
payload_size = _to_int(payload_size, "payload_size")
141137
run_idx = _to_int(run_idx, "run_idx")
142-
period_ms = _to_int(period_ms, "period_ms")
143-
eval_time = _to_int(eval_time, "eval_time")
138+
if payload_size is not None:
139+
payload_size = _to_int(payload_size, "payload_size")
140+
if period_ms is not None:
141+
period_ms = _to_int(period_ms, "period_ms")
142+
if eval_time is not None:
143+
eval_time = _to_int(eval_time, "eval_time")
144144

145145
ctx = _resolve_exec_context(body)
146146
resolved_host, script_path = _resolve_host_script(
147147
ctx["exec_dir"], ctx["hosts"], "exec.sh")
148148

149+
effective_payload_size = payload_size if payload_size is not None else 64
149150
log_dir = os.path.join(
150151
REPO_ROOT,
151152
"logs",
152-
f"raw_{payload_size}B",
153+
f"raw_{effective_payload_size}B",
153154
f"run{run_idx}",
154155
)
155156
os.makedirs(log_dir, exist_ok=True)
156157

157-
cmd = [
158-
"bash",
159-
script_path,
160-
"--payload-size",
161-
str(payload_size),
162-
"--period-ms",
163-
str(period_ms),
164-
"--eval-time",
165-
str(eval_time),
166-
]
158+
cmd = ["bash", script_path]
159+
if payload_size is not None:
160+
cmd.extend(["--payload-size", str(payload_size)])
161+
if period_ms is not None:
162+
cmd.extend(["--period-ms", str(period_ms)])
163+
if eval_time is not None:
164+
cmd.extend(["--eval-time", str(eval_time)])
167165

168166
env = os.environ.copy()
169167
env["LOG_DIR"] = log_dir
@@ -193,34 +191,30 @@ def start_docker():
193191
body = request.get_json(silent=True) or {}
194192
payload_size = body.get("payload_size")
195193
run_idx = body.get("run_idx", 1)
196-
period_ms = body.get("period_ms", 100)
197-
eval_time = body.get("eval_time", 60)
198-
199-
if payload_size is None:
200-
return jsonify({"error": "payload_size required"}), 400
194+
period_ms = body.get("period_ms")
195+
eval_time = body.get("eval_time")
201196

202197
try:
203-
payload_size = _to_int(payload_size, "payload_size")
204198
run_idx = _to_int(run_idx, "run_idx")
205-
period_ms = _to_int(period_ms, "period_ms")
206-
eval_time = _to_int(eval_time, "eval_time")
199+
if payload_size is not None:
200+
payload_size = _to_int(payload_size, "payload_size")
201+
if period_ms is not None:
202+
period_ms = _to_int(period_ms, "period_ms")
203+
if eval_time is not None:
204+
eval_time = _to_int(eval_time, "eval_time")
207205

208206
ctx = _resolve_exec_context(body)
209207
resolved_host, script_path = _resolve_host_script(
210208
ctx["exec_dir"], ctx["hosts"], "run.sh")
211209

212-
cmd = [
213-
"bash",
214-
script_path,
215-
"--payload-size",
216-
str(payload_size),
217-
"--period-ms",
218-
str(period_ms),
219-
"--eval-time",
220-
str(eval_time),
221-
"--run-idx",
222-
str(run_idx),
223-
]
210+
cmd = ["bash", script_path]
211+
if payload_size is not None:
212+
cmd.extend(["--payload-size", str(payload_size)])
213+
if period_ms is not None:
214+
cmd.extend(["--period-ms", str(period_ms)])
215+
if eval_time is not None:
216+
cmd.extend(["--eval-time", str(eval_time)])
217+
cmd.extend(["--run-idx", str(run_idx)])
224218

225219
app.logger.info(
226220
"[start_docker] host=%s scenario=%s payload=%s run=%s script=%s",

manager_scripts/start_exec_scripts.py

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,11 @@ def main():
120120
print("ERROR: No hosts to process", file=sys.stderr)
121121
sys.exit(1)
122122

123+
# Read test parameters from environment only when explicitly provided.
124+
payload_size = os.environ.get("PAYLOAD_SIZE")
125+
period_ms = os.environ.get("PERIOD_MS")
126+
eval_time = os.environ.get("EVAL_TIME")
127+
123128
# Determine endpoint and timeout based on mode
124129
if args.docker:
125130
endpoint = "/start_docker"
@@ -128,25 +133,35 @@ def main():
128133
else:
129134
endpoint = "/start"
130135
timeout = 100 # seconds
131-
print(f"Using native mode: {endpoint} endpoint with timeout {timeout}s")
136+
print(
137+
f"Using native mode: {endpoint} endpoint with timeout {timeout}s")
132138

133139
failed_hosts = []
134140
lock = threading.Lock()
135141

136142
def start(host):
137143
try:
138144
if args.docker:
139-
print(f"{host}: sending {endpoint} request (Docker mode)...", flush=True)
145+
print(
146+
f"{host}: sending {endpoint} request (Docker mode)...", flush=True)
140147
else:
141148
print(f"{host}: sending {endpoint} request...", flush=True)
142149

150+
request_body = {
151+
"run_idx": run_idx,
152+
"ws_dir": ws_dir,
153+
"scenario": scenario,
154+
}
155+
if payload_size is not None:
156+
request_body["payload_size"] = payload_size
157+
if period_ms is not None:
158+
request_body["period_ms"] = period_ms
159+
if eval_time is not None:
160+
request_body["eval_time"] = eval_time
161+
143162
r = requests.post(
144163
f"http://{host}:5000{endpoint}",
145-
json={
146-
"run_idx": run_idx,
147-
"ws_dir": ws_dir,
148-
"scenario": scenario,
149-
},
164+
json=request_body,
150165
timeout=timeout,
151166
)
152167
if r.status_code < 200 or r.status_code >= 300:
@@ -174,7 +189,8 @@ def start(host):
174189

175190
# Check for failures
176191
if failed_hosts:
177-
print(f"ERROR: {len(failed_hosts)}/{len(hosts)} host(s) failed: {failed_hosts}", file=sys.stderr)
192+
print(
193+
f"ERROR: {len(failed_hosts)}/{len(hosts)} host(s) failed: {failed_hosts}", file=sys.stderr)
178194
sys.exit(1)
179195

180196
print(f"Successfully started on all {len(hosts)} hosts")

performance_test/performance_test.py

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -446,6 +446,13 @@ def agg(a):
446446
)
447447
args = parser.parse_args()
448448

449+
# Forward optional overrides only when explicitly requested.
450+
requested_payload_size = args.payload_size
451+
payload_sizes = [
452+
requested_payload_size if requested_payload_size is not None else 64]
453+
period_ms = args.period_ms
454+
eval_time = args.eval_time
455+
449456
base_log_dir = "./logs"
450457
base_result_dir = "./results"
451458
os.makedirs(base_log_dir, exist_ok=True)
@@ -469,8 +476,8 @@ def agg(a):
469476
sys.exit(1)
470477
print(f"Using hosts: {hosts}")
471478
print(f"Note: payload_size, period_ms, eval_time are determined by run.sh defaults")
472-
for payload_size in payload_sizes:
473-
print(f"=== Payload size: {payload_size}B ===")
479+
for result_payload_size in payload_sizes:
480+
print(f"=== Payload size: {result_payload_size}B ===")
474481
for run_idx in range(args.trials):
475482
run_test(
476483
run_idx,
@@ -479,7 +486,7 @@ def agg(a):
479486
args.ws_dir,
480487
args.scenario,
481488
docker=args.docker,
482-
payload_size=payload_size,
489+
payload_size=requested_payload_size,
483490
period_ms=period_ms,
484491
eval_time=eval_time,
485492
)
@@ -488,7 +495,7 @@ def agg(a):
488495
base_log_dir,
489496
base_result_dir,
490497
prefix,
491-
payload_size,
498+
result_payload_size,
492499
args.trials,
493500
hosts,
494501
period_ms=period_ms,
@@ -501,7 +508,6 @@ def agg(a):
501508
# --- ここから全ペイロードサイズの集計CSVをまとめる処理 ---
502509
summary_rows = []
503510
header = None
504-
payload_sizes = [payload_size] # Use the payload_size from CLI or default
505511
for payload_size in payload_sizes:
506512
latest_dir = f"{prefix}_{payload_size}B"
507513
csv_path = os.path.join(

0 commit comments

Comments
 (0)