1 #define BOOST_TEST_MODULE NoOp_policy_t
2 #include <boost/test/unit_test.hpp>
4 #include "artdaq-utilities/Plugins/MakeParameterSet.hh"
5 #include "artdaq/RoutingPolicies/makeRoutingManagerPolicy.hh"
6 #include "fhiclcpp/ParameterSet.h"
8 BOOST_AUTO_TEST_SUITE(NoOp_policy_t)
12 TLOG(TLVL_INFO) <<
"NoOp_policy_t Test Case Simple BEGIN";
13 fhicl::ParameterSet ps = artdaq::make_pset(
"");
19 noop->AddReceiverToken(1, 1);
20 noop->AddReceiverToken(3, 1);
21 noop->AddReceiverToken(2, 1);
22 noop->AddReceiverToken(4, 1);
23 noop->AddReceiverToken(2, 1);
24 BOOST_REQUIRE_EQUAL(noop->GetReceiverCount(), 4);
25 auto secondTable = noop->GetCurrentTable();
26 BOOST_REQUIRE_EQUAL(secondTable.size(), 5);
27 BOOST_REQUIRE_EQUAL(secondTable[0].destination_rank, 1);
28 BOOST_REQUIRE_EQUAL(secondTable[1].destination_rank, 3);
29 BOOST_REQUIRE_EQUAL(secondTable[2].destination_rank, 2);
30 BOOST_REQUIRE_EQUAL(secondTable[3].destination_rank, 4);
31 BOOST_REQUIRE_EQUAL(secondTable[4].destination_rank, 2);
32 BOOST_REQUIRE_EQUAL(secondTable[0].sequence_id, 1);
33 BOOST_REQUIRE_EQUAL(secondTable[1].sequence_id, 2);
34 BOOST_REQUIRE_EQUAL(secondTable[2].sequence_id, 3);
35 BOOST_REQUIRE_EQUAL(secondTable[3].sequence_id, 4);
36 BOOST_REQUIRE_EQUAL(secondTable[4].sequence_id, 5);
38 noop->AddReceiverToken(1, 0);
40 auto thirdTable = noop->GetCurrentTable();
41 BOOST_REQUIRE_EQUAL(thirdTable.size(), 0);
42 TLOG(TLVL_INFO) <<
"NoOp_policy_t Test Case Simple END";
47 TLOG(TLVL_INFO) <<
"NoOp_policy_t Test Case DataFlowMode BEGIN";
48 fhicl::ParameterSet ps = artdaq::make_pset(
"routing_manager_mode: DataFlow");
54 noop->AddReceiverToken(1, 1);
55 noop->AddReceiverToken(3, 1);
56 noop->AddReceiverToken(2, 1);
57 noop->AddReceiverToken(3, 1);
58 noop->AddReceiverToken(2, 1);
59 BOOST_REQUIRE_EQUAL(noop->GetReceiverCount(), 3);
60 auto route = noop->GetRouteForSequenceID(1, 4);
61 BOOST_REQUIRE_EQUAL(route.destination_rank, 1);
62 BOOST_REQUIRE_EQUAL(route.sequence_id, 1);
65 route = noop->GetRouteForSequenceID(1, 5);
66 BOOST_REQUIRE_EQUAL(route.destination_rank, 3);
67 BOOST_REQUIRE_EQUAL(route.sequence_id, 1);
70 route = noop->GetRouteForSequenceID(1, 5);
71 BOOST_REQUIRE_EQUAL(route.destination_rank, 3);
72 BOOST_REQUIRE_EQUAL(route.sequence_id, 1);
74 route = noop->GetRouteForSequenceID(2, 4);
75 BOOST_REQUIRE_EQUAL(route.destination_rank, 2);
76 BOOST_REQUIRE_EQUAL(route.sequence_id, 2);
78 noop->AddReceiverToken(1, 1);
79 route = noop->GetRouteForSequenceID(2, 5);
80 BOOST_REQUIRE_EQUAL(route.destination_rank, 3);
81 BOOST_REQUIRE_EQUAL(route.sequence_id, 2);
84 route = noop->GetRouteForSequenceID(1, 6);
85 BOOST_REQUIRE_EQUAL(route.destination_rank, 2);
86 BOOST_REQUIRE_EQUAL(route.sequence_id, 1);
89 route = noop->GetRouteForSequenceID(10343, 4);
90 BOOST_REQUIRE_EQUAL(route.destination_rank, 1);
91 BOOST_REQUIRE_EQUAL(route.sequence_id, 10343);
92 TLOG(TLVL_INFO) <<
"NoOp_policy_t Test Case DataFlowMode END";
97 TLOG(TLVL_INFO) <<
"NoOp_policy_t Test Case RequestBasedEventBuilding BEGIN";
98 fhicl::ParameterSet ps = artdaq::make_pset(
"routing_manager_mode: RequestBasedEventBuilding routing_cache_size: 2");
104 noop->AddReceiverToken(1, 1);
105 noop->AddReceiverToken(3, 1);
106 noop->AddReceiverToken(2, 1);
107 noop->AddReceiverToken(3, 1);
108 noop->AddReceiverToken(2, 1);
109 BOOST_REQUIRE_EQUAL(noop->GetReceiverCount(), 3);
111 auto route = noop->GetRouteForSequenceID(1, 4);
112 BOOST_REQUIRE_EQUAL(route.destination_rank, 1);
113 BOOST_REQUIRE_EQUAL(route.sequence_id, 1);
116 route = noop->GetRouteForSequenceID(1, 5);
117 BOOST_REQUIRE_EQUAL(route.destination_rank, 1);
118 BOOST_REQUIRE_EQUAL(route.sequence_id, 1);
121 auto firstTable = noop->GetCurrentTable();
122 BOOST_REQUIRE_EQUAL(firstTable.size(), 1);
123 BOOST_REQUIRE_EQUAL(firstTable[0].destination_rank, 1);
126 route = noop->GetRouteForSequenceID(12343, 4);
127 BOOST_REQUIRE_EQUAL(route.destination_rank, 3);
128 BOOST_REQUIRE_EQUAL(route.sequence_id, 12343);
131 route = noop->GetRouteForSequenceID(4, 5);
132 BOOST_REQUIRE_EQUAL(route.destination_rank, 2);
133 BOOST_REQUIRE_EQUAL(route.sequence_id, 4);
136 route = noop->GetRouteForSequenceID(1, 6);
137 BOOST_REQUIRE_EQUAL(route.destination_rank, 1);
138 BOOST_REQUIRE_EQUAL(route.sequence_id, 1);
141 route = noop->GetRouteForSequenceID(10, 4);
142 BOOST_REQUIRE_EQUAL(route.destination_rank, 3);
143 BOOST_REQUIRE_EQUAL(route.sequence_id, 10);
144 route = noop->GetRouteForSequenceID(11, 4);
145 BOOST_REQUIRE_EQUAL(route.destination_rank, 2);
146 BOOST_REQUIRE_EQUAL(route.sequence_id, 11);
148 route = noop->GetRouteForSequenceID(50, 4);
149 BOOST_REQUIRE_EQUAL(route.destination_rank, -1);
151 noop->AddReceiverToken(1, 1);
152 route = noop->GetRouteForSequenceID(50, 4);
153 BOOST_REQUIRE_EQUAL(route.destination_rank, 1);
154 BOOST_REQUIRE_EQUAL(route.sequence_id, 50);
156 route = noop->GetRouteForSequenceID(50, 5);
157 BOOST_REQUIRE_EQUAL(route.destination_rank, 1);
158 BOOST_REQUIRE_EQUAL(route.sequence_id, 50);
161 auto secondTable = noop->GetCurrentTable();
162 BOOST_REQUIRE_EQUAL(secondTable.size(), 5);
163 BOOST_REQUIRE_EQUAL(secondTable[0].destination_rank, 2);
164 BOOST_REQUIRE_EQUAL(secondTable[0].sequence_id, 4);
165 BOOST_REQUIRE_EQUAL(secondTable[1].destination_rank, 3);
166 BOOST_REQUIRE_EQUAL(secondTable[1].sequence_id, 10);
167 BOOST_REQUIRE_EQUAL(secondTable[2].destination_rank, 2);
168 BOOST_REQUIRE_EQUAL(secondTable[2].sequence_id, 11);
169 BOOST_REQUIRE_EQUAL(secondTable[3].destination_rank, 1);
170 BOOST_REQUIRE_EQUAL(secondTable[3].sequence_id, 50);
171 BOOST_REQUIRE_EQUAL(secondTable[4].destination_rank, 3);
172 BOOST_REQUIRE_EQUAL(secondTable[4].sequence_id, 12343);
175 BOOST_REQUIRE_EQUAL(noop->GetCacheSize(), 2);
176 auto thirdTable = noop->GetCurrentTable();
177 BOOST_REQUIRE_EQUAL(thirdTable.size(), 0);
179 BOOST_REQUIRE(noop->CacheHasRoute(50));
180 BOOST_REQUIRE(!noop->CacheHasRoute(4));
181 route = noop->GetRouteForSequenceID(50, 6);
182 BOOST_REQUIRE_EQUAL(route.destination_rank, 1);
183 BOOST_REQUIRE_EQUAL(route.sequence_id, 50);
185 TLOG(TLVL_INFO) <<
"NoOp_policy_t Test Case RequestBasedEventBuilding END";
188 BOOST_AUTO_TEST_SUITE_END()
std::shared_ptr< RoutingManagerPolicy > makeRoutingManagerPolicy(std::string const &policy_plugin_spec, fhicl::ParameterSet const &ps)
Load a RoutingManagerPolicy plugin.