Skip to content
Snippets Groups Projects
Commit 3beba59e authored by Pascal Pieper's avatar Pascal Pieper
Browse files

Added possibility to start test from backup state

parent 126309c4
No related branches found
No related tags found
No related merge requests found
......@@ -42,6 +42,7 @@ class Powerloss : public Test{
char flashfile[13] = "Flash_backup";
char mramfile[13] = "Mram__backup";
char filesizefil[15]= "filsize_backup";
public:
static constexpr const char* name = "powerloss";
......@@ -90,6 +91,10 @@ public:
ef.close();
ofstream em(mramfile, ios::out | ios::binary);
mMrams.front()->serialize(em);
em.close();
ofstream es(filesizefil, ios::out | ios::binary);
es.write(reinterpret_cast<char*>(&filesizeBackup), sizeof(unsigned int) * numberOfFiles);
es.close();
}
}
......@@ -133,6 +138,7 @@ public:
if(!silent) fprintf(stderr, "\nFile %u of different size (was %lu, should %u)\n",
file, info.fsize, filesize[file]);
fsif->f_close(&fd);
return -1;
}
int ret = fsif->f_open(&fd, filename.c_str(), FSIF_READ);
......@@ -255,6 +261,36 @@ public:
unsigned long accesses = 0;
unsigned long powerlosses = 0;
{
ifstream inf(flashfile, ios::in | ios::binary);
ifstream inm(mramfile, ios::in | ios::binary);
ifstream ins(filesizefil, ios::in | ios::binary);
if(inf.is_open() && inm.is_open() && ins.is_open())
{
if(!silent)
{
printf("Found existing serialized memory files.\n");
}
//Files exist! For testing purposes, we continue the last test
fsif->unmount();
mFCs.front()->getDebugInterface()->deserialize(inf);
inf.close();
mMrams.front()->deserialize(inm);
inm.close();
ins.read(reinterpret_cast<char*>(&filesizeBackup), sizeof(unsigned int) * numberOfFiles);
ins.close();
TraceMask bkp = traceMask;
traceMask = (traceMask & ~PAFFS_WRITE_VERIFY_AS) |
PAFFS_TRACE_JOURNAL |
PAFFS_TRACE_ASCACHE |
PAFFS_TRACE_PACACHE |
PAFFS_TRACE_PAGESTATEM |
PAFFS_TRACE_VERBOSE;
fsif->mount();
traceMask = bkp;
}
}
while(true)
{
enableCallback();
......@@ -281,8 +317,10 @@ public:
inm.close();
TraceMask bkp = traceMask;
traceMask |= PAFFS_TRACE_JOURNAL |
traceMask = (traceMask & ~PAFFS_WRITE_VERIFY_AS) |
PAFFS_TRACE_JOURNAL |
PAFFS_TRACE_ASCACHE |
PAFFS_TRACE_PACACHE |
PAFFS_TRACE_PAGESTATEM |
PAFFS_TRACE_VERBOSE;
fsif->mount();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment