Skip to content

Auto-find kernels, move unit tests, test c and fortran

Stefan Possanner requested to merge refactoring-tests into devel
  1. Moved test files into the respective source code folders and deleted folder src/struphy/tests.

Added the new test groups "models", "propagators", "tutorials" and "timings" available for struphy test command.

The option --monitor enables the use of pytest-monitor to time and memory-check all tests. Added automatic .html and .json generation via struphy test timings (when test were monitored). These files are stored under _pymon/ in the struphy install path and can be used for further studies. Timings can be print on screen via struphy test timings --verbose.

Solves #223 (closed).

  1. Introduced state.yml which replaces _path.txt files. The state dictionary collects all info related to paths and compilation status.

  2. Struphy files that need to be compiled must contain kernels and .py in the filename (some re-namings where thus necessary). Such files, and their dependencies, are found automatically during compilation (struphy compile).

Kernels and their dependencies can be displayed on screen via struphy compile --dependencies.

In order for the auto-detection of dependencies to work robustly, the imports of kernels has to be done in a specific way, namely:

import struphy.module.your_kernels as your_kernels

This format is now mandatory for all kernel imports in kernels. Files have been changed accordingly.

The kernel names are stored in the new state dictionary under state['kernels']. The Makefile was drastically shortened. New kernels (and their dependencies) will be recognized automatically.

Added the new command line option struphy compile --status, showing the current status (obtained from state.yml) on screen.

  1. Tutorials are now executed as unit tests, and can thus be timed. Launch tutorials via struphy test tutorials (-n N); the command struphy tutorials has been removed. Doc has been adapted.

Other changes:

  • Renamed struphy/b_splines/ to struphy/bsplines/.
  • Renamed the module mat_vec_filler.py to particle_to_mat_kernels.py
  • Update the .gitlab-ci.yml; both c and fortran tests are now executed
  • New psydac version 0.1.6, fixing SumLinearOperator.simplify()
  • enforce C-ordering in struphy.geometry.transform_kernels.kernel_pullpush
  • Don't do timings in ci for the moment, wait for new SUSE15 image in Bits and Bytes, according to Klaus Reuter
  • Eliminate lambda functions from some legacy files
  • Run c and fortran pipelines in parallel
Edited by Stefan Possanner

Merge request reports