From b11c4cfa5cbc1712c8328c8c465cf168424f54b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Juli=C3=A1n=20Espina?= Date: Fri, 19 Jul 2024 12:03:37 -0600 Subject: [PATCH] chore: enable CI for the experimental branch Since the experimental branch and the main branch use different versions of SLURM, we need to use the experimental branch for `slurmctld` when pushing new changes to `slurmctld`. --- .github/workflows/ci.yaml | 2 + .github/workflows/experimental.yaml | 101 ++++++++++++++++++++++++++++ tests/integration/test_charm.py | 4 +- 3 files changed, 105 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/experimental.yaml diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 237d7d7..2607d9d 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -16,6 +16,8 @@ name: slurmd 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..f02b376 --- /dev/null +++ b/.github/workflows/experimental.yaml @@ -0,0 +1,101 @@ +# 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: slurmd 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: woke + uses: get-woke/woke-action@v0 + with: + # Cause the check to fail on any broke rules + fail-on-error: true + + lint: + name: Lint + runs-on: ubuntu-22.04 + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Install dependencies + run: python3 -m pip install tox + - name: Run linters + run: tox -e lint + + type: + name: Type check with pyright + runs-on: ubuntu-22.04 + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Install dependencies + run: python3 -m pip install tox + - name: Run pyright + run: tox -e type + + 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 + + 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 + - type + - unit-test + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + path: main + - name: Fetch slurmctld + uses: actions/checkout@v4 + with: + repository: charmed-hpc/slurmctld-operator + path: slurmctld-operator + ref: experimental + - name: Setup operator environment + uses: charmed-kubernetes/actions-operator@main + with: + provider: lxd + juju-channel: 3.1/stable + - name: Run tests + run: | + cd main && tox run -e integration -- \ + --charm-base=${{ matrix.bases }} \ + --use-local diff --git a/tests/integration/test_charm.py b/tests/integration/test_charm.py index 2204b70..6c444aa 100644 --- a/tests/integration/test_charm.py +++ b/tests/integration/test_charm.py @@ -71,7 +71,7 @@ async def test_munge_is_active(ops_test: OpsTest): """Test that munge is active.""" logger.info("Checking that munge is active inside Juju unit") slurmd_unit = ops_test.model.units.get(UNIT_NAME) - cmd_res = (await slurmd_unit.ssh(command="systemctl is-active munge")).strip("\n") + cmd_res = (await slurmd_unit.ssh(command="systemctl is-active snap.slurm.munged")).strip("\n") assert cmd_res == "active" @@ -81,5 +81,5 @@ async def test_slurmd_is_active(ops_test: OpsTest): """Test that slurmd is active.""" logger.info("Checking that slurmd is active inside Juju unit") slurmd_unit = ops_test.model.units.get(UNIT_NAME) - cmd_res = (await slurmd_unit.ssh(command="systemctl is-active slurmd")).strip("\n") + cmd_res = (await slurmd_unit.ssh(command="systemctl is-active snap.slurm.slurmd")).strip("\n") assert cmd_res == "active"