Skip to content

Commit 966b56f

Browse files
authored
Add integration tests (#432)
* Add integration tests * Update pipeline.yml * add sleep * longer wait * print state * add cores * more adjustments * fix flux test * fix slurm test * is None
1 parent ac5ad0f commit 966b56f

File tree

3 files changed

+75
-0
lines changed

3 files changed

+75
-0
lines changed

.github/workflows/pipeline.yml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,39 @@ jobs:
221221
pip install . --no-deps --no-build-isolation
222222
python -m unittest discover tests
223223
224+
unittest_slurm:
225+
needs: [black]
226+
runs-on: ubuntu-latest
227+
services:
228+
mysql:
229+
image: mysql:8.0
230+
env:
231+
MYSQL_ROOT_PASSWORD: root
232+
ports:
233+
- "8888:3306"
234+
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
235+
steps:
236+
- uses: actions/checkout@v4
237+
- uses: koesterlab/setup-slurm-action@v1
238+
timeout-minutes: 5
239+
- name: Conda config
240+
run: echo -e "channels:\n - conda-forge\n" > .condarc
241+
- uses: conda-incubator/setup-miniconda@v3
242+
with:
243+
python-version: "3.13"
244+
miniforge-version: latest
245+
condarc-file: .condarc
246+
environment-file: .ci_support/environment.yml
247+
- name: Test
248+
shell: bash -l {0}
249+
timeout-minutes: 5
250+
run: |
251+
pip install . --no-deps --no-build-isolation
252+
cd tests
253+
sinfo -o "%n %e %m %a %c %C"
254+
srun --mpi=list
255+
python -m unittest test_slurm_integration.py
256+
224257
autobot:
225258
needs: [unittest_old, unittest_matrix, pip_check, notebooks, minimal, coverage]
226259
permissions:

tests/test_flux.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,3 +116,13 @@ def test_flux_integration(self):
116116
self.assertEqual(self.flux.get_status_of_job(process_id=job_id), "running")
117117
self.flux.delete_job(process_id=job_id)
118118
self.assertEqual(self.flux.get_status_of_job(process_id=job_id), "error")
119+
120+
def test_flux_integration_dynamic(self):
121+
flux_dynamic = QueueAdapter(queue_type="flux")
122+
job_id = flux_dynamic.submit_job(
123+
cores=1,
124+
command="sleep 1",
125+
)
126+
self.assertEqual(flux_dynamic.get_status_of_job(process_id=job_id), "running")
127+
flux_dynamic.delete_job(process_id=job_id)
128+
self.assertEqual(flux_dynamic.get_status_of_job(process_id=job_id), "error")

tests/test_slurm_integration.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import unittest
2+
import shutil
3+
from pysqa import QueueAdapter
4+
5+
if shutil.which("srun") is not None:
6+
skip_slurm_test = False
7+
else:
8+
skip_slurm_test = True
9+
10+
11+
submission_template = """\
12+
#!/bin/bash
13+
#SBATCH --output=time.out
14+
#SBATCH --job-name={{job_name}}
15+
#SBATCH --chdir={{working_directory}}
16+
#SBATCH --get-user-env=L
17+
#SBATCH --ntasks={{cores}}
18+
19+
{{command}}
20+
"""
21+
22+
23+
@unittest.skipIf(
24+
skip_slurm_test, "SLURM is not installed, so the slurm tests are skipped.",
25+
)
26+
class TestSlurm(unittest.TestCase):
27+
def test_slurm(self):
28+
slurm_dynamic = QueueAdapter(queue_type="slurm")
29+
job_id = slurm_dynamic.submit_job(command="sleep 1", cores=1, submission_template=submission_template)
30+
self.assertEqual(slurm_dynamic.get_status_of_job(process_id=job_id), "pending")
31+
slurm_dynamic.delete_job(process_id=job_id)
32+
self.assertIsNone(slurm_dynamic.get_status_of_job(process_id=job_id))

0 commit comments

Comments
 (0)