1 #define BOOST_TEST_MODULE ( NthEvent_policy_t )
2 #include <boost/test/auto_unit_test.hpp>
4 #include "artdaq/RoutingPolicies/makeRoutingMasterPolicy.hh"
5 #include "fhiclcpp/ParameterSet.h"
6 #include "fhiclcpp/make_ParameterSet.h"
8 BOOST_AUTO_TEST_SUITE( NthEvent_policy_t )
10 BOOST_AUTO_TEST_CASE( Simple )
12 fhicl::ParameterSet ps;
13 fhicl::make_ParameterSet(
"receiver_ranks: [1,2,3,4] nth_event: 5 target_receiver: 3", ps );
15 auto nth = artdaq::makeRoutingMasterPolicy(
"NthEvent", ps );
17 BOOST_REQUIRE_EQUAL( nth->GetReceiverCount(), 4 );
21 nth->AddReceiverToken( 1, 1 );
22 nth->AddReceiverToken( 2, 1 );
23 nth->AddReceiverToken( 4, 1 );
24 nth->AddReceiverToken( 2, 1 );
25 auto secondTable = nth->GetCurrentTable();
26 BOOST_REQUIRE_EQUAL( secondTable.size(), 3 );
27 BOOST_REQUIRE_EQUAL( secondTable[ 0 ].destination_rank, 1 );
28 BOOST_REQUIRE_EQUAL( secondTable[ 0 ].sequence_id, 1 );
29 BOOST_REQUIRE_EQUAL( secondTable[ 1 ].destination_rank, 2 );
30 BOOST_REQUIRE_EQUAL( secondTable[ 1 ].sequence_id, 2 );
31 BOOST_REQUIRE_EQUAL( secondTable[ 2 ].destination_rank, 4 );
32 BOOST_REQUIRE_EQUAL( secondTable[ 2 ].sequence_id, 3 );
35 nth->AddReceiverToken( 1, 0 );
36 auto thirdTable = nth->GetCurrentTable();
37 BOOST_REQUIRE_EQUAL( thirdTable.size(), 0 );
40 nth->AddReceiverToken( 1, 2 );
41 nth->AddReceiverToken( 3, 2 );
42 nth->AddReceiverToken( 4, 2 );
43 auto fourthTable = nth->GetCurrentTable();
44 BOOST_REQUIRE_EQUAL( fourthTable.size(), 4 );
45 BOOST_REQUIRE_EQUAL( fourthTable[ 0 ].destination_rank, 1 );
46 BOOST_REQUIRE_EQUAL( fourthTable[ 0 ].sequence_id, 4 );
47 BOOST_REQUIRE_EQUAL( fourthTable[ 1 ].destination_rank, 3 );
48 BOOST_REQUIRE_EQUAL( fourthTable[ 1 ].sequence_id, 5 );
49 BOOST_REQUIRE_EQUAL( fourthTable[ 2 ].destination_rank, 2 );
50 BOOST_REQUIRE_EQUAL( fourthTable[ 2 ].sequence_id, 6 );
51 BOOST_REQUIRE_EQUAL( fourthTable[ 3 ].destination_rank, 4 );
52 BOOST_REQUIRE_EQUAL( fourthTable[ 3 ].sequence_id, 7 );
55 nth->AddReceiverToken( 2, 1 );
56 auto fifthTable = nth->GetCurrentTable();
57 BOOST_REQUIRE_EQUAL( fifthTable.size(), 4 );
58 BOOST_REQUIRE_EQUAL( fifthTable[ 0 ].destination_rank, 1 );
59 BOOST_REQUIRE_EQUAL( fifthTable[ 0 ].sequence_id, 8 );
60 BOOST_REQUIRE_EQUAL( fifthTable[ 1 ].destination_rank, 2 );
61 BOOST_REQUIRE_EQUAL( fifthTable[ 1 ].sequence_id, 9 );
62 BOOST_REQUIRE_EQUAL( fifthTable[ 2 ].destination_rank, 3 );
63 BOOST_REQUIRE_EQUAL( fifthTable[ 2 ].sequence_id, 10 );
64 BOOST_REQUIRE_EQUAL( fifthTable[ 3 ].destination_rank, 4 );
65 BOOST_REQUIRE_EQUAL( fifthTable[ 3 ].sequence_id, 11 );
68 nth->AddReceiverToken( 1, 10 );
69 nth->AddReceiverToken( 2, 10 );
70 nth->AddReceiverToken( 4, 10 );
71 auto sixthTable = nth->GetCurrentTable();
72 BOOST_REQUIRE_EQUAL( sixthTable.size(), 3 );
73 BOOST_REQUIRE_EQUAL( sixthTable[ 0 ].destination_rank, 1 );
74 BOOST_REQUIRE_EQUAL( sixthTable[ 0 ].sequence_id, 12 );
75 BOOST_REQUIRE_EQUAL( sixthTable[ 1 ].destination_rank, 2 );
76 BOOST_REQUIRE_EQUAL( sixthTable[ 1 ].sequence_id, 13 );
77 BOOST_REQUIRE_EQUAL( sixthTable[ 2 ].destination_rank, 4 );
78 BOOST_REQUIRE_EQUAL( sixthTable[ 2 ].sequence_id, 14 );
81 auto blankTable = nth->GetCurrentTable();
82 BOOST_REQUIRE_EQUAL( blankTable.size(), 0 );
85 nth->AddReceiverToken( 3, 3 );
86 auto seventhTable = nth->GetCurrentTable();
87 BOOST_REQUIRE_EQUAL( seventhTable.size(), 15 );
88 BOOST_REQUIRE_EQUAL( seventhTable[ 0 ].destination_rank, 3 );
89 BOOST_REQUIRE_EQUAL( seventhTable[ 0 ].sequence_id, 15 );
90 BOOST_REQUIRE_EQUAL( seventhTable[ 1 ].destination_rank, 1 );
91 BOOST_REQUIRE_EQUAL( seventhTable[ 1 ].sequence_id, 16 );
92 BOOST_REQUIRE_EQUAL( seventhTable[ 2 ].destination_rank, 2 );
93 BOOST_REQUIRE_EQUAL( seventhTable[ 2 ].sequence_id, 17 );
94 BOOST_REQUIRE_EQUAL( seventhTable[ 3 ].destination_rank, 4 );
95 BOOST_REQUIRE_EQUAL( seventhTable[ 3 ].sequence_id, 18 );
96 BOOST_REQUIRE_EQUAL( seventhTable[ 4 ].destination_rank, 1 );
97 BOOST_REQUIRE_EQUAL( seventhTable[ 4 ].sequence_id, 19 );
98 BOOST_REQUIRE_EQUAL( seventhTable[ 5 ].destination_rank, 3 );
99 BOOST_REQUIRE_EQUAL( seventhTable[ 5 ].sequence_id, 20 );
100 BOOST_REQUIRE_EQUAL( seventhTable[ 6 ].destination_rank, 2 );
101 BOOST_REQUIRE_EQUAL( seventhTable[ 6 ].sequence_id, 21 );
102 BOOST_REQUIRE_EQUAL( seventhTable[ 7 ].destination_rank, 4 );
103 BOOST_REQUIRE_EQUAL( seventhTable[ 7 ].sequence_id, 22 );
104 BOOST_REQUIRE_EQUAL( seventhTable[ 8 ].destination_rank, 1 );
105 BOOST_REQUIRE_EQUAL( seventhTable[ 8 ].sequence_id, 23 );
106 BOOST_REQUIRE_EQUAL( seventhTable[ 9 ].destination_rank, 2 );
107 BOOST_REQUIRE_EQUAL( seventhTable[ 9 ].sequence_id, 24 );
108 BOOST_REQUIRE_EQUAL( seventhTable[ 10 ].destination_rank, 3 );
109 BOOST_REQUIRE_EQUAL( seventhTable[ 10 ].sequence_id, 25 );
110 BOOST_REQUIRE_EQUAL( seventhTable[ 11 ].destination_rank, 4 );
111 BOOST_REQUIRE_EQUAL( seventhTable[ 11 ].sequence_id, 26 );
112 BOOST_REQUIRE_EQUAL( seventhTable[ 12 ].destination_rank, 1 );
113 BOOST_REQUIRE_EQUAL( seventhTable[ 12 ].sequence_id, 27 );
114 BOOST_REQUIRE_EQUAL( seventhTable[ 13 ].destination_rank, 2 );
115 BOOST_REQUIRE_EQUAL( seventhTable[ 13 ].sequence_id, 28 );
116 BOOST_REQUIRE_EQUAL( seventhTable[ 14 ].destination_rank, 4 );
117 BOOST_REQUIRE_EQUAL( seventhTable[ 14 ].sequence_id, 29 );
120 BOOST_AUTO_TEST_SUITE_END()