/*************************************************************************************************/
/** @brief Create a simple platform based on Dahu cluster */
-static void load_platform(const sg4::Engine& e)
+static void load_platform()
{
/**
* Inspired on dahu cluster on Grenoble
*/
auto* root = sg4::create_star_zone("dahu");
- std::string prefix = "dahu-", suffix = ".grid5000.fr";
+ std::string prefix = "dahu-";
+ std::string suffix = ".grid5000.fr";
for (int id = 0; id < 32; id++) {
std::string hostname = prefix + std::to_string(id) + suffix;
/* create host */
- sg4::Host* host = root->create_host(hostname, 1)->set_core_count(32)->seal();
+ const sg4::Host* host = root->create_host(hostname, 1)->set_core_count(32)->seal();
/* create UP/DOWN link */
sg4::Link* l_up = root->create_link(hostname + "_up", BW_REMOTE)->set_latency(LATENCY)->seal();
sg4::Link* l_down = root->create_link(hostname + "_down", BW_REMOTE)->set_latency(LATENCY)->seal();
/* Create a communication representing the ongoing communication */
auto mbox = sg4::Mailbox::by_name(host->get_name());
auto* payload = new std::string(msg);
- mbox->put(payload, size);
+ mbox->put(payload, static_cast<uint64_t>(size));
}
}
{
sg4::Engine e(&argc, argv);
/* setting network model to default one */
- e.set_config("network/model:CM02");
+ sg4::Engine::set_config("network/model:CM02");
/* create platform */
- load_platform(e);
+ load_platform();
/* setting network factors callbacks */
simgrid::kernel::resource::NetworkModelIntf* model = e.get_netzone_root()->get_network_model();
model->set_lat_factor_cb(latency_factor_cb);
for (const auto& model : std::vector<std::string>{"LV08", "SMPI", "IB", "CM02"}) {
_sg_cfg_init_status = 0; /* HACK: clear config global to be able to do set_config in UTs */
simgrid::s4u::Engine e("test");
- e.set_config("network/model:" + model);
+ simgrid::s4u::Engine::set_config("network/model:" + model);
simgrid::s4u::create_full_zone("root");
SECTION("Model: " + model)
{
- simgrid::kernel::resource::NetworkModelIntf* model = e.get_netzone_root()->get_network_model();
- REQUIRE_THROWS_AS(model->set_lat_factor_cb({}), std::invalid_argument);
- REQUIRE_THROWS_AS(model->set_lat_factor_cb(nullptr), std::invalid_argument);
- REQUIRE_THROWS_AS(model->set_bw_factor_cb({}), std::invalid_argument);
- REQUIRE_THROWS_AS(model->set_bw_factor_cb(nullptr), std::invalid_argument);
+ simgrid::kernel::resource::NetworkModelIntf* m = e.get_netzone_root()->get_network_model();
+ REQUIRE_THROWS_AS(m->set_lat_factor_cb({}), std::invalid_argument);
+ REQUIRE_THROWS_AS(m->set_lat_factor_cb(nullptr), std::invalid_argument);
+ REQUIRE_THROWS_AS(m->set_bw_factor_cb({}), std::invalid_argument);
+ REQUIRE_THROWS_AS(m->set_bw_factor_cb(nullptr), std::invalid_argument);
}
}
}
for (const auto& model : std::vector<std::string>{"LV08", "CM02"}) {
_sg_cfg_init_status = 0; /* HACK: clear config global to be able to do set_config in UTs */
simgrid::s4u::Engine e("test");
- e.set_config("network/model:" + model);
- e.set_config("network/latency-factor:10");
- e.set_config("network/bandwidth-factor:0.3");
+ simgrid::s4u::Engine::set_config("network/model:" + model);
+ simgrid::s4u::Engine::set_config("network/latency-factor:10");
+ simgrid::s4u::Engine::set_config("network/bandwidth-factor:0.3");
simgrid::s4u::create_full_zone("root");
SECTION("Model: " + model)
{
- simgrid::kernel::resource::NetworkModelIntf* model = e.get_netzone_root()->get_network_model();
- REQUIRE_THROWS_AS(model->set_lat_factor_cb(factor_cb), std::invalid_argument);
- REQUIRE_THROWS_AS(model->set_bw_factor_cb(factor_cb), std::invalid_argument);
+ simgrid::kernel::resource::NetworkModelIntf* m = e.get_netzone_root()->get_network_model();
+ REQUIRE_THROWS_AS(m->set_lat_factor_cb(factor_cb), std::invalid_argument);
+ REQUIRE_THROWS_AS(m->set_bw_factor_cb(factor_cb), std::invalid_argument);
}
}
}
for (const auto& model : std::vector<std::string>{"SMPI", "IB"}) {
_sg_cfg_init_status = 0; /* HACK: clear config global to be able to do set_config in UTs */
simgrid::s4u::Engine e("test");
- e.set_config("network/model:" + model);
- e.set_config("smpi/lat-factor:65472:0.940694;15424:0.697866;9376:0.58729;5776:1.08739;3484:0.77493");
- e.set_config("smpi/bw-factor:65472:11.6436;15424:3.48845");
+ simgrid::s4u::Engine::set_config("network/model:" + model);
+ simgrid::s4u::Engine::set_config(
+ "smpi/lat-factor:65472:0.940694;15424:0.697866;9376:0.58729;5776:1.08739;3484:0.77493");
+ simgrid::s4u::Engine::set_config("smpi/bw-factor:65472:11.6436;15424:3.48845");
simgrid::s4u::create_full_zone("root");
SECTION("Model: " + model)
{
- simgrid::kernel::resource::NetworkModelIntf* model = e.get_netzone_root()->get_network_model();
- REQUIRE_THROWS_AS(model->set_lat_factor_cb(factor_cb), std::invalid_argument);
- REQUIRE_THROWS_AS(model->set_bw_factor_cb(factor_cb), std::invalid_argument);
+ simgrid::kernel::resource::NetworkModelIntf* m = e.get_netzone_root()->get_network_model();
+ REQUIRE_THROWS_AS(m->set_lat_factor_cb(factor_cb), std::invalid_argument);
+ REQUIRE_THROWS_AS(m->set_bw_factor_cb(factor_cb), std::invalid_argument);
}
}
}
}
void NetworkCm02Model::comm_action_expand_constraints(const s4u::Host* src, const s4u::Host* dst,
- NetworkCm02Action* action, const std::vector<LinkImpl*>& route,
- const std::vector<LinkImpl*>& back_route)
+ const NetworkCm02Action* action,
+ const std::vector<LinkImpl*>& route,
+ const std::vector<LinkImpl*>& back_route) const
{
/* expand route links constraints for route and back_route */
- NetworkWifiLink* src_wifi_link = nullptr;
- NetworkWifiLink* dst_wifi_link = nullptr;
+ const NetworkWifiLink* src_wifi_link = nullptr;
+ const NetworkWifiLink* dst_wifi_link = nullptr;
if (not route.empty() && route.front()->get_sharing_policy() == s4u::Link::SharingPolicy::WIFI) {
src_wifi_link = static_cast<NetworkWifiLink*>(route.front());
}
NetworkCm02Action* comm_action_create(s4u::Host* src, s4u::Host* dst, double size,
const std::vector<LinkImpl*>& route, bool failed);
/** @brief Expand link contraint considering this new communication action */
- void comm_action_expand_constraints(const s4u::Host* src, const s4u::Host* dst, NetworkCm02Action* action,
- const std::vector<LinkImpl*>& route, const std::vector<LinkImpl*>& back_route);
+ void comm_action_expand_constraints(const s4u::Host* src, const s4u::Host* dst, const NetworkCm02Action* action,
+ const std::vector<LinkImpl*>& route,
+ const std::vector<LinkImpl*>& back_route) const;
/** @brief Set communication bounds for latency and bandwidth */
void comm_action_set_bounds(const s4u::Host* src, const s4u::Host* dst, double size, NetworkCm02Action* action,
const std::vector<LinkImpl*>& route,
protected:
virtual void check_lat_factor_cb();
virtual void check_bw_factor_cb();
+
+private:
std::function<NetworkFactorCb> lat_factor_cb_;
std::function<NetworkFactorCb> bw_factor_cb_;
};
return minRes;
}
-double NetworkModel::get_bandwidth_constraint(double rate, double bound, double size)
+double NetworkModel::get_bandwidth_constraint(double rate, double bound, double /* size */) const
{
return rate < 0 ? bound : std::min(bound, rate);
}
* @param size The size of the message.
* @return The new bandwidth.
*/
- double get_bandwidth_constraint(double rate, double bound, double size);
+ double get_bandwidth_constraint(double rate, double bound, double size) const;
double next_occurring_event_full(double now) override;
- virtual void set_lat_factor_cb(const std::function<NetworkFactorCb>& cb) override { THROW_UNIMPLEMENTED; }
- virtual void set_bw_factor_cb(const std::function<NetworkFactorCb>& cb) override { THROW_UNIMPLEMENTED; }
+ void set_lat_factor_cb(const std::function<NetworkFactorCb>& cb) override { THROW_UNIMPLEMENTED; }
+ void set_bw_factor_cb(const std::function<NetworkFactorCb>& cb) override { THROW_UNIMPLEMENTED; }
LinkImpl* loopback_ = nullptr;
};