| #include <gtest/gtest.h> | |
| #include <torch/csrc/monitor/events.h> | |
| using namespace torch::monitor; | |
| struct AggregatingEventHandler : public EventHandler { | |
| std::vector<Event> events; | |
| void handle(const Event& e) override { | |
| events.emplace_back(e); | |
| } | |
| }; | |
| TEST(EventsTest, EventHandler) { | |
| Event e; | |
| e.name = "test"; | |
| e.timestamp = std::chrono::system_clock::now(); | |
| e.data["string"] = "asdf"; | |
| e.data["double"] = 1234.5678; | |
| e.data["int"] = 1234L; | |
| e.data["bool"] = true; | |
| // log to nothing | |
| logEvent(e); | |
| auto handler = std::make_shared<AggregatingEventHandler>(); | |
| registerEventHandler(handler); | |
| logEvent(e); | |
| ASSERT_EQ(handler->events.size(), 1); | |
| ASSERT_EQ(e, handler->events.at(0)); | |
| unregisterEventHandler(handler); | |
| logEvent(e); | |
| // handler unregister, didn't log | |
| ASSERT_EQ(handler->events.size(), 1); | |
| } |