diff --git a/.github/workflows/aphperiodic.lmy b/.github/workflows/aphperiodic.lmy deleted file mode 100644 index 77f2a505..00000000 --- a/.github/workflows/aphperiodic.lmy +++ /dev/null @@ -1,31 +0,0 @@ -# periodic tests of aph - -name: periodic aph tests - -on: - schedule: - # min hr dayofmonth month dayofweek - - cron: "14 2 * * 1-6" - -jobs: - build: - - runs-on: ubuntu-latest - container: - image: dlwoodruff/mpisppyweekly:latest - env: - PATH: /opt/conda/bin:/opt/conda/condabin:/opt/conda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin - - - steps: - - uses: actions/checkout@v2 - - name: setup the program - run: | - python setup.py develop - - - name: run tests - timeout-minutes: 100 - run: | - cd mpisppy/tests - # envall does nothing - python test_aph.py diff --git a/.github/workflows/test_pr_and_main.yml b/.github/workflows/test_pr_and_main.yml new file mode 100644 index 00000000..2d84c99f --- /dev/null +++ b/.github/workflows/test_pr_and_main.yml @@ -0,0 +1,441 @@ +name: GitHub CI + +on: + push: + branches: + - main + pull_request: + branches: + - main + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +defaults: + run: + shell: bash -l {0} + +jobs: + nompi4py: + name: no mpi4py + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: conda-incubator/setup-miniconda@v2 + with: + activate-environment: test_env + python-version: 3.8 + auto-activate-base: false + - name: Install dependencies + run: | + pip install sphinx sphinx_rtd_theme cplex + pip install xpress pandas dill + + - name: setup the program + run: | + pip install -e . + + - name: PH EF tests + run: | + cd mpisppy/tests + python test_ef_ph.py + + + regression: + name: Basic regression tests + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - uses: conda-incubator/setup-miniconda@v2 + with: + activate-environment: test_env + python-version: 3.11 + auto-activate-base: false + - name: Install dependencies + run: | + conda install mpi4py pandas setuptools + pip install pyomo sphinx sphinx_rtd_theme dill gridx-egret cplex pybind11 + pip install xpress + + - name: Build pyomo extensions + run: | + # we don't need it all; just APPSI's extensions + pyomo build-extensions || python -c "from pyomo.contrib.appsi.cmodel import cmodel_available; exit(0) if bool(cmodel_available) else exit(1)" + + - name: setup the program + run: | + pip install -e . + + - name: Test EF/PH + run: | + python mpisppy/tests/test_ef_ph.py + + - name: Test afew + run: | + cd examples + python afew.py xpress_persistent --oversubscribe + + - name: Test docs + run: | + cd ./doc/src/ + make doctest + + runall: + name: run_all.py + runs-on: ubuntu-latest + timeout-minutes: 15 + + steps: + - uses: actions/checkout@v3 + - uses: conda-incubator/setup-miniconda@v2 + with: + activate-environment: test_env + python-version: 3.11 + auto-activate-base: false + - name: Install dependencies + run: | + conda install mpi4py pandas setuptools + pip install pyomo sphinx sphinx_rtd_theme dill gridx-egret cplex pybind11 + pip install xpress + + - name: Build pyomo extensions + run: | + # we don't need it all; just APPSI's extensions + pyomo build-extensions || python -c "from pyomo.contrib.appsi.cmodel import cmodel_available; exit(0) if bool(cmodel_available) else exit(1)" + + - name: setup the program + run: | + pip install -e . + + - name: Test run_all nouc + run: | + cd examples + python run_all.py xpress_persistent --oversubscribe nouc + + schur-complement: + name: schur-complement + runs-on: ubuntu-latest + strategy: + matrix: + python-version: [3.8, 3.9] + steps: + - uses: actions/checkout@v1 + - name: setup conda + uses: s-weigand/setup-conda@v1 + with: + update-conda: true + python-version: ${{ matrix.python-version }} + conda-channels: anaconda, conda-forge + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install nose pybind11 + conda install openmpi pymumps --no-update-deps + pip install mpi4py pandas + pip install git+https://github.com/pyutilib/pyutilib.git + git clone https://github.com/pyomo/pyomo.git + cd pyomo/ + pip install -e . + pyomo download-extensions + pyomo build-extensions + cd ../ + pip install git+https://github.com/parapint/parapint.git + pip install -e . + - name: Test with nose + run: | + nosetests -v mpisppy/tests/test_sc.py + mpirun -np 3 -oversubscribe nosetests mpisppy/tests/test_sc.py + + straight-tests: + name: straight_tests.py + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - uses: conda-incubator/setup-miniconda@v2 + with: + activate-environment: test_env + python-version: 3.9 + auto-activate-base: false + - name: Install dependencies + run: | + conda install mpi4py pandas setuptools + pip install pyomo xpress cplex dill matplotlib + + - name: setup the program + run: | + pip install -e . + + - name: mpi tests + run: | + cd mpisppy/tests + python straight_tests.py + + admm-wrapper: + name: admm wrapper tests + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - uses: conda-incubator/setup-miniconda@v2 + with: + activate-environment: test_env + python-version: 3.9 + auto-activate-base: false + - name: Install dependencies + run: | + conda install mpi4py pandas setuptools + pip install pyomo xpress cplex + pip install numpy + + - name: setup the program + run: | + pip install -e . + + - name: run tests + timeout-minutes: 100 + run: | + cd mpisppy/tests + # envall does nothing + python test_admmWrapper.py + python test_stoch_admmWrapper.py + + aph: + name: aph tests + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - uses: conda-incubator/setup-miniconda@v2 + with: + activate-environment: test_env + python-version: 3.9 + auto-activate-base: false + - name: Install dependencies + run: | + conda install mpi4py pandas setuptools + pip install pyomo xpress cplex + + - name: setup the program + run: | + pip install -e . + + - name: run tests + timeout-minutes: 100 + run: | + cd mpisppy/tests + # envall does nothing + python test_aph.py + + pickled-bundles: + name: pickled bundles tests + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - uses: conda-incubator/setup-miniconda@v2 + with: + activate-environment: test_env + python-version: 3.8 + auto-activate-base: false + - name: Install dependencies + run: | + conda install mpi4py "numpy<2" setuptools + pip install pyomo pandas xpress cplex scipy sympy dill PyYAML Pympler networkx pandas + + - name: setup the program + run: | + pip install -e . + + - name: run pickled bundles tests + timeout-minutes: 10 + run: | + cd mpisppy/tests + python test_pickle_bundle.py + + + confidence-intervals: + name: confidence intervals tests + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - uses: conda-incubator/setup-miniconda@v2 + with: + activate-environment: test_env + python-version: 3.8 + auto-activate-base: false + - name: Install dependencies + run: | + conda install mpi4py "numpy<2" setuptools + pip install pyomo pandas xpress cplex scipy sympy dill + + - name: setup the program + run: | + pip install -e . + + - name: run farmer tests + timeout-minutes: 10 + run: | + cd mpisppy/tests + python test_conf_int_farmer.py + + - name: run aircond tests + timeout-minutes: 10 + run: | + cd mpisppy/tests + python test_conf_int_aircond.py + + test-generic-pyomo-released: + name: generic_tester.py + runs-on: ubuntu-latest + timeout-minutes: 15 + + steps: + - uses: actions/checkout@v3 + - uses: conda-incubator/setup-miniconda@v2 + with: + activate-environment: test_env + python-version: 3.11 + auto-activate-base: false + - name: Install dependencies + run: | + conda install mpi4py pandas setuptools + pip install pyomo sphinx sphinx_rtd_theme dill gridx-egret cplex pybind11 + pip install xpress + + - name: Build pyomo extensions + run: | + # we don't need it all; just APPSI's extensions + pyomo build-extensions || python -c "from pyomo.contrib.appsi.cmodel import cmodel_available; exit(0) if bool(cmodel_available) else exit(1)" + + - name: setup the program + run: | + pip install -e . + + - name: Test test_generic nouc + run: | + cd examples + python generic_tester.py xpress_persistent --oversubscribe nouc + + test-gradient-rho: + name: gradient and rho tests + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - uses: conda-incubator/setup-miniconda@v2 + with: + activate-environment: test_env + python-version: 3.9 + auto-activate-base: false + - name: Install dependencies + run: | + conda install mpi4py "numpy<2" setuptools cmake + pip install pyomo pandas xpress cplex scipy sympy dill + + - name: setup the program + run: | + pip install -e . + + - name: Build Pyomo extensions + run: | + # some failures are expected, but this should succeed as long as pynumero is built correctly + pyomo build-extensions || python -c "from pyomo.contrib.pynumero.asl import AmplInterface; exit(0) if AmplInterface.available() else exit(1)" + + - name: run farmer tests + timeout-minutes: 10 + run: | + cd mpisppy/tests + python test_gradient_rho.py + python test_w_writer.py + + test-headers: + name: header test + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - uses: conda-incubator/setup-miniconda@v2 + with: + activate-environment: test_env + python-version: 3.8 + auto-activate-base: false + - name: Install dependencies + run: | + conda install mpi4py "numpy<2" setuptools + pip install pyomo addheader pyyaml pytest + + - name: setup the program + run: | + pip install -e . + + - name: run headers test + timeout-minutes: 10 + run: | + cd mpisppy/tests + pytest test_headers.py + + test-pysp: + name: pysp tests + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - uses: conda-incubator/setup-miniconda@v2 + with: + activate-environment: test_env + python-version: 3.9 + auto-activate-base: false + - name: Install dependencies + run: | + conda install mpi4py pandas setuptools pytest pyyaml networkx + pip install pyomo xpress cplex + + - name: setup the program + run: | + pip install -e . + + - name: run pysp model tests + timeout-minutes: 100 + run: | + cd mpisppy/tests + # envall does nothing + python test_pysp_model.py + + - name: run pysp unit tests + timeout-minutes: 100 + run: | + cd mpisppy/utils/pysp_model + pytest -v . + + test-cylinders: + name: tests on some cylinders + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - uses: conda-incubator/setup-miniconda@v2 + with: + activate-environment: test_env + python-version: 3.8 + auto-activate-base: false + - name: Install dependencies + run: | + conda install mpi4py "numpy<2" setuptools + pip install pyomo pandas xpress cplex scipy + + - name: setup the program + run: | + pip install -e . + + - name: run tests + timeout-minutes: 10 + run: | + cd mpisppy/tests + mpiexec -np 2 python -m mpi4py test_with_cylinders.py diff --git a/.github/workflows/twiceweekly.lmy b/.github/workflows/twiceweekly.lmy deleted file mode 100644 index cea01026..00000000 --- a/.github/workflows/twiceweekly.lmy +++ /dev/null @@ -1,32 +0,0 @@ -# weekly tests, but we might run daily -# NOTE: we should also have a weekly test that dynamically imports pyomo main - -name: longer mpi-sppy tests - -on: - schedule: - # min hr dayofmonth month dayofweek - - cron: "14 2 * * 1,4" - -jobs: - build: - - runs-on: ubuntu-latest - container: - image: dlwoodruff/mpisppyweekly:latest - env: - PATH: /opt/conda/bin:/opt/conda/condabin:/opt/conda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin - - - steps: - - uses: actions/checkout@v2 - - name: setup the program - run: | - python setup.py develop - - - name: run tests - timeout-minutes: 180 - run: | - cd examples - # envall does nothing - python run_all.py xpress_persistent -envall nouc diff --git a/.github/workflows/weekly.lmy b/.github/workflows/weekly.lmy deleted file mode 100644 index 09597d5a..00000000 --- a/.github/workflows/weekly.lmy +++ /dev/null @@ -1,31 +0,0 @@ -# weekly tests, but we might run daily - -name: weekly mpi-sppy tests - -on: - schedule: - # min hr dayofmonth month dayofweek - - cron: "14 2 * * 2" - -jobs: - build: - - runs-on: ubuntu-latest - container: - image: dlwoodruff/mpisppyweekly:latest - env: - PATH: /opt/conda/bin:/opt/conda/condabin:/opt/conda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin - - - steps: - - uses: actions/checkout@v2 - - name: setup the program - run: | - python setup.py develop - - - name: run tests - timeout-minutes: 180 - run: | - cd examples - # envall does nothing - python run_all.py xpress_persistent -envall nouc