#include "occ_manager.hpp" #include #include #include #include constexpr auto num_error_files = 8; constexpr auto device = "occ-hwmon.1"; constexpr auto error = "occ_error"; constexpr auto errorMem = "occ_mem_throttle"; constexpr auto errorPower = "occ_dvfs_power"; constexpr auto errorTemp = "occ_dvfs_overtemp"; constexpr auto legacyDevice = "occ-hwmon.2"; constexpr auto legacyErrorTemp = "occ_dvfs_ot"; constexpr auto noError = "0"; namespace fs = std::experimental::filesystem; using namespace open_power::occ; class ErrorFiles : public ::testing::Test { public: ErrorFiles() : bus(sdbusplus::bus::new_default()), rc(sd_event_default(&event)), pEvent(event), manager(bus, pEvent), status(bus, pEvent, "/dummy1", manager) { EXPECT_GE(rc, 0); event = nullptr; } virtual void SetUp() { fs::path files[num_error_files]; char tmpDirTemplate[64]; strcpy(tmpDirTemplate, "/tmp/occXXXXXX"); auto path = mkdtemp(tmpDirTemplate); assert(path != nullptr); occPath = path; devicePath = occPath / device; legacyDevicePath = occPath / legacyDevice; fs::create_directory(devicePath); fs::create_directory(legacyDevicePath); files[0] = devicePath / error; files[1] = devicePath / errorMem; files[2] = devicePath / errorPower; files[3] = devicePath / errorTemp; files[4] = legacyDevicePath / error; files[5] = legacyDevicePath / errorMem; files[6] = legacyDevicePath / errorPower; files[7] = legacyDevicePath / legacyErrorTemp; for (const fs::path& f : files) { auto stream = std::ofstream(f.c_str()); if (stream) { stream << noError; } } } virtual void TearDown() { fs::remove_all(occPath); } sdbusplus::bus::bus bus; sd_event* event; int rc; open_power::occ::EventPtr pEvent; Manager manager; Status status; fs::path devicePath; fs::path legacyDevicePath; fs::path occPath; }; TEST_F(ErrorFiles, AddDeviceErrorWatch) { Device occDevice(pEvent, devicePath, manager, status); occDevice.addErrorWatch(false); occDevice.removeErrorWatch(); } TEST_F(ErrorFiles, AddLegacyDeviceErrorWatch) { Device legacyOccDevice(pEvent, legacyDevicePath, manager, status); legacyOccDevice.addErrorWatch(false); legacyOccDevice.removeErrorWatch(); }