1 #pragma once
2
3 #include <sdbusplus/bus.hpp>
4 #include <sdbusplus/sdbus.hpp>
5
6 #include "gmock/gmock.h"
7
8 namespace sdbusplus
9 {
10
11 class SdBusMock : public SdBusInterface
12 {
13 public:
~SdBusMock()14 virtual ~SdBusMock() override {}
15
16 MOCK_METHOD(int, sd_bus_add_object_manager,
17 (sd_bus*, sd_bus_slot**, const char*), (override));
18
19 MOCK_METHOD(int, sd_bus_add_object_vtable,
20 (sd_bus*, sd_bus_slot**, const char*, const char*,
21 const sd_bus_vtable*, void*),
22 (override));
23
24 MOCK_METHOD(int, sd_bus_add_match,
25 (sd_bus*, sd_bus_slot**, const char*, sd_bus_message_handler_t,
26 void*),
27 (override));
28 MOCK_METHOD(int, sd_bus_attach_event, (sd_bus*, sd_event*, int),
29 (override));
30 MOCK_METHOD(int, sd_bus_call,
31 (sd_bus*, sd_bus_message*, uint64_t, sd_bus_error*,
32 sd_bus_message**),
33 (override));
34 MOCK_METHOD(int, sd_bus_call_async,
35 (sd_bus*, sd_bus_slot**, sd_bus_message*,
36 sd_bus_message_handler_t, void*, uint64_t),
37 (override));
38 MOCK_METHOD(int, sd_bus_detach_event, (sd_bus*), (override));
39
40 MOCK_METHOD(int, sd_bus_emit_interfaces_added_strv,
41 (sd_bus*, const char*, char**), (override));
42 MOCK_METHOD(int, sd_bus_emit_interfaces_removed_strv,
43 (sd_bus*, const char*, char**), (override));
44 MOCK_METHOD(int, sd_bus_emit_object_added, (sd_bus*, const char*),
45 (override));
46 MOCK_METHOD(int, sd_bus_emit_object_removed, (sd_bus*, const char*),
47 (override));
48 MOCK_METHOD(int, sd_bus_emit_properties_changed_strv,
49 (sd_bus*, const char*, const char*, const char**), (override));
50
51 MOCK_METHOD(int, sd_bus_error_set,
52 (sd_bus_error*, const char*, const char*), (override));
53 MOCK_METHOD(int, sd_bus_error_set_const,
54 (sd_bus_error*, const char*, const char*), (override));
55 MOCK_METHOD(int, sd_bus_error_get_errno, (const sd_bus_error*), (override));
56 MOCK_METHOD(int, sd_bus_error_set_errno, (sd_bus_error*, int), (override));
57 MOCK_METHOD(int, sd_bus_error_is_set, (const sd_bus_error*), (override));
58 MOCK_METHOD(void, sd_bus_error_free, (sd_bus_error*), (override));
59
60 MOCK_METHOD(sd_event*, sd_bus_get_event, (sd_bus*), (override));
61 MOCK_METHOD(int, sd_bus_get_fd, (sd_bus*), (override));
62 MOCK_METHOD(int, sd_bus_get_events, (sd_bus*), (override));
63 MOCK_METHOD(int, sd_bus_get_timeout, (sd_bus*, uint64_t* timeout_usec),
64 (override));
65 MOCK_METHOD(int, sd_bus_get_unique_name, (sd_bus*, const char**),
66 (override));
67
68 MOCK_METHOD(int, sd_bus_list_names, (sd_bus*, char***, char***),
69 (override));
70
71 MOCK_METHOD(int, sd_bus_message_append_basic,
72 (sd_bus_message*, char, const void*), (override));
73 MOCK_METHOD(int, sd_bus_message_append_string_iovec,
74 (sd_bus_message*, const struct iovec* iov, int iovcnt),
75 (override));
76 MOCK_METHOD(int, sd_bus_message_at_end, (sd_bus_message*, int), (override));
77 MOCK_METHOD(int, sd_bus_message_close_container, (sd_bus_message*),
78 (override));
79 MOCK_METHOD(int, sd_bus_message_enter_container,
80 (sd_bus_message*, char, const char*), (override));
81 MOCK_METHOD(int, sd_bus_message_exit_container, (sd_bus_message*),
82 (override));
83
84 MOCK_METHOD(sd_bus*, sd_bus_message_get_bus, (sd_bus_message*), (override));
85 MOCK_METHOD(int, sd_bus_message_get_type, (sd_bus_message*, uint8_t*),
86 (override));
87 MOCK_METHOD(int, sd_bus_message_get_cookie, (sd_bus_message*, uint64_t*),
88 (override));
89 MOCK_METHOD(int, sd_bus_message_get_reply_cookie,
90 (sd_bus_message*, uint64_t*), (override));
91 MOCK_METHOD(const char*, sd_bus_message_get_destination, (sd_bus_message*),
92 (override));
93 MOCK_METHOD(const char*, sd_bus_message_get_interface, (sd_bus_message*),
94 (override));
95 MOCK_METHOD(const char*, sd_bus_message_get_member, (sd_bus_message*),
96 (override));
97 MOCK_METHOD(const char*, sd_bus_message_get_path, (sd_bus_message*),
98 (override));
99 MOCK_METHOD(const char*, sd_bus_message_get_sender, (sd_bus_message*),
100 (override));
101 MOCK_METHOD(const char*, sd_bus_message_get_signature,
102 (sd_bus_message*, int), (override));
103 MOCK_METHOD(int, sd_bus_message_get_errno, (sd_bus_message*), (override));
104 MOCK_METHOD(const sd_bus_error*, sd_bus_message_get_error,
105 (sd_bus_message*), (override));
106
107 MOCK_METHOD(int, sd_bus_message_is_method_call,
108 (sd_bus_message*, const char*, const char*), (override));
109 MOCK_METHOD(int, sd_bus_message_is_method_error,
110 (sd_bus_message*, const char*), (override));
111 MOCK_METHOD(int, sd_bus_message_is_signal,
112 (sd_bus_message*, const char*, const char*), (override));
113
114 MOCK_METHOD(int, sd_bus_message_new_method_call,
115 (sd_bus*, sd_bus_message**, const char*, const char*,
116 const char*, const char*),
117 (override));
118
119 MOCK_METHOD(int, sd_bus_message_new_method_return,
120 (sd_bus_message*, sd_bus_message**), (override));
121
122 MOCK_METHOD(int, sd_bus_message_new_method_error,
123 (sd_bus_message * call, sd_bus_message** m, sd_bus_error* e),
124 (override));
125
126 MOCK_METHOD(int, sd_bus_message_new_method_errno,
127 (sd_bus_message * call, sd_bus_message** m, int error,
128 const sd_bus_error* p),
129 (override));
130
131 MOCK_METHOD(int, sd_bus_message_new_signal,
132 (sd_bus*, sd_bus_message**, const char*, const char*,
133 const char*),
134 (override));
135
136 MOCK_METHOD(int, sd_bus_message_open_container,
137 (sd_bus_message*, char, const char*), (override));
138
139 MOCK_METHOD(int, sd_bus_message_read_basic, (sd_bus_message*, char, void*),
140 (override));
141 MOCK_METHOD(sd_bus_message*, sd_bus_message_ref, (sd_bus_message*),
142 (override));
143
144 MOCK_METHOD(int, sd_bus_message_skip, (sd_bus_message*, const char*),
145 (override));
146 MOCK_METHOD(int, sd_bus_message_verify_type,
147 (sd_bus_message*, char, const char*), (override));
148
149 MOCK_METHOD(int, sd_bus_slot_set_destroy_callback,
150 (sd_bus_slot*, sd_bus_destroy_t), (override));
151 MOCK_METHOD(void*, sd_bus_slot_set_userdata, (sd_bus_slot*, void*),
152 (override));
153
154 MOCK_METHOD(int, sd_bus_process, (sd_bus*, sd_bus_message**), (override));
155 MOCK_METHOD(sd_bus*, sd_bus_ref, (sd_bus*), (override));
156 MOCK_METHOD(int, sd_bus_request_name, (sd_bus*, const char*, uint64_t),
157 (override));
158 MOCK_METHOD(int, sd_bus_send, (sd_bus*, sd_bus_message*, uint64_t*),
159 (override));
160 MOCK_METHOD(sd_bus*, sd_bus_unref, (sd_bus*), (override));
161 MOCK_METHOD(sd_bus_slot*, sd_bus_slot_unref, (sd_bus_slot*), (override));
162 MOCK_METHOD(sd_bus*, sd_bus_flush_close_unref, (sd_bus*), (override));
163 MOCK_METHOD(int, sd_bus_flush, (sd_bus*), (override));
164 MOCK_METHOD(void, sd_bus_close, (sd_bus*), (override));
165 MOCK_METHOD(int, sd_bus_is_open, (sd_bus*), (override));
166 MOCK_METHOD(int, sd_bus_wait, (sd_bus*, uint64_t), (override));
167
SdBusMock()168 SdBusMock()
169 {
170 auto slotcb = [](sd_bus*, sd_bus_slot** slot, auto&&...) {
171 *slot = reinterpret_cast<sd_bus_slot*>(0xdefa);
172 return 0;
173 };
174 ON_CALL(*this, sd_bus_add_object_manager).WillByDefault(slotcb);
175 ON_CALL(*this, sd_bus_add_object_vtable).WillByDefault(slotcb);
176 ON_CALL(*this, sd_bus_add_match).WillByDefault(slotcb);
177 ON_CALL(*this, sd_bus_call_async).WillByDefault(slotcb);
178 }
179 };
180
get_mocked_new(SdBusMock * sdbus)181 inline bus_t get_mocked_new(SdBusMock* sdbus)
182 {
183 using ::testing::IsNull;
184 using ::testing::Return;
185
186 EXPECT_CALL(*sdbus, sd_bus_ref(IsNull())).WillRepeatedly(Return(nullptr));
187 bus_t bus_mock(nullptr, sdbus);
188
189 return bus_mock;
190 }
191
192 } // namespace sdbusplus
193