From 562bbbf0dafe89c8b404f7a84edf645d26ab0ee8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Juli=C3=A1n=20Espina?= Date: Thu, 25 Jul 2024 16:47:46 -0600 Subject: [PATCH] chore: enable CI for the experimental branch --- .github/workflows/ci.yaml | 2 + .github/workflows/experimental.yaml | 112 ++++++++++++++++++++++++++++ tests/integration/test_charm.py | 8 +- 3 files changed, 119 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/experimental.yaml diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index b129baf..3894a41 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -16,6 +16,8 @@ name: slurmctld charm tests on: workflow_call: pull_request: + branches: + - main jobs: inclusive-naming-check: diff --git a/.github/workflows/experimental.yaml b/.github/workflows/experimental.yaml new file mode 100644 index 0000000..e290257 --- /dev/null +++ b/.github/workflows/experimental.yaml @@ -0,0 +1,112 @@ +# Copyright 2023 Canonical Ltd. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +name: slurmctld charm tests (experimental) +on: + workflow_call: + pull_request: + branches: + - experimental + +jobs: + inclusive-naming-check: + name: Inclusive naming check + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Run tests + uses: get-woke/woke-action@v0 + with: + fail-on-error: true + + lint: + name: Lint + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Install dependencies + run: python3 -m pip install tox + - name: Run linters + run: tox -e lint + + unit-test: + name: Unit tests + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Install dependencies + run: python3 -m pip install tox + - name: Run tests + run: tox -e unit + + type-check: + name: Static type checking + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Install dependencies + run: python3 -m pip install tox + - name: Run tests + run: tox -e type + + integration-test: + strategy: + fail-fast: true + matrix: + bases: + - ubuntu@22.04 + name: Integration tests (LXD) | ${{ matrix.bases }} + runs-on: ubuntu-latest + needs: + - inclusive-naming-check + - lint + - unit-test + - type-check + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + path: main + - name: Fetch slurmd + uses: actions/checkout@v4 + with: + repository: charmed-hpc/slurmd-operator + path: slurmd-operator + ref: experimental + - name: Fetch slurmdbd + uses: actions/checkout@v4 + with: + repository: charmed-hpc/slurmdbd-operator + path: slurmdbd-operator + ref: experimental + - name: Fetch slurmrestd + uses: actions/checkout@v4 + with: + repository: charmed-hpc/slurmrestd-operator + path: slurmrestd-operator + ref: experimental + - name: Setup operator environment + uses: charmed-kubernetes/actions-operator@main + with: + provider: lxd + juju-channel: 3.4/stable + - name: Run tests + run: | + cd main && tox run -e integration -- \ + --charm-base=${{ matrix.bases }} \ + --use-local \ No newline at end of file diff --git a/tests/integration/test_charm.py b/tests/integration/test_charm.py index e5f274b..34d7c8d 100644 --- a/tests/integration/test_charm.py +++ b/tests/integration/test_charm.py @@ -103,7 +103,9 @@ async def test_build_and_deploy_against_edge( await ops_test.model.integrate(f"{SLURMDBD}:database", f"{SLURMDBD}-{ROUTER}:database") # Reduce the update status frequency to accelerate the triggering of deferred events. async with ops_test.fast_forward(): - await ops_test.model.wait_for_idle(apps=[SLURMCTLD], status="active", timeout=1000) + await ops_test.model.wait_for_idle( + apps=[SLURMCTLD, SLURMD, SLURMDBD, SLURMRESTD], status="active", timeout=2000 + ) assert ops_test.model.applications["slurmctld"].units[0].workload_status == "active" @@ -118,7 +120,7 @@ async def test_slurmctld_is_active(ops_test: OpsTest) -> None: """Test that slurmctld is active inside Juju unit.""" logger.info("Checking that slurmctld is active inside Juju unit") slurmctld_unit = ops_test.model.applications["slurmctld"].units[0] - res = (await slurmctld_unit.ssh("systemctl is-active slurmctld")).strip("\n") + res = (await slurmctld_unit.ssh("systemctl is-active snap.slurm.slurmctld")).strip("\n") assert res == "active" @@ -148,5 +150,5 @@ async def test_munge_is_active(ops_test: OpsTest) -> None: """Test that munge is active inside Juju unit.""" logger.info("Checking that munge is active inside Juju unit") slurmctld_unit = ops_test.model.applications["slurmctld"].units[0] - res = (await slurmctld_unit.ssh("systemctl is-active munge")).strip("\n") + res = (await slurmctld_unit.ssh("systemctl is-active snap.slurm.munged")).strip("\n") assert res == "active"