From ac199248a3bb49b4a253b661e34dac0b8adbd532 Mon Sep 17 00:00:00 2001 From: hellwig Date: Wed, 1 Aug 2012 12:06:32 +0000 Subject: [PATCH] first approach of a regression-test experiment git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@1465 8c4709b5-6ec9-48aa-a5cd-a96041d1645a --- .../regression-test/CMakeLists.txt | 17 +++++ src/experiments/regression-test/experiment.cc | 76 +++++++++++++++++++ .../regression-test/experiment.hpp | 14 ++++ .../regression-test/experimentInfo.hpp | 13 ++++ .../regression-test/experimentInfo.hpp.sh | 32 ++++++++ 5 files changed, 152 insertions(+) create mode 100644 src/experiments/regression-test/CMakeLists.txt create mode 100644 src/experiments/regression-test/experiment.cc create mode 100644 src/experiments/regression-test/experiment.hpp create mode 100644 src/experiments/regression-test/experimentInfo.hpp create mode 100755 src/experiments/regression-test/experimentInfo.hpp.sh diff --git a/src/experiments/regression-test/CMakeLists.txt b/src/experiments/regression-test/CMakeLists.txt new file mode 100644 index 00000000..83217ab3 --- /dev/null +++ b/src/experiments/regression-test/CMakeLists.txt @@ -0,0 +1,17 @@ +set(EXPERIMENT_NAME regression-test) +set(EXPERIMENT_TYPE RegressionTest) +configure_file(../instantiate-experiment.ah.in + ${CMAKE_CURRENT_BINARY_DIR}/instantiate-${EXPERIMENT_NAME}.ah @ONLY +) + +#experiment sources +set(MY_EXPERIMENT_SRCS + experiment.hpp + experiment.cc +) + +#### include directories #### +include_directories(${CMAKE_CURRENT_BINARY_DIR}) + +## build library +add_library(${EXPERIMENT_NAME} ${MY_EXPERIMENT_SRCS}) diff --git a/src/experiments/regression-test/experiment.cc b/src/experiments/regression-test/experiment.cc new file mode 100644 index 00000000..d63dfa30 --- /dev/null +++ b/src/experiments/regression-test/experiment.cc @@ -0,0 +1,76 @@ +#include +#include + +#include "experiment.hpp" +#include "experimentInfo.hpp" +#include "sal/SALInst.hpp" +#include "sal/Listener.hpp" +#include "util/Logger.hpp" +#include "config/FailConfig.hpp" + + +// Check if configuration dependencies are satisfied: +#if !defined(CONFIG_EVENT_BREAKPOINTS) + #error This experiment needs: breakpoints. Enable these in the configuration. +#endif + +using namespace std; +using namespace fail; + +bool RegressionTest::run() +{ + int count = 0; + + Logger log("Regression-Test", false); + log << "experiment start" << endl; + +//Breakpoint-Test + log << "Breakpoint-Test start." << endl; + + BPSingleListener mainbp(ANY_ADDR); + mainbp.setCounter(1000); + + BPRangeListener bprange(REGRESSION_FUNC_LOOP_DONE, REGRESSION_FUNC_LOOP_DONE); + BPSingleListener breakcounter(REGRESSION_FUNC_LOOP_DONE); + simulator.addListener(&breakcounter); + + + while(true){ + + BaseListener* ev = simulator.resume(); + + if(ev == &breakcounter || ev == &bprange) { + + count++; + //First 5 times test BPSingleListener + if(count < 5){ + log << "Loop-Single-Test!" << endl; + simulator.addListener(&breakcounter); + //Next 5 times test BPRangeListener + }else if(count < 10){ + log << "Loop-Range-Test!" << endl; + simulator.addListener(&bprange); + //At 10 run of loop start BPSingleListener, BPRangeListener, mainListener + //which waits 1000 instructions. + }else if(count == 10){ + log << "loop-limit reached..." << endl; + simulator.addListener(&breakcounter); + simulator.addListener(&bprange); + simulator.addListener(&mainbp); + //If mainListener fires not first the test failes. + }else if(count >= 10){ + log << "Breakpoint-Test FAILED."<< endl; + break; + } + //If mainListener fires first the test success. + }else if(ev == &mainbp) { + log << "Breakpoint-Test SUCCESS." <$TARGET <>$TARGET +cat >>$TARGET <