artdaq_utilities  v1_05_07b
test_metric.cc
1 // test_metric.cc: Test Metric Plugin
2 // Author: Eric Flumerfelt
3 // Last Modified: 4/10/2019
4 //
5 // An implementation of the MetricPlugin that writes to the TestMetric static storage
6 
7 #define TRACE_NAME "TestMetric"
8 #include "trace.h"
9 
10 #include "artdaq-utilities/Plugins/MetricMacros.hh"
12 #include "fhiclcpp/ParameterSet.h"
13 
14 #include <sys/types.h>
15 #include <unistd.h>
16 #include <ctime>
17 #include <string>
18 
19 namespace artdaq {
23 class TestMetricImpl final : public MetricPlugin
24 {
25 public:
31  explicit TestMetricImpl(fhicl::ParameterSet const& config, std::string const& app_name)
32  : MetricPlugin(config, app_name)
33  {
34  startMetrics();
35  }
36 
40  ~TestMetricImpl() override
41  {
42  stopMetrics();
43  }
44 
49  std::string getLibName() const override { return "test"; }
50 
57  void sendMetric_(const std::string& name, const std::string& value, const std::string& unit) override
58  {
59  if (!inhibit_)
60  {
62  TLOG(TLVL_TRACE) << "TestMetric: Adding MetricPoint name=" << name << ", value=" << value << ", unit=" << unit;
63  TestMetric::received_metrics.emplace_back(TestMetric::MetricPoint{std::chrono::steady_clock::now(), name, value, unit});
65  }
66  }
67 
74  void sendMetric_(const std::string& name, const int& value, const std::string& unit) override
75  {
76  sendMetric_(name, std::to_string(value), unit);
77  }
78 
85  void sendMetric_(const std::string& name, const double& value, const std::string& unit) override
86  {
87  sendMetric_(name, std::to_string(value), unit);
88  }
89 
96  void sendMetric_(const std::string& name, const float& value, const std::string& unit) override
97  {
98  sendMetric_(name, std::to_string(value), unit);
99  }
100 
107  void sendMetric_(const std::string& name, const uint64_t& value, const std::string& unit) override
108  {
109  sendMetric_(name, std::to_string(value), unit);
110  }
111 
115  void startMetrics_() override
116  {
117  }
118 
122  void stopMetrics_() override
123  {
124  }
125 
126 private:
127  TestMetricImpl(const TestMetricImpl&) = delete;
128  TestMetricImpl(TestMetricImpl&&) = delete;
129  TestMetricImpl& operator=(const TestMetricImpl&) = delete;
130  TestMetricImpl& operator=(TestMetricImpl&&) = delete;
131 };
132 
133 } // End namespace artdaq
134 
135 DEFINE_ARTDAQ_METRIC(artdaq::TestMetricImpl)
TestMetricImpl(fhicl::ParameterSet const &config, std::string const &app_name)
TestMetric Constructor.
Definition: test_metric.cc:31
void startMetrics_() override
Perform startup actions.
Definition: test_metric.cc:115
void sendMetric_(const std::string &name, const double &value, const std::string &unit) override
Write metric data to memory.
Definition: test_metric.cc:85
void sendMetric_(const std::string &name, const uint64_t &value, const std::string &unit) override
Write metric data to memory.
Definition: test_metric.cc:107
The MetricPlugin class defines the interface that MetricManager uses to send metric data to the vario...
Definition: MetricPlugin.hh:37
void startMetrics()
Perform startup actions. Simply calls the virtual startMetrics_ function.
static void LockReceivedMetricMutex()
Lock the ReceivedMetricMutex
Definition: TestMetric.hh:36
static std::list< MetricPoint > received_metrics
List of received metric data.
Definition: TestMetric.hh:53
std::string getLibName() const override
Get the library name for the Test metric.
Definition: test_metric.cc:49
void stopMetrics()
Perform shutdown actions. Zeroes out all accumulators, and sends zeros for each metric. Calls stopMetrics_() for any plugin-defined shutdown actions.
TestMetric writes metric data to a statically-allocated memory block.
Definition: test_metric.cc:23
void sendMetric_(const std::string &name, const int &value, const std::string &unit) override
Write metric data to memory.
Definition: test_metric.cc:74
static void UnlockReceivedMetricMutex()
Unlock the ReceivedMetricMutex
Definition: TestMetric.hh:46
void sendMetric_(const std::string &name, const std::string &value, const std::string &unit) override
Write metric data to memory.
Definition: test_metric.cc:57
void stopMetrics_() override
Perform shutdown actions.
Definition: test_metric.cc:122
void sendMetric_(const std::string &name, const float &value, const std::string &unit) override
Write metric data to memory.
Definition: test_metric.cc:96
bool inhibit_
Flag to indicate that the MetricPlugin is being stopped, and any metric back-ends which do not have a...
~TestMetricImpl() override
TestMetricImpl Destructor. Calls stopMetrics.
Definition: test_metric.cc:40
Describes a single metric point
Definition: TestMetric.hh:25