From 5f2c3e128e27ada76fdc2647ac5d98e594688a6b Mon Sep 17 00:00:00 2001 From: Samantha Hughes Date: Thu, 4 Aug 2022 15:54:46 -0700 Subject: [PATCH 01/46] sync --- .github/workflows/tests.yml | 6 +++--- conftest.py | 3 ++- tests/benchmarks/test_coiled.py | 4 +++- tests/benchmarks/test_parquet.py | 1 + tests/stability/test_deadlock.py | 1 + 5 files changed, 10 insertions(+), 5 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index e299c81166..028a4bf0f2 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -4,7 +4,7 @@ on: branches: - main tags: - - '*' + - "*" pull_request: schedule: # Runs "At 00:01" (see https://crontab.guru) @@ -396,7 +396,7 @@ jobs: env: AWS_ACCESS_KEY_ID: ${{ secrets.RUNTIME_CI_BOT_AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.RUNTIME_CI_BOT_AWS_SECRET_ACCESS_KEY }} - AWS_DEFAULT_REGION: us-east-2 # this is needed for boto for some reason + AWS_DEFAULT_REGION: us-east-2 # this is needed for boto for some reason DB_NAME: benchmark.db run: | aws s3 cp s3://coiled-runtime-ci/benchmarks/$DB_NAME . || true @@ -410,7 +410,7 @@ jobs: env: AWS_ACCESS_KEY_ID: ${{ secrets.RUNTIME_CI_BOT_AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.RUNTIME_CI_BOT_AWS_SECRET_ACCESS_KEY }} - AWS_DEFAULT_REGION: us-east-2 # this is needed for boto for some reason + AWS_DEFAULT_REGION: us-east-2 # this is needed for boto for some reason DB_NAME: benchmark.db run: | aws s3 cp $DB_NAME s3://coiled-runtime-ci/benchmarks/ diff --git a/conftest.py b/conftest.py index c44297e9d3..a7fb93ad30 100644 --- a/conftest.py +++ b/conftest.py @@ -103,7 +103,7 @@ def get_coiled_software_name(): dask.config.set( { "coiled.account": "dask-engineering", - "coiled.software": get_coiled_software_name(), + # "coiled.software": get_coiled_software_name(), } ) @@ -259,6 +259,7 @@ def small_cluster(request): worker_vm_types=["t3.large"], scheduler_vm_types=["t3.large"], backend_options=backend_options, + package_sync=True, ) as cluster: yield cluster diff --git a/tests/benchmarks/test_coiled.py b/tests/benchmarks/test_coiled.py index dc6b064229..bb39d95fa5 100644 --- a/tests/benchmarks/test_coiled.py +++ b/tests/benchmarks/test_coiled.py @@ -5,5 +5,7 @@ def test_default_cluster_spinup_time(request, auto_benchmark_time): - with Cluster(name=f"{request.node.originalname}-{uuid.uuid4().hex[:8]}"): + with Cluster( + name=f"{request.node.originalname}-{uuid.uuid4().hex[:8]}", package_sync=True + ): pass diff --git a/tests/benchmarks/test_parquet.py b/tests/benchmarks/test_parquet.py index df99644ba3..47749b0c8f 100644 --- a/tests/benchmarks/test_parquet.py +++ b/tests/benchmarks/test_parquet.py @@ -21,6 +21,7 @@ def parquet_cluster(): n_workers=N_WORKERS, worker_vm_types=["m5.xlarge"], scheduler_vm_types=["m5.xlarge"], + package_sync=True, ) as cluster: yield cluster diff --git a/tests/stability/test_deadlock.py b/tests/stability/test_deadlock.py index 2da4f32d5e..6a4818058e 100644 --- a/tests/stability/test_deadlock.py +++ b/tests/stability/test_deadlock.py @@ -18,6 +18,7 @@ def test_repeated_merge_spill(upload_cluster_dump, benchmark_time): name=f"test_deadlock-{uuid.uuid4().hex}", n_workers=20, worker_vm_types=["t3.medium"], + package_sync=True, ) as cluster: with Client(cluster) as client: with upload_cluster_dump(client, cluster), benchmark_time: From 6146ac90c3befca0050f7f4f85d43f643b54b925 Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Tue, 9 Aug 2022 15:41:35 -0700 Subject: [PATCH 02/46] Restructure to use package_sync: no more setup/cleanup of coiled software environments, TEST_UPSTREAM and COILED_SOFTWARE_VERSION environment variables are now gone, COILED_RUNTIME_VERSION is the only controlling environment variable, which can take a version number, "upstream", or "latest" --- .github/workflows/tests.yml | 152 ++---------------- README.md | 9 +- ...runtime_meta.py => create_runtime_meta.py} | 6 +- ci/scripts/install_coiled_runtime.sh | 8 +- ci/scripts/run_tests.sh | 5 +- conftest.py | 34 +--- tests/runtime/test_build.py | 9 +- 7 files changed, 32 insertions(+), 191 deletions(-) rename ci/{create_latest_runtime_meta.py => create_runtime_meta.py} (92%) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 028a4bf0f2..42fb565ef1 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -22,89 +22,6 @@ defaults: shell: bash -l {0} jobs: - software: - name: Setup - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - python-version: ["3.8", "3.9", "3.10"] - - steps: - - uses: actions/checkout@v2 - with: - fetch-depth: 0 - - - name: Set up environment - uses: conda-incubator/setup-miniconda@v2 - with: - miniforge-variant: Mambaforge - use-mamba: true - condarc-file: ci/condarc - python-version: ${{ matrix.python-version }} - environment-file: ci/environment.yml - - - name: Check upstream - run: | - if [[ ${{ github.event_name }} == "pull_request" ]] - then - export REF="HEAD^2" - else - export REF="HEAD" - fi - - COMMIT="$(git log -n 1 --pretty=format:%s $REF)" - if [[ "$COMMIT" == *"test-upstream"* || ${{ github.event_name }} == "schedule" ]] - then - export TEST_UPSTREAM="true" - else - export TEST_UPSTREAM="false" - fi - - # Put TEST_UPSTREAM into $GITHUB_ENV so it can be used in subsequent workflow steps - echo $TEST_UPSTREAM - echo TEST_UPSTREAM=$TEST_UPSTREAM >> $GITHUB_ENV - - # Put TEST_UPSTREAM into a file so it can be downloaded in subsequent workflow jobs - echo $TEST_UPSTREAM > test_upstream.txt - - - name: Build Coiled Software Environment - env: - DASK_COILED__TOKEN: ${{ secrets.COILED_BENCHMARK_BOT_TOKEN }} - run: | - export PYTHON_VERSION_FORMATTED=$(echo "${{ matrix.python-version }}" | sed 's/\.//g' ) - export REF_NAME_FORMATTED=$(echo "$GITHUB_REF_NAME" | sed 's/\./-/g' ) - export COILED_SOFTWARE_NAME_HEAD=dask-engineering/coiled-runtime-${{ github.event_name }} - export COILED_SOFTWARE_NAME_TAIL=$GITHUB_RUN_ID-py$PYTHON_VERSION_FORMATTED - - if [[ ${{ github.event_name }} = 'pull_request' ]] - then - export COILED_SOFTWARE_NAME=$COILED_SOFTWARE_NAME_HEAD-${{ github.event.number }}-$COILED_SOFTWARE_NAME_TAIL - else - export COILED_SOFTWARE_NAME=$COILED_SOFTWARE_NAME_HEAD-$GITHUB_REF_TYPE-$REF_NAME_FORMATTED-$COILED_SOFTWARE_NAME_TAIL - fi - - # Create conda environment.yaml file for the latest software environment - python ci/create_latest_runtime_meta.py - export ENV_FILE=latest.yaml - cat $ENV_FILE - - mamba install coiled - echo "Creating Coiled software environment for $COILED_SOFTWARE_NAME" - coiled env create --name $COILED_SOFTWARE_NAME --conda $ENV_FILE - - # Put COILED_SOFTWARE_NAME into a file so it can be downloaded in subsequent workflow jobs - echo $COILED_SOFTWARE_NAME > software_name.txt - - - name: Upload environment file - uses: actions/upload-artifact@v3 - with: - name: software-environment-py${{ matrix.python-version }} - path: | - latest.yaml - software_name.txt - test_upstream.txt - runtime: name: Runtime - ${{ matrix.os }}, Python ${{ matrix.python-version }}, Runtime ${{ matrix.runtime-version }} needs: software @@ -115,7 +32,7 @@ jobs: matrix: os: ["ubuntu-latest"] python-version: ["3.9"] - runtime-version: ["latest", "0.0.3", "0.0.4"] + runtime-version: ["upstream", "latest", "0.0.3", "0.0.4"] steps: - uses: actions/checkout@v2 @@ -135,16 +52,12 @@ jobs: python-version: ${{ matrix.python-version }} environment-file: ci/environment.yml - - name: Download software environment assets - if: matrix.runtime-version == 'latest' - uses: actions/download-artifact@v3 - with: - name: software-environment-py${{ matrix.python-version }} - - name: Install coiled-runtime env: COILED_RUNTIME_VERSION: ${{ matrix.runtime-version }} - run: source ci/scripts/install_coiled_runtime.sh + run: | + python ci/create_runtime_meta.py + source ci/scripts/install_coiled_runtime.sh - name: Run Coiled Runtime Tests id: test @@ -173,7 +86,7 @@ jobs: matrix: os: ["ubuntu-latest"] python-version: ["3.9"] - runtime-version: ["latest", "0.0.3", "0.0.4"] + runtime-version: ["upstream", "latest", "0.0.3", "0.0.4"] steps: - uses: actions/checkout@v2 @@ -193,16 +106,12 @@ jobs: python-version: ${{ matrix.python-version }} environment-file: ci/environment.yml - - name: Download software environment assets - if: matrix.runtime-version == 'latest' - uses: actions/download-artifact@v3 - with: - name: software-environment-py${{ matrix.python-version }} - - name: Install coiled-runtime env: COILED_RUNTIME_VERSION: ${{ matrix.runtime-version }} - run: source ci/scripts/install_coiled_runtime.sh + run: | + python ci/create_runtime_meta.py + source ci/scripts/install_coiled_runtime.sh - name: Run benchmarking tests id: benchmarking_tests @@ -231,7 +140,7 @@ jobs: matrix: os: ["ubuntu-latest"] python-version: ["3.8", "3.9", "3.10"] - runtime-version: ["latest", "0.0.3", "0.0.4"] + runtime-version: ["upstream", "latest", "0.0.3", "0.0.4"] include: - python-version: "3.9" runtime-version: "latest" @@ -266,16 +175,12 @@ jobs: python-version: ${{ matrix.python-version }} environment-file: ci/environment.yml - - name: Download software environment assets - if: matrix.runtime-version == 'latest' - uses: actions/download-artifact@v3 - with: - name: software-environment-py${{ matrix.python-version }} - - name: Install coiled-runtime env: COILED_RUNTIME_VERSION: ${{ matrix.runtime-version }} - run: source ci/scripts/install_coiled_runtime.sh + run: | + python ci/create_runtime_meta.py + source ci/scripts/install_coiled_runtime.sh - name: Run stability tests id: stability_tests @@ -301,39 +206,6 @@ jobs: name: stability-${{ matrix.os }}-${{ matrix.runtime-version }}-py${{ matrix.python-version }} path: stability-${{ matrix.os }}-${{ matrix.runtime-version }}-py${{ matrix.python-version }}.db - cleanup: - needs: [software, runtime, benchmarks, stability] - if: always() - name: Cleanup - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - python-version: ["3.8", "3.9", "3.10"] - steps: - - uses: actions/checkout@v2 - - - name: Set up Python - uses: actions/setup-python@v3 - with: - python-version: ${{ matrix.python-version }} - - - name: Install coiled - run: python -m pip install coiled - - - name: Download software environment assets - uses: actions/download-artifact@v3 - with: - name: software-environment-py${{ matrix.python-version }} - - - name: Remove Coiled software environment - env: - DASK_COILED__TOKEN: ${{ secrets.COILED_BENCHMARK_BOT_TOKEN }} - run: | - export SOFTWARE_NAME=$(cat software_name.txt) - echo "Deleting $SOFTWARE_NAME" - coiled env delete $SOFTWARE_NAME - report: name: report needs: [runtime, benchmarks, stability] diff --git a/README.md b/README.md index 62bae61381..3adbeafed3 100644 --- a/README.md +++ b/README.md @@ -50,10 +50,11 @@ The `coiled-runtime` test suite can be run locally with the following steps: the Coiled Dask Engineering AWS S3 account. 2. Create a Python environment and install development dependencies as specified in `ci/environment.yml`. -3. (Optional) If testing against an unreleased version of `coiled-runtime`, - create a Coiled software environment with the unreleased `coiled-runtime` installed - and set a local `COILED_SOFTWARE_NAME` environment variable to the name - of the software environment (e.g. `export COILED_SOFTWARE_NAME="account/software-name"`) +3. Install a coiled runtime environment. This might be from one of the environments + listed in ``environments/``, or it could be a development environment if you are + testing feature branches of dask or distributed. This test suite is configured + to run Coiled's ``package_sync`` feature, so your local environment should be copied + to the cluster. 4. Run tests with `python -m pytest tests` Additionally, tests are automatically run on pull requests to this repository. diff --git a/ci/create_latest_runtime_meta.py b/ci/create_runtime_meta.py similarity index 92% rename from ci/create_latest_runtime_meta.py rename to ci/create_runtime_meta.py index 16d1a8d3aa..4dfd2a36ff 100644 --- a/ci/create_latest_runtime_meta.py +++ b/ci/create_runtime_meta.py @@ -6,7 +6,6 @@ import shlex import subprocess import sys -from distutils.util import strtobool import yaml from jinja2 import Environment, FileSystemLoader, select_autoescape @@ -40,8 +39,7 @@ def main(): # Optionally use the development version of `dask` and `distributed` # from `dask/label/dev` conda channel - upstream = strtobool(os.environ.get("TEST_UPSTREAM", "false")) - if upstream: + if os.environ.get("COILED_RUNTIME_VERSION", "unknown") == "upstream": upstream_packages = {"dask", "distributed"} for idx, req in enumerate(requirements): package_name = Requirement(req).name @@ -53,7 +51,7 @@ def main(): "channels": ["conda-forge"], "dependencies": requirements, } - with open("latest.yaml", "w") as f: + with open("runtime.yaml", "w") as f: yaml.dump(env, f) diff --git a/ci/scripts/install_coiled_runtime.sh b/ci/scripts/install_coiled_runtime.sh index aa52a4b748..78fc08faa1 100644 --- a/ci/scripts/install_coiled_runtime.sh +++ b/ci/scripts/install_coiled_runtime.sh @@ -5,14 +5,14 @@ set -o errexit set -o nounset set -o xtrace -if [[ "$COILED_RUNTIME_VERSION" = 'latest' ]] +if [[ "$COILED_RUNTIME_VERSION" = 'latest' || "$COILED_RUNTIME_VERSION" = 'upstream' ]] then - cat latest.yaml - mamba env update --file latest.yaml + cat runtime.yaml + mamba env update --file runtime.yaml else mamba install -c conda-forge coiled-runtime=$COILED_RUNTIME_VERSION fi # For debugging echo -e "--\n--Conda Environment (re-create this with \`conda env create --name -f \`)\n--" -mamba env export | grep -E -v '^prefix:.*$' \ No newline at end of file +mamba env export | grep -E -v '^prefix:.*$' diff --git a/ci/scripts/run_tests.sh b/ci/scripts/run_tests.sh index 85a2dca5b1..6b3b53ecaf 100644 --- a/ci/scripts/run_tests.sh +++ b/ci/scripts/run_tests.sh @@ -5,14 +5,11 @@ set -o xtrace BENCHMARK="${BENCHMARK:-false}" # Ensure we run additional tests when testing the latest coiled-runtime -if [[ $COILED_RUNTIME_VERSION = 'latest' ]] +if [[ $COILED_RUNTIME_VERSION = 'latest' || $COILED_RUNTIME_VERSION = 'upstream' ]] then EXTRA_OPTIONS="--run-latest" - export COILED_SOFTWARE_NAME=$(cat software_name.txt) - export TEST_UPSTREAM=$(cat test_upstream.txt) else EXTRA_OPTIONS="" - unset COILED_SOFTWARE_NAME fi if [[ $BENCHMARK = 'true' ]] then diff --git a/conftest.py b/conftest.py index a7fb93ad30..e8b891c933 100644 --- a/conftest.py +++ b/conftest.py @@ -64,8 +64,6 @@ def pytest_collection_modifyitems(config, items): def get_coiled_runtime_version(): - if strtobool(os.environ.get("TEST_UPSTREAM", "false")): - return "upstream" try: return os.environ["COILED_RUNTIME_VERSION"] except KeyError: @@ -77,37 +75,13 @@ def get_coiled_runtime_version(): if runtime_info: return runtime_info[0]["version"] else: - return "latest" + return "unknown" -def get_coiled_software_name(): - try: - return os.environ["COILED_SOFTWARE_NAME"] - except KeyError: - # Determine software environment from local `coiled-runtime` version (in installed) - out = subprocess.check_output( - shlex.split("conda list --json coiled-runtime"), text=True - ).rstrip() - runtime_info = json.loads(out) - if runtime_info: - version = runtime_info[0]["version"].replace(".", "-") - py_version = f"{sys.version_info[0]}{sys.version_info[1]}" - return f"coiled/coiled-runtime-{version}-py{py_version}" - else: - raise RuntimeError( - "Must either specific `COILED_SOFTWARE_NAME` environment variable " - "or have `coiled-runtime` installed" - ) - - -dask.config.set( - { - "coiled.account": "dask-engineering", - # "coiled.software": get_coiled_software_name(), - } -) +dask.config.set({"coiled.account": "dask-engineering"}) COILED_RUNTIME_VERSION = get_coiled_runtime_version() +COILED_SOFTWARE_NAME = "package_sync" # ############################################### # @@ -180,7 +154,7 @@ def test_run_benchmark(benchmark_db_session, request, testrun_uid): dask_version=dask.__version__, distributed_version=distributed.__version__, coiled_runtime_version=COILED_RUNTIME_VERSION, - coiled_software_name=dask.config.get("coiled.software"), + coiled_software_name=COILED_SOFTWARE_NAME, python_version=".".join(map(str, sys.version_info)), platform=sys.platform, ci_run_url=WORKFLOW_URL, diff --git a/tests/runtime/test_build.py b/tests/runtime/test_build.py index 6c7b964af9..7314abe131 100644 --- a/tests/runtime/test_build.py +++ b/tests/runtime/test_build.py @@ -7,10 +7,7 @@ import shlex import subprocess import sys -from distutils.util import strtobool -import coiled -import dask import pytest import yaml from distributed import Client @@ -77,8 +74,10 @@ def test_install_dist(): # Test that versions of packages installed are consistent with those # specified in `meta.yaml` - if Version(dask.__version__).local or strtobool( - os.environ.get("TEST_UPSTREAM", "false") + if os.environ.get("COILED_RUNTIME_VERSION", "unknown") not in ( + "upstream", + "latest", + "unknown", ): pytest.skip("Not valid on upstream build") From 828d26137072027a397c5e1055d366942f740bae Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Tue, 9 Aug 2022 15:53:13 -0700 Subject: [PATCH 03/46] Dropped import in merge --- tests/runtime/test_build.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/runtime/test_build.py b/tests/runtime/test_build.py index 7314abe131..990dc3dc40 100644 --- a/tests/runtime/test_build.py +++ b/tests/runtime/test_build.py @@ -8,6 +8,7 @@ import subprocess import sys +import coiled import pytest import yaml from distributed import Client From 09e151ca74c5123da3285062a397ca1adb8318dc Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Tue, 9 Aug 2022 15:55:43 -0700 Subject: [PATCH 04/46] I guess we should run these. --- .github/workflows/tests.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 42fb565ef1..5c1f3f9ff6 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -24,7 +24,6 @@ defaults: jobs: runtime: name: Runtime - ${{ matrix.os }}, Python ${{ matrix.python-version }}, Runtime ${{ matrix.runtime-version }} - needs: software runs-on: ${{ matrix.os }} timeout-minutes: 120 strategy: @@ -78,7 +77,6 @@ jobs: benchmarks: name: Benchmarks - ${{ matrix.os }}, Python ${{ matrix.python-version }}, Runtime ${{ matrix.runtime-version }} - needs: software runs-on: ${{ matrix.os }} timeout-minutes: 120 strategy: @@ -132,7 +130,6 @@ jobs: stability: name: Stability - ${{ matrix.os }}, Python ${{ matrix.python-version }}, Runtime ${{ matrix.runtime-version }} - needs: software runs-on: ${{ matrix.os }} timeout-minutes: 120 strategy: From b1c4c36621280c7f720aefb0d69653b557f4e989 Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Tue, 9 Aug 2022 15:57:22 -0700 Subject: [PATCH 05/46] Fix condition --- tests/runtime/test_build.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/runtime/test_build.py b/tests/runtime/test_build.py index 990dc3dc40..96ff838b26 100644 --- a/tests/runtime/test_build.py +++ b/tests/runtime/test_build.py @@ -75,7 +75,7 @@ def test_install_dist(): # Test that versions of packages installed are consistent with those # specified in `meta.yaml` - if os.environ.get("COILED_RUNTIME_VERSION", "unknown") not in ( + if os.environ.get("COILED_RUNTIME_VERSION", "unknown") in ( "upstream", "latest", "unknown", From b2005545f73e9491c873568a72a9afcd826686ea Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Tue, 16 Aug 2022 16:11:09 -0700 Subject: [PATCH 06/46] Skip output db, in combine step, which might appear if there are CI reruns --- .github/workflows/tests.yml | 6 +++--- ci/scripts/combine-dbs.sh | 5 +++++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 677bf1c4a5..704598d571 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -243,7 +243,7 @@ jobs: - name: Upload benchmark results as artifact uses: actions/upload-artifact@v3 with: - name: benchmark.db + name: benchmark path: benchmark.db regressions: @@ -259,7 +259,7 @@ jobs: - uses: actions/download-artifact@v3 with: - name: benchmark.db + name: benchmark - name: Set up environment uses: conda-incubator/setup-miniconda@v2 @@ -325,7 +325,7 @@ jobs: - uses: actions/download-artifact@v3 with: - name: benchmark.db + name: benchmark - name: Set up environment uses: conda-incubator/setup-miniconda@v2 diff --git a/ci/scripts/combine-dbs.sh b/ci/scripts/combine-dbs.sh index 459fe2f86c..976e43ea42 100644 --- a/ci/scripts/combine-dbs.sh +++ b/ci/scripts/combine-dbs.sh @@ -16,6 +16,11 @@ DB_NAME=benchmark.tmp.db alembic upgrade head # Merge in the individual job dbs into our working copy for FILE in $(find benchmarks -name "*.db") do + # Skip the output DB if we see it + if [ ${FILE##*/} == $DB_NAME ]; then + echo "Skipping $FILE" + continue + fi echo "Processing $FILE" # Copy the individual table into the primary one. We make an intermediate # temp table so that we can null out the primary keys and reset the From fc40b100723146ddbe392367f0df9b08b91cb109 Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Tue, 16 Aug 2022 16:14:24 -0700 Subject: [PATCH 07/46] Always upload static site --- .github/workflows/tests.yml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 704598d571..4b42553b3e 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -315,7 +315,7 @@ jobs: static-site: needs: process-results # Always generate the site, as this can be skipped even if an indirect dependency fails (like a test run) - if: always() && github.ref == 'refs/heads/main' && github.repository == 'coiled/coiled-runtime' + if: always() name: Build static dashboards runs-on: ubuntu-latest steps: @@ -339,7 +339,14 @@ jobs: run: | python dashboard.py + - name: Upload benchmark results as artifact + uses: actions/upload-artifact@v3 + with: + name: static-site + path: static/ + - name: Deploy 🚀 + if: github.ref == 'refs/heads/main' && github.repository == 'coiled/coiled-runtime' uses: JamesIves/github-pages-deploy-action@4.1.7 with: branch: gh-pages From f17fe0c4d3cd8fa30662998ac3511cf8861f3055 Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Wed, 17 Aug 2022 09:43:21 -0700 Subject: [PATCH 08/46] test ci From 393681a9e3db7077a833db90f980dce31878f7ff Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Fri, 19 Aug 2022 08:57:46 -0700 Subject: [PATCH 09/46] test ci From 5b7c0c1cc5b350552dfd977d9590f325291c7eda Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Mon, 22 Aug 2022 07:54:35 -0700 Subject: [PATCH 10/46] test ci From 69c6369b9218869040c3a583ecc72227b478092b Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Wed, 24 Aug 2022 07:38:29 -0700 Subject: [PATCH 11/46] test ci From 21cf14d5f4ca583cc7e4a8dfbfbfa8df09c25a29 Mon Sep 17 00:00:00 2001 From: James Bourbeau Date: Wed, 24 Aug 2022 13:21:47 -0500 Subject: [PATCH 12/46] Rerun CI From dea73fb6c42a5c92f8e02d9c00b5e075a2e9daeb Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Wed, 24 Aug 2022 14:00:56 -0700 Subject: [PATCH 13/46] Test ci From e962837c11aabff51f30aa64c02e496b88d5d2a3 Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Wed, 24 Aug 2022 15:15:32 -0700 Subject: [PATCH 14/46] Test ci From 5ff1ac7375fcad65b23e421e978419d260986533 Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Wed, 24 Aug 2022 16:16:29 -0700 Subject: [PATCH 15/46] Test ci From ef2f850840f12affc48ff0584a43dd098f7c22db Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Thu, 25 Aug 2022 07:34:54 -0700 Subject: [PATCH 16/46] test ci From 984987fa8fed640825c28ebb09f2641f20f5180e Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Thu, 25 Aug 2022 13:51:44 -0700 Subject: [PATCH 17/46] test ci From b8cbcbc955ff4a09230b14892a1fa60324afba54 Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Thu, 25 Aug 2022 14:11:11 -0700 Subject: [PATCH 18/46] Use package_sync and benchmarking infrastructure in spill tests --- tests/stability/test_spill.py | 75 ++++++++++++++++++----------------- 1 file changed, 38 insertions(+), 37 deletions(-) diff --git a/tests/stability/test_spill.py b/tests/stability/test_spill.py index dba00ea7b8..e390e11788 100644 --- a/tests/stability/test_spill.py +++ b/tests/stability/test_spill.py @@ -6,39 +6,12 @@ from dask.distributed import Client, wait -@pytest.mark.stability -@pytest.mark.parametrize("keep_around", (True, False)) -def test_spilling(keep_around): +@pytest.fixture(scope="module") +def spill_cluster(): with Cluster( - name=f"test_spill-{uuid.uuid4().hex}", - n_workers=5, - worker_disk_size=55, - worker_vm_types=["t3.medium"], - wait_for_workers=True, - environ={ - # Note: We set allowed-failures to ensure that no tasks are not retried - # upon ungraceful shutdown behavior during adaptive scaling - # but we receive a KilledWorker() instead. - "DASK_DISTRIBUTED__SCHEDULER__ALLOWED_FAILURES": "0" - }, - ) as cluster: - with Client(cluster) as client: - arr = da.random.random((200, 2**27)).persist() # 200 GiB - wait(arr) - fut = client.compute(arr.sum()) - if not keep_around: - del arr - wait(fut) - - -@pytest.mark.skip( - reason="Skip until https://github.com/coiled/feedback/issues/185 is resolved." -) -@pytest.mark.stability -def test_tensordot_stress(): - with Cluster( - name=f"test_spill-{uuid.uuid4().hex}", + f"spill-{uuid.uuid4().hex[:8]}", n_workers=5, + package_sync=True, worker_disk_size=55, worker_vm_types=["t3.medium"], wait_for_workers=True, @@ -54,9 +27,37 @@ def test_tensordot_stress(): "DASK_DISTRIBUTED__WORKER__CONNECTIONS__OUTGOING": "1", }, ) as cluster: - with Client(cluster) as client: - a = da.random.random((48 * 1024, 48 * 1024)) # 18 GiB - b = (a @ a.T).sum().round(3) - fut = client.compute(b) - wait(fut) - assert fut.result() + yield cluster + + +@pytest.fixture +def spill_client(spill_cluster, sample_memory, benchmark_time): + with Client(spill_cluster) as client: + spill_cluster.scale(5) + client.wait_for_workers(5) + client.restart() + with sample_memory(client), benchmark_time: + yield client + + +@pytest.mark.stability +@pytest.mark.parametrize("keep_around", (True, False)) +def test_spilling(spill_client, keep_around): + arr = da.random.random((200, 2**27)).persist() # 200 GiB + wait(arr) + fut = spill_client.compute(arr.sum()) + if not keep_around: + del arr + wait(fut) + + +@pytest.mark.skip( + reason="Skip until https://github.com/coiled/feedback/issues/185 is resolved." +) +@pytest.mark.stability +def test_tensordot_stress(spill_client): + a = da.random.random((48 * 1024, 48 * 1024)) # 18 GiB + b = (a @ a.T).sum().round(3) + fut = spill_client.compute(b) + wait(fut) + assert fut.result() From 6c2665e84f9bcefd994a265df9b6bd79e70a650b Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Thu, 25 Aug 2022 14:13:57 -0700 Subject: [PATCH 19/46] Remove now-unneeded workaround --- tests/stability/test_shuffle.py | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/tests/stability/test_shuffle.py b/tests/stability/test_shuffle.py index 38b817fa7b..a43fa4ff03 100644 --- a/tests/stability/test_shuffle.py +++ b/tests/stability/test_shuffle.py @@ -32,10 +32,4 @@ def test_shuffle_parquet(small_client, s3_url, s3_storage_options): shuffled_url = s3_url + "/shuffled.parquet" df_shuffled = dd.read_parquet(dataset_url, storage_options=s3_storage_options) df_shuffled = df_shuffled.shuffle(on="x") - # Workaround for performance issue. See https://github.com/coiled/coiled-runtime/issues/79 - # for more details. Replace with the line below once using `dask>=2022.04.2`. - # df_shuffled.to_parquet(shuffled_url, storage_options=s3_storage_options) - result = df_shuffled.to_parquet( - shuffled_url, compute=False, storage_options=s3_storage_options - ) - dask.compute(result) + df_shuffled.to_parquet(shuffled_url, storage_options=s3_storage_options) From e08de706ac7e1e08cd2820fb7889ec06dbeb5d36 Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Thu, 25 Aug 2022 15:36:05 -0700 Subject: [PATCH 20/46] Skip test_spilling for now --- tests/stability/test_spill.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/stability/test_spill.py b/tests/stability/test_spill.py index e390e11788..a67c88becb 100644 --- a/tests/stability/test_spill.py +++ b/tests/stability/test_spill.py @@ -40,6 +40,7 @@ def spill_client(spill_cluster, sample_memory, benchmark_time): yield client +@pytest.mark.skip(reason="https://github.com/coiled/coiled-runtime/issues/280") @pytest.mark.stability @pytest.mark.parametrize("keep_around", (True, False)) def test_spilling(spill_client, keep_around): From 9e7af4413e2a45aa5b492869b02facda1189a041 Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Fri, 26 Aug 2022 12:29:33 -0700 Subject: [PATCH 21/46] Bump default image size --- tests/stability/test_deadlock.py | 3 ++- tests/stability/test_spill.py | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/stability/test_deadlock.py b/tests/stability/test_deadlock.py index 6a4818058e..0702ad01e6 100644 --- a/tests/stability/test_deadlock.py +++ b/tests/stability/test_deadlock.py @@ -17,7 +17,8 @@ def test_repeated_merge_spill(upload_cluster_dump, benchmark_time): with coiled.v2.Cluster( name=f"test_deadlock-{uuid.uuid4().hex}", n_workers=20, - worker_vm_types=["t3.medium"], + worker_vm_types=["t3.large"], + scheduler_vm_types=["t3.large"], package_sync=True, ) as cluster: with Client(cluster) as client: diff --git a/tests/stability/test_spill.py b/tests/stability/test_spill.py index a67c88becb..3392d4bd86 100644 --- a/tests/stability/test_spill.py +++ b/tests/stability/test_spill.py @@ -13,7 +13,8 @@ def spill_cluster(): n_workers=5, package_sync=True, worker_disk_size=55, - worker_vm_types=["t3.medium"], + worker_vm_types=["t3.large"], + scheduler_vm_types=["t3.large"], wait_for_workers=True, environ={ # Note: We set allowed-failures to ensure that no tasks are not retried From a0debfc19c21e6e79a2350160946ca7787ff5756 Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Fri, 26 Aug 2022 12:56:22 -0700 Subject: [PATCH 22/46] Test CI From 677284222492e62d34b090b2d67958c51637c26e Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Fri, 26 Aug 2022 13:13:17 -0700 Subject: [PATCH 23/46] Un-skip --- tests/stability/test_spill.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/stability/test_spill.py b/tests/stability/test_spill.py index 3392d4bd86..574ff73ae5 100644 --- a/tests/stability/test_spill.py +++ b/tests/stability/test_spill.py @@ -41,7 +41,6 @@ def spill_client(spill_cluster, sample_memory, benchmark_time): yield client -@pytest.mark.skip(reason="https://github.com/coiled/coiled-runtime/issues/280") @pytest.mark.stability @pytest.mark.parametrize("keep_around", (True, False)) def test_spilling(spill_client, keep_around): From c62fa877bea2943f178e11b6810e824fe47b3b69 Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Fri, 26 Aug 2022 14:15:59 -0700 Subject: [PATCH 24/46] test ci From 97bf05c0a769a791e2d43a7b9f2d32f2bc075e35 Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Fri, 26 Aug 2022 16:14:11 -0700 Subject: [PATCH 25/46] Test CI From 161c99cd7bcb092cb0adf1bd7efd2bd2df928572 Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Mon, 29 Aug 2022 08:05:51 -0700 Subject: [PATCH 26/46] Test CI From 1cfc4315c67d3d715652c7127693b406f465e400 Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Tue, 30 Aug 2022 11:55:57 -0700 Subject: [PATCH 27/46] Update fixtures --- tests/stability/test_spill.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/stability/test_spill.py b/tests/stability/test_spill.py index 574ff73ae5..05a9ecad65 100644 --- a/tests/stability/test_spill.py +++ b/tests/stability/test_spill.py @@ -32,12 +32,14 @@ def spill_cluster(): @pytest.fixture -def spill_client(spill_cluster, sample_memory, benchmark_time): +def spill_client( + spill_cluster, benchmark_task_durations, benchmark_memory, benchmark_time +): with Client(spill_cluster) as client: spill_cluster.scale(5) client.wait_for_workers(5) client.restart() - with sample_memory(client), benchmark_time: + with benchmark_memory(client), benchmark_task_durations(client), benchmark_time: yield client From 6ddea666862a689577f0317a197e6c0211f56b11 Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Tue, 30 Aug 2022 11:59:31 -0700 Subject: [PATCH 28/46] Try bumping instance type for small_cluster --- conftest.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/conftest.py b/conftest.py index 0da79c6905..353b685b13 100644 --- a/conftest.py +++ b/conftest.py @@ -262,8 +262,8 @@ def small_cluster(request): with Cluster( name=f"{module}-{uuid.uuid4().hex[:8]}", n_workers=10, - worker_vm_types=["t3.large"], # 2CPU, 8GiB - scheduler_vm_types=["t3.large"], + worker_vm_types=["t3.xlarge"], # 4CPU, 16GiB + scheduler_vm_types=["t3.xlarge"], backend_options=backend_options, package_sync=True, ) as cluster: From 928d17658c485bcd9b21c34e2ee33f3669428e6b Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Tue, 30 Aug 2022 14:16:10 -0700 Subject: [PATCH 29/46] Revert "Try bumping instance type for small_cluster" This reverts commit 6ddea666862a689577f0317a197e6c0211f56b11. --- conftest.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/conftest.py b/conftest.py index 353b685b13..0da79c6905 100644 --- a/conftest.py +++ b/conftest.py @@ -262,8 +262,8 @@ def small_cluster(request): with Cluster( name=f"{module}-{uuid.uuid4().hex[:8]}", n_workers=10, - worker_vm_types=["t3.xlarge"], # 4CPU, 16GiB - scheduler_vm_types=["t3.xlarge"], + worker_vm_types=["t3.large"], # 2CPU, 8GiB + scheduler_vm_types=["t3.large"], backend_options=backend_options, package_sync=True, ) as cluster: From e1a0ffb23b097c442f1bf4111e5226caceb7d252 Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Tue, 30 Aug 2022 14:54:01 -0700 Subject: [PATCH 30/46] Try an SSD instance for spill tests --- tests/stability/test_spill.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/stability/test_spill.py b/tests/stability/test_spill.py index 05a9ecad65..c74d49e49b 100644 --- a/tests/stability/test_spill.py +++ b/tests/stability/test_spill.py @@ -12,9 +12,9 @@ def spill_cluster(): f"spill-{uuid.uuid4().hex[:8]}", n_workers=5, package_sync=True, - worker_disk_size=55, - worker_vm_types=["t3.large"], - scheduler_vm_types=["t3.large"], + worker_disk_size=64, + worker_vm_types=["m5d.large"], + scheduler_vm_types=["m5d.large"], wait_for_workers=True, environ={ # Note: We set allowed-failures to ensure that no tasks are not retried From e1972c23f71dc614b7fb337a7cee2f6067f50553 Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Tue, 30 Aug 2022 15:42:41 -0700 Subject: [PATCH 31/46] Revert "Try an SSD instance for spill tests" This reverts commit e1a0ffb23b097c442f1bf4111e5226caceb7d252. --- tests/stability/test_spill.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/stability/test_spill.py b/tests/stability/test_spill.py index c74d49e49b..05a9ecad65 100644 --- a/tests/stability/test_spill.py +++ b/tests/stability/test_spill.py @@ -12,9 +12,9 @@ def spill_cluster(): f"spill-{uuid.uuid4().hex[:8]}", n_workers=5, package_sync=True, - worker_disk_size=64, - worker_vm_types=["m5d.large"], - scheduler_vm_types=["m5d.large"], + worker_disk_size=55, + worker_vm_types=["t3.large"], + scheduler_vm_types=["t3.large"], wait_for_workers=True, environ={ # Note: We set allowed-failures to ensure that no tasks are not retried From 576e855412372f5b59556f683ed259ea3bf45a2e Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Tue, 30 Aug 2022 15:44:15 -0700 Subject: [PATCH 32/46] Reduce the spill test to 2x memory, try to avoid a test that takes 30 minutes and eats up swap --- tests/stability/test_spill.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/stability/test_spill.py b/tests/stability/test_spill.py index 05a9ecad65..b00779a5fd 100644 --- a/tests/stability/test_spill.py +++ b/tests/stability/test_spill.py @@ -12,7 +12,7 @@ def spill_cluster(): f"spill-{uuid.uuid4().hex[:8]}", n_workers=5, package_sync=True, - worker_disk_size=55, + worker_disk_size=64, worker_vm_types=["t3.large"], scheduler_vm_types=["t3.large"], wait_for_workers=True, @@ -46,7 +46,7 @@ def spill_client( @pytest.mark.stability @pytest.mark.parametrize("keep_around", (True, False)) def test_spilling(spill_client, keep_around): - arr = da.random.random((200, 2**27)).persist() # 200 GiB + arr = da.random.random((64, 2**27)).persist() # 64 GiB, ~2x memory wait(arr) fut = spill_client.compute(arr.sum()) if not keep_around: From 2ca5adcb8b29f89d9a8f6cb835e30a4f1e7afa02 Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Tue, 30 Aug 2022 16:22:04 -0700 Subject: [PATCH 33/46] Revert --- tests/stability/test_shuffle.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tests/stability/test_shuffle.py b/tests/stability/test_shuffle.py index a43fa4ff03..38b817fa7b 100644 --- a/tests/stability/test_shuffle.py +++ b/tests/stability/test_shuffle.py @@ -32,4 +32,10 @@ def test_shuffle_parquet(small_client, s3_url, s3_storage_options): shuffled_url = s3_url + "/shuffled.parquet" df_shuffled = dd.read_parquet(dataset_url, storage_options=s3_storage_options) df_shuffled = df_shuffled.shuffle(on="x") - df_shuffled.to_parquet(shuffled_url, storage_options=s3_storage_options) + # Workaround for performance issue. See https://github.com/coiled/coiled-runtime/issues/79 + # for more details. Replace with the line below once using `dask>=2022.04.2`. + # df_shuffled.to_parquet(shuffled_url, storage_options=s3_storage_options) + result = df_shuffled.to_parquet( + shuffled_url, compute=False, storage_options=s3_storage_options + ) + dask.compute(result) From 12713075c6219328eb9be4ade1b7f77b3bc9dab8 Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Wed, 31 Aug 2022 10:52:03 -0700 Subject: [PATCH 34/46] Test ci From 7e0fe7e3e0f0b6477688bd92adf683b1a9bbe696 Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Wed, 31 Aug 2022 12:22:17 -0700 Subject: [PATCH 35/46] Test ci From 99c2d4d5f388fac394facc55f92b0765ecf36911 Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Wed, 31 Aug 2022 14:31:28 -0700 Subject: [PATCH 36/46] Try installing git dep for upstream --- ci/create_runtime_meta.py | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/ci/create_runtime_meta.py b/ci/create_runtime_meta.py index 4dfd2a36ff..cad1fa9344 100644 --- a/ci/create_runtime_meta.py +++ b/ci/create_runtime_meta.py @@ -37,20 +37,27 @@ def main(): if package_name == "python": requirements[idx] = f"python =={python_version}" - # Optionally use the development version of `dask` and `distributed` - # from `dask/label/dev` conda channel if os.environ.get("COILED_RUNTIME_VERSION", "unknown") == "upstream": - upstream_packages = {"dask", "distributed"} - for idx, req in enumerate(requirements): - package_name = Requirement(req).name - if package_name in upstream_packages: - requirements[idx] = get_latest_conda_build(package_name) + requirements = [ + r + for r in requirements + if Requirement(r).name not in {"dask", "distributed"} + ] + requirements.append( + { + "pip": [ + "git+https://github.com/dask/dask@main", + "git+https://github.com/dask/distributed@main", + ] + } + ) # File compatible with `mamba env create --file <...>` env = { "channels": ["conda-forge"], "dependencies": requirements, } + with open("runtime.yaml", "w") as f: yaml.dump(env, f) From 5d13ab90ff0006efac70f7586fcac0038508d36f Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Wed, 31 Aug 2022 16:06:15 -0700 Subject: [PATCH 37/46] Did we catch something --- ci/create_runtime_meta.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/create_runtime_meta.py b/ci/create_runtime_meta.py index cad1fa9344..32786999bd 100644 --- a/ci/create_runtime_meta.py +++ b/ci/create_runtime_meta.py @@ -47,7 +47,7 @@ def main(): { "pip": [ "git+https://github.com/dask/dask@main", - "git+https://github.com/dask/distributed@main", + "git+https://github.com/dask/distributed@817ead3aed90bad8c6bd38063ec8bdfcacb4ff5f", ] } ) From 6ab38a3a61fcdcfb4e0e8c371a2f568cdf007a4c Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Wed, 31 Aug 2022 17:28:48 -0700 Subject: [PATCH 38/46] Revert "Did we catch something" This reverts commit 5d13ab90ff0006efac70f7586fcac0038508d36f. --- ci/create_runtime_meta.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/create_runtime_meta.py b/ci/create_runtime_meta.py index 32786999bd..cad1fa9344 100644 --- a/ci/create_runtime_meta.py +++ b/ci/create_runtime_meta.py @@ -47,7 +47,7 @@ def main(): { "pip": [ "git+https://github.com/dask/dask@main", - "git+https://github.com/dask/distributed@817ead3aed90bad8c6bd38063ec8bdfcacb4ff5f", + "git+https://github.com/dask/distributed@main", ] } ) From 347c499515a356a6db4d1f21c4d97ec6c4051695 Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Thu, 1 Sep 2022 08:12:34 -0700 Subject: [PATCH 39/46] Test CI From 15667412a5649289ca74a88b58338bdf5e8b1e4f Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Fri, 2 Sep 2022 08:55:45 -0700 Subject: [PATCH 40/46] test ci From 1bdcda6fee8a5855dd9482ebd8c88208a3e635f4 Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Tue, 6 Sep 2022 09:19:02 -0700 Subject: [PATCH 41/46] Test CI From b2727062c46449ad0d1501405b8304f3436acea9 Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Thu, 8 Sep 2022 16:19:06 -0700 Subject: [PATCH 42/46] Test CI From d46ff90bc1a4b351309ae51df2f2bacecfd349e2 Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Wed, 14 Sep 2022 07:59:22 -0700 Subject: [PATCH 43/46] Test CI From 9c54eabdef509baba0eb29331de50e22634c9249 Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Wed, 14 Sep 2022 11:43:49 -0700 Subject: [PATCH 44/46] clean up after merge --- .github/workflows/tests.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index e027774fa0..d859a7fd67 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -326,11 +326,6 @@ jobs: python-version: "3.9" environment-file: ci/environment-dashboard.yml - - name: Download software environment assets - uses: actions/download-artifact@v3 - with: - name: software-environment-py3.9 - - name: Generate dashboards run: python dashboard.py -d benchmark.db -o static -b coiled-latest-py3.9 coiled-upstream-py3.9 From 636ad711a1fef9d178056ece19b46c349d23dcca Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Wed, 14 Sep 2022 11:47:24 -0700 Subject: [PATCH 45/46] Declare bankruptcy on cluster startup time --- ...declare_bankruptcy_for_cluster_startup_.py | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 alembic/versions/2764a4f5582b_declare_bankruptcy_for_cluster_startup_.py diff --git a/alembic/versions/2764a4f5582b_declare_bankruptcy_for_cluster_startup_.py b/alembic/versions/2764a4f5582b_declare_bankruptcy_for_cluster_startup_.py new file mode 100644 index 0000000000..1f3df6c7c5 --- /dev/null +++ b/alembic/versions/2764a4f5582b_declare_bankruptcy_for_cluster_startup_.py @@ -0,0 +1,30 @@ +"""Declare bankruptcy for cluster startup time + +Revision ID: 2764a4f5582b +Revises: 924e9b1430e1 +Create Date: 2022-09-14 11:45:46.024184 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = "2764a4f5582b" +down_revision = "924e9b1430e1" +branch_labels = None +depends_on = None + + +def upgrade() -> None: + op.execute( + """ + delete from test_run + where originalname = 'test_default_cluster_spinup_time' + and path = 'benchmarks/test_coiled.py'; + """ + ) + + +def downgrade() -> None: + pass From 3271051f2eacfa47afdb74a7bc360c97addefaf9 Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Thu, 15 Sep 2022 10:25:11 -0700 Subject: [PATCH 46/46] Apply suggestions from code review Remove duplicated code --- .github/workflows/tests.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index d859a7fd67..194f1e64e3 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -335,12 +335,6 @@ jobs: name: static-dashboard path: static - - name: Upload benchmark results as artifact - uses: actions/upload-artifact@v3 - with: - name: static-site - path: static/ - - name: Deploy 🚀 uses: JamesIves/github-pages-deploy-action@4.1.7 if: github.ref == 'refs/heads/main' && github.repository == 'coiled/coiled-runtime'