* Provide MonteCarloGenerate capability
Intermediate commit, this squash represents all of Isaac Reaves' work
during his Fall 2022 Pathways internship tour
[skip ci]
* TrickOps: Add phase, [min-max] range, and overhaul YAML verification
* Add new "phase:" mechanism to TrickOps Runs and Builds to support
project-specific constraints on build and run ordering
- phase defaults to zero if not specified and must be between -1000
and 1000 if given.
- jobs can now optionally be requested by their phase or phase range
- See trickops/README.md for details
* Add [min-max] notation capability to run: entries and compare: entries
- [min-max] ranges provide definition of a set of runs using a common
numbering scheme in the YAML file, greatly reducing YAML file size
for monte-carlo and other zero-padded run numbering use cases
- See trickops/README.md for details
* YAML parsing changes
- Overhaul the logic which verifies YAML files for the expected
TrickOps format. This is now done in TrickWorkflowYamlVerifier and
provides much more robust error checking than previous approach
- .yaml_requirements.yml now provides the required types, ranges, and
default values as applicable to expected entries in YAML files
- valgrind: is now an sub-option to run: entries, not its own section
Users should now list their runs normallly and define their flags in
in that run's valgrind: subsection
- parallel_safety is now a per-sim parameter and not global. Users
should move their global config to the sim layer
- self.config_errors is now a list of errors. Users should now
check for empty list when using instead of True/False
* Robustify the get_koviz_report_jobs unit test to work whether koviz
exists on PATH or not
* Adjust trickops.py to use the new phase and range features
- Make it more configurable on the command-line via argparse
- Move SIM_mc_generation tests into test_sims.yml
[skip ci]
* Code review and cleanup from PR #1389
Documentation:
* Adjust documentation to fit suggested symlinked approach. Also
cleaned up duplicate images and old documentation.
* Moved the verification section out of markdown and into a PDF since it
heavily leverages formatting not available in markdown.
* Clarify a couple points on the Darwin Trick install guide
* Update wiki to clarify that data recording strings is not supported
MCG Code:
* Replace MonteCarloVariableRandomNormal::is_near_equal with new
Trick::dbl_is_near from trick team
MCG Testing:
* Reduce the set of SIM_mc_generation comparisons. After discussion
the trick team, we are choosing to remove all comparisons to
verif_data/ which contain random-generated numbers since
these tests cannot pass across all supported trick platforms.
* Fix the wrong rule on exlcuding -Werror for Darwin builds
of SIM_mc_generation
* Remove data recording of strings in SIM_mc_generation
Trickops:
* Replace build_command with build_args per discussion w/ Trick team
Since we only support arguments to trick-CP, replace the build_command
yaml entry with build_args
* Disable var server connection by default in SingleRun if TrickWorkflow.quiet
is True
* Guard against multiple Job starts
* Remove SimulationJob inheritance layer since old monte-carlo wasn't
and never will be supported by TrickOps
* Ignore IOError raise from variable_server that looks like "The remote
endpoint has closed the connection". This appears to occur when
SingleRun jobs attempt to connect to the var server for a sim that
terminates very early
[skip ci]
* Adjust phasing of old/new MCG initialize functions
* Clarify failure message in generate_dispersions if new/old MC are both
used.
* Adjust the phasing order of MCG intialize method to be before
legacy MC initialized. Without this, monte-carlo dry run completes with
success before the check in generate_dispersions() can run
* Add -Wno-stringop-truncation to S_override.mk for SIM_mc_generation
since gcc 8+ warns about SWIG generated content in top.cpp
* Introduce MonteCarloGenerationHelper python class
This new class provides an easy-to-use interface for MCG sim-module
users:
1. Run generation
2. Getting an sbatch array job suitable for SLURM
3. Getting a list of SingleRun() instances for generated runs, to be
executed locally if desired
---------
Co-authored-by: Dan Jordan <daniel.d.jordan@nasa.gov>
- Update S_overrides.mk for SIM_test_varserv so it links correctly in 32 bit (why did only that one have a problem? the world will never know)
- Stop testing Debian Bookworm on python2.7 since support was removed
- Fix some TrickOps unit tests
* Add code-coverage make target and github actions workflow
* Upload coverage to coveralls
* Add coverage badge to readme
* Fix some test makefiles to correctly propagate flags
* Fix ICG errors while processing system header files closes#1189
Found an InitPreprocessor call and am using it. Not sure which version
of clang it was added, just using for the version I'm on (10) and above.
Also found some GCC defines that are used during normal compilation.
Added these to our list of defines during ICG. This clears up all of
the errors I've been seeing.
* Fix ICG errors while processing system header files #1189
OK, found the flag that activates the ATOMIC defines I was previously
hardcoding.
* #1194 add trick-system-icg-exclude
Co-authored-by: Alex Lin <alexander.s.lin@nasa.gov>
* suppress warning for detached head during civitweb clone
closes#1180
* disable sigchld handler by default #931 (#1182)
* disable sigchld handler by default #931
* update test to set sigchld trap before testing
closes#931
* Fixed webserver http_alloc test (#1184)
Co-authored-by: cherpin00 <44306236+cherpin00@users.noreply.github.com>
* Fixed run path/too/deep duplication logic
* Add more unit testing to cover edge cases in the YAML file
* Unify type checking to reduce code duplication
* Empty sections like run: are still ignored but now produce an error
to remind the user to clean them up.
* Make get_sims() work with labels=None
* Test SIMs within deep directory structures to exercise pathing logic
* Add test for invalid sim path: syntax
Refs #1159
ICG and make_makefile_swig create py_link_list and io_link_list files
listing the files to be linked during sim builds. Trickified projects
require slightly altered lists.
Fixes#1155
closes#1141
If you use the -Wshadow flag, there are few compiler warnings
for shadowing. You can recreate with the Ball L1 sim:
% vi S_overrides.mk
TRICK_CFLAGS += -Wshadow -I../models
TRICK_CXXFLAGS += -Wshadow -I../models
% trick-CP
...
In file included from build/S_source.cpp:3:0:
build/../S_source.hh: In member function ‘void EventManagerSimObject::create_thread_process_event()’:
build/../S_source.hh:425:23: warning: declaration of ‘name’ shadows a member of 'this' [-Wshadow]
char* name = strdup(oss.str().c_str()) ;
To fix the S_source* generated code, it is just a
matter of changing default_trick_sys.sm.
* Introducing TrickOps - An Extensible Sim Testing Framework
Features:
* Multiple simultaneous sim builds, runs, file vs. file comparisons,
arbitrary post-run analyses, valgrind of runs
* Real-time progress bars for sim builds and runs
* Exit code management lets users easily define success & failure
* Failed comparisons can optionally generate koviz error reports
See share/trick/trickops/README.md for details
* Add GitHub Actions Workflow for TrickOps for Ubuntu:20.04 & CentOS latest
* Adds python unit and doc tests to github actions for push / pull requests
for Ubuntu:20.04 and CentOS 8:latest. MacOS still forthcoming.
* Also updates documentation with TrickOps information
* Remove duplicate / overwriting SIM_ definitions in ExampleWorkflow.py
* Address Code Review / Discussion
* Reduce set of sims tested in ExampleWorkflow.py to stable set
* Add ExampleWorkflow.py to GitHub Actions
* Clarify documentation and add image of TrickOps in action
* Error/Ignore valgrind entries in YAML file if platform == darwin
* Fix run.compare() logic error and add unit test to cover it
Co-authored-by: Dan Jordan <daniel.d.jordan@nasa.gov>
* #1086 append runtime allocations when sie is requested instead of initialization
* #1088 change sie error to warning and improve warning message
* #1089 lowercase powertools in centOS 8 config
closes#1086closes#1088closes#1089