xref: /aosp_15_r20/external/pytorch/test/cpp/monitor/test_events.cpp (revision da0073e96a02ea20f0ac840b70461e3646d07c45)
1 #include <gtest/gtest.h>
2 
3 #include <torch/csrc/monitor/events.h>
4 
5 using namespace torch::monitor;
6 
7 struct AggregatingEventHandler : public EventHandler {
8   std::vector<Event> events;
9 
handleAggregatingEventHandler10   void handle(const Event& e) override {
11     events.emplace_back(e);
12   }
13 };
14 
TEST(EventsTest,EventHandler)15 TEST(EventsTest, EventHandler) {
16   Event e;
17   e.name = "test";
18   e.timestamp = std::chrono::system_clock::now();
19   e.data["string"] = "asdf";
20   e.data["double"] = 1234.5678;
21   e.data["int"] = 1234L;
22   e.data["bool"] = true;
23 
24   // log to nothing
25   logEvent(e);
26 
27   auto handler = std::make_shared<AggregatingEventHandler>();
28   registerEventHandler(handler);
29 
30   logEvent(e);
31   ASSERT_EQ(handler->events.size(), 1);
32   ASSERT_EQ(e, handler->events.at(0));
33 
34   unregisterEventHandler(handler);
35   logEvent(e);
36   // handler unregister, didn't log
37   ASSERT_EQ(handler->events.size(), 1);
38 }
39