Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'master' of https://framagit.org/simgrid/simgrid into no_simix_global
[simgrid.git] / src / kernel / routing / FatTreeZone_test.cpp
1 /* Copyright (c) 2017-2021. The SimGrid Team. All rights reserved.               */
2
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. */
5
6 #include "catch.hpp"
7
8 #include "NetZone_test.hpp" // CreateHost callback
9 #include "simgrid/kernel/routing/FatTreeZone.hpp"
10 #include "simgrid/s4u/Engine.hpp"
11
12 TEST_CASE("kernel::routing::FatTreeZone: Creating Zone", "")
13 {
14   simgrid::s4u::Engine e("test");
15   simgrid::s4u::ClusterCallbacks callbacks(CreateHost{});
16   REQUIRE(create_fatTree_zone("test", e.get_netzone_root(), {2, {4, 4}, {1, 2}, {1, 2}}, callbacks, 1e9, 10,
17                               simgrid::s4u::Link::SharingPolicy::SHARED));
18 }
19
20 TEST_CASE("kernel::routing::FatTreeZone: Invalid params", "")
21 {
22   simgrid::s4u::Engine e("test");
23   simgrid::s4u::ClusterCallbacks callbacks(CreateHost{});
24
25   SECTION("0 levels")
26   {
27     REQUIRE_THROWS_AS(create_fatTree_zone("test", e.get_netzone_root(), {0, {4, 4}, {1, 2}, {1, 2}}, callbacks, 1e9, 10,
28                                           simgrid::s4u::Link::SharingPolicy::SHARED),
29                       std::invalid_argument);
30   }
31
32   SECTION("Invalid down links")
33   {
34     REQUIRE_THROWS_AS(create_fatTree_zone("test", e.get_netzone_root(), {2, {4}, {1, 2}, {1, 2}}, callbacks, 1e9, 10,
35                                           simgrid::s4u::Link::SharingPolicy::SHARED),
36                       std::invalid_argument);
37   }
38
39   SECTION("Invalid up links")
40   {
41     REQUIRE_THROWS_AS(create_fatTree_zone("test", e.get_netzone_root(), {2, {4, 4}, {1}, {1, 2}}, callbacks, 1e9, 10,
42                                           simgrid::s4u::Link::SharingPolicy::SHARED),
43                       std::invalid_argument);
44   }
45
46   SECTION("Invalid link count")
47   {
48     REQUIRE_THROWS_AS(create_fatTree_zone("test", e.get_netzone_root(), {2, {4, 4}, {1, 2}, {1}}, callbacks, 1e9, 10,
49                                           simgrid::s4u::Link::SharingPolicy::SHARED),
50                       std::invalid_argument);
51   }
52
53   SECTION("Down links with zeroes")
54   {
55     REQUIRE_THROWS_AS(create_fatTree_zone("test", e.get_netzone_root(), {2, {4, 0}, {1, 2}, {1, 2}}, callbacks, 1e9, 10,
56                                           simgrid::s4u::Link::SharingPolicy::SHARED),
57                       std::invalid_argument);
58   }
59
60   SECTION("Up links with zeroes")
61   {
62     REQUIRE_THROWS_AS(create_fatTree_zone("test", e.get_netzone_root(), {2, {4, 4}, {0, 2}, {1, 2}}, callbacks, 1e9, 10,
63                                           simgrid::s4u::Link::SharingPolicy::SHARED),
64                       std::invalid_argument);
65   }
66
67   SECTION("Link count with zeroes")
68   {
69     REQUIRE_THROWS_AS(create_fatTree_zone("test", e.get_netzone_root(), {2, {4, 4}, {1, 2}, {1, 0}}, callbacks, 1e9, 10,
70                                           simgrid::s4u::Link::SharingPolicy::SHARED),
71                       std::invalid_argument);
72   }
73
74   SECTION("0 bandwidth")
75   {
76     REQUIRE_THROWS_AS(create_fatTree_zone("test", e.get_netzone_root(), {2, {4, 4}, {1, 2}, {1, 2}}, callbacks, 0, 10,
77                                           simgrid::s4u::Link::SharingPolicy::SHARED),
78                       std::invalid_argument);
79   }
80
81   SECTION("Negative latency")
82   {
83     REQUIRE_THROWS_AS(create_fatTree_zone("test", e.get_netzone_root(), {2, {4, 4}, {1, 2}, {1, 2}}, callbacks, 1e9,
84                                           -10, simgrid::s4u::Link::SharingPolicy::SHARED),
85                       std::invalid_argument);
86   }
87 }