Commit Graph

375 Commits

Author SHA1 Message Date
c4437e1bd3 Merge "generic-tracing: add --serial-port and --serial-file command-line options" 2015-08-07 13:04:01 +02:00
c2b8566e35 generic-tracing: add --serial-port and --serial-file command-line options
The generic-tracing experiment now supports logging of I/O port access to file.
Therefore, the serialoutput plugin needs to be included in the experiment
configuration. Without the --serial-file option specified, logging is disabled.

Change-Id: I9e60d8ffd598ee04a50b4d92fc283f75382d478a
2015-08-07 11:43:01 +02:00
d2f99b909f Merge changes I7de68835,I27d83526
* changes:
  GenericExperiment: Fix definition of "detected-marker"
  Gitignore: ignore vim swap files
2015-08-05 09:42:24 +02:00
246938d4a6 l4-sys: Enable FI in all config cases
Fix the problem that injection was never enabled if func_entry == filter_entry.

Change-Id: Ifec64b6d1351e0857e568ca132cfed891f85aa62
2015-07-29 19:09:32 +02:00
257a3fb542 ecos_kernel_test: fix using wrong filename for serial output
Change-Id: I59ed61e2e4ee7ffe1a29390dd6ff0264406c3e7b
2015-06-19 17:27:21 +02:00
610e5d798d fiascoFail: grand overhaul of this experiment
* Removed all command-line options.
* Read all required information from *-traceinfo.txt file or kernel elf file.
* Record error_corrected (but only in the 'OK' case).
* Add support for multiple variants (similar to the ecos experiment).

Change-Id: I933e52881fc6bee0750d8aaef813fe2539166b06
2015-06-19 17:11:31 +02:00
ce41b30fb1 GenericExperiment: Fix definition of "detected-marker"
Due to a bug (most likely a copy and paste issue), the detected-marker
group was defined to point to the "FAIL_marker"-set, which would be
redundant. This commit will correctly map it to the "DETECTED_marker"
group.

Change-Id: I7de688357006ced1adf2423e213ae6633629cb81
2015-04-20 23:33:17 +02:00
f24f9f2107 cored-tester: add color_assert listener only if existsing
The color_assert_port symbol does not exist in all dOSEK variant,
therefore we add the listener only if the symbol exists. Otherwise the
invalid handler will trigger on INV_ADDR

Change-Id: I7b81940a8413850527efb9e4bae86248794c622c
2015-04-17 09:22:37 +02:00
193e5b757e adapt experiments to new restore() behavior
This change adapts several experiments, including the
DatabaseExperiment framework, to the restore() behavior update from
the previous change.  Existing traces should continue to be usable.

This is not tested yet, mainly because I don't have access to most of
the experiment targets / guest systems necessary for testing.  Please
test your own experiments if possible, or at least leave me a note
that you couldn't test it!

Especially the cored-voter/experiment.cc update may be broken, but
maybe the "FISHY" +2 in there was not OK in the first place.

Change-Id: I0c5daeabc8fe6ce0c3ce3e7e13d02195f41340ad
2015-03-18 18:22:21 +01:00
975d4de90d ecos: detect potential ftell failure
ftell() potentially fails and returns -1.  Found by Coverity Scan,
CID 25546.

Change-Id: Ifcf6fa8593cb1f3f54dbbff27ac021d46468a40c
2015-02-07 17:29:46 +01:00
a3a77141f3 ezs-logger: Added missing dependency
There was a missing depenency to fail-util.

Change-Id: I32ea7f184affa6f95ea28d7254699872fd501a22
2014-12-16 16:36:37 +01:00
491312bb91 GenericExperiment: A standardized fault injection experiment
The GenericExperiment is a standard campaign+experiment pair. It is
derived from the DatabaseCampaign+DatabaseExperiment. Its experiment
endpoints are set on the command line, therefore it can be used to give
users a first impression of FAIL*. Currently it supports different
endpoints:

--trap: Catch all traps that occur and end the experiment
--timeout <N>: kill the experiment after N microseconds
--catch-write-text: detect writes on the text segment
--catch-write-outerspace: detect writes into nirvana
--{ok,fail,detected}-marker: groups of ELF symbols that are used as
     execution breakpoints

Change-Id: Idc7fcf8875953f1007e1a37bacb086eddd29cd10
2014-10-22 18:31:58 +02:00
0317be8f8f cmake: Replace the experiment configuration mechanism
The inline configuration mechanism did work properly for iterated
invocation of cmake. But since the configuration items were set after
the decision was made whether a tool was build or not, they had only
influence on the second run of cmake.

The experiment configuration is no saved in a config.cmake file, which
populates the CMakeCache.txt before any other CMakeLists.txt is read.

Change-Id: I6eca1c6e462af3a241bd9c5b9a27a71a1f5d2829
2014-10-21 17:57:44 +02:00
f7e205f01a experiment/generic-tracing: inline the required configuration
The configuration from weather-monitor was also stripped down to those
values which do not represent the default settings.

