From 930513fe77f16a19c2b486aaf54563992efcf880 Mon Sep 17 00:00:00 2001 From: Milind Srivastava Date: Fri, 19 Jun 2026 16:54:00 -0400 Subject: [PATCH 1/2] dev(tools): add script to install local dependencies for experiment orchestrators experiment_run_e2e.py and experiment_run_clickhouse.py had no documented or scripted way to install the Python packages they need to run locally (hydra-core, omegaconf, Jinja2, PyYAML). Fixes #399 Co-Authored-By: Claude Sonnet 4.6 --- asap-tools/README.md | 5 +++++ asap-tools/experiments/requirements.txt | 4 ++++ asap-tools/experiments/setup_dependencies.sh | 15 +++++++++++++++ 3 files changed, 24 insertions(+) create mode 100644 asap-tools/experiments/requirements.txt create mode 100755 asap-tools/experiments/setup_dependencies.sh diff --git a/asap-tools/README.md b/asap-tools/README.md index 472e6790..8e2f555d 100644 --- a/asap-tools/README.md +++ b/asap-tools/README.md @@ -12,6 +12,11 @@ A framework for running end-to-end distributed systems experiments on CloudLab, - Ubuntu - Python 3.8+ - Local clone of `ASAPQuery` repo (at `$REPO_ROOT`) + - Dependencies for running the experiment orchestrators (`experiment_run_e2e.py`, `experiment_run_clickhouse.py`, etc.): + ```bash + cd $REPO_ROOT/asap-tools/experiments + ./setup_dependencies.sh + ``` - **CloudLab:** - Active experiment with N nodes diff --git a/asap-tools/experiments/requirements.txt b/asap-tools/experiments/requirements.txt new file mode 100644 index 00000000..4e07a78e --- /dev/null +++ b/asap-tools/experiments/requirements.txt @@ -0,0 +1,4 @@ +hydra-core==1.3.2 +omegaconf==2.3.0 +Jinja2==3.1.2 +PyYAML==6.0.2 diff --git a/asap-tools/experiments/setup_dependencies.sh b/asap-tools/experiments/setup_dependencies.sh new file mode 100755 index 00000000..b93de4d4 --- /dev/null +++ b/asap-tools/experiments/setup_dependencies.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# Installs the dependencies needed to run the experiment orchestrators +# (experiment_run_e2e.py, experiment_run_clickhouse.py, etc.) from the local +# machine. These scripts only drive remote CloudLab nodes over ssh/rsync; all +# component installation on the nodes themselves is handled by +# asap-tools/deploy_from_scratch.sh. + +set -e + +THIS_DIR=$(dirname "$(readlink -f "${BASH_SOURCE[0]}")") + +sudo apt-get update +sudo apt-get install -y python3-pip rsync openssh-client +pip3 install --user -r "${THIS_DIR}/requirements.txt" From 2a35ce55181e735f1ee4ceb56fc668db65484d4a Mon Sep 17 00:00:00 2001 From: Milind Srivastava Date: Mon, 22 Jun 2026 10:52:06 -0400 Subject: [PATCH 2/2] added more packages --- asap-tools/experiments/requirements.txt | 6 ++++++ asap-tools/experiments/setup_dependencies.sh | 3 +++ 2 files changed, 9 insertions(+) diff --git a/asap-tools/experiments/requirements.txt b/asap-tools/experiments/requirements.txt index 4e07a78e..d6622c20 100644 --- a/asap-tools/experiments/requirements.txt +++ b/asap-tools/experiments/requirements.txt @@ -2,3 +2,9 @@ hydra-core==1.3.2 omegaconf==2.3.0 Jinja2==3.1.2 PyYAML==6.0.2 +humanize==4.9.0 +matplotlib==3.7.1 +msgpack==1.1.0 +numpy>=1.26,<2 +pandas==2.0.3 +plotnine==0.12.4 diff --git a/asap-tools/experiments/setup_dependencies.sh b/asap-tools/experiments/setup_dependencies.sh index b93de4d4..2fd8565c 100755 --- a/asap-tools/experiments/setup_dependencies.sh +++ b/asap-tools/experiments/setup_dependencies.sh @@ -13,3 +13,6 @@ THIS_DIR=$(dirname "$(readlink -f "${BASH_SOURCE[0]}")") sudo apt-get update sudo apt-get install -y python3-pip rsync openssh-client pip3 install --user -r "${THIS_DIR}/requirements.txt" + +# promql_utilities (used by post_experiment/) isn't on PyPI, install local editable copy +pip3 install --user -e "${THIS_DIR}/../../asap-common/dependencies/py/promql_utilities"