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