From f65cd02627f8ad5696b03e96cf6ce16e5d3ed268 Mon Sep 17 00:00:00 2001 From: TapTap Date: Sat, 4 Jul 2026 22:39:51 +0200 Subject: [PATCH] refactor: --source-dir, --dest-dir, --save-to-disk as CLI args - Replace env var control (FASTSYNC_SOURCE_DIR, FASTSYNC_DEST_DIR, FASTSYNC_SAVE_TO_DISK) with explicit --source-dir, --dest-dir, --save-to-disk CLI arguments - Keep env vars as fallback for backward compatibility - Fix test.py: split '-c 0' into separate args ['-c', '0'] - Fix test.py: throttled suite failed because systemd-run didn't inherit env vars; now all settings are passed as CLI args - Add env_name to exception/timeout result entries for correct display --- __pycache__/test.cpython-313.pyc | Bin 0 -> 15812 bytes src/client/client.c | 8 ++++++++ test.py | 16 +++++++++------- 3 files changed, 17 insertions(+), 7 deletions(-) create mode 100644 __pycache__/test.cpython-313.pyc diff --git a/__pycache__/test.cpython-313.pyc b/__pycache__/test.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e7e933b9aa48a9a6ba4741fc4568badb97b0c0cc GIT binary patch literal 15812 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 literal 0 HcmV?d00001 diff --git a/src/client/client.c b/src/client/client.c index 2cfc027..a026458 100644 --- a/src/client/client.c +++ b/src/client/client.c @@ -207,6 +207,14 @@ int main(int argc, char *argv[]) { config->compression_level); } } + } else if (strcmp(argv[i], "--source-dir") == 0 && i + 1 < argc) { + free(config->send_directory); + config->send_directory = str_dup(argv[++i]); + } else if (strcmp(argv[i], "--dest-dir") == 0 && i + 1 < argc) { + free(config->receive_root_directory); + config->receive_root_directory = str_dup(argv[++i]); + } else if (strcmp(argv[i], "--save-to-disk") == 0) { + config->save_to_disk = true; } else { handle_arg(argv[i], "-m", &config->use_multithreading, "Enabled Multithreading"); diff --git a/test.py b/test.py index 3cf61e0..264a6ba 100755 --- a/test.py +++ b/test.py @@ -39,7 +39,7 @@ CLIENT_CMD_PREFIX = [ TEST_CASES = [ {"name": "Standard (Single-threaded)", "flags": []}, {"name": "Multithreading (-m)", "flags": ["-m"]}, - {"name": "Compression (-c 0)", "flags": ["-c 0"]}, + {"name": "Compression (-c 0)", "flags": ["-c", "0"]}, {"name": "Chunk Serialization (-s)", "flags": ["-s"]}, {"name": "Compression + Chunk Serialization (-c -s)", "flags": ["-c", "-s"]}, {"name": "Multithreading + Compression (-m -c)", "flags": ["-m", "-c"]}, @@ -149,11 +149,13 @@ def run_suite(env_name, apply_limits, source_dir, dest_dir): time.sleep(0.5) env = os.environ.copy() - env["FASTSYNC_SOURCE_DIR"] = source_dir - env["FASTSYNC_DEST_DIR"] = dest_dir - env["FASTSYNC_SAVE_TO_DISK"] = "true" - client_cmd = client_prefix + base_client_cmd + flags + client_cmd = ( + client_prefix + + base_client_cmd + + ["--source-dir", source_dir, "--dest-dir", dest_dir, "--save-to-disk"] + + flags + ) print(f" Running: {' '.join(client_cmd)}") start_time = time.monotonic() @@ -208,11 +210,11 @@ def run_suite(env_name, apply_limits, source_dir, dest_dir): except subprocess.TimeoutExpired: results.append( - {"name": name, "status": "Timeout", "time": "N/A", "error": "Exceeded 15s"} + {"name": name, "suite": env_name, "status": "Timeout", "time": "N/A", "error": "Exceeded 15s"} ) except Exception as e: results.append( - {"name": name, "status": "Error", "time": "N/A", "error": str(e)} + {"name": name, "suite": env_name, "status": "Error", "time": "N/A", "error": str(e)} ) finally: if server_process: