1 #include "config.h" 2 3 #include "elog_serialize.hpp" 4 #include "log_manager.hpp" 5 #include "paths.hpp" 6 #include "xyz/openbmc_project/Common/error.hpp" 7 8 #include <phosphor-logging/elog-errors.hpp> 9 #include <phosphor-logging/elog.hpp> 10 #include <phosphor-logging/log.hpp> 11 #include <sdbusplus/bus.hpp> 12 13 #include <filesystem> 14 15 #include <gmock/gmock.h> 16 #include <gtest/gtest.h> 17 18 namespace phosphor 19 { 20 namespace logging 21 { 22 namespace internal 23 { 24 25 namespace fs = std::filesystem; 26 27 class journalInterface 28 { 29 public: 30 virtual ~journalInterface() = default; 31 32 virtual void journalSync() = 0; 33 virtual int sd_journal_open(sd_journal** j, int k) = 0; 34 virtual int sd_journal_get_data(sd_journal* j, const char* transactionIdVar, 35 const void** data, size_t length) = 0; 36 virtual void sd_journal_close(sd_journal* j) = 0; 37 }; 38 39 class journalImpl : public journalInterface 40 { 41 public: 42 void journalSync() override; 43 int sd_journal_open(sd_journal** j, int k) override; 44 int sd_journal_get_data(sd_journal* j, const char* transactionIdVar, 45 const void** data, size_t length) override; 46 void sd_journal_close(sd_journal* j) override; 47 }; 48 49 int journalImpl::sd_journal_open(sd_journal**, int) 50 { 51 return 1; 52 } 53 54 void journalImpl::journalSync() 55 { 56 return; 57 } 58 59 int journalImpl::sd_journal_get_data(sd_journal*, const char*, const void**, 60 size_t) 61 { 62 return 1; 63 } 64 65 void journalImpl::sd_journal_close(sd_journal*) 66 { 67 return; 68 } 69 70 class MockJournal : public Manager 71 { 72 public: 73 MockJournal(sdbusplus::bus_t& bus, const char* objPath) : 74 Manager(bus, objPath) {}; 75 MOCK_METHOD0(journalSync, void()); 76 MOCK_METHOD2(sd_journal_open, int(sd_journal**, int)); 77 MOCK_METHOD4(sd_journal_get_data, 78 int(sd_journal*, const char*, const void**, size_t)); 79 MOCK_METHOD1(sd_journal_close, void(sd_journal*)); 80 }; 81 82 class TestLogManager : public testing::Test 83 { 84 public: 85 sdbusplus::bus_t bus; 86 MockJournal manager; 87 TestLogManager() : 88 bus(sdbusplus::bus::new_default()), 89 manager(bus, "/xyz/openbmc_test/abc") 90 { 91 fs::create_directories(paths::error()); 92 } 93 94 ~TestLogManager() 95 { 96 // Leave the directory as other testcases use it and they 97 // may be running in parallel from other jobs. 98 } 99 }; 100 101 } // namespace internal 102 } // namespace logging 103 } // namespace phosphor 104