blob: 532818a03ee8bdf9bdffb07613fc2132a6510a1d [file] [log] [blame]
Eddie James774f9af2019-03-19 20:58:53 +00001#include "occ_manager.hpp"
2
3#include <stdlib.h>
4
5#include <filesystem>
6#include <fstream>
7
8#include <gtest/gtest.h>
9
10constexpr auto num_error_files = 8;
11constexpr auto device = "occ-hwmon.1";
12constexpr auto error = "occ_error";
13constexpr auto errorMem = "occ_mem_throttle";
14constexpr auto errorPower = "occ_dvfs_power";
15constexpr auto errorTemp = "occ_dvfs_overtemp";
16constexpr auto legacyDevice = "occ-hwmon.2";
17constexpr auto legacyErrorTemp = "occ_dvfs_ot";
18constexpr auto noError = "0";
19
20namespace fs = std::experimental::filesystem;
21using namespace open_power::occ;
22
23class ErrorFiles : public ::testing::Test
24{
25 public:
26 ErrorFiles() :
27 bus(sdbusplus::bus::new_default()), rc(sd_event_default(&event)),
28 pEvent(event), manager(bus, pEvent),
29 status(bus, pEvent, "/dummy1", manager)
30 {
31 EXPECT_GE(rc, 0);
32 event = nullptr;
33 }
34
35 virtual void SetUp()
36 {
37 fs::path files[num_error_files];
38 char tmpDirTemplate[64];
39
40 strcpy(tmpDirTemplate, "/tmp/occXXXXXX");
41 auto path = mkdtemp(tmpDirTemplate);
42 assert(path != nullptr);
43
44 occPath = path;
45 devicePath = occPath / device;
46 legacyDevicePath = occPath / legacyDevice;
47
48 fs::create_directory(devicePath);
49 fs::create_directory(legacyDevicePath);
50
51 files[0] = devicePath / error;
52 files[1] = devicePath / errorMem;
53 files[2] = devicePath / errorPower;
54 files[3] = devicePath / errorTemp;
55 files[4] = legacyDevicePath / error;
56 files[5] = legacyDevicePath / errorMem;
57 files[6] = legacyDevicePath / errorPower;
58 files[7] = legacyDevicePath / legacyErrorTemp;
59
60 for (const fs::path& f : files)
61 {
62 auto stream = std::ofstream(f.c_str());
63
64 if (stream)
65 {
66 stream << noError;
67 }
68 }
69 }
70
71 virtual void TearDown()
72 {
73 fs::remove_all(occPath);
74 }
75
76 sdbusplus::bus::bus bus;
77 sd_event* event;
78 int rc;
79 open_power::occ::EventPtr pEvent;
80
81 Manager manager;
82 Status status;
83
84 fs::path devicePath;
85 fs::path legacyDevicePath;
86 fs::path occPath;
87};
88
89TEST_F(ErrorFiles, AddDeviceErrorWatch)
90{
91 Device occDevice(pEvent, devicePath, manager, status);
92
93 occDevice.addErrorWatch(false);
94 occDevice.removeErrorWatch();
95}
96
97TEST_F(ErrorFiles, AddLegacyDeviceErrorWatch)
98{
99 Device legacyOccDevice(pEvent, legacyDevicePath, manager, status);
100
101 legacyOccDevice.addErrorWatch(false);
102 legacyOccDevice.removeErrorWatch();
103}