Change-Id: I207306e555067156a4ed80edcbcd524137bc8e27
2014-10-21 17:07:57 +02:00
c24e54f2d4 weather-monitor: adapt CMake configuration for experiment
The configuration needed to build this experiment is no noted within the
experiment's CMakeLists.txt. This allows the easy building of this
experiment.

Change-Id: Ifddc4e6a8fa4e63c4656058166f9ef42e46e1edb
2014-10-21 12:41:59 +02:00
342af09e34 Fiasco-Fail: Fault-Injection experiment campaign for the Fiasco microkernel
Campaign to perform fault injection experiments on the Fiasco microkernel. Required arguments:
- Variant (-v): The actual experiment variant (e.g. BASELINE)
- Benchmark (-b): The actual experiment benchmark
- Golden-Run (-g) : Specify whether the golden-run or the actual fault-injection experiment should be executed (only for fail-client)
- Stop address (-E): Address where the experiment should finish
- Timer-ticks (-T): Number of timer ticks from the golden run experiment
- Total-instructions (-t): Number of total instructions from the golden run experiment
- Ecc-panic-function-address (-p): Address of the Ecc-panic function in order to detect failures (if any fault detection is included)
- Errors_corrected variable address (-c): Address of the errors_corrected variable in order to determain if any error was corrected
Important: First run the generic-tracing experiment so there is a "state" folder where the actual experiment can start from and import/prune the resulting trace.

Change-Id: I151428ecc21f5e714cc923674ebbca9d84435704
2014-09-08 11:10:19 +02:00
0fb6653fa8 experiments/cored-tester: new CoRedOS test plugin
Change-Id: I5c9785ce8d36049a585a4f6084af6938438498be
2014-08-25 13:10:56 +02:00
ac55b6c814 experiments/cored-tracing: new CoRedOS tracing plugin
This is a copy of the generic-tracing plugin for CoRedOS with the following
additions:

- random generator plugin is added if a "random_source" symbol is found
- checkpoint plugin is added if a "fail_trace" symbol is found. If stack
  limits are defined by "_sstack" and "_estack" symbols this memory region
  is checksummed on each checkpoint.

Change-Id: I00403ed917ad941d87ac2aeabd00c441135d9af4
2014-08-25 12:57:19 +02:00
a292e192ec weather-monitor: renamed logger object
This change renames the logger object used in weather-monitor from
"log" to "LOG" in order to circumvent potential naming conflicts
with e.g. the log() function from e.g. math.h/cmath.

Change-Id: I73758374f76ea5c29cb636ae3e0685a4a4cceacb
2014-07-25 13:41:51 +02:00
daedb5a4d6 weather-monitor: now uses elfreader
This commit modifies the weather-monitor experiment so that it
uses util/ElfReader instead of "nm -C" in a wrapper-script to
determine the various symbol addresses. experimentInfo.hpp now
only contains (rudimentary) configuration data for the experiment.
Furthermore this commit modularizes the experiment's code so that
there no longer is a humongous run() method.

Change-Id: I42461e1dabb5050af372810bb9fb61a6fccd0d99
2014-07-25 13:41:51 +02:00
a71a99e980 regression-test: added missing link-time dependencies
This change adds missing compile- and link-time dependencies/libraries.
Namely: fail-comm, -util, -tracing, -serialoutput & Google Protobuf.

Change-Id: I7947cafe1354ed5b4e40610683050a3f015769b2
2014-07-04 14:44:31 +02:00
a198eda8c8 Merge branch 'tobias' Apply Code cleanup and restructuring with new config file to main branch. 2014-06-30 15:01:45 +02:00
820a57a3a1 Update documentation and fix typo 2014-06-20 15:09:42 +02:00
329e5571ad Add config parameter to specify the hostname or ip addr. of the campain server.
Add some documentiation to experiment.hpp
2014-06-19 19:23:46 +02:00
a20d3cd12f exchange experimentInfo.hpp by experiment.conf which is know paresd during
runtime (no recompile anymore)
2014-06-19 19:13:33 +02:00
074eeab399 Code cleanup remove non-intruction-filtering part which is unused and broken 2014-06-17 17:07:17 +02:00
15c7a863e9 Enhance campain to use parameters. Now we need to add the parameter
--tpye to chosse between memory and register injection.
2014-06-17 12:44:58 +02:00
43b8c2351c More code cleanup 2014-06-16 14:08:08 +02:00
57c5fbf862 Bugfix for last commit 2014-06-13 21:37:26 +02:00
350f6bb680 Code Restructuring. 2014-06-13 21:08:36 +02:00
191b14c0e6 Enhancd experiment to accept config parameters. Combine all prep steps as well as the
final example in one binary. Use parameter prep to specify what you would like to do.
2014-06-13 20:39:40 +02:00
23d86aba5d Remove Injection functionallity which is currently broken and unused (fetchInstruction, logInjection, singleStep) 2014-06-11 18:06:12 +02:00
53dc6bbf36 Code cleanup 2014-06-11 11:04:03 +02:00
78a0d863a2 Expand Protocol for own Fail-Stop-Function 2014-06-11 10:54:26 +02:00
ea34860bd8 Merge "generic-tracing: manual supply of start/stop address" 2014-06-05 10:31:23 +02:00
3ef2af3230 Merge "generic-tracing: fix parsing of addresses > 2GB" 2014-06-04 17:11:24 +02:00
c827750090 Merge branch 'failpanda'
Conflicts:
	src/core/comm/DatabaseCampaignMessage.proto.in
	src/core/cpn/CMakeLists.txt
	src/core/cpn/DatabaseCampaign.cc
	src/core/sal/ConcreteCPU.hpp
	src/core/sal/SALConfig.hpp
	src/core/util/CMakeLists.txt

