diff --git a/.github/workflows/parsl+flux.yaml b/.github/workflows/parsl+flux.yaml new file mode 100644 index 0000000000..e2724c578a --- /dev/null +++ b/.github/workflows/parsl+flux.yaml @@ -0,0 +1,47 @@ +name: Test Flux Scheduler +on: + pull_request: [] + +jobs: + build: + runs-on: ubuntu-22.04 + permissions: + packages: read + strategy: + fail-fast: false + matrix: + container: ['fluxrm/flux-sched:jammy'] + timeout-minutes: 30 + + container: + image: ${{ matrix.container }} + options: "--platform=linux/amd64 --user root -it --init" + + name: ${{ matrix.container }} + steps: + - name: Make Space + run: | + rm -rf /usr/share/dotnet + rm -rf /opt/ghc + + - name: Checkout + uses: actions/checkout@v3 + + - name: Install Dependencies and Parsl + run: | + apt-get update && apt-get install -y python3-pip curl + pip3 install . -r test-requirements.txt + + - name: Verify Parsl Installation + run: | + pytest parsl/tests/ -k "not cleannet and not unix_filesystem_permissions_required" --config parsl/tests/configs/local_threads.py --random-order --durations 10 + + - name: Start Flux and Test Parsl with Flux + run: | + flux start pytest parsl/tests/test_flux.py --config local --random-order + + - name: Test Parsl with Flux Config + run: | + flux start pytest parsl/tests/ -k "not cleannet and not unix_filesystem_permissions_required" --config parsl/tests/configs/flux_local.py --random-order --durations 10 + + diff --git a/Makefile b/Makefile index 0d368f4c59..90f20601e9 100644 --- a/Makefile +++ b/Makefile @@ -127,3 +127,8 @@ coverage: ## show the coverage report .PHONY: clean clean: ## clean up the environment by deleting the .venv, dist, eggs, mypy caches, coverage info, etc rm -rf .venv $(DEPS) dist *.egg-info .mypy_cache build .pytest_cache .coverage runinfo $(WORKQUEUE_INSTALL) + +.PHONY: flux_local_test +flux_local_test: ## Test Parsl with Flux Executor + pip3 install . + pytest parsl/tests/ -k "not cleannet" --config parsl/tests/configs/flux_local.py --random-order --durations 10 diff --git a/parsl/tests/configs/flux_local.py b/parsl/tests/configs/flux_local.py new file mode 100644 index 0000000000..203dd590c0 --- /dev/null +++ b/parsl/tests/configs/flux_local.py @@ -0,0 +1,11 @@ +from parsl.config import Config +from parsl.executors import FluxExecutor + + +def fresh_config(): + return Config( + executors=[FluxExecutor()], + ) + + +config = fresh_config()