1 #define BOOST_TEST_MODULE NoOp_policy_t
2 #include <boost/test/unit_test.hpp>
4 #include "TRACE/tracemf.h"
6 #include "artdaq/RoutingPolicies/RoutingManagerPolicy.hh"
7 #include "artdaq/RoutingPolicies/makeRoutingManagerPolicy.hh"
8 #include "fhiclcpp/ParameterSet.h"
10 BOOST_AUTO_TEST_SUITE(NoOp_policy_t)
14 TLOG(TLVL_INFO) <<
"NoOp_policy_t Test Case Simple BEGIN";
15 fhicl::ParameterSet ps = fhicl::ParameterSet::make(
"");
20 noop->AddReceiverToken(1, 1);
21 noop->AddReceiverToken(3, 1);
22 noop->AddReceiverToken(2, 1);
23 noop->AddReceiverToken(4, 1);
24 noop->AddReceiverToken(2, 1);
25 BOOST_REQUIRE_EQUAL(noop->GetReceiverCount(), 4);
26 auto secondTable = noop->GetCurrentTable();
27 BOOST_REQUIRE_EQUAL(secondTable.size(), 5);
28 BOOST_REQUIRE_EQUAL(secondTable[0].destination_rank, 1);
29 BOOST_REQUIRE_EQUAL(secondTable[1].destination_rank, 3);
30 BOOST_REQUIRE_EQUAL(secondTable[2].destination_rank, 2);
31 BOOST_REQUIRE_EQUAL(secondTable[3].destination_rank, 4);
32 BOOST_REQUIRE_EQUAL(secondTable[4].destination_rank, 2);
33 BOOST_REQUIRE_EQUAL(secondTable[0].sequence_id, 1);
34 BOOST_REQUIRE_EQUAL(secondTable[1].sequence_id, 2);
35 BOOST_REQUIRE_EQUAL(secondTable[2].sequence_id, 3);
36 BOOST_REQUIRE_EQUAL(secondTable[3].sequence_id, 4);
37 BOOST_REQUIRE_EQUAL(secondTable[4].sequence_id, 5);
39 noop->AddReceiverToken(1, 0);
41 auto thirdTable = noop->GetCurrentTable();
42 BOOST_REQUIRE_EQUAL(thirdTable.size(), 0);
43 TLOG(TLVL_INFO) <<
"NoOp_policy_t Test Case Simple END";
48 TLOG(TLVL_INFO) <<
"NoOp_policy_t Test Case DataFlowMode BEGIN";
49 fhicl::ParameterSet ps = fhicl::ParameterSet::make(
"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 = fhicl::ParameterSet::make(
"routing_manager_mode: RequestBasedEventBuilding routing_cache_size: 2");
103 noop->AddReceiverToken(1, 1);
104 noop->AddReceiverToken(3, 1);
105 noop->AddReceiverToken(2, 1);
106 noop->AddReceiverToken(3, 1);
107 noop->AddReceiverToken(2, 1);
108 BOOST_REQUIRE_EQUAL(noop->GetReceiverCount(), 3);
110 auto route = noop->GetRouteForSequenceID(1, 4);
111 BOOST_REQUIRE_EQUAL(route.destination_rank, 1);
112 BOOST_REQUIRE_EQUAL(route.sequence_id, 1);
115 route = noop->GetRouteForSequenceID(1, 5);
116 BOOST_REQUIRE_EQUAL(route.destination_rank, 1);
117 BOOST_REQUIRE_EQUAL(route.sequence_id, 1);
120 auto firstTable = noop->GetCurrentTable();
121 BOOST_REQUIRE_EQUAL(firstTable.size(), 1);
122 BOOST_REQUIRE_EQUAL(firstTable[0].destination_rank, 1);
125 route = noop->GetRouteForSequenceID(12343, 4);
126 BOOST_REQUIRE_EQUAL(route.destination_rank, 3);
127 BOOST_REQUIRE_EQUAL(route.sequence_id, 12343);
130 route = noop->GetRouteForSequenceID(4, 5);
131 BOOST_REQUIRE_EQUAL(route.destination_rank, 2);
132 BOOST_REQUIRE_EQUAL(route.sequence_id, 4);
135 route = noop->GetRouteForSequenceID(1, 6);
136 BOOST_REQUIRE_EQUAL(route.destination_rank, 1);
137 BOOST_REQUIRE_EQUAL(route.sequence_id, 1);
140 route = noop->GetRouteForSequenceID(10, 4);
141 BOOST_REQUIRE_EQUAL(route.destination_rank, 3);
142 BOOST_REQUIRE_EQUAL(route.sequence_id, 10);
143 route = noop->GetRouteForSequenceID(11, 4);
144 BOOST_REQUIRE_EQUAL(route.destination_rank, 2);
145 BOOST_REQUIRE_EQUAL(route.sequence_id, 11);
147 route = noop->GetRouteForSequenceID(50, 4);
148 BOOST_REQUIRE_EQUAL(route.destination_rank, -1);
150 noop->AddReceiverToken(1, 1);
151 route = noop->GetRouteForSequenceID(50, 4);
152 BOOST_REQUIRE_EQUAL(route.destination_rank, 1);
153 BOOST_REQUIRE_EQUAL(route.sequence_id, 50);
155 route = noop->GetRouteForSequenceID(50, 5);
156 BOOST_REQUIRE_EQUAL(route.destination_rank, 1);
157 BOOST_REQUIRE_EQUAL(route.sequence_id, 50);
160 auto secondTable = noop->GetCurrentTable();
161 BOOST_REQUIRE_EQUAL(secondTable.size(), 5);
162 BOOST_REQUIRE_EQUAL(secondTable[0].destination_rank, 2);
163 BOOST_REQUIRE_EQUAL(secondTable[0].sequence_id, 4);
164 BOOST_REQUIRE_EQUAL(secondTable[1].destination_rank, 3);
165 BOOST_REQUIRE_EQUAL(secondTable[1].sequence_id, 10);
166 BOOST_REQUIRE_EQUAL(secondTable[2].destination_rank, 2);
167 BOOST_REQUIRE_EQUAL(secondTable[2].sequence_id, 11);
168 BOOST_REQUIRE_EQUAL(secondTable[3].destination_rank, 1);
169 BOOST_REQUIRE_EQUAL(secondTable[3].sequence_id, 50);
170 BOOST_REQUIRE_EQUAL(secondTable[4].destination_rank, 3);
171 BOOST_REQUIRE_EQUAL(secondTable[4].sequence_id, 12343);
174 BOOST_REQUIRE_EQUAL(noop->GetCacheSize(), 2);
175 auto thirdTable = noop->GetCurrentTable();
176 BOOST_REQUIRE_EQUAL(thirdTable.size(), 0);
178 BOOST_REQUIRE(noop->CacheHasRoute(50));
179 BOOST_REQUIRE(!noop->CacheHasRoute(4));
180 route = noop->GetRouteForSequenceID(50, 6);
181 BOOST_REQUIRE_EQUAL(route.destination_rank, 1);
182 BOOST_REQUIRE_EQUAL(route.sequence_id, 50);
184 TLOG(TLVL_INFO) <<
"NoOp_policy_t Test Case RequestBasedEventBuilding END";
187 BOOST_AUTO_TEST_SUITE_END()
std::shared_ptr< RoutingManagerPolicy > makeRoutingManagerPolicy(std::string const &policy_plugin_spec, fhicl::ParameterSet const &ps)
Load a RoutingManagerPolicy plugin.