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:
@ -71,6 +71,7 @@ bool RAMpageCampaign::run()
|
|||||||
d->msg.set_mem_addr(addr);
|
d->msg.set_mem_addr(addr);
|
||||||
d->msg.set_mem_bit(4);
|
d->msg.set_mem_bit(4);
|
||||||
d->msg.set_errortype(d->msg.ERROR_STUCK_AT_1);
|
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_local_timeout(1000*60*10); // 10m
|
||||||
d->msg.set_global_timeout(1000*60*50); // 50m
|
d->msg.set_global_timeout(1000*60*50); // 50m
|
||||||
campaignmanager.addParam(d);
|
campaignmanager.addParam(d);
|
||||||
|
|||||||
@ -150,21 +150,24 @@ bool RAMpageExperiment::handleIO(char c)
|
|||||||
|
|
||||||
// calculating stats
|
// calculating stats
|
||||||
if (!m_output.compare(0, sizeof(STR_STATS)-1, STR_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
|
// 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);
|
terminateExperiment(m_param->msg.NO_PFNS_TESTED);
|
||||||
}
|
}
|
||||||
m_log << STR_STATS << std::endl;
|
m_log << STR_STATS << std::endl;
|
||||||
|
|
||||||
// starting test pass
|
// starting test pass
|
||||||
} else if (!m_output.compare(0, sizeof(STR_START)-1, STR_START)) {
|
} 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;
|
m_log << STR_START << std::endl;
|
||||||
|
|
||||||
// tested %08x-%08x %08x-%08x ...
|
// tested %08x-%08x %08x-%08x ...
|
||||||
} else if (!m_output.compare(0, sizeof(STR_TESTED)-1, STR_TESTED)) {
|
} 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;
|
//m_log << STR_TESTED << std::endl;
|
||||||
|
|
||||||
// test whether the failing PFN was listed
|
// test whether the failing PFN was listed
|
||||||
|
|||||||
@ -15,7 +15,7 @@ class RAMpageExperiment : public fail::ExperimentFlow {
|
|||||||
fail::JobClient m_jc;
|
fail::JobClient m_jc;
|
||||||
fail::Logger m_log;
|
fail::Logger m_log;
|
||||||
std::string m_output;
|
std::string m_output;
|
||||||
bool m_last_line_was_startingtestpass;
|
unsigned m_empty_passes;
|
||||||
fail::MemoryManager& m_mm;
|
fail::MemoryManager& m_mm;
|
||||||
RAMpageExperimentData *m_param;
|
RAMpageExperimentData *m_param;
|
||||||
std::time_t m_starttime;
|
std::time_t m_starttime;
|
||||||
@ -25,7 +25,7 @@ class RAMpageExperiment : public fail::ExperimentFlow {
|
|||||||
void terminateExperiment(int resulttype);
|
void terminateExperiment(int resulttype);
|
||||||
public:
|
public:
|
||||||
RAMpageExperiment()
|
RAMpageExperiment()
|
||||||
: m_log("RAMpage"), m_last_line_was_startingtestpass(false),
|
: m_log("RAMpage"), m_empty_passes(0),
|
||||||
m_mm(fail::simulator.getMemoryManager()) {}
|
m_mm(fail::simulator.getMemoryManager()) {}
|
||||||
bool run();
|
bool run();
|
||||||
};
|
};
|
||||||
|
|||||||
@ -16,10 +16,12 @@ message RAMpageProtoMsg {
|
|||||||
ERROR_INVERSE_COUPLING = 5;
|
ERROR_INVERSE_COUPLING = 5;
|
||||||
}
|
}
|
||||||
required ErrorType errortype = 4;
|
required ErrorType errortype = 4;
|
||||||
|
// number of empty passes until we give up
|
||||||
|
required uint32 empty_passes = 5;
|
||||||
// local timeout (between newlines on ttyS1)
|
// local timeout (between newlines on ttyS1)
|
||||||
required uint32 local_timeout = 5;
|
required uint32 local_timeout = 6;
|
||||||
// global timeout
|
// global timeout
|
||||||
required uint32 global_timeout = 6;
|
required uint32 global_timeout = 7;
|
||||||
|
|
||||||
// ----------------------------------------------------
|
// ----------------------------------------------------
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user