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
This commit is contained in:
hsc
2012-09-23 17:28:10 +00:00
parent 7513dacad1
commit 7ffd6611d3
4 changed files with 14 additions and 8 deletions

View File

@ -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);

View File

@ -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

View File

@ -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();
};

View File

@ -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;
// ----------------------------------------------------