blob: 0f4dbeac1456f5af18016d32a3f3ed662ea1f8d4 [file] [log] [blame]
Lei YU96232822017-01-20 14:05:46 +08001#include "config.h"
2
Gunnar Millsab4cc6a2018-09-14 14:42:39 -05003#include "bmc_epoch.hpp"
Gunnar Millsab4cc6a2018-09-14 14:42:39 -05004#include "types.hpp"
5
Lei YU33752c72018-06-07 17:06:58 +08006#include <sdbusplus/bus.hpp>
Lei YU33752c72018-06-07 17:06:58 +08007
Gunnar Millsab4cc6a2018-09-14 14:42:39 -05008#include <gtest/gtest.h>
9
Lei YU96232822017-01-20 14:05:46 +080010namespace phosphor
11{
12namespace time
13{
14
15class TestBmcEpoch : public testing::Test
16{
Gunnar Millsab4cc6a2018-09-14 14:42:39 -050017 public:
Patrick Williams38679262022-07-22 19:26:55 -050018 sdbusplus::bus_t bus;
Gunnar Millsab4cc6a2018-09-14 14:42:39 -050019 sd_event* event;
Gunnar Millsab4cc6a2018-09-14 14:42:39 -050020 std::unique_ptr<BmcEpoch> bmcEpoch;
Lei YU96232822017-01-20 14:05:46 +080021
Gunnar Millsab4cc6a2018-09-14 14:42:39 -050022 TestBmcEpoch() : bus(sdbusplus::bus::new_default())
23 {
24 // BmcEpoch requires sd_event to init
25 sd_event_default(&event);
26 bus.attach_event(event, SD_EVENT_PRIORITY_NORMAL);
27 bmcEpoch = std::make_unique<BmcEpoch>(bus, OBJPATH_BMC);
Gunnar Millsab4cc6a2018-09-14 14:42:39 -050028 }
Lei YU7b218792017-02-09 12:10:13 +080029
Gunnar Millsab4cc6a2018-09-14 14:42:39 -050030 ~TestBmcEpoch()
31 {
32 bus.detach_event();
33 sd_event_unref(event);
34 }
Lei YU96232822017-01-20 14:05:46 +080035
Gunnar Millsab4cc6a2018-09-14 14:42:39 -050036 // Proxies for BmcEpoch's private members and functions
37 Mode getTimeMode()
38 {
39 return bmcEpoch->timeMode;
40 }
Gunnar Millsab4cc6a2018-09-14 14:42:39 -050041 void setTimeMode(Mode mode)
42 {
43 bmcEpoch->timeMode = mode;
44 }
Lei YU96232822017-01-20 14:05:46 +080045};
46
George Liu0a704522020-04-13 14:51:40 +080047TEST_F(TestBmcEpoch, onModeChange)
48{
49 bmcEpoch->onModeChanged(Mode::NTP);
50 EXPECT_EQ(Mode::NTP, getTimeMode());
51
52 bmcEpoch->onModeChanged(Mode::Manual);
53 EXPECT_EQ(Mode::Manual, getTimeMode());
54}
55
Lei YU96232822017-01-20 14:05:46 +080056TEST_F(TestBmcEpoch, empty)
57{
George Liu3c2f4492020-04-12 11:35:57 +080058 // Default mode is MANUAL
Lei YUad143542017-07-25 14:27:07 +080059 EXPECT_EQ(Mode::Manual, getTimeMode());
Lei YU96232822017-01-20 14:05:46 +080060}
61
62TEST_F(TestBmcEpoch, getElapsed)
63{
Lei YU7b218792017-02-09 12:10:13 +080064 auto t1 = bmcEpoch->elapsed();
Lei YU96232822017-01-20 14:05:46 +080065 EXPECT_NE(0, t1);
Lei YU7b218792017-02-09 12:10:13 +080066 auto t2 = bmcEpoch->elapsed();
Lei YU96232822017-01-20 14:05:46 +080067 EXPECT_GE(t2, t1);
68}
69
Lei YUe7abcdc2017-01-16 15:05:24 +080070TEST_F(TestBmcEpoch, setElapsedOK)
71{
72 // TODO: setting time will call sd-bus functions and it will fail on host
73 // if we have gmock for sdbusplus::bus, we can test setElapsed.
74 // But for now we can not test it
75}
Lei YU96232822017-01-20 14:05:46 +080076
Gunnar Millsab4cc6a2018-09-14 14:42:39 -050077} // namespace time
78} // namespace phosphor