xref: /openbmc/sdeventplus/src/sdeventplus/test/sdevent.hpp (revision a8c11e3ca342b090aec615c832b85686bd4655f6)
1 #pragma once
2 
3 #include <systemd/sd-event.h>
4 
5 #include <sdeventplus/internal/sdevent.hpp>
6 
7 #include <gmock/gmock.h>
8 
9 namespace sdeventplus
10 {
11 namespace test
12 {
13 
14 /** @class SdEventMock
15  *  @brief sd_event mocked implementation
16  *  @details Uses googlemock to handle all sd_event calls
17  */
18 class SdEventMock : public internal::SdEvent
19 {
20   public:
21     MOCK_CONST_METHOD1(sd_event_default, int(sd_event**));
22     MOCK_CONST_METHOD1(sd_event_new, int(sd_event**));
23     MOCK_CONST_METHOD1(sd_event_ref, sd_event*(sd_event*));
24     MOCK_CONST_METHOD1(sd_event_unref, sd_event*(sd_event*));
25 
26     MOCK_CONST_METHOD6(sd_event_add_io,
27                        int(sd_event*, sd_event_source**, int, uint32_t,
28                            sd_event_io_handler_t, void*));
29     MOCK_CONST_METHOD7(sd_event_add_time,
30                        int(sd_event*, sd_event_source**, clockid_t, uint64_t,
31                            uint64_t, sd_event_time_handler_t, void*));
32     MOCK_CONST_METHOD5(sd_event_add_signal,
33                        int(sd_event*, sd_event_source**, int,
34                            sd_event_signal_handler_t, void*));
35     MOCK_CONST_METHOD6(sd_event_add_child,
36                        int(sd_event*, sd_event_source**, pid_t, int,
37                            sd_event_child_handler_t, void*));
38     MOCK_CONST_METHOD4(sd_event_add_defer, int(sd_event*, sd_event_source**,
39                                                sd_event_handler_t, void*));
40     MOCK_CONST_METHOD4(sd_event_add_post, int(sd_event*, sd_event_source**,
41                                               sd_event_handler_t, void*));
42     MOCK_CONST_METHOD4(sd_event_add_exit, int(sd_event*, sd_event_source**,
43                                               sd_event_handler_t, void*));
44 
45     MOCK_CONST_METHOD1(sd_event_prepare, int(sd_event*));
46     MOCK_CONST_METHOD2(sd_event_wait, int(sd_event*, uint64_t));
47     MOCK_CONST_METHOD1(sd_event_dispatch, int(sd_event*));
48     MOCK_CONST_METHOD2(sd_event_run, int(sd_event*, uint64_t));
49     MOCK_CONST_METHOD1(sd_event_loop, int(sd_event*));
50     MOCK_CONST_METHOD2(sd_event_exit, int(sd_event*, int));
51 
52     MOCK_CONST_METHOD3(sd_event_now, int(sd_event*, clockid_t, uint64_t*));
53 
54     MOCK_CONST_METHOD2(sd_event_get_exit_code, int(sd_event*, int*));
55     MOCK_CONST_METHOD1(sd_event_get_watchdog, int(sd_event*));
56     MOCK_CONST_METHOD2(sd_event_set_watchdog, int(sd_event*, int b));
57 
58     MOCK_CONST_METHOD1(sd_event_source_ref, sd_event_source*(sd_event_source*));
59     MOCK_CONST_METHOD1(sd_event_source_unref,
60                        sd_event_source*(sd_event_source*));
61 
62     MOCK_CONST_METHOD1(sd_event_source_get_userdata, void*(sd_event_source*));
63     MOCK_CONST_METHOD2(sd_event_source_set_userdata,
64                        void*(sd_event_source*, void*));
65 
66     MOCK_CONST_METHOD2(sd_event_source_get_description,
67                        int(sd_event_source*, const char**));
68     MOCK_CONST_METHOD2(sd_event_source_set_description,
69                        int(sd_event_source*, const char*));
70     MOCK_CONST_METHOD2(sd_event_source_set_prepare,
71                        int(sd_event_source*, sd_event_handler_t));
72     MOCK_CONST_METHOD1(sd_event_source_get_pending, int(sd_event_source*));
73     MOCK_CONST_METHOD2(sd_event_source_get_priority,
74                        int(sd_event_source*, int64_t*));
75     MOCK_CONST_METHOD2(sd_event_source_set_priority,
76                        int(sd_event_source*, int64_t));
77     MOCK_CONST_METHOD2(sd_event_source_get_enabled,
78                        int(sd_event_source*, int*));
79     MOCK_CONST_METHOD2(sd_event_source_set_enabled, int(sd_event_source*, int));
80     MOCK_CONST_METHOD1(sd_event_source_get_io_fd, int(sd_event_source*));
81     MOCK_CONST_METHOD2(sd_event_source_set_io_fd, int(sd_event_source*, int));
82     MOCK_CONST_METHOD2(sd_event_source_get_io_events,
83                        int(sd_event_source*, uint32_t*));
84     MOCK_CONST_METHOD2(sd_event_source_set_io_events,
85                        int(sd_event_source*, uint32_t));
86     MOCK_CONST_METHOD2(sd_event_source_get_io_revents,
87                        int(sd_event_source*, uint32_t*));
88     MOCK_CONST_METHOD2(sd_event_source_get_time,
89                        int(sd_event_source*, uint64_t*));
90     MOCK_CONST_METHOD2(sd_event_source_set_time,
91                        int(sd_event_source*, uint64_t));
92     MOCK_CONST_METHOD2(sd_event_source_get_time_accuracy,
93                        int(sd_event_source*, uint64_t*));
94     MOCK_CONST_METHOD2(sd_event_source_set_time_accuracy,
95                        int(sd_event_source*, uint64_t));
96     MOCK_CONST_METHOD1(sd_event_source_get_signal, int(sd_event_source*));
97     MOCK_CONST_METHOD2(sd_event_source_get_child_pid,
98                        int(sd_event_source*, pid_t*));
99     MOCK_CONST_METHOD2(sd_event_source_set_destroy_callback,
100                        int(sd_event_source*, sd_event_destroy_t));
101     MOCK_CONST_METHOD2(sd_event_source_get_destroy_callback,
102                        int(sd_event_source*, sd_event_destroy_t*));
103     MOCK_CONST_METHOD2(sd_event_source_set_floating,
104                        int(sd_event_source*, int));
105     MOCK_CONST_METHOD1(sd_event_source_get_floating, int(sd_event_source*));
106 };
107 
108 } // namespace test
109 } // namespace sdeventplus
110