ecos_kernel_test experiment bugix: don't resume if 'experiment reached finish() before FI'

Change-Id: Id0bb9400b8aa28307ed385a8c32b91b17254ba1c
This commit is contained in:
Christoph Borchert
2014-01-15 12:49:09 +01:00
parent c0fe64ecd6
commit 0a5e54e9aa

View File

@ -389,6 +389,7 @@ bool EcosKernelTestExperiment::faultInjection() {
// reaching finish() could happen before OR after FI // reaching finish() could happen before OR after FI
BPSingleListener func_finish(addr_finish); BPSingleListener func_finish(addr_finish);
simulator.addListener(&func_finish); simulator.addListener(&func_finish);
bool reached_finish = false;
// reaching cyg_test_output() could happen before OR after FI // reaching cyg_test_output() could happen before OR after FI
// eCos' test output function, which will show if the test PASSed or FAILed // eCos' test output function, which will show if the test PASSed or FAILed
@ -412,6 +413,8 @@ bool EcosKernelTestExperiment::faultInjection() {
handle_func_test_output(ecos_test_failed, ecos_test_passed); handle_func_test_output(ecos_test_failed, ecos_test_passed);
} else if (ev == &func_finish) { } else if (ev == &func_finish) {
log << "experiment reached finish() before FI" << endl; log << "experiment reached finish() before FI" << endl;
reached_finish = true;
break;
} else { } else {
break; break;
} }
@ -526,7 +529,7 @@ bool EcosKernelTestExperiment::faultInjection() {
#endif #endif
// wait until experiment-terminating event occurs // wait until experiment-terminating event occurs
while (true) { while (!reached_finish) {
ev = simulator.resume(); ev = simulator.resume();
if (ev == &func_test_output) { if (ev == &func_test_output) {
// re-add this listener // re-add this listener