X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/66b8207784f054d07a21630fd134b327c64365ed..e0559282e9a32c820950e87c49a9dc2e6e705c5c:/src/mc/snapshot/unitTest/mc_snapshot_unit.cpp diff --git a/src/mc/snapshot/unitTest/mc_snapshot_unit.cpp b/src/mc/snapshot/unitTest/mc_snapshot_unit.cpp new file mode 100644 index 0000000000..6b8d25e2f7 --- /dev/null +++ b/src/mc/snapshot/unitTest/mc_snapshot_unit.cpp @@ -0,0 +1,130 @@ +/************************************************* +TODO: comment +*************************************************/ +#define BOOST_TEST_MODULE snapshots +#define BOOST_TEST_DYN_LINK +#include + + +// /*******************************/ +// /* GENERATED FILE, DO NOT EDIT */ +// /*******************************/ +// +// #include +// #include "xbt.h" +// /*******************************/ +// /* GENERATED FILE, DO NOT EDIT */ +// /*******************************/ +// +// #line 180 "mc/mc_snapshot.cpp" + +#include +#include + +#include + +#include "src/mc/mc_config.hpp" +#include "src/mc/mc_mmu.hpp" +#include "src/mc/mc_private.hpp" +#include "src/mc/mc_snapshot.hpp" + + +static inline void init_memory(void* mem, size_t size) +{ + char* dest = (char*) mem; + for (size_t i = 0; i < size; ++i) { + dest[i] = rand() & 255; + } +} + +static int test_snapshot(bool sparse_checkpoint); + +BOOST_AUTO_TEST_SUITE(Snapshots) +BOOST_AUTO_TEST_CASE(flat_snapshots) { + BOOST_CHECK_EQUAL(test_snapshot(0), 1); +} +BOOST_AUTO_TEST_CASE(page_snapshots) { + BOOST_CHECK_EQUAL(test_snapshot(1), 1); +} +BOOST_AUTO_TEST_SUITE_END() + +static int test_snapshot(bool sparse_checkpoint) { + + // xbt_test_add("Initialization"); + _sg_mc_sparse_checkpoint = sparse_checkpoint; + BOOST_CHECK_EQUAL(xbt_pagesize, getpagesize()); + BOOST_CHECK_EQUAL(1 << xbt_pagebits, xbt_pagesize); + + std::unique_ptr process(new simgrid::mc::RemoteClient(getpid(), -1)); + process->init(); + mc_model_checker = new ::simgrid::mc::ModelChecker(std::move(process)); + + for(int n=1; n!=256; ++n) { + + // Store region page(s): + size_t byte_size = n * xbt_pagesize; + void* source = mmap(nullptr, byte_size, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); + BOOST_CHECK_MESSAGE(source!=MAP_FAILED, "Could not allocate source memory"); + + // Init memory and take snapshots: + init_memory(source, byte_size); + simgrid::mc::RegionSnapshot region0 = simgrid::mc::sparse_region( + simgrid::mc::RegionType::Unknown, source, source, byte_size); + for(int i=0; i