Skip to content

Commit e1442e0

Browse files
committed
add: scenarios setup
1 parent 412f306 commit e1442e0

3 files changed

Lines changed: 48 additions & 14 deletions

File tree

scenarios/helpers.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@
1515
DEVNET_INFO = os.environ.get(
1616
"DEVNET_INFO", os.path.expanduser("~/.foc-devnet/state/latest/devnet-info.json")
1717
)
18+
FOUNDRY_BIN = Path.home() / ".foc-devnet" / "artifacts" / "foundry" / "bin"
19+
CAST = str(FOUNDRY_BIN / "cast")
20+
FORGE = str(FOUNDRY_BIN / "forge")
1821

1922
# ── Logging ──────────────────────────────────────────────────
2023

scenarios/test_basic_balances.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@
55

66
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
77

8-
from scenarios.helpers import assert_gt, assert_ok, devnet_info, sh
8+
from scenarios.helpers import CAST, assert_gt, assert_ok, devnet_info, sh
99

1010

1111
def run():
12-
assert_ok("command -v cast", "cast is installed")
12+
assert_ok(f"test -x {CAST}", "cast is installed")
1313
d = devnet_info()["info"]
1414
lotus_rpc = d["lotus"]["host_rpc_url"]
1515
usdfc_addr = d["contracts"]["mockusdfc_addr"]
@@ -18,10 +18,10 @@ def run():
1818

1919
for user in users:
2020
name, user_addr = user["name"], user["evm_addr"]
21-
fil_wei = sh(f"cast balance {user_addr} --rpc-url {lotus_rpc}")
21+
fil_wei = sh(f"{CAST} balance {user_addr} --rpc-url {lotus_rpc}")
2222
assert_gt(fil_wei, 0, f"{name} FIL balance > 0")
2323
usdfc_raw = sh(
24-
f"cast call {usdfc_addr} 'balanceOf(address)(uint256)' {user_addr} --rpc-url {lotus_rpc}"
24+
f"{CAST} call {usdfc_addr} 'balanceOf(address)(uint256)' {user_addr} --rpc-url {lotus_rpc}"
2525
)
2626
usdfc_wei = "".join(c for c in usdfc_raw if c.isdigit())
2727
assert_gt(usdfc_wei, 0, f"{name} USDFC balance > 0")

scripts/setup-scenarios-prerequisites.sh

Lines changed: 41 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,26 @@ fail() { printf "${RED}✗${NC} %s\n" "$1"; exit 1; }
2525
info() { printf "${BLUE}${NC} %s\n" "$1"; }
2626

2727
# ── Constants ────────────────────────────────────────────────
28+
FOUNDRY_VERSION="v1.6.0-rc1"
29+
PYENV_VERSION="v2.5.3"
2830
CASSANDRA_VERSION="5.0.6"
2931
PYTHON_VERSION="3.11.15"
3032
PYENV_ROOT="${PYENV_ROOT:-$HOME/.pyenv}"
3133
PYTHON_BIN="${PYENV_ROOT}/versions/${PYTHON_VERSION}/bin/python3"
3234
CASSANDRA_URL="https://dlcdn.apache.org/cassandra/${CASSANDRA_VERSION}/apache-cassandra-${CASSANDRA_VERSION}-bin.tar.gz"
3335
CASSANDRA_DIR="$HOME/.foc-devnet/artifacts/cassandra"
36+
FOUNDRY_DIR="$HOME/.foc-devnet/artifacts/foundry/bin"
3437
CASSANDRA_HOME="${CASSANDRA_DIR}/apache-cassandra-${CASSANDRA_VERSION}"
3538

39+
verify_checksum() {
40+
local file="$1" expected="$2"
41+
local actual
42+
actual=$(sha256sum "$file" | awk '{print $1}')
43+
if [[ "$actual" != "$expected" ]]; then
44+
fail "Checksum mismatch for $file (got $actual, want $expected)"
45+
fi
46+
}
47+
3648
# ── 0. Verify basic system tools ────────────────────────────
3749
info "Checking basic system tools..."
3850

@@ -47,17 +59,31 @@ done
4759
# ── 1. Foundry (cast / forge) ───────────────────────────────
4860
info "Checking Foundry..."
4961

50-
if command -v cast &>/dev/null; then
51-
pass "Foundry already installed (cast @ $(command -v cast))"
62+
CAST="$FOUNDRY_DIR/cast"
63+
64+
if [[ -x "$CAST" ]]; then
65+
pass "Foundry already installed (cast @ $CAST)"
5266
else
53-
info "Installing Foundry..."
54-
curl -sSL https://foundry.paradigm.xyz | bash
55-
export PATH="$HOME/.foundry/bin:$PATH"
56-
"$HOME/.foundry/bin/foundryup"
57-
if command -v cast &>/dev/null; then
67+
info "Installing Foundry ${FOUNDRY_VERSION} to $FOUNDRY_DIR..."
68+
mkdir -p "$FOUNDRY_DIR"
69+
ARCH="$(uname -m)"
70+
case "$ARCH" in
71+
x86_64) ARCH="amd64" ;;
72+
aarch64|arm64) ARCH="arm64" ;;
73+
*) fail "Unsupported architecture: $ARCH" ;;
74+
esac
75+
OS="$(uname -s | tr '[:upper:]' '[:lower:]')"
76+
TARBALL_NAME="foundry_${FOUNDRY_VERSION}_${OS}_${ARCH}.tar.gz"
77+
TARBALL_URL="https://github.com/foundry-rs/foundry/releases/download/${FOUNDRY_VERSION}/${TARBALL_NAME}"
78+
TARBALL_PATH="/tmp/${TARBALL_NAME}"
79+
info "Downloading $TARBALL_URL"
80+
curl -fsSL -o "$TARBALL_PATH" "$TARBALL_URL"
81+
tar -xzf "$TARBALL_PATH" -C "$FOUNDRY_DIR"
82+
rm -f "$TARBALL_PATH"
83+
if [[ -x "$CAST" ]]; then
5884
pass "Foundry installed successfully"
5985
else
60-
fail "Foundry installation failed — cast not found on PATH"
86+
fail "Foundry installation failed — cast not found at $CAST"
6187
fi
6288
fi
6389

@@ -74,8 +100,13 @@ else
74100
if [[ -x "${PYENV_ROOT}/bin/pyenv" ]]; then
75101
export PATH="${PYENV_ROOT}/bin:$PATH"
76102
else
77-
info "Installing pyenv..."
78-
curl -fsSL https://pyenv.run | bash
103+
info "Installing pyenv ${PYENV_VERSION} from GitHub tarball..."
104+
PYENV_TARBALL="/tmp/pyenv-${PYENV_VERSION}.tar.gz"
105+
curl -fsSL -o "$PYENV_TARBALL" \
106+
"https://github.com/pyenv/pyenv/archive/refs/tags/${PYENV_VERSION}.tar.gz"
107+
mkdir -p "${PYENV_ROOT}"
108+
tar -xzf "$PYENV_TARBALL" -C "${PYENV_ROOT}" --strip-components=1
109+
rm -f "$PYENV_TARBALL"
79110
export PATH="${PYENV_ROOT}/bin:$PATH"
80111
fi
81112
fi

0 commit comments

Comments
 (0)