From 7ffd6611d311907003e01229d90bf5c429717791 Mon Sep 17 00:00:00 2001 From: hsc Date: Sun, 23 Sep 2012 17:28:10 +0000 Subject: [PATCH] RAMpage experiment: allow more than one empty test cycle git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@1678 8c4709b5-6ec9-48aa-a5cd-a96041d1645a --- src/experiments/rampage/campaign.cc | 1 + src/experiments/rampage/experiment.cc | 11 +++++++---- src/experiments/rampage/experiment.hpp | 4 ++-- src/experiments/rampage/rampage.proto | 6 ++++-- 4 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/experiments/rampage/campaign.cc b/src/experiments/rampage/campaign.cc index 178f133e..2d285612 100644 --- a/src/experiments/rampage/campaign.cc +++ b/src/experiments/rampage/campaign.cc @@ -71,6 +71,7 @@ bool RAMpageCampaign::run() d->msg.set_mem_addr(addr); d->msg.set_mem_bit(4); d->msg.set_errortype(d->msg.ERROR_STUCK_AT_1); + d->msg.set_empty_passes(2); d->msg.set_local_timeout(1000*60*10); // 10m d->msg.set_global_timeout(1000*60*50); // 50m campaignmanager.addParam(d); diff --git a/src/experiments/rampage/experiment.cc b/src/experiments/rampage/experiment.cc index b8bcace5..418972ea 100644 --- a/src/experiments/rampage/experiment.cc +++ b/src/experiments/rampage/experiment.cc @@ -150,21 +150,24 @@ bool RAMpageExperiment::handleIO(char c) // calculating stats if (!m_output.compare(0, sizeof(STR_STATS)-1, STR_STATS)) { - if (m_last_line_was_startingtestpass) { + if (m_empty_passes > 0) { + m_log << "no PFNs were tested this time (#" << dec << m_empty_passes << ")" << std::endl; + } + if (m_empty_passes >= m_param->msg.empty_passes()) { // result: NO_PFNS_TESTED - m_log << "no PFNs were tested this time" << std::endl; + m_log << "giving up" << std::endl; terminateExperiment(m_param->msg.NO_PFNS_TESTED); } m_log << STR_STATS << std::endl; // starting test pass } else if (!m_output.compare(0, sizeof(STR_START)-1, STR_START)) { - m_last_line_was_startingtestpass = true; + ++m_empty_passes; m_log << STR_START << std::endl; // tested %08x-%08x %08x-%08x ... } else if (!m_output.compare(0, sizeof(STR_TESTED)-1, STR_TESTED)) { - m_last_line_was_startingtestpass = false; + m_empty_passes = 0; //m_log << STR_TESTED << std::endl; // test whether the failing PFN was listed diff --git a/src/experiments/rampage/experiment.hpp b/src/experiments/rampage/experiment.hpp index 2524b144..de282fe8 100644 --- a/src/experiments/rampage/experiment.hpp +++ b/src/experiments/rampage/experiment.hpp @@ -15,7 +15,7 @@ class RAMpageExperiment : public fail::ExperimentFlow { fail::JobClient m_jc; fail::Logger m_log; std::string m_output; - bool m_last_line_was_startingtestpass; + unsigned m_empty_passes; fail::MemoryManager& m_mm; RAMpageExperimentData *m_param; std::time_t m_starttime; @@ -25,7 +25,7 @@ class RAMpageExperiment : public fail::ExperimentFlow { void terminateExperiment(int resulttype); public: RAMpageExperiment() - : m_log("RAMpage"), m_last_line_was_startingtestpass(false), + : m_log("RAMpage"), m_empty_passes(0), m_mm(fail::simulator.getMemoryManager()) {} bool run(); }; diff --git a/src/experiments/rampage/rampage.proto b/src/experiments/rampage/rampage.proto index 11117b10..b306a807 100644 --- a/src/experiments/rampage/rampage.proto +++ b/src/experiments/rampage/rampage.proto @@ -16,10 +16,12 @@ message RAMpageProtoMsg { ERROR_INVERSE_COUPLING = 5; } required ErrorType errortype = 4; + // number of empty passes until we give up + required uint32 empty_passes = 5; // local timeout (between newlines on ttyS1) - required uint32 local_timeout = 5; + required uint32 local_timeout = 6; // global timeout - required uint32 global_timeout = 6; + required uint32 global_timeout = 7; // ----------------------------------------------------