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_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);
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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();
|
||||
};
|
||||
|
||||
@ -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;
|
||||
|
||||
// ----------------------------------------------------
|
||||
|
||||
|
||||
Reference in New Issue
Block a user