Changes
- Migrating from
RefResolver
to Referencing library to address API change in jsonschema #1802 - Remove cobalt scheduler support #1773
- Acquire system details and topology information using archspec, psutil #1772
- Add support for specifying paths for docker, singularity, and podman in configuration file #1775
- Suppress output of curl and installation of pip in
setup.sh
script. Buildtest will automatically install pip when sourcing setup script #1806, #1792
Buildspec Changes
- Add support for
post_run
keyword to run commands after test is complete which does not impact test behavior #1778 - Add support for
paths
keyword in configuration file to search for scheduler binaries in alternative location #1757 - Add option to disable execute check using
disable_check
field #1786
Command Line Changes
- Add support for specifying a file path when loading buildspec into cache via
buildtest buildspec find -f
#1808 - Display output and error file for each test via
buildtest build --display
command which can be used toggle output and error #1784, #1779 - Add support for
buildtest build --strict
to toggle set -eo pipefail into the test which will stop execution on first error. Also improve logic for container support #1777 - Add option
buildtest build --write-config-file
to allow buildtest to write configuration file to alternate location when saving profile using --save-profile #1762 - Validate test by name using
buildtest buildspec validate --name
#1785
Code Refactor
- Major refactor to buildtest codebase #1763
- Add utility modules to print rich tables #1780
- Refactor logic for job dependency #1798
Documentation
- Documentation for extracting line numbers in metrics fields #1781
Major Changes
This release comes with several improvements to batch scheduler integration including code refactoring of all schedulers. We have added supported for Torque scheduler. Furthermore, we have changed logic for PBS scheduler for polling jobs to be consistent with Torque since both schedulers are very similar. We have improved logging for batch jobs and scheduler detection. Furthermore we have added validation for queues to ensure executor validation takes place to invalidate an executor if queue is not found.
- Add support for Torque batch scheduler #1734
- Improve scheduler detection logic #1738, #1739
- Change poll command to
qstat -xf
for PBS scheduler andqstat -f
for Torque #1746 - Improvement to LSF executors such as queue validation and testing LSF executors on OLCF system on Summit #1748, #1750
Buildspecs Changes
- Add support for regular expression types such as
re.search
,re.match
, andre.fullmatch
using the re property for status check and metrics #1730 - Add support for line count (
linecount
) and file line count (file_line_count
) status check used for counting lines in a file or stdout/stderr. #1722, #1723 - Remove burst buffer and data warp directives from spack schema #1717
- Extract line number from stdout/stderr via
linenum
field used in status check particularly useful with regular expression search #1735
Command Line Changes
- Add support for
buildtest build --validate
option that will be used for validating buildspecs and stop after parse stage. This feature will deprecate featurebuildtest build --stage=parse
#1729 - Add dry run mode for buildtest via
buildtest build --dry-run
option. This feature will build the test but not run it. This feature will deprecate buildtest build --stage=build #1727 - Add dryrun (
--dryrun
), write (--write
) and failfast (--failfast
) options tobuildtest tutorial-examples
command #1720 - List all buildtest options via command line via
buildtest --listopts
#1715
Documentation Changes
- Build prototype for AWS tutorial that includes several example buildspecs, configuration file and improvement to
buildtest tutorial-examples
command to help auto-generate examples. For instance we added positional argument to specify eitherbuildtest tutorial-examples {aws,spack}
which will be used to generate example docs for each section #1719 - Rearrange documentation pages to move all status checks into single page #1733
- Add documentation for Torque Executors #1743
- Add documentation for LSF Executors #1745
Project Improvements
- Add github workflow to run regression test examples with spack using github action spack/setup-spack to help increase code coverage for spack schema #1716
- Change singularity invocation from singularity exec to singularity run when running singularity containers #1711
- Fix a bug in argparser invocation when running
buildtest --help-all
that caused an error with showing all help options. #1708
Major Changes
- Add support for container executors in buildtest configuration to allow one to run tests in a container. #1695
- Build new spack container for spack tutorial #1700
- Remove support for compiler schema from buildtest and all references from documentation and example tests #1686
General Improvements
- Add command aliases for commands buildtest config executors list, buildtest config profiles list, buildtest config profiles, buildtest inspect list, buildtest report list. The command aliases are: buildtest config executors ls, buildtest config profiles ls, buildtest inspect ls, buildtest report ls, buildtest config prof. #1705
- The command
buildtest buildspec find --root
will rebuild buildspec cache, when--root
option is specified. Previously--rebuild
option was required to rebuild cache which didn't make sense when--root
option was specified. Whenroot
option is specified in configuration file and--root
option is used, buildtest will use the command line option. Previously, buildtest would append both values into list. #1706 - Remove latest and oldest keywords from buildtest configuration #1673
- Add GitHub workflow for command line tutorial #1663
- Trigger regression test when pyproject.toml or requirements.txt file is changed #1687
- Rewrite documentation for Configuring Buildtest #1696
- Remove jsonschema documentation workflow used for publishing schemas to github pages posted on branch gh-pages #1682. This change meant we removed all content from gh-pages branch in #1683.
- Add compilation examples using script schema #1692
Buildspec Changes
- Add support for containers via
container
property. Initial support includes specifying container runtime, container options, and run command to invoke container. Current platform support includesdocker
,podman
,singularity
. #1642.
buildspecs:
container_commands_ubuntu:
type: script
executor: generic.local.bash
description: run arbitrary linux commands in ubuntu container
container:
platform: "docker"
image: ubuntu:latest
command: bash -c "cat /etc/os-release"
run: |
ls -l /etc/os-release || true
- Update schema for Performance Checks (
assert_ge
,assert_ne
,assert_gt
,assert_ge
,assert_le
,assert_lt
,assert_range
,contains
,not_contains
) to support for logical AND/OR. Themode
key can be defined in each performance check, and list of assertions are defined undercomparisons
. #1648
status:
assert_ge:
mode: and
comparisons:
- name: copy
ref: 5000
- name: scale
ref: 5500
- name: add
ref: 6000
- name: triad
ref: 6500
- Change mode property under status check (
status
) to use values(AND|and|OR|or)
, this is to be consistent with use ofmode
under each performance check such asassert_ge
. #1656
Command Line Changes
- Remove executors via command line
buildtest config executors remove
. #1636 - Extend support for
--count
for other queries inbuildtest buildspec find
command. Rewrite regression test forbuildtest buildspec find
#1638
Project Improvements
- Buildtest will gracefully terminate running jobs when user hits
CTRL-C
. For batch jobs, the jobIDs will be cancelled. Addtrap
command in generated script to allow users to run script and catch signal interrupt. #1644 - Improvement to polling implementation for batch jobs by showing number of jobs by type (PENDING, RUNNING, COMPLETED) in the table. Fix issue where FAILED slurm jobs were not reported. #1650
- Add error message of tests in console output of
buildtest build
. #1643 - Change
re.match
->re.fullmatch
when hostname with ones specified in configuration file. #1651 - Rewrite NERSC CI regression tests, update buildtest configuration and example buildspecs to be run. #1639
- Slurm jobs
TIMEOUT
andOUT_OF_MEMORY
will be reported as completed jobs. #1653 - Rewrite documentation for Batch Scheduler, Troubleshooting, Buildtest Features, and improving bash completion script. #1637
Command Line Changes
- The
buildtest config profiles remove
command will remove a given profile from configuration file #1585 - The compiler listing is now done via
buildtest config compilers list
command, previously it was viabuildtest config compilers
. #1588 - Add short option
-t
forbuildtest inspect query --testpath
. #1599 - Change behavior of listing executors from command
buildtest config executors
to command namebuildtest config executors list
. #1610 - Add support for building tests by names via
buildtest build --name
. #1616 - Add support for limiting number of jobs that can run concurrently via
max_jobs
property in configuration file and optionbuildtest build --max-jobs
to override configuration on command line. #1629, #1630
Buildspec/Test Changes
- Add support for deactivating spack environments via
deactivate
property. #1587 - Add
set -eo pipefail
command in generated test script to ensure test are run in strict mode and errors are captured properly. #1628
Project Improvements
- Rewrite logic for building the command line arguments for buildtest. #1612
- Update version of sphinx-autoapi to fix documentation build error with generating API. #1632
- Ensure every buildtest CI run is executed in a unique directory. The environment variable BUILDTEST_CI_DIR will be root to where tests will be written in a unique directory. This can be set in shell environment prior to running tests. #1601
- The buildtest commands run as part of documentation builds also performed in unique directory. #1603
- Move pytest configuration to pyproject.toml #1596
- Upgrade dependencies for docutils, sphinx, sphinx-rtd-theme, sphinx-design to be compatible with python 3.8 #1606
- Rewrite bash completion script. #1611
Bug Fixes
- Fix time calculation for batch jobs to ensure runtime is calculated correctly from when job runs to when job ends. Previously the test runtime took into account pending time. #1618
- Fix issue with
buildtest report
only showing latest test records. #1620 - Fix issue with CDASH upload (
buildtest cdash upload
) with uniccode characters in test output. #1627
Command Line Changes
- Add support to exclude tests by tagnames via
buildtest build --exclude-tags
#1467 - Change behavior of
buildtest report --count
to allow a negative value which will show all test records. #1468 - Change behavior of
buildtest build --filter
with multiple filters from comma to semi-colon #1471 - Remove option
buildtest buildspec maintainers --list
#1474 - Add support for profiles which allows one to run a set of
buildtest build
options given a profile name via commandbuildtest build --profile=<NAME>
. Add support for saving profile viabuildtest build --save-profile
which will record command and save into buildtest configuration file. #1489 - Rename
buildtest help
tobuildtest show
#1530 - Remove option
buildtest build --disable-executor-check
#1541 - Add command
buildtest --help-all
to show all commands and options for buildtest and change behavior ofbuildtest --help
to only show a subset of commands. #1568 - Add
buildtest report --detailed
which will show detailed information about test record. #1567 - Add alias
buildtest config val
forbuildtest config validate
command #1559
Misc Updates
- buildtest now uses pyproject.toml to specify project dependencies, coverage, black and isort configuration. The installation script will no longer install from requirements.txt, instead it will use content from pyproject.toml. #1545, #1547
- Deprecate support for Python 3.7 #1514
- Add a security page to report vulnerability #1473
- Reorganize example buildspecs for script.schema.json, compilers.schema.json and spack.schema.json into separate buildspecs used for regression tests. This was addressed in #1496, #1498, #1499
- Improve regression test coverage #1501, #1503, #1507, #1511, #1515
- Fix bug with running buildtest using multiprocessing library that led to error mostly caused on MacOS. #1522
- Fix bug with
buildtest report --pass
andbuildtest report --fail
where test records were not filtered properly #1524 - Fix error in buildtest configuration file used for tutorials #1513
- Hardcode version dependency for jsonschema package to 4.18 since RefResolver is deprecated #1520. This will be addressed in #1521
- Remove short option
-t
for long option--theme
#1576
CI checks
- Update regression test and installation workflow to use python 3.8-3.11. Also run tests on macos-13 #1512
- Update installation workflow to add support for zsh #1548
Buildspec Changes
- Add support for logical AND in status check by introducing a new property
mode
#1429 - Remove suite property in spack schema to ensure suitenames are auto-generated when running spack test results 1451
Command Line Changes
- Add support for building multiple tags by comma separated list
buildtest build --tags tag1,tag2,tag3
. 1419 - Add option
buildtest config compilers find --file
to save configuration file in alternative location. #1420 - Add pagination support for
buildtest history
andbuildtest inspect
. #1424, #1428 - Add global option
--row-count
that can be used withbuildtest inspect
,buildtest buildspec find
,buildtest buildspec invalid
,buildtest buildspec maintainers
,buildtest report
andbuildtest history
command. #1463
Configuration Changes
- Add support for
buildspecs
property in configuration file to configure behavior ofbuildtest buildspec find
command. #1455 - Add support for
report
section in configuration file to control behavior ofbuildtest report
command 1459 - Rename
buildspecs_root
toroot
under thebuildspecs
section. #1457 - Change pattern property for executor names to be alphanumeric #1440
Misc Updates
- Update github issue templates #1430, #1431
- Fix issue with tab-completion for subcommands at top-level options #1432
- Remove
codecov
dependency #1436 - Add documentation on Assert Less Than #1439
- Remove CI job for Cori and refactor tests #1442
Command Line Updates:
- Add option
buildtest inspect query --theme
to select the color theme. #1383 - Add option
buildtest buildspec find --row-count
to report number of rows for for a buildspec query. #1377 - Add option
buildtest build --limit
to limit the number of tests to run. #1381
Buildspec Updates:
- Add Assert Less Than performance check via property
assert_lt
. #1382 - Add Symbolic Link check via property
is_symlink
. #1394 - Add support for running regular expression on arbitrary files via property
file_regex
. #1396 - Add support for file count via property
file_count
that can perform directory traversal. This also includes traversal by file extension, regular expression. We can filter by file type (file, dir, symlink) and control traversal depth. #1405
Misc Updates:
- Added precommit ci for auto-updating .pre-commit-config.yaml #1389
- Add a nightly regression test github workflow. #1384, #1378
- Add yamllint and shellcheck check for lint check on YAML and shell scripts. Update contributing guide and fix all yamllint issues #1385, #1390, #1404
- Fix issue where coverage was not tracked with with multiprocessing library that caused lack of test coverage. #1408
Documentation Updates
- Buildtest Command Line Tutorial #1353
- Buildtest Tutorial on Perlmutter #1338, #1357
- Troubleshooting guide for buildtest #1336
- Add Quick Start Guide #1335
- Rewrite page for Building and Test Process #1345
Buildspec Changes
- Add performance check for assert_le (#1339), assert_ne (#1361), assert_ge (#1354)
- Add support for contains and not_contains for status check #1364
- Change executor match in parse stage from equality check to re.fullmatch #1350
CI changes
- Run Gitlab CI on Perlmutter #1359
- Trigger Gitlab pipelines based on code changes to framework or regression test. This avoids having facility pipeline run on every commit #1358.
- Add test coverage by running Perlmutter specific tests #1360
- Run Github regression test on file changes #1356
Buildspec Updates:
- Add support for Performance checks: Assert Equality (
assert_eq
), Assert Range (assert_range
), Assert Greater Equal (assert_ge
) #1313, #1320, #1326 - Add support for File checks such as file existence, is file or is directory via properties
exists
,is_file
,is_dir
#1329 - Change behavior of buildspec parser to check for executor check and raise different exceptions based on the validation error #1309
- Increase test length for buildspecs from 32 to 48 characters #1286
Command Line Updates:
- Add new command buildtest tutorial-examples that will auto-generate tutorial examples #1307
- Add top-level argument
buildtest --color
to control coloring option #1280 - Add color support for buildtest buildspec maintainers, buildtest inspect list command #1284, #1287
- Add color support for terse output formats. This includes coloring for
buildtest report --terse
,buildtest buildspec maintainers --list
,buildtest buildspec maintainers --breakdown
,buildtest buildspec find --terse
,buildtest history list --terse
#1292 - Add color support for
buildtest buildspec summary
#1298 - Add support for filtering logs by loglevel via
buildtest --loglevel
#1312
Documentation Updates:
- Add documentation on how to generate buildtest tutorial #1289
- Redesign documentation for buildtest into based on divio #1285
- Rearrange content of Buildspec Overview into sub-pages #1323
- Move APIs under Reference #1304
- Add link to SC22, PEARC22 talk and paper submission #1294 , #1291
- Add section Useful Links on left navigation side-bar #1305
- Change slack invitation link to communityiniviter instead of heroku. #1306
- Add support for configuring programming environment in buildtest configuration #1270
- Remove Spell Check CI #1267
- Add support to skip buildspec via skip property to skip all test in a buildspec instead of updating every test with skip property #1265
- Add subcommand
buildtest report path
to print path to the report file being used #1260 - Add option
buildtest history list --color
to colorize output of history table #1258 - Add option to limit row count using
buildtest report --row-count
and limit output of buildspec cache usingbuildtest buildspec find --count
#1249, #1250 - Add options
buildtest report --filterfields
andbuildtest report --formatfields
to print filter and format fileds as raw text #1246 - Use sphinx_designs to leverage dropdown feature in documentation #1243
- Add positional arguments
buildtest config compilers test
to test specific compilers #1239 - Add options
buildtest buildspec find --filterfields
andbuildtest buildspec find --formatfields
to print filter and format fileds as raw text #1238 - Rename option
buildtest build --keep-stage-dir
tobuildtest build --remove-stagedir
#1237 - Rename option
buildtest rt --failure
tobuildtest rt --fail
andbuildtest rt --passed
tobuildtest rt --pass
for retrieving pass and failed test from report #1234 - Add command aliases for several buildtest commands #1233
- Add
set -e
when running Cori CI pipeline #1223 - Add pagination support for
buildtest config view
#1218 - Add support for color themes via buildtest buildspec show --theme and buildtest buildspec show-fail --theme that changes output based in input theme. #1215
- Add color theme option buildtest config view --theme to change output for buildtest configuration #1216
- Add option
buildtest report --passed
to show only pass test results from report file #1140 - Add new command
buildtest info
to print details on buildtest #1155 - Add pager support for
buildtest buildspec summary
#1163 - Add new command
buildtest config compilers test
to automatically test compiler instances viamodule load
test #1175 - Rename option
--debug
to--detailed
in command buildtest report summary to avoid argparse from confusing with buildtest --debug option #1176 - Add option
buildtest --print-lastlog
,buildtest --lastlog
andbuildtest --lastlog-path
#1167 #1168, #1169, #1174 - Make
buildtest report --passed
andbuildtest report --failure
mutually exclusive option on command line #1180 - Change output of
buildtest report summary
such that success are printed in green and failures in red #1170 - Add a Spelling check CI workflow to detect errors in user documentation #1166
- Fix issue with uploading results from buildtest regression test to CodeCov in Github CI checks. #1149. Thanks to @Xiangs18 for the fix.
- Fix a bug during slurm job submission when detecting slurm job state #1141
- buildtest will return a non-zero returncode when running buildtest buildspec validate with invalid buildspecs #1220
- Remove github-gitlab mirroring workflow for ascent pipeline now we use Gitlab builtin feature for CI/CD #1229
- Trigger Cori and Ascent Regression test using external pull request event from Gitlab #1161, #1162
New Options
- Add option
--buildenv
to buildtest report, buildtest path and buildtest inspect query and add entry buildenv to capture build environment from test #1062 - Add support to timeout test via
buildtest build --timeout
which is calculated in number of seconds #1052, #1057 - Add option
buildtest --editor
to specify your preferred editor when opening files #1070 - Rename
buildtest buildspec edit
tobuildtest buildspec edit-test
used for editing files by testname which is to be consistent with buildtest buildspec edit-file which edits by filename #1081 - Add option
buildtest report --failure
to report all failure tests #1076 - Add new command
buildtest stats
to show test stats which can be useful for analysis purpose. This command is subject to change #1074 - Add option
buildtest cdash upload --open
to CDASH result that was recently pushed in webbrowser which can be useful if one wants to run this command as pose to clicking link that is shown in output #1083 - Add option
buildtest report --start
andbuildtest report --end
to filter test records by starttime and endtime #1082 - Add new command
buildtest config path
to show path to configuration file #1100 - Add new command
buildtest buildspec maintainers
to show maintainer details from buildspec cache. The commandbuildtest buildspec maintainers --list
will report list of maintainers. The--terse
and---no-header
can be used for parseable format. Thebuildtest buildspec maintainers find <name>
can be used to search for buildspecs given a maintainer name #1093. - Add option
buildtest buildspec find --quiet
to suppress output which can be useful when rebuilding cache #1135 - Add option
buildtest report --count
to limit number of entries that is displayed in output #1130
Changes to buildspec
- Rename property numprocs to poolsize in buildtest configuration for configuring number of worker process when using multiprocessing library. #1064
- Add summary property to provide extended description of test that is not limited to 80 character unlike the description field. #1069, #1073
- The dash
-
character is now supported character in the test name #1097 - Remove executor check during Parse stage this avoids having an invalid buildspec when one specifies a buildspec using regular expression where test can run across multiple system #1098
Other Changes
- Add coverage for ubuntu-22.04 and macos-12 in regression test and test all python version from 3.7-3.10 #1120, #1118, #1115
- Remove urlchecker cron workflow #1110
- Fix regression test for
buildtest --editor
when specifying invalid editor name. Now editor will resort to vi if invalid editor is specified #1124 - Fix bug in invocation for
buildtest buildspec edit-test
#1133 - Add coverage for ubuntu-22.04 and macos-12 in installation workflow #1129
- Fix version of black in .pre-commit-config.yaml #1131
Changes buildspec structure
- Add support for test dependencies in buildspec using the
needs
property. #1000, #1003, #1015 - Add
compilers
property in script schema for defining multiple compilers when using thetype: script
in buildspec. This can be used in therun
section for selecting multiple compilers #999 - Add field
nvhpc
to settings schema for compiler declaration and under compiler schema for using nvhpc compiler #996 - Remove the
run_only
property from schema, remove buildspec examples and update user documentation #994 - Remove version numbers from all schemas, example buildspec, refactor codebase and update user documentation #988
New command line options:
- Add PAGING output using
--pager
option which is available forbuildtest buildspec find
,buildtest report
,buildtest report summary
, andbuildtest history list
command #1012 #1016, #1017 - Add new option
buildtest build --modules
,buildtest build --module-purge
andbuildtest build --unload-modules
which allows one to specify modules to load/unload on command line and purging modules command before running any test. #1004, #1020 - Add new option
buildtest build --rerun
which will rerun last successful buildtest build command which can be used to repeat a command without having to remember what you typed. #1023 - Add new option
buildtest build --executor-type
to filter test by executor types which can be local or batch. #1026 - Remove buildtest edit command and now this is buildtest buildspec edit-file. Add new command
buildtest buildspec edit
which will edit buildspecs based on testname whilebuildtest buildspec edit-file
uses filepath #1006, #1007 - Add new option
buildtest --lastlog
to see output of last build log. Enable RichHandler for logging #993
Miscelleaneous Updates
- buildtest has a logo! #989
- Enable bash completion support for zsh #987
- Refactor Polling Implementation for Batch Job Submission #986
- Add documentation on starting PBS container #985
- Add option for scaling batch jobs with
buildtest build --procs
andbuildtest build --nodes
which allows one to specify processor and node values to run test with different process and node configuration. See #957, #977 - Rename command line options
--max-pend-time
->--maxpendtime
and--poll-interval
->--pollinterval
#959 - Change behavior of
buildtest inspect query
command to support regular expression to query builders. We removebuildtest inspect query -d all
which retrieved all records now this can be done with regex. We print additional metadata for each builder and color code via rich. - Add new command buildtest unittests to run regression test via buildtest. Added several options including
--coverage
,--pytestopts
and--sourcefiles
#962, #966 - Add new command buildtest stylecheck to run style checks such as isort, black and pyflakes. We have added options
--no-black
,--no-isort
,--no-pyflakes
to disable a particular check and--apply
to apply changes to buildtest codebase. See #964, #965, #969 - We can configure buildtest to use a certain python wrapper using environment BUILDTEST_PYTHON #963
- Add argparse options to run buildtest unittest via script python $BUILDTEST_ROOT/buildtest/tools/unittests.py which is equivalent to running
buildtest unittests
. #968 - Add sphinx-copybutton extension in sphinx project to enable copy button in user docs #973
- We have changed behavior of how builders are printed during
buildtest build
command now one will see breakdown of builders by each type along with batch builders and builders created via--procs
or--nodes
option. #978
- Make use of rich python library for printing output and utilized this throughout codebase. We have removed
termcolor
andtabulate
library used for printing. #896 - Slight change to spack test behavior when generating script. #893
- Add
state
property in status section to allow one to explictly mark status of test. This can be useful to explicitly fail test. #892 - buildtest will automatically build buildspec cache if file not found when running buildtest build command. This was an issue when building with tags, executors. #898
- Add new option
buildtest build --account
to specify account name for batch job submissions. #899 - Add new command to show debug report
buildtest debugreport
- #902 - Change behavior of
buildtest inspect name
now one can specify a unique record by hash via/
followed by test ID. Removebuildtest inspect name --all
option. - #904 - Remove
buildtest inspect id
command this can now be done viabuildtest inspect name
#906 - Remove property
load_default_buildspecs
from configuration file and default specs are loaded if no root trees are specified. #909 - Introduce buildtest tutorial that can be run in docker container - #917, #918, #942
- Add workflow to build tutorial container to ghcr. #926
- Add command
buildtest config edit
to edit configuration file #920 - Add support for declaring module commands in executor settings via
module
property. #925 - Remove
buildtest config summary
command - #922 - Change behavior of
buildtest config compilers find
to display content of configuration without updating configuration file. One can automatically update config file viabuildtest config compilers find --update
. #924 - Change behavior of how test are launched using bash, csh, sh shell when invoking build script. #929
- Fix CDASH bug when multiple runs of same test were lost during upload. #891
- Fix issue where buildtest incorrectly detected Torque as PBS Scheduler even though we don't support Torque at the moment #936
In this release we tweaked the core implementation of buildtest for running test. Now we make use of asynchronous test execution and job submission to get parallelization of jobs. Previously we were running jobs serially which was quite slow. We are using python multiprocessing library to leverage asynchronous job execution. This work was done in #858. In this release we have reimplemented the poll implementation for batch job submission which was done in #863
- Add new command buildtest cd to change directory to root of test - #871 and #877
- Add new command buildtest path to see path details for a test - #874, #876
- Add new command buildtest clean to clean up buildtest generated data - #869
- Add option to retry failed tests via
buildtest build --retry
- #864 - Added alias for subcommands - #860
- Remove batch property from buildtest - #868
- Add support to disable executors in configuration file via
disable
property - #870 - Add napolean and intersphinx extension and rewrite docstring for entire codebase in Google Style see #885
- Add support for defining multiple executors via
executors
property see #842 - Add option
buildtest --color
to toggle color mode on command line. The environmentBUILDTEST_COLOR
will also work, if environment is set we will use this value. See #839 - Add option
buildtest build --helpfilter
to show filter fields using withbuildtest build --filter
command #838 - Add new command
buildtest edit
to edit buildspecs interactively see #852 - Add new command
buildtest report summary
to show summary of report file #848 - Add new command
buildtest inspect buildspec
to inspect tests by buildspec #843 - Add new command
buildtest buildspec show
to view content of buildspec based on test name #853
- Add command
buildtest buildspec summary
to show summary of buildspec cache #831 - Add command
buildtest buildspec invalid
to show invalid buildspecs from cache #830 - Add option
buildtest build --filter
for filtering buildspecs and remove option--filter-tags
#828 - Add
metrics
property in buildspecs to define arbitrary metrics name that can store values based on variables, environment variables or regular expression on stdout/stderr. See #819 #824 #832. - Add option
--no-header
to toggle output header with terse format in buildtest history list, buildtest report, buildtest buildspec find see #815 #816 #818 - Add terse output
--terse
for command buildtest history list #811, buildtest report command #814 and buildtest buildspec find command #809 - Change output of
buildtest help
#808 - Add support for
buildtest buildspec find --filter buildspec
to filter cache by buildspec file see #807 - Add new command
buildtest inspect query
for querying test records see #806
In this release we added support for spack through a new schema spack-v1.0.schema.json which is used by type: spack
to
write buildspecs using the spack schema. Initial support includes installing specs, managing spack environment, adding mirror, running tests via spack test
.
The relevant PRs for spack support are #774, #778,
#786, #788.
In this release we added bash completion for buildtest commands this is done in #773. There were few additional
features added in this release including a new command buildtest buildspec validate
to validate buildspecs on command line see #785.
The buildtest help
command is another new command that provides an output summary of buildtest commands that one can read as a reference manual see #787.
- Add command
buildtest report list
to list all report files #799 - Using isort utility to sort import statements in python code see #798.
- Fix issue with sphinx documentation with malformed bullet point rendering. Required to downgrade docutils package see #802
- Use sphinx-argparse to generate documentation for buildtest commands see #796
- Rename global option
--config-file
to--config
for specifying alternate configuration file see #791 - Rename long option
--report_file
to--report
across all subcommands to be consistent. This option is used for specifying alternate report file #775
- Add command
buildtest history
to keep track of builds with command namesbuildtest history list
andbuildtest history query <id>
to retrieve specific builds. buildtest will keep track of everybuildtest build
command for retrieval. See 767 - Change behavior of how test are generated by introducing a build script that ends in _build.sh script which is used for running the script. In #751 we
are able to properly handle returncode of generated script. We updated the buildtest installation by installing dependencies in $BUILDTEST_ROOT/.packages using
pip install --target
which addressed issue in buildtest installation if user was to install outside of virtual environment. - Add option
--keep-stage-dir
inbuildtest build
for preserving stage directory. With this change, buildtest will remove stage directory by default unless this option is specified. See #758 - Reimplement Slurm, LSF, Cobalt and PBS executor implementation by adding a python class to represent a SlurmJob, LSFJob, CobaltJob, PBSJob. See #750
- Add global option
buildtest -c <config>
for specifying alternate configuration file. See #738 - Add option
--poll-interval
inbuildtest build
command for overriding poll interval for batch job submission. See #745 - Add option
--max-pend-time
inbuildtest build
for overriding configurationmax_pend_time
. See #741 - Add
runtime
property in the status section for marking test state based on runtime of code. See #736 - Add support for buildtest cdash integration for uploading test results using buildtest cdash command. The buildtest cdash upload command can be used to upload test results to CDASH server. See #721, #733, #734
- Change behavior of buildtest to write files to $HOME/.buildtest instead of $BUILDTEST_ROOT. See #719.
- Add command
buildtest report clear
to clear report file. In addition we add option to specify report file on command line. This can be specified usingbuildtest report --report_file
,buildtest build --report_file
, andbuildtest inspect --report_file
see #727, #730. - Change behavior of
buildtest config executors
to print a list of executors, previously it was showing content of YAML. Now we have optionbuildtest config executors --yaml
for YAML format.
This release added support for PBS Scheduler see #691 and #693
We changed the starttime and endtime format for batch job submission when reported to report.json
see #700. We added color output
for buildtest commands using termcolor library. We can disable color using BUILDTEST_COLOR environment variable. See #703. We
re-implemented command buildtest inspect command by introducing commands buildtest inspect name
, buildtest inspect list
, buildtest inspect id
see #704.
- Add wrapper script to run regression test via
sh $BUILDTEST_ROOT/scripts/regtest.py
. This script is wrapper to pytest and coverage. See #710. - Add description field for system description in configuration file #694
- Add command buildtest config system see #697
- Increase test coverage and add few more facility tests for Cori and Ascent see #712
- The buildtest config compilers implements the
--list
option which is removed see #708 - Add upcxx compiler support in compiler schema and settings schema see #709
The major change in this version is configuration template for buildtest is organized into system groups by top-level key system. This allows facility
to deploy a single configuration used for multiple HPC clusters. See #668 for more details. We provide a generic
system name that can be used to run buildtest. We reorganized the getting started page into sub-pages so it's easier to navigate to each section, for more details see #659. The executors are referenced in <system>.<executor-type>.<executor-name>
. Previously we would reference executor like local.bash
now it would be referenced as generic.local.bash
which is a local executor of name bash tied to system name generic. buildtest will detect the system based on hostnames
field which is a list of regular expression to search where buildtest can run. If no system is found it will raise an error.
- Add option to override configuration file via
buildtest build -c
see #684 - Changed the output of how jobs are printed during poll stage by showing a table of jobIDs see #664
- Add regression test for Ascent system at OLCF for LSF #663
- Replace black workflow to use the registered black action psf/black@stable see #662
- We removed documentation and scripting with buildtest and CI checks see #674
- Update diagram for buildspec structure and parser stage because we changed the executor name format #678
- Add JLSE gitlab CI file that can be found at .gitlab/jlse.yml which runs tests buildtest regression test at https://gitlab.jlse.anl.gov
- The configuring buildtest page was redesigned into sub-pages and new configuration format was documented. For more details see commit cdd56db4c15dc68031e8162cdd1b34cfafe2e5d3
In this version we updated the copyright details to include UC - LBNL see COPYRIGHT and
LICENSE. We added dependabot for tracking out-of-date dependencies for github action and python dependencies. In addition, we made minor tweaks to buildtest buildspec find
command in its output. We added regression test pipeline for OLCF - Ascent system and moved gitlab pipelines in top-level folder .gitlab.
- Add command
buildtest config executors
to view executors - #648 - Add
--oldest
and--latest
option in buildtest report command for retrieving oldest and latest record see #634 - Remove
--validate
option frombuildtest schema
for validating JSON schema, this option mimics the regression test. See commit 5825637 - Change Copyright and License to include UC - LBNL - #611
- Add dependabot for github actions and pypi packages - #615
- Add gitlab CI file for running regression test on OLCF #603
- Now when you install buildtest via
setup.[sh|csh]
, we set BUILDTEST_ROOT variable so user can navigate to root of buildtest. We fixed how to detect root of buildtest on Linux and Mac system see #646. We also add installation workflow to test buildtest on different platform and python distro. - Add option to query buildspecs by maintainers and breakdown by buildspecs using
--maintainers
and--maintainers-by-buildspecs
see #599 - Add option to filter tests by tags using
buildtest build --filter-tags
, the behavior ofbuildtest build --tags
is used to for discovery of buildspecs #587 - Add singularity tests see #645
In this version, we added significant changes to compiler-v1.0-schema.json
to support compiler test. This includes
ability for building a single test across multiple compiler instance and across compiler groups (gcc, intel, cray, etc...) User
can search compilers via regular expression when building test, and specify setting common to compiler group or shared across all
compilers. In addition, one can override properties at the compiler level.
This version introduced significant refactor in codebase responsible for building, running and buildspec operation. We introduce classes when appropriate. We added a Gitlab CI job at Cori to run regression test and report coverage report to codecov. This pipeline is run manually and functionality will change until we have stable environment for running PR pipelines.
We changed the behavior of buildtest build --tags
previously it was used for discovering buildspecs
and filtering test, now it only discovers test. A new option was added --filter-tags
which
is used for filtering tests by tagname. Previously if one used --tags
with --buildspec
or
--executor
would result in filtered tests by tags and buildtest may ignore some tests that
were expected to run. With this change we can better support both use-case where one wants to discover
tests by tag and filter them. This was implemented in #587.
- Refactor implementation for
buildtest report
into class see #555 - The
module
property is changed fromarray
toobject
type which allows one to specifymodule load
,module swap
,module purge
. See #556 - Fix bug in slurm job when executor was indefinitely polling jobs in
TIMEOUT
andOUT_OF_MEMORY
job state. See #561. - Increase test coverage for
buildtest inspect
and searching compilers see #575.
In this version, we added support for Cobalt scheduler provided by
Argonne National Laboratory. We can define cobalt executors in buildtest settings which can be
mapped to cobalt queues. There is a cobalt
property for adding #COBALT directives
into test script. Some of the cobalt options are mapped to batch
field for scheduler
agnostic configuration.
In this version we added support for compiler query and detection using buildtest config compilers find
.
We make use of lmodule API for querying modules if system
is using Lmod.
We made significant changes to buildspec cache file (var/buildspec-cache.json
) that allowed
us to add several options to buildtest buildspec find
including: --group-by-tags
,
--group-by-executor
, --paths
, --helpformat
, --format
, --helpfilter
, --filter
, --root
.
There was significant code refactor to several class and issues reported by CodeFactor. In addition we added CI checks such as Daily Check URL see eb601b, gh-pages for master branch see 267f7f. The gh-pages for JSON schema push documentation for devel and master in separate sub-directories. This allows user to view schema examples and markdown pages for schema for devel and master branch.
- Add new maintainers checklist guide see #529
- Rename
--clear
-->--rebuild
,--list-executors
-->--executors
in buildtest buildspec find see e7ec37 - Added property
moduletool
in settings schema for configuring module system - Add property
load_default_buildspecs
in settings schema for configuring buildtest to load default buildspecs in buildspec cache. See commit dac444 - Remove property
editor
from settings schema andbuildtest buildspec view
andbuildtest buildspec edit
were deprecated see b8479b - Fix bug during job timeout in poll stage. Buildtest will ignore cancelled jobs, but there no check if no builders were returned after poll stage. See #532
- Add Burst Buffer (
BB
) and Data Warp (DW
) directives for Cray support. See #525 and #526 - Add csh, tcsh, zsh shell support in script-v1.0.schema.json #523
The major changes in v0.9.0 are the following
First we moved schema development from https://github.com/buildtesters/schemas into buildtest and add custom RefResolver for validating schemas on local filesystem as pose to fully qualified URI.
We host schema, examples, and schema docs on Github pages at https://buildtesters.github.io/buildtest/ by adding a jsonschemadocs workflow. We moved JSON definitions to separate file called definitions.schema.json.
We added setup.sh, setup.csh script to install buildtest for bash/csh shells,
this now changes the way we install buildtest as pose to using pip.
We introduced scheduler agnostic configuration using batch
field.
This property currently translates a subset of options for Slurm and LSF.
We have added generic tests to buildtest in top-level folder generic-tests
which is an attempt to provide buildspecs that anyone can use. Currently, these
tests are run using Local Executors. We added the properties account
and max_pend_time
in executor configuration. The account
field is used for
sites to specify a project account to charge resource, this can be set default on
all executors or defined per executor setting. The max_pend_time
is
maximum time limit job can stay pending in executor queue, this was an enhancement
from previous model where jobs can run indefinitely without any cancellation option.
- Add new command
buildtest inspect
to view test details see #516 - Disable Travis and enable codecov comments see #519
- Add account field in buildtest setting to specify job account, this can be set default on all batch executors or set within executor scope which overrides default. See #514
- Add max_pend_time in buildtest settings to cancel job if its in pending state. This was tested for Slurm and LSF scheduler. See #509, #510
- Add option
buildtest schema --validate
to validate example schemas. The optionbuildtest schema --example
shows content of schema examples see #502 - Deprecate command
buildtest config edit
see #512 - Fix bug when retrieving tags with command
buildtest buildspec find --tags
see #501 - Add scheduler agnostic configuration via
batch
field see #493 and #494 - Add a
setup.sh
,setup.csh
script to install buildtest. This changes the way buildtest is installed as pose to using pip see #491 #503 - Add a custom RefResolver for resolving JSON schemas in filesystem as pose to using public URL, this was important for testing schema changes locally which was not present before. See #487
- The
returncode
field can be a string or a list for matching returncode status. The tags field can be a string or list of strings, before it could only be a list. See #486 - Migrate schema development from https://github.com/buildtesters/schemas into main project. see #480
- Fix bug when when writing python scripts in
run
section, we add stage/run directory in test destination directory see #477.
- We now running regression test in github action see #455
- Add command to filter by executor names using
buildtest build --executor
. #463 - Add option for filtering buildspec cache using
buildtest buildspec find --filter
and see list of available filter option usingbuildtest buildspec find --helpfiler
see #464 - Support for building with multiple tags #462
- Add option for filtering test report using
buildtest report --filter
option andbuildtest report --helpfilter
with list of filter fields. See #449 - Add option for
buildtest --docs
andbuildtest --schemadocs
to access documentation through CLI. See #452 - Retrieve a list of unique executors (
buildtest buildspec find --list-executors
) from buildspec cache see #448 - Query buildspec tags and buildspec files using
buildtest buildspec find --tags
andbuildtest buildspec find --buildspec-files
option see #445
This release includes major changes to framework, in particular we use jsonschema to
validate schemas and add separate repository: https://github.com/buildtesters/schemas for development of schemas. The
schemas are hosted in Github pages at https://buildtesters.github.io/schemas/schemadocs/. There are four main schemas:
global.schema.json, script-v1.0.schema.json, compiler-v1.0.schema.json, and settings.schema.json. The settings.schema.json
is used for configuring buildtest. The global.schema.json is used for validating global section of buildspec and sub-schema
script-v1.0.schema.json and compiler-v1.0.schema.json are used for validating test section. These are used when type: script
or type: compiler
is set.
All tests are run via executors defined in buildtest configuration, currently we support LocalExecutor, LSFExecutor, and SlurmExecutor for submitting jobs to local host, LSF and Slurm scheduler. As part of this release, we removed all features related to buildtest modules and they are now part of a Python API called lmodule which is a separate project.
At high level the following commands were introduced: buildtest build
, buildtest buildspec
, buildtest schema
, buildtest config
,
and buildtest report
. To build any buildspecs use the buildtest build command, main options are buildtest build --buildspec
which
takes input file or directory. You can use buildtest build --exclude
to exclude buildspec files. Both options can be specified multiple times.
buildtest can search buildspecs by tags when building them using buildtest build --tags <TAGNAME>
. This feature assumes you a buildspec cache
which can be populated using buildtest buildspec find
. This command discovers and validates all buildspecs and invalid buildspecs are reported
in file. The buildtest buildspec view
and buildtest buildspec edit
can view or edit a buildspec file provided you specify name of buildspec.
The buildtest schema
command provides access to schemas and examples, if you run buildtest schema
it will display all schema names, you can
select a schema using buildtest schema -n <schema>
with option --examples
or --json
to view schema examples or json file. The
buildtest config
command is used showing buildtest configuration, you can view buildtest configuration using buildtest config view
and
validate the configuration with schema using buildtest config validate
. The buildtest config edit
can be used to open configuration using
an editor and validate configuration upon closing file. If file is not valid, buildtest will print message exception from jsonschema.validate
to stdout and open file again. This process happens in a while loop until user has validated the configuration. The buildtest report
command is
used for showing test reports. The output can be filtered using buildtest report --format
to select fields which alter the column outputs.
The available fields can be retrieved using buildtest report --helpformat
.
In this release, we added significant coverage to regression tests and organize tests such that source directory (buildtest) mirrors to test directory
(tests) for instance testing module buildtest.menu.build
will have a test in tests/menu/test_build.py
. buildtest comes with a set of example
tests meant to serve as a tutorial for buildtest. These tests are toy examples meant to augment documentation examples and serve as means to automate
documentation examples or used in regression tests.
- Add Github Issue Templates
- Remove workflow Issue Label Bot
- Add pyflakes check in black workflow
- Add TutorialsValidation workflow for validating buildspecs
- Change First Issue Greeting workflow to run only on first issue and not for pull request
- Upgrade version of urlcheck workflow changed from
SuperKogito/[email protected]
-->urlstechie/[email protected]
- Add pre-commit hook to automate python format via
black
. Addblack --check
as automated check see #172, #179 - Remove black pre-commit file
.github/hooks/pre-commit
in replacement for.pre-commit-config.yaml
that installs the pre-commit file - Remove Lmod installation from Travis since buildtest doesn't depend on Lmod anymore
- Rename GitHub Organization from
HPC-buildtest
tobuildtesters
and update links throughout documentation - Update License Copyright from
2017-2019
to2017-2020
and add Vanessa Sochat - Add more badges in README.rst and updates to file
- We can retrieve tags and buildspec files from cache using
buildtest buildspec find --tags
andbuildtest buildspec find --buildspec-files
see - Add logging support via python logging library. Logs are written to file and they can be streamed to stdout using buildtest -d <DEBUGLEVEL>
- Use sphinx-autoapi to automate api docs instead of using sphinx.ext.autodoc
- Add documentation for Contributing Guide, Maintainer guide, Github Integration, and Regression Testing
- Add tox.ini file for automating python tests using tox
- Remove CLI option
buildtest build [run|log|test]
see #163 - Remove all module operations and cli menu
buildtest module
. This is now moved to an API lmodule at https://github.com/buildtesters/lmodule - removing extra dependencies argcomplete and termcolor
- removing bash script and sourcing in favor of Python module install
- Add GitHub actions:
greetings
, trafico, URLs-checker, pull-request-size - Add coveralls for coverage report
- Use Imgbot bot to convert all images via lossless compression to reduce image size
- Update
.gitignore
file to reflect file extension relevant to buildtest - Remove command option
buildtest testconfigs maintainer
and benchmark featurebuildtest benchmark
- Rename output style when showing buildtest configuration (
buildtest show --config
) - Add option to list all parent modules
buildtest module --list-all-parents
- Move code base from
src/buildtest
-->buildtest
and movebuildtest
script -->bin/buildtest
- Update contributing docs, and upload slides from 5th Easybuild User Meeting and FOSDEM20
- Major improvement to Travis build. buildtest will now test for python
3.6
,3.7
,3.8
for Lmod version6.6.2
and7.8.2
- Travis will install easybuild and setup a mini software stack that is used for by regression test
- Port the regression test to comply with Travis build environment and
coverage
report automatically get pushed to CodeCov - Removing subcommand
buildtest benchmark [hpl | hpcg]
- Add options to
buildtest module loadtest
to control behavior on module loadtest. - buildtest can run module loadtest in a login shell via
buildtest module loadtest --login
and restrict number of test using--numtest
flag. buildtest will automatically purge modules before loading test but this can be tweaked using--purge-modules
flag - Remove command
buildtest list
and remove implementation for retrieving easyconfigsbuildtest list --easyconfigs
- Option
buildtest list --software
is nowbuildtest module --software
andbuildtest list --modules
is nowbuildtest module list
- Add the following flags:
--exclude-version-files
,--filter-include
,--querylimit
tobuildtest module list
to tweak behavior on module list - Update buildtest configuration (
settings.yml
) with equivalent key/value to control behavior ofbuildtest module [list | loadtest]
. The configuration values are overridden by command line flags - buildtest will ignore
.version
,.modulerc
and.modulerc.lua
files when reporting modules inbuildtest module list
. This is controlled byexclude-version-files
in configuration or flag--exclude-version-files
- Remove sanity check feature
buildtest build --package
andbuildtest build --binary
and remove configurationBUILDTEST_BINARY
from configuration file - Remove option
buildtest build --parent-module-search
and removeBUILDTEST_PARENT_MODULE_SEARCH
from configuration file - Update documentation procedure regarding installation of buildtest and remove Concepts page
- update documentation section Background, Motivation, Inception, and Description
- make use of
$SRCDIR
when setting variableSRCFILE
in test script. - add documentation issue template page
- add clang compiler support via
compiler:clang
- add contributing pages to buildtest documentation and add further clarification on release process, buildtest regression testing, and GitHub app integration
- add
EDITOR
key in buildtest configuration (settings.yml) to tweak editor when editing files - change path to output/error files in
buildtest module loadtest
and print actualmodule load
command - adding github stalebot configuration see
.github/stale.yml
- adding github sponsor page
.github/FUNDING.yml
- add stream benchmark test see d2a2a4
- adding github workflow
black
to format all python code base see.github/workflow/black.yml
- install lmod and its dependency in travis build
- enable
cuda
,intel
,pgi
compilation, this can be set viacompilers
key - Define shell variables
CC
,FC
,CXX
to be used to reference builds - Define shell variable
EXECUTABLE
to reference generated executable - Fix Code Style issues reported by CodeFactor (https://www.codefactor.io/repository/github/buildtesters/buildtest)
- Add , hust-19 slides, buildtest architecture and workflow diagram in documentation
- Simplify output of
buildtest module --easybuild
andbuildtest module --spack
- Add
module purge
ormodule --force purge
in test (#122) - automate documentation examples for building test examples
- move all documentation examples to
toolkit/suite/tutorial
- update CONTRIBUTING.rst guide to include section on building buildtest API docs, automating documentation examples and running regression test via pytest
- automate documentation test generation using python script
- add support for coverage see https://codecov.io/gh/buildtesters/buildtest
- adding dry option when building tests (short:
-d
or long option:--dry
) - automate buildtest testing process via pytest. Add initial support with 25+ regression tests
- adding directory expansion support when files or directory are references such as $HOME or tilde (~) operation
- adding several badges to README.rst
- Re-implement core mechanics of the build framework by using new YAML schema.
- Release buildtest under MIT license
- Yaml schema can be printed via
buildtest show -k singlesource
. The schema provides building C, C++, Fortran code along with MPI test. Provides keys such ascflags
,cxxflags
,fflags
cppflags
,ldflags
for passing compiler options. The schema provides a dictionary to insert #BSUB and #SBATCH directives into job scripts viabsub:
andsbatch:
keys. - Add documentation example on C, C++, Fortran, MPI, and OpenACC code.
- Add options buildtest build bsub (bsub wrapper) such as
-n
,-W
,-M
,-J
,--dry-run
. - Add key TESTDIR in build.json to identify test directory, this makes it easier when running test
- autodetect slurm configuration from system and write to json file
- add option
buildtest module --module-deps
that prints modules dependent on parent modules - add subparser
buildtest module tree
that provides operation for managing module trees (BUILDTEST_MODULEPATH) - remove subparser
buildtest find
- add option
buildtest build --collection
for building test with Lmod user collection - remove option
buildtest build --software
- add option
buildtest build --modules
which allows test to be build with multiple module versions - add option
buildtest module collection
for managing module collection using buildtest. Alternative to Lmod user collection - remove option
buildtest --clean-logs
- Color output of Lua and non-lua modules in
buildtest list --modules
. - Remove option
--python-package
,--perl-package
,--ruby-package
,--r-package
from build menu. Also delete all reference in documentation and delete repository --buildtest-software
option is removed--format
option in list submenu only supports json. Previously it also supported csv- Rename all test scripts for documentation and rst files to be lower case
- Convert CONTRIBUTING guide from Markdown to Restructured Text (RsT) and add Contributing section in documentation
- Change buildtest config file path to be $HOME/.buildtest/settings.yml
- Use sphinx-argparse to automate argparse documentation
- Rename main program _buildtest to buildtest and changed source code directory layout
- Add option
-b
or--binary
for native support for sanity check on binary commands in framework without using yaml files - Update requirements.txt
- Migrate documentation to buildtest
- Create subcommand find and move option
-ft
and-fc
to this menu - Add logo for license, version, download, status to README.rst
- Type checking support for buildtest configuration file
- Remove option
--output
from run submenu - Add support for OSU Benchmark and add this to benchmark submenu and document this page
- Add threshold value for running test. This can be configured using BUILDTEST_SUCCESS_THRESHOLD
- Create submenu
module
and move option--diff-trees
and--module-load-test
to this menu
- OpenHPC yaml files are moved from $BUILDTEST_CONFIGS_REPO/ohpc to $BUILDTEST_CONFIGS_REPO/buildtest/ohpc
- This led to minor fix on how buildtest will write yaml files via
buildtest yaml --ohpc
and build tests viabuildtest build --ohpc
- Add OpenHPC integration with buildtest with option
--ophc
. This is available forbuild
andyaml
subcommand - Rename option
--ignore-easybuild
to--easybuild
. When this is set, buildtest will check if software is easybuild software. - BUILDTEST_EASYBUILD and BUILDTEST_OHPC can be defined in configuration file or environment variable
- Fix sorting issue with output for
buildtest list -svr
andbuildtest list -bs
- Add option
--prepend-modules
that can prepend modules to test script before loading application module. - buildtest will now ignore all .version* files as pose to .version file, this is due to Lmod 7 and how OpenHPC module files have hidden modules with format .versionX.Y.Z
- Fix issue with pypi package dependency in version 0.6.0
- New Feature: option to build all software and system packages using
--all-software
and--all-package
- New Feature: option to build all yaml configuration for software and system package using
--all-software
and--all-package
- New Feature: option to run all tests for software and system package using
--all-software
and--all-package
- New Feature: add option
--output
to control output for test execution. Output can be redirected to /dev/null or /dev/stdout - rename option
--system
to--package
- option
--software
and--package
is consistent across build, yaml, and run subcommand - Add test count, passed and failed test after each test run when using
buildtest run
. - option
--rebuild
and--overwrite
will work with--all-software
and--all-package
in yaml subcommand to automate rebuilding of yaml files - Move option --module-naming-scheme to build subcommand
- bug fix: directory issue for running buildtest first time #81
- bug fix: print error #80
- New Feature: Add new sub-commands
build
list
run
to buildtest - Move the following options to
build
sub command -s
-t
--enable-job
--job-template
--system
--r-package-test
--python-package-test
--perl-package-test
--ruby-package-test
--shell
--ignore-easybuild
--clean-tests
--testdir
--clean-build
- Move the following options to
- Move the following option to
list
sub command --ls
--lt
--svr
- Add option
--format
inlist
sub command to view output incsv
,json
. Default isstdout
- Add the following option to
run
sub command --app
--systempkg
--interactive
(originally--runtest
)--testname
- Add the following option to
- Added basic error handling support
- Add
description
key in all yaml files - Tests have permission
755
so they can run automatically as any user see 6a2570 - Options for
--ebyaml
now generates date-time stamp forcommand.yaml
see a59682 - Add script
check.sh
to automate testing of buildtest features and package building for verification
- Must use Python 3.6 or higher to use this version. All versions < 0.4.0 are supported by Python 2.6 or higher
- Package buildtest as pypi package, now it can be installed via
pip install buildtest
- Rename
buildtest
to_buildtest
and all code is now underbuildtest
- All buildtest repos are now packaged as pypi package and test are moved under buildtest directory
- The option
--ebyaml
is now working with auto-complete feature and ability to create yaml files for software packages - Binary test are now created based on unique sha256sum see 92c012
- Output of
--scantest
has been fixed and added to documentation - Add singularity CDASH script, need some more work on getting server setup properly
- --r-package: build test for r packages
- --python-package: build test for python packages
- --perl-package: build test for perl packages
- --ruby-package: build test for ruby packages
- --show-keys : Display description of yaml keys
- The option
--testset
is removed and will be replaced by individual option for r, perl, python, ruby package options
- Fix issue with
--runtest
option, it was broken at some point now it is working as expected - Add extra configuration option in config_opts to reuse variable that were needed throughout code and fix bug with
--sysyaml
see 493b53. - Fix bug with directory not found in menu.py by moving function
check_configuration
andoverride_configuration
from main.py to menu.py see d2c780
This is a major release update on buildtest with additional options and most importantly ability to test software stack without easybuild. buildtest can be used to test multiple software trees, with ability to disable easybuild check for software stack built without easybuild. The easybuild verification in buildtest has been simplified and it can easily report which software is built by easybuild.
buildtest can report difference between 2 module trees and multiple module trees can be
specified at same time for building test, and listing software, and software-version.
There has been some improvement on how buildtest operates with Flat-Naming-Scheme (FNS)
module naming scheme for module tree. Basically you don't need to use --toolchain
option with buildtest if you are using FNS
naming scheme but for HMNS
module tree you will need to use --toolchain
option
- Add short option
-mns
for--module-naming-scheme
and report total count for software, toolchain and software-version for options-ls
,-lt
,-svr
- Adding options
--clean-logs
,--clean-tests
for removing directories via command line - The file
config.yaml
is used to modify buildtest configuration and users can modify this to get buildtest working. - Environment variables can override configuration in
config.yaml
to allow further flexibility - add option
--logdir
to specify alternate path from the command line - remove option
--check-setup
- buildtest can operate on multiple module trees for option
-ls
and-svr
- rename option
--modules-to-easyconfigs
to--easyconfigs-to-moduletrees
with a short option-ecmt
- add option to show difference between module trees using
--diff-tree
- Fixed a bug where
.version
files were reported in methodget_module_list
- Add option
--ignore-easybuild
to disable easybuild check for a module tree - rename buildtest variables in source code
- add option
--show
to display buildtest configuration - add option
--enable-job
to enable Job integration with buildtest this is used with options--job-template
- rename all sub-directories in repo
BUILDTEST_CONFIGS_REPO
to lowercase to allow buildtest to generate tests if software is lower case such asgcc
andGCC
in the module file. This enables buildtest to operate with module trees that dont follow easybuild convention - buildtest will only generate tests for packages in python, R, ruby, perl when using
--testset
option if software has these packages installed. This avoids having to create excess test when they are bound to fail --testset
option now works properly for bothHMNS
andFNS
module naming scheme and is able to operate on modules that don't follow easybuild module naming convention
- Automate batch job submission from buildtest via --submitjob
- Fix shell magic (#!/bin/sh, #!/bin/bash, #!/bin/csh) for binary test
- Tab completion for buildtest argument using
argcomplete
module. See ddb9e4 - autopopulate choice for
--system
,--sysyaml
, and--software
- Fix output of
-svr
and resolve bug when 2 modules with same app/version found in different trees. Only in HMNS. See 7ddf91 for more details - Group buildtest commands for ease of use.
- Support for yaml keys scheduler and jobslot to enable jobscript creation from yaml files. See 0fe418
- Further support for scheduler and automatic detection. Currently supports LSF and SLURM.
- Add support for creating LSF Job scripts via templates. Use buildtest --job-template see 927dc0
- Add support for creating YAML config for system package binary testing via buildtest --sysyaml see 4ab887
- adding keys envvar, procrange, threadrange in YAML 9a2152 152423 3d43b8
- Add support for multiple shell (csh, bash, sh) see aea9d6 c154db
- remove verbose option from buildtest
- major code refactor see fd8d46 9d112c
- Fixed a bug during compiler detection when building GCC see f1397
- create a pretty menu for Interactive Testing via buildtest --runtest see 231cfe
- replace shell commands subprocess.Popen() with python library equivalents
- Add support for --testset Tcl see 373cc1
- Add support for --testset Ruby see c6b7133
- Print software in alphabetical order for
-svr
option see fcf610
- Add support for FlatNamingScheme in buildtest, added flag
--module-naming-scheme
to control setting - Add prototype functions
- get_appname()
- get_appversion()
- get_toolchain_name()
- get_toolchain_version()
- Add support for logging via Python Logger module
- Fix buildtest version, in 0.1.5 release buildtest was reporting version 1.0.1
- Provide clean termination when no easyconfig is found
- Fix issue when no toolchain is provided in CMakeList.txt
- Optimize nested loop when performing
--software-version-relationship
The buildtest repo has been moved from http://github.com/shahzebsiddiqui to http://github.com/buildtesters
- Report what tests can be generated from buildtest through YAML files by using --scantest
- Fixed a bug with flag -svr that was related to structure of easybuild repo, now no dependency on easybuild repo. Also added pretty output
- Adding CONTRIBUTION page
- Fix out software, toolchain, and easyconfig check is done. Arguments to
--software
and--toolchain
must go through module check, then toolchain check, and then finally easyconfig check - Add support for --check-setup which can be used to determine if buildtest framework is setup properly
- Add interactive testing via buildtest --runtest which is menu-driven with ability to run all tests, or run individual test directory in menu and see output
- Fix some issues with --testset and now buildtest reports number of tests generated not the path for each test to limit output. For --testset like R, Python, Perl buildtest will report generated test for each package
- buildtest will now use eb --list-toolchains to get list of all toolchains for toolchain check
- Can properly generate tests via --testset when R, Python, and Perl repos were created and moved out of buildtest-configs
- Add buildtest -V for version display
There has been lots of restructuring of code. There still needs some improvement for organizing scripts by functions
- Major code restructure around processing binary test and support for logging environment variable
- BUILDTEST_LOGCONTENT
- BUILDTEST_LOGDIR
- BUILDTEST_LOGFILE
- Provide get functions to retrieve value from arg.parser
- Add support for Perl with
--testset
- Add for more logging support in module and eb verification
There have been several changes in the buildtest framework to allow for more capabilities.
The following changes have been done in this release - buildtest can generate binary test for same executable with multiple parameters. See - Adding support for R, Perl and Python with more tests. - R, Python, Perl (soon to come), and MPI tests are organized in testset using --testset flag this allows for multiple packages to reuse tests across different apps. For instance OpenMPI, MPICH, MVAPICH and intel can now reference the mpi testset.
- Add support for inputfile YAML key to allow input redirection into program.
- Add support for outputfile YAML key to allow output redirection.
- Add support for argument passing using arg key word
- Add support for iter YAML key to allow N tests to be created.
- Switching BUILDTEST_MODULEROOT to BUILDTEST_MODULE_EBROOT to emphasize module tree should be coming from what easybuild generates.
- Fixed some bugs pertaining to CMakeLists.txt
The current release add supports for logging by default.
buildtest will now report useful operations for each function call that can be used for troubleshooting. The logs work with options like --verbose to report extra details in log file.
- The logs display output on the following
- Verification of software and toolchain with module file and easyconfig parameters
- Display output of each test generated
- Display changes to any CMakeLists.txt
- Output key values from YAML configs
- Output log from ancillary features like (--list-toolchain, --list-unique-software, --software-version-relation)
- buildtest can now search YAML configs and buildtest generated test scripts using the command -fc and -ft
- Now all buildtest-config files are removed and migrated to
- In this release, we have restructured the source directory. Now there are two sub directories
- ebapps
- system
buildtest can now support binary tests for system packages. There is a command.yaml file for each system package in its own directory. Each system package is in its own subdirectory where the name of the directory is the name of the system package. buildtest is using RHEL7 package names as reference.
The following system package tests have been added
- binutils
- chrony
- git
- hwloc
- ncurses
- pinfo
- procps-ng
- sed
- time
- wget
Compile from source YAML scripts can now be stored in subdirectories. buildtest can now generate tests in sub directory, this would be essential for building tests for R, Python, Ruby, Perl, etc...
- Tests for the following python packages:
- blist
- cryptography
- Cython
- dateutil
- deap
- funcsigs
- mpi4py
- netaddr
- netifaces
- nose
- numpy
- os
- paramiko
- paycheck
- pytz
- scipy
- setuptools
Added python documentation header for each function and GPL license section in all the files
buildtest generates test scripts from YAML files. The following apps have tests:
- Anaconda2
- binutils
- Bowtie
- Bowtie2
- CMake
- CUDA
- GCC
- git
- HDF5
- hwloc
- intel
- Java
- netCDF
- numactl
- OpenMPI
- Python
- acl
- coreutils
- curl
- diffstat
- gcc
- gcc-c++
- gcc-gfortran
- iptables
- ltrace
- perl
- powertop
- python
- ruby