diff --git a/kaprese/benchmarks/c.py b/kaprese/benchmarks/c.py index ce63c5b..a2859f1 100644 --- a/kaprese/benchmarks/c.py +++ b/kaprese/benchmarks/c.py @@ -36,3 +36,39 @@ def register_benchmarks(overwrite: bool = False) -> None: for bench in [*flexs, *flints, *spearmints]: logger.info(f"Registering c benchmark {bench.name}") bench.register(overwrite=overwrite) + + +def unregister_benchmarks(delete_image: bool = False) -> None: + flexs = [ + Benchmark( + f"flex-{i}", + f"ghcr.io/kupl/starlab-benchmarks/c:flex-{i}", + language_command="cat metadata.json | jq -r .language", + workdir_command="cd $(cat metadata.json | jq -r .buggyPath) && pwd", + ) + for i in range(1, 7) + ] + + flints = [ + Benchmark( + f"flint-{i}", + f"ghcr.io/kupl/starlab-benchmarks/c:flint-{i}", + language_command="cat metadata.json | jq -r .language", + workdir_command="cd $(cat metadata.json | jq -r .buggyPath) && pwd", + ) + for i in range(1, 2) + ] + + spearmints = [ + Benchmark( + f"spearmint-{i}", + f"ghcr.io/kupl/starlab-benchmarks/c:spearmint-{i}", + language_command="export DEBIAN_FRONTEND=non-interactive && apt-get update >/dev/null 2>&1 && apt-get install -y --no-install-recommends jq >/dev/null 2>&1 && cat metadata.json | jq -r .language", + workdir_command="export DEBIAN_FRONTEND=non-interactive && apt-get update >/dev/null 2>&1 && apt-get install -y --no-install-recommends jq >/dev/null 2>&1 && cd $(cat metadata.json | jq -r .buggyPath) && pwd", + ) + for i in range(1, 2) + ] + + for bench in [*flexs, *flints, *spearmints]: + logger.info(f"Unregistering c benchmark {bench.name}") + bench.unregister(delete_image=delete_image) diff --git a/kaprese/benchmarks/ocaml.py b/kaprese/benchmarks/ocaml.py index 4a4d0d4..2270112 100644 --- a/kaprese/benchmarks/ocaml.py +++ b/kaprese/benchmarks/ocaml.py @@ -36,3 +36,39 @@ def register_benchmarks(overwrite: bool = False) -> None: for bench in [*formulas, *diffs, *lambdas]: logger.info(f"Registering ocaml benchmark {bench.name}") bench.register(overwrite=overwrite) + + +def unregister_benchmarks(delete_image: bool = False) -> None: + formulas = [ + Benchmark( + f"formula-{i}", + f"ghcr.io/kupl/starlab-benchmarks/ocaml:formula-{i}", + language_command="export DEBIAN_FRONTEND=non-interactive && apt-get update >/dev/null 2>&1 && apt-get install -y --no-install-recommends jq >/dev/null 2>&1 && cat metadata.json | jq -r .language", + workdir_command="export DEBIAN_FRONTEND=non-interactive && apt-get update >/dev/null 2>&1 && apt-get install -y --no-install-recommends jq >/dev/null 2>&1 && cd $(cat metadata.json | jq -r .buggyPath) && pwd", + ) + for i in range(1, 101) + ] + + diffs = [ + Benchmark( + f"diff-{i}", + f"ghcr.io/kupl/starlab-benchmarks/ocaml:diff-{i}", + language_command="export DEBIAN_FRONTEND=non-interactive && apt-get update >/dev/null 2>&1 && apt-get install -y --no-install-recommends jq >/dev/null 2>&1 && cat metadata.json | jq -r .language", + workdir_command="export DEBIAN_FRONTEND=non-interactive && apt-get update >/dev/null 2>&1 && apt-get install -y --no-install-recommends jq >/dev/null 2>&1 && cd $(cat metadata.json | jq -r .buggyPath) && pwd", + ) + for i in range(1, 101) + ] + + lambdas = [ + Benchmark( + f"lambda-{i}", + f"ghcr.io/kupl/starlab-benchmarks/ocaml:lambda-{i}", + language_command="export DEBIAN_FRONTEND=non-interactive && apt-get update >/dev/null 2>&1 && apt-get install -y --no-install-recommends jq >/dev/null 2>&1 && cat metadata.json | jq -r .language", + workdir_command="export DEBIAN_FRONTEND=non-interactive && apt-get update >/dev/null 2>&1 && apt-get install -y --no-install-recommends jq >/dev/null 2>&1 && cd $(cat metadata.json | jq -r .buggyPath) && pwd", + ) + for i in range(1, 101) + ] + + for bench in [*formulas, *diffs, *lambdas]: + logger.info(f"Unregistering ocaml benchmark {bench.name}") + bench.unregister(delete_image=delete_image) diff --git a/kaprese/bin/kaprese_benchmark.py b/kaprese/bin/kaprese_benchmark.py index 95d85c7..1108d41 100644 --- a/kaprese/bin/kaprese_benchmark.py +++ b/kaprese/bin/kaprese_benchmark.py @@ -44,6 +44,13 @@ def main( help="preset benchmarks to add", ) + preset_parser.add_argument( + "delete", + nargs="*", + choices=["all", "ocaml", "c"], + help="preset benchmarks to delete", + ) + prepare_parser = subparsers.add_parser("prepare", help="prepare benchmarks") prepare_parser.add_argument( "-f", "--force", action="store_true", help="force prepare benchmarks" @@ -129,6 +136,19 @@ def main( for register in registers: register(args.overwrite) + elif args.subcommand == "delete": + if len(args.delete) == 0: + preset_parser.print_help() + sys.exit(1) + registers: list[Callable[[bool], None]] = [] + if "ocaml" in args.delete or "all" in args.delete: + registers.append(register_ocaml_benchmarks) + if "c" in args.delete or "all" in args.delete: + registers.append(register_c_benchmarks) + + for register in registers: + register(delete_image=False) + elif args.subcommand == "prepare": if len(args.benchmark) == 0: prepare_parser.print_help()