X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/2c01336cbfb90976b513b71718a748b3a01a8e6a..00a93bcc99a857aa68086fb61b6748976ca3fb92:/src/surf/trace_mgr_test.cpp diff --git a/src/surf/trace_mgr_test.cpp b/src/surf/trace_mgr_test.cpp index 81e3a23f39..3b64866250 100644 --- a/src/surf/trace_mgr_test.cpp +++ b/src/surf/trace_mgr_test.cpp @@ -1,60 +1,47 @@ -/* Copyright (c) 2017. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2017-2018. The SimGrid Team. All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ #define BOOST_TEST_MODULE Trace Manager tests - -bool init_unit_test(); // boost forget to give this prototype on NetBSD, which does not fit our paranoid flags +bool init_unit_test(); // boost sometimes forget to give this prototype (NetBSD and other), which does not fit our paranoid flags #define BOOST_TEST_DYN_LINK #define BOOST_TEST_NO_MAIN #include -namespace utf = boost::unit_test; +#include "simgrid/kernel/resource/Resource.hpp" #include "src/surf/surf_interface.hpp" #include "src/surf/trace_mgr.hpp" + #include "xbt/log.h" #include "xbt/misc.h" -#include +#include + +namespace utf = boost::unit_test; +namespace tmgr = simgrid::trace_mgr; XBT_LOG_NEW_DEFAULT_CATEGORY(unit, "Unit tests of the Trace Manager"); double thedate; -class MockedResource : public simgrid::surf::Resource { +class MockedResource : public simgrid::kernel::resource::Resource { public: - explicit MockedResource() : simgrid::surf::Resource(nullptr, "fake", nullptr) {} - void apply_event(tmgr_trace_event_t event, double value) + explicit MockedResource() : simgrid::kernel::resource::Resource(nullptr, "fake", nullptr) {} + void apply_event(tmgr_trace_event_t event, double value) override { - XBT_VERB("t=%.1f: Change value to %lg (idx: %d)", thedate, value, event->idx); + XBT_VERB("t=%.1f: Change value to %lg (idx: %u)", thedate, value, event->idx); + tmgr_trace_event_unref(&event); } - bool isUsed() { return true; } -}; - -static inline bool doubleEq(double d1, double d2) -{ - return fabs(d1 - d2) < 0.0001; -} -class Evt { -public: - double date; - double value; - explicit Evt(double d, double v) : date(d), value(v) {} - bool operator==(Evt e2) { return (doubleEq(date, e2.date)) && (doubleEq(value, e2.value)); } - bool operator!=(Evt e2) { return !(*this == e2); } + bool is_used() override { return true; } }; -static std::ostream& operator<<(std::ostream& out, const Evt& e) -{ - out << e.date << " " << e.value; - return out; -} -static void trace2vector(const char* str, std::vector* whereto) +static void trace2vector(const char* str, std::vector* whereto) { simgrid::trace_mgr::trace* trace = tmgr_trace_new_from_string("TheName", str, 0); + XBT_VERB("---------------------------------------------------------"); XBT_VERB("data>>\n%s<event_list) - XBT_VERB("event: d:%lg v:%lg", evt.delta, evt.value); + for (auto const& evt : trace->event_list) + XBT_VERB("event: d:%lg v:%lg", evt.date_, evt.value_); MockedResource daResource; simgrid::trace_mgr::future_evt_set fes; @@ -63,7 +50,7 @@ static void trace2vector(const char* str, std::vector* whereto) while (fes.next_date() <= 20.0 && fes.next_date() >= 0) { thedate = fes.next_date(); double value; - simgrid::surf::Resource* res; + simgrid::kernel::resource::Resource* res; tmgr_trace_event_t it = fes.pop_leq(thedate, &value, &res); if (it == nullptr) continue; @@ -71,11 +58,12 @@ static void trace2vector(const char* str, std::vector* whereto) BOOST_CHECK_EQUAL(it, insertedIt); // Check that we find what we've put if (value >= 0) { res->apply_event(it, value); - whereto->push_back(Evt(thedate, value)); + whereto->push_back(tmgr::DatedValue(thedate, value)); } else { - XBT_DEBUG("%.1f: ignore an event (idx: %d)\n", thedate, it->idx); + XBT_DEBUG("%.1f: ignore an event (idx: %u)\n", thedate, it->idx); } } + tmgr_finalize(); } /* Fails in a way that is difficult to test: xbt_assert should become throw @@ -87,76 +75,76 @@ BOOST_AUTO_TEST_CASE(no_evt_noloop) { }*/ BOOST_AUTO_TEST_CASE(one_evt_noloop) { - std::vector got; + std::vector got; trace2vector("9.0 3.0\n", &got); - std::vector want; - want.push_back(Evt(9, 3)); + std::vector want; + want.push_back(tmgr::DatedValue(9, 3)); BOOST_CHECK_EQUAL_COLLECTIONS(want.begin(), want.end(), got.begin(), got.end()); } BOOST_AUTO_TEST_CASE(two_evt_noloop) { - std::vector got; + std::vector got; trace2vector("3.0 1.0\n" "9.0 3.0\n", &got); - std::vector want; - want.push_back(Evt(3, 1)); - want.push_back(Evt(9, 3)); + std::vector want; + want.push_back(tmgr::DatedValue(3, 1)); + want.push_back(tmgr::DatedValue(9, 3)); BOOST_CHECK_EQUAL_COLLECTIONS(want.begin(), want.end(), got.begin(), got.end()); } BOOST_AUTO_TEST_CASE(three_evt_noloop) { - std::vector got; + std::vector got; trace2vector("3.0 1.0\n" "5.0 2.0\n" "9.0 3.0\n", &got); - std::vector want; - want.push_back(Evt(3, 1)); - want.push_back(Evt(5, 2)); - want.push_back(Evt(9, 3)); + std::vector want; + want.push_back(tmgr::DatedValue(3, 1)); + want.push_back(tmgr::DatedValue(5, 2)); + want.push_back(tmgr::DatedValue(9, 3)); BOOST_CHECK_EQUAL_COLLECTIONS(want.begin(), want.end(), got.begin(), got.end()); } BOOST_AUTO_TEST_CASE(two_evt_loop) { - std::vector got; + std::vector got; trace2vector("1.0 1.0\n" "3.0 3.0\n" - "WAITFOR 2\n", + "LOOPAFTER 2\n", &got); - std::vector want; - want.push_back(Evt(1, 1)); - want.push_back(Evt(3, 3)); - want.push_back(Evt(6, 1)); - want.push_back(Evt(8, 3)); - want.push_back(Evt(11, 1)); - want.push_back(Evt(13, 3)); - want.push_back(Evt(16, 1)); - want.push_back(Evt(18, 3)); + std::vector want; + want.push_back(tmgr::DatedValue(1, 1)); + want.push_back(tmgr::DatedValue(3, 3)); + want.push_back(tmgr::DatedValue(6, 1)); + want.push_back(tmgr::DatedValue(8, 3)); + want.push_back(tmgr::DatedValue(11, 1)); + want.push_back(tmgr::DatedValue(13, 3)); + want.push_back(tmgr::DatedValue(16, 1)); + want.push_back(tmgr::DatedValue(18, 3)); BOOST_CHECK_EQUAL_COLLECTIONS(want.begin(), want.end(), got.begin(), got.end()); } BOOST_AUTO_TEST_CASE(two_evt_start0_loop) { - std::vector got; + std::vector got; trace2vector("0.0 1\n" "5.0 2\n" - "WAITFOR 5\n", + "LOOPAFTER 5\n", &got); - std::vector want; - want.push_back(Evt(0, 1)); - want.push_back(Evt(5, 2)); - want.push_back(Evt(10, 1)); - want.push_back(Evt(15, 2)); - want.push_back(Evt(20, 1)); + std::vector want; + want.push_back(tmgr::DatedValue(0, 1)); + want.push_back(tmgr::DatedValue(5, 2)); + want.push_back(tmgr::DatedValue(10, 1)); + want.push_back(tmgr::DatedValue(15, 2)); + want.push_back(tmgr::DatedValue(20, 1)); BOOST_CHECK_EQUAL_COLLECTIONS(want.begin(), want.end(), got.begin(), got.end()); }