Commit 38950f52 authored by Yann Hodique's avatar Yann Hodique Committed by GitHub

feat(kurtosis-devnet): add basic support for smoke tests (#13625)

parent bc02e90e
......@@ -42,7 +42,21 @@ KURTOSIS_PACKAGE := "github.com/ethpandaops/optimism-package"
# Devnet template recipe
devnet TEMPLATE_FILE DATA_FILE="":
go run cmd/main.go -kurtosis-package {{KURTOSIS_PACKAGE}} -template "{{TEMPLATE_FILE}}" -data "{{DATA_FILE}}" -enclave `basename {{TEMPLATE_FILE}} .yaml`-devnet
go run cmd/main.go -kurtosis-package {{KURTOSIS_PACKAGE}} \
-environment tests/`basename {{TEMPLATE_FILE}} .yaml`-devnet.json \
-template "{{TEMPLATE_FILE}}" \
-data "{{DATA_FILE}}" \
-enclave `basename {{TEMPLATE_FILE}} .yaml`-devnet
cat tests/`basename {{TEMPLATE_FILE}} .yaml`-devnet.json
devnet-test DEVNET *TEST:
#!/usr/bin/env bash
export TESTS=({{TEST}})
# we need a timestamp in there to force kurtosis to not cache the test solely based on its name!
export ARGS=$(printf '%s\n' "${TESTS[@]}" | jq -R . | jq -s . | jq -s '{devnet: "{{DEVNET}}", timestamp: "{{datetime("%s")}}", tests: add}')
kurtosis run --enclave {{DEVNET}} \
--show-enclave-inspect=false \
./tests/ "$ARGS"
# Devnet recipes
......@@ -54,3 +68,4 @@ simple-devnet: (devnet "simple.yaml")
# Interop devnet
interop-devnet: (devnet "interop.yaml")
interop-devnet-test: (devnet-test "interop-devnet" "interop-smoke-test.sh")
#!/usr/bin/env bash
set -euo pipefail
# Default values
DEVNET=""
ENVIRONMENT=""
# Parse command line arguments
while [[ $# -gt 0 ]]; do
case "$1" in
--devnet)
DEVNET="$2"
shift 2
;;
--environment)
ENVIRONMENT="$2"
shift 2
;;
*)
echo "Invalid option: $1" >&2
exit 1
;;
esac
done
# Validate required arguments
if [ -z "$DEVNET" ]; then
echo "Error: --devnet argument is required" >&2
exit 1
fi
if [ -z "$ENVIRONMENT" ]; then
echo "Error: --environment argument is required" >&2
exit 1
fi
#!/usr/bin/env bash
# TODO: actually test something. Right now it just gives an idea of what's
# possible.
# shellcheck disable=SC1091
source "$(dirname "$0")/boilerplate.sh"
echo "DEVNET: $DEVNET"
echo "ENVIRONMENT:"
cat "$ENVIRONMENT"
l1_name=$(cat "$ENVIRONMENT" | jq -r '.l1.name')
echo "L1 NAME: $l1_name"
cast --version
\ No newline at end of file
name: github.com/ethereum-optimism/optimism/kurtosis-devnet/tests
description: |-
Kurtosis package for running tests within the enclave
replace: {}
"""
This is the main script for the kurtosis test runner.
"""
def run(plan, devnet, timestamp, tests):
tests_artifact = plan.upload_files(
src = "./",
name = "tests",
description = "uploading tests"
)
for test in tests:
plan.run_sh(
run = "/bin/bash /tests/{} --devnet {} --environment /tests/{}.json".format(test, devnet, devnet),
name = "{}-{}".format(test, timestamp),
image = "mslipper/deployment-utils:latest",
wait="180s",
files = {
"/tests": tests_artifact,
},
)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment