Skip to content
Mike Dacre edited this page Nov 23, 2016 · 5 revisions

Welcome to the fyrd wiki!

This wiki is publicly editable and is a good place for tips and tricks and misc info that isn't necessary in the README or documentation.

Testing

I test this package before every release using pyenv virtual environments (pyenv is just a nice wrapper for virtualenv) on three different linux environments (two Arch Linux and one CentOS); one has a local queue only, the other has torque, the other slurm. I additionally test the local mode on Mac OS X. On all of those systems I run the full test suite with python versions 2.7.10, 2.7.11, 2.7.12, 3.3.0, 3.4.0, 3.5.2, and the latest beta versions (at the time of this writing, 3.6-dev and 3.7-dev).

To run tests, create a new virtualenv with the python version you want to run, cd into the fyrd directory and install with pip install . followed by pip install pytest, then run python tests/run_tests.py. To run tests in all python environments, run bash tests/pyenv_tests.sh. This script is run automatically on both a torque and a slurm cluster with every push and pull request by buildkite.

Note: your ~/.fyrd/profiles.txt file needs to be properly configured in order to run any remote tests. In particular make sure the partition or queue parameter is properly set in the default profile.

The github repo is also linked to a Tavis CI build system that runs local tests in all of the same above virtualenvs on every commit.

FAQ

Why don't you call the torque or slurm libraries directly?

When I first wrote this package, I used pyslurm as the backend. Pyslurm is a great package, and I highly recommend it. However, one of the central goals of fyrd is to work as quickly as possible on as many systems as possible. As time goes by, libraries change, potentially changing the API. I intentionally chose machine readable outputs from both torque and slurm that have been stable for many years and are unlikely to ever change.

It is possible that the keywords I use for queue parsing will change, but that will necessitate the implementation of a translation dictionary only, with no complex library changes.

Clone this wiki locally