1 /* Copyright (c) 2017-2022. 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 "NetZone_test.hpp" // CreateHost callback
9 #include "simgrid/kernel/routing/DragonflyZone.hpp"
10 #include "simgrid/s4u/Engine.hpp"
12 TEST_CASE("kernel::routing::DragonflyZone: Creating Zone", "")
14 simgrid::s4u::Engine e("test");
15 simgrid::s4u::ClusterCallbacks callbacks(CreateHost{});
16 REQUIRE(create_dragonfly_zone("test", e.get_netzone_root(), {{3, 4}, {4, 3}, {5, 1}, 2}, callbacks, 1e9, 10,
17 simgrid::s4u::Link::SharingPolicy::SHARED));
20 TEST_CASE("kernel::routing::DragonflyZone: Invalid params", "")
22 simgrid::s4u::Engine e("test");
23 simgrid::s4u::ClusterCallbacks callbacks(CreateHost{});
27 REQUIRE_THROWS_AS(create_dragonfly_zone("test", e.get_netzone_root(), {{3, 4}, {4, 3}, {5, 1}, 0}, callbacks, 1e9,
28 10, simgrid::s4u::Link::SharingPolicy::SHARED),
29 std::invalid_argument);
34 REQUIRE_THROWS_AS(create_dragonfly_zone("test", e.get_netzone_root(), {{0, 4}, {4, 3}, {5, 1}, 2}, callbacks, 1e9,
35 10, simgrid::s4u::Link::SharingPolicy::SHARED),
36 std::invalid_argument);
38 SECTION("0 groups links")
40 REQUIRE_THROWS_AS(create_dragonfly_zone("test", e.get_netzone_root(), {{3, 0}, {4, 3}, {5, 1}, 2}, callbacks, 1e9,
41 10, simgrid::s4u::Link::SharingPolicy::SHARED),
42 std::invalid_argument);
47 REQUIRE_THROWS_AS(create_dragonfly_zone("test", e.get_netzone_root(), {{3, 4}, {0, 3}, {5, 1}, 2}, callbacks, 1e9,
48 10, simgrid::s4u::Link::SharingPolicy::SHARED),
49 std::invalid_argument);
52 SECTION("0 chassis links")
54 REQUIRE_THROWS_AS(create_dragonfly_zone("test", e.get_netzone_root(), {{3, 4}, {4, 0}, {5, 1}, 2}, callbacks, 1e9,
55 10, simgrid::s4u::Link::SharingPolicy::SHARED),
56 std::invalid_argument);
61 REQUIRE_THROWS_AS(create_dragonfly_zone("test", e.get_netzone_root(), {{3, 4}, {4, 3}, {0, 1}, 2}, callbacks, 1e9,
62 10, simgrid::s4u::Link::SharingPolicy::SHARED),
63 std::invalid_argument);
66 SECTION("0 routers links")
68 REQUIRE_THROWS_AS(create_dragonfly_zone("test", e.get_netzone_root(), {{3, 4}, {4, 3}, {5, 0}, 2}, callbacks, 1e9,
69 10, simgrid::s4u::Link::SharingPolicy::SHARED),
70 std::invalid_argument);
73 SECTION("0 bandwidth")
75 REQUIRE_THROWS_AS(create_dragonfly_zone("test", e.get_netzone_root(), {{3, 4}, {4, 3}, {5, 1}, 2}, callbacks, 0, 10,
76 simgrid::s4u::Link::SharingPolicy::SHARED),
77 std::invalid_argument);
80 SECTION("Negative latency")
82 REQUIRE_THROWS_AS(create_dragonfly_zone("test", e.get_netzone_root(), {{3, 4}, {4, 3}, {5, 1}, 2}, callbacks, 1e9,
83 -10, simgrid::s4u::Link::SharingPolicy::SHARED),
84 std::invalid_argument);