X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/dadf70192f1b8b523d5b9009a0baf74f3c219b6a..7233106ddd4d22acaefbba0e6167350caaafe65d:/src/mc/sosp/mc_snapshot_test.cpp diff --git a/src/mc/sosp/mc_snapshot_test.cpp b/src/mc/sosp/mc_snapshot_test.cpp index 80abca9a44..50cd1a209f 100644 --- a/src/mc/sosp/mc_snapshot_test.cpp +++ b/src/mc/sosp/mc_snapshot_test.cpp @@ -7,6 +7,7 @@ #include #include +#include #include @@ -41,11 +42,13 @@ public: mc_model_checker = nullptr; } + static std::default_random_engine rnd_engine; static bool sparse_checkpoint; static std::unique_ptr process; }; // static member variables init. +std::default_random_engine snap_test_helper::rnd_engine; bool snap_test_helper::sparse_checkpoint = 0; std::unique_ptr snap_test_helper::process = nullptr; @@ -53,7 +56,7 @@ void snap_test_helper::init_memory(void* mem, size_t size) { char* dest = (char*)mem; for (size_t i = 0; i < size; ++i) { - dest[i] = rand() & 255; + dest[i] = rnd_engine() & 255; } } @@ -99,7 +102,7 @@ snap_test_helper::prologue_return snap_test_helper::prologue(int n) void snap_test_helper::read_whole_region() { - for (int n = 1; n != 256; ++n) { + for (int n = 1; n != 32; ++n) { prologue_return ret = prologue(n); const void* read = MC_region_read(&(ret.region), ret.dstn, ret.src, ret.size); @@ -113,13 +116,13 @@ void snap_test_helper::read_whole_region() void snap_test_helper::read_region_parts() { - for (int n = 1; n != 256; ++n) { + for (int n = 1; n != 32; ++n) { prologue_return ret = prologue(n); for (int j = 0; j != 100; ++j) { - size_t offset = rand() % ret.size; - size_t size = rand() % (ret.size - offset); + size_t offset = rnd_engine() % ret.size; + size_t size = rnd_engine() % (ret.size - offset); const void* read = MC_region_read(&(ret.region), ret.dstn, (const char*)ret.src + offset, size); INFO("Mismatch in MC_region_read()"); REQUIRE(not memcmp((char*)ret.src + offset, read, size)); @@ -131,7 +134,7 @@ void snap_test_helper::read_region_parts() void snap_test_helper::compare_whole_region() { - for (int n = 1; n != 256; ++n) { + for (int n = 1; n != 32; ++n) { prologue_return ret = prologue(n); @@ -145,13 +148,13 @@ void snap_test_helper::compare_whole_region() void snap_test_helper::compare_region_parts() { - for (int n = 1; n != 256; ++n) { + for (int n = 1; n != 32; ++n) { prologue_return ret = prologue(n); for (int j = 0; j != 100; ++j) { - size_t offset = rand() % ret.size; - size_t size = rand() % (ret.size - offset); + size_t offset = rnd_engine() % ret.size; + size_t size = rnd_engine() % (ret.size - offset); INFO("Mismatch in MC_snapshot_region_memcmp()"); REQUIRE(not MC_snapshot_region_memcmp((char*)ret.src + offset, &(ret.region), (char*)ret.src + offset, @@ -176,51 +179,34 @@ void snap_test_helper::read_pointer() munmap(ret.src, ret.size); } -/*************** End: class BOOST_tests *****************************/ +/*************** End: class snap_test_helper *****************************/ + TEST_CASE("MC::Snapshot: A copy/snapshot of a given memory region", "MC::Snapshot") { + auto sparse = GENERATE(false, true); - SECTION("Flat snapshot (no pages)") - { - snap_test_helper::Init(0); - - INFO("Read whole region"); - snap_test_helper::read_whole_region(); - - INFO("Read region parts"); - snap_test_helper::read_region_parts(); - - INFO("Compare whole region"); - snap_test_helper::compare_whole_region(); - - INFO("Compare region parts"); - snap_test_helper::compare_region_parts(); - - INFO("Read pointer"); - snap_test_helper::read_pointer(); - - snap_test_helper::cleanup(); + if (sparse) { + INFO("Sparse snapshot (using pages)"); + } else { + INFO("Flat snapshot (no pages)"); } - SECTION("Sparse snapshot (using pages)") - { - snap_test_helper::Init(1); + snap_test_helper::Init(sparse); - INFO("Read whole region"); - snap_test_helper::read_whole_region(); + INFO("Read whole region"); + snap_test_helper::read_whole_region(); - INFO("Read region parts"); - snap_test_helper::read_region_parts(); + INFO("Read region parts"); + snap_test_helper::read_region_parts(); - INFO("Compare whole region"); - snap_test_helper::compare_whole_region(); + INFO("Compare whole region"); + snap_test_helper::compare_whole_region(); - INFO("Compare region parts"); - snap_test_helper::compare_region_parts(); + INFO("Compare region parts"); + snap_test_helper::compare_region_parts(); - INFO("Read pointer"); - snap_test_helper::read_pointer(); + INFO("Read pointer"); + snap_test_helper::read_pointer(); - snap_test_helper::cleanup(); - } + snap_test_helper::cleanup(); }