1 /* Copyright (c) 2017-2021. The SimGrid Team. All rights reserved. */
3 /* This program is free software; you can redistribute it and/or modify it
4 * under the terms of the license (GNU LGPL) which comes with this package. */
8 #include "simgrid/s4u/Engine.hpp"
9 #include "simgrid/s4u/Link.hpp"
10 #include "src/surf/SplitDuplexLinkImpl.hpp"
12 TEST_CASE("SplitDuplexLink: create", "")
14 simgrid::s4u::Engine e("test");
15 auto* zone = simgrid::s4u::create_star_zone("test");
17 SECTION("create string")
19 simgrid::s4u::Link* link_up;
20 simgrid::s4u::Link* link_down;
21 simgrid::s4u::SplitDuplexLink* link;
22 REQUIRE_NOTHROW(link = zone->create_split_duplex_link("link", "100GBps"));
23 REQUIRE(simgrid::s4u::SplitDuplexLink::by_name("link") == link);
24 REQUIRE_NOTHROW(link_up = simgrid::s4u::Link::by_name("link_UP"));
25 REQUIRE_NOTHROW(link_down = simgrid::s4u::Link::by_name("link_DOWN"));
26 REQUIRE(link_up->get_bandwidth() == 100e9);
27 REQUIRE(link_down->get_bandwidth() == 100e9);
28 REQUIRE(link_up == link->get_link_up());
29 REQUIRE(link_down == link->get_link_down());
32 SECTION("create double") { REQUIRE_NOTHROW(zone->create_split_duplex_link("link", 10e6)); }
35 TEST_CASE("SplitDuplexLink: sets", "")
37 simgrid::s4u::Engine e("test");
38 auto* zone = simgrid::s4u::create_star_zone("test");
39 auto* link = zone->create_split_duplex_link("link", 100e6);
40 auto* link_up = link->get_link_up();
41 auto* link_down = link->get_link_down();
46 link->set_bandwidth(bw);
47 REQUIRE(link_up->get_bandwidth() == bw);
48 REQUIRE(link_down->get_bandwidth() == bw);
54 link->set_latency(lat);
55 REQUIRE(link_up->get_latency() == lat);
56 REQUIRE(link_down->get_latency() == lat);
59 SECTION("turn on/off")
62 REQUIRE(not link_up->is_on());
63 REQUIRE(not link_down->is_on());
65 REQUIRE(link_up->is_on());
66 REQUIRE(link_down->is_on());
69 SECTION("concurrency_limit")
71 link->set_concurrency_limit(3);
72 REQUIRE(link_up->get_impl()->get_constraint()->get_concurrency_limit() == 3);
73 REQUIRE(link_down->get_impl()->get_constraint()->get_concurrency_limit() == 3);