artdaq  v3_00_03
TransferTest.hh
1 #ifndef ARTDAQ_TEST_DAQRATE_TRANSFERTEST_HH
2 #define ARTDAQ_TEST_DAQRATE_TRANSFERTEST_HH
3 
4 #include <vector>
5 #include <string>
6 #include <chrono>
7 #include <cmath>
8 
9 #include "fhiclcpp/ParameterSet.h"
10 #include "artdaq-utilities/Plugins/MetricManager.hh"
11 
12 namespace artdaq
13 {
18  {
19  public:
37  explicit TransferTest(fhicl::ParameterSet psi, uint32_t key);
38 
43  int runTest();
44 
45  private:
46  std::pair<size_t, double> do_sending();
47 
48  std::pair<size_t, double> do_receiving();
49 
50  //Helper functions
51  const std::vector<std::string> suffixes{" B", " KB", " MB", " GB", " TB"};
52 
53  std::string formatBytes(double bytes, size_t suffixIndex = 0);
54 
55  int senders_;
56  int receivers_;
57  int sends_each_sender_;
58  int receives_each_receiver_; // Should be sends_each_sender * sending_ranks / receiving_ranks
59  int buffer_count_;
60  size_t max_payload_size_;
61  std::chrono::steady_clock::time_point start_time_;
62  fhicl::ParameterSet ps_;
63  artdaq::MetricManager metricMan_;
64  bool validate_mode_;
65  };
66 
67  inline std::string TransferTest::formatBytes(double bytes, size_t suffixIndex)
68  {
69  auto b = fabs(bytes);
70 
71  if (b > 1024.0 && suffixIndex < suffixes.size())
72  {
73  return formatBytes(bytes / 1024.0, suffixIndex + 1);
74  }
75 
76  return std::to_string(bytes) + suffixes[suffixIndex];
77  }
78 }
79 #endif //ARTDAQ_TEST_DAQRATE_TRANSFERTEST_HH
int runTest()
Run the test as configured.
Definition: TransferTest.cc:84
TransferTest(fhicl::ParameterSet psi, uint32_t key)
TransferTest Constructor.
Definition: TransferTest.cc:11
Test a set of TransferInterface plugins.
Definition: TransferTest.hh:17