Change-Id: Id86b93d0e3ea4d9963fcc88605eec0603575ec83
2014-06-03 12:24:49 +02:00
f75c8613d8 experiments: use generated dbcampaign protobuf msg
Since commit c142818, DatabaseCampaignMessage.proto is generated into
the binary directory, which must be announced to the protobuf
compiler.

Change-Id: I0c3c4c6525df687012330573979dc897dfa8d701
2014-06-03 12:20:55 +02:00
277958b31b cleanups
Change-Id: I8022d937477668253c613e97c3a579ae65084b1e
2014-06-03 11:47:20 +02:00
1e9da8f4e6 generic-tracing: manual supply of start/stop address
This change allows to use the generic-tracing experiment with a
manually specified start/stop address.  This is necessary to use it
with more complex systems that aren't booted from a single ELF file,
such as Fiasco.OC.

Change-Id: Iafc59f56a25a1949174724fa9ae32a1eafc5922a
2014-05-19 16:48:29 +02:00
85d1f91b0e generic-tracing: fix parsing of addresses > 2GB
We should use strtoul() instead of strtol() for parsing 32-bit addresses.

Change-Id: I46ebe32cbbebe36b18e4d10fd519ab788471fdc4
2014-05-19 16:48:08 +02:00
0afd619ec3 weather-monitor: use uint32_t for instruction pointer
This fixes a gcc 4.7 warning: comparison between signed and unsigned
integer expressions [-Wsign-compare].

Change-Id: If440567c2767494f456e8e68df29e2f8d1582955
2014-05-08 16:26:50 +02:00
07968377b3 ecos: fix golden-run runtime conversion
BochsController::getTimerTicksPerSecond() only works reliably when the
simulation is already running (e.g., after a restore()).  This broke
timeout conditions for the very first experiment in a FailBochs instance.

Change-Id: Ice5f0aa0c6759f2d9341ad4f21d5c346307b4c12
2014-04-27 19:04:05 +02:00
6c5bb9c8ed removed experiments/weather-monitor-gem5
This crippled version of the weather-monitor experiment is not needed
anymore, as gem5's restore() works now.

Change-Id: Icc3bced6b04241d55f2acc46f341cf553b6dbd08
2014-04-25 11:20:13 +02:00
0807d5d9f6 L4Sys: dependency fixes
Thanks Horst!

Change-Id: I7711c7353619fdfd414ecbc1c9899308fd437d7d
2014-04-23 15:39:45 +02:00
1d42007168 vezs-example: update experiment for new VEZS lecture
Change-Id: Ifea2169ceb83135e6e53663d077f8f574539f512
2014-04-08 15:45:43 +02:00
440cba706b Merge "Adds KESO garbage collector experiment" 2014-04-08 15:45:24 +02:00
940fa6035d ecos: record simulated runtime
As the eCos kernel tests do not sufficiently check for failures, a
(compared to the golden run) measurably *reduced* simulation time can be
used as an indication for SDC.

Change-Id: I303f6c3f7ef56cb691c1f226eff74d113dd16629
2014-04-03 14:45:46 +02:00
396e00ce59 cmake: static library dependencies
CMake does not support linker groups, which were used to "automatically"
fix circular dependencies between different static FAIL* libraries and
the ordering of dynamic external libraries broke linking.
CMake can however correctly invoke the linker if dependencies are decribed
correctly (even if circular). This required changing all add_dependencies
calls between libraries to target_link_libraries (which creates a link-time
dependency) and linking all experiments to fail-sal.

Change-Id: I3a0d5dddb9b3d963ef538814e20d6b3de85d4ec5
2014-03-24 11:47:46 +01:00
b7ff284d54 generic-tracing: add configuration dependencies
Added hint: Use /dev/null if no state is required

Change-Id: I76a935f88e6a7a8f707970797d508dad3a961ab5
2014-03-20 10:59:45 +01:00