* 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
* Merging changes from cmake branch to master
* Fixing includes for renamed header files
* still need build rule
* Adding warning for swig code for gcc8+
* Adding CMakeLists.txt for data products
* Cmake merge #901
Making adjustments to get cmake working on the Mac (Mojave)
* Cmake merge #901
Changing string append to list append
* Incorporate Webserver into Trick, so one only has to include HttpServer.sm
* Tweaks in default index.html file
* Rename HTTPServer.sm to WebServer.sm
* Rename http_server to WebServer
* Add --retry to curl invocations in HttpServer makefile.
* Fix #include in VariableServerVariable.hh
* Include cleanup and curl tweaks in the hopes of making Jenkins happy.
* Doh! problem in makefile masked by preinstalled mongoose in usr/local/lib
* DIE Make Bug DIE
* Fix include in WebServer.sm
* WebServer.sm constructor name
* Don't SWIG mongoose.h
* Compile with -std=c++11
* Attempt to fix race condition in makefile
* makefie tweek
* Fix trick library name problem for Centos and Redhat
Added a new configure arugument "--enable-32bit". If enabled,
TRICK_FORCE_32BIT is automatically set for building Trick and for
all sims built. Changed the ARCH and added -m32 in the configure
script if 32bit is enabled. This changes the configure script to
test for 32bit libraries.
Found if --without-x was specified, that automatically caused an
error condition in the configure script. Fixed that and only
tested for X windows headers and libs if X is included. Excluded
a couple of directories from compiling if X is not included.
Didn't seem to be a problem with java.
* Method socket.sendall() expects bytes to be sent, rather than a string
* Python 3 stores text strings as unicode (not ASCII) by default
* Therefore, strings must be explicitly converted to bytes for Python 3 compatibility
* This works for both Python 2 and Python 3 (tested on Python 2.7, Python 3.6, and Python 3.7)
Update documentation
Change TRICK_LIB_BUILD_TYPE to TRICKIFY_BUILD_TYPE
Remove support for linking in arbitrary objects
Conform logging to existing pattern
Added a clock reference that to the FrameLog class that defaults
to the GetTimeOfDay clock. This clock has fast access and is
non intrusive to real-time operations using a different clock.
Added a function to set the clock to something else if desired.
Created a new message class that will copy incoming messages to a
buffer area. The buffer area is pre allocated during simulation
initialization. On a separate thread the buffer area is written
to std::cout.
Added a new environment variable TRICK_ICG_IGNORE_TYPES. Class/struct/enum
types found in this semicolon delimited list will not have attributes written
out.
Added std::array as an STL type Trick recognizes. We can now create io code
that can save and restore std::arrays like std::vectors and other similar
types. Like other STL types, an std::array cannot be logged or viewed in
trick-tv.
Reverts the important parts of c909669. Trying to include another
project's build dependencies as part of a sim build doesn't work that
well.
Refs #309
PIPESTATUS is only available in bash. For many of the systems
we use /bin/sh and /bin/bash are the same, but noooo, not on
Ubuntu where it is linked to dash. I set SHELL := /bin/bash
in our makefile now.
Added echos to all compile commands to append to MAKE_out. tee'd
the output of the compile command so that it will go to both the MAKE_out
file and the screen.
Like gcc, swig supports all those -M options. Use them to automatically
manage *_py.cpp dependencies.
Add dependency generation to trickify.mk as well.
CURDIR is used to produce absolute paths in S_source.d, which allows it
to be included from external makefiles. It is specifically intended to
be included from a Trickified project's user-facing makefile. That is,
the one the user is intended to include in a sim's S_overrides.mk. This
allows the project to automatically build their Trickified object as
part of a simulation build, but only when necessary as specified by the
dependencies.
Refs #309
Trick uses dlsym to dynamically load symbols at run time. At link time,
it cannot be known which symbols will be needed. When presented with a
library, the linker will only link in symbols that are known to be
needed. Therefore, the use of -whole-archive (Linux) or -force_load
(Mac) is necessary when linking a Trickified library into a sim.
We can simplify this by partially linking into an object instead of
creating a library. The linker will link all symbols in an object
regardless of whether or not they are known to be needed.
Refs #309