1 /*
2 * Copyright 2021 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17 /*
18 * Generated mock file from original source file
19 */
20
21 #include "osi/include/osi.h"
22
23 #include <bluetooth/log.h>
24 #include <sys/socket.h>
25
26 #include <list>
27 #include <map>
28 #include <string>
29
30 #include "osi/include/alarm.h"
31 #include "osi/include/allocator.h"
32 #include "osi/include/config.h"
33 #include "osi/include/fixed_queue.h"
34 #include "osi/include/future.h"
35 #include "osi/include/hash_map_utils.h"
36 #include "osi/include/list.h"
37 #include "osi/include/mutex.h"
38 #include "osi/include/properties.h"
39 #include "osi/include/reactor.h"
40 #include "osi/include/socket.h"
41 #include "osi/include/socket_utils/socket_local.h"
42 #include "osi/include/socket_utils/sockets.h"
43 #include "osi/include/thread.h"
44 #include "osi/include/wakelock.h"
45 #include "osi/src/compat.cc" // For strlcpy
46 #include "test/common/fake_osi.h"
47 #include "test/common/mock_functions.h"
48
49 #pragma GCC diagnostic ignored "-Wunused-parameter"
50
OsiObject(void * ptr)51 OsiObject::OsiObject(void* ptr) : ptr_(ptr) {}
52
OsiObject(const void * ptr)53 OsiObject::OsiObject(const void* ptr) : ptr_(const_cast<void*>(ptr)) {}
54
~OsiObject()55 OsiObject::~OsiObject() {
56 if (ptr_ != nullptr) {
57 osi_free(ptr_);
58 }
59 }
60
Release()61 void* OsiObject::Release() {
62 void* ptr = ptr_;
63 ptr_ = nullptr;
64 return ptr;
65 }
66
67 struct StringComparison {
operator ()StringComparison68 bool operator()(char const* lhs, char const* rhs) const { return strcmp(lhs, rhs) < 0; }
69 };
70 std::map<const char*, bool, StringComparison> fake_osi_bool_props_map;
71
Find(const std::string & key)72 std::list<entry_t>::iterator section_t::Find(const std::string& key) {
73 inc_func_call_count(__func__);
74 return std::find_if(entries.begin(), entries.end(),
75 [&key](const entry_t& entry) { return entry.key == key; });
76 }
Find(const std::string & section)77 std::list<section_t>::iterator config_t::Find(const std::string& section) {
78 inc_func_call_count(__func__);
79 return std::find_if(sections.begin(), sections.end(),
80 [§ion](const section_t& sec) { return sec.name == section; });
81 }
82
checksum_save(const std::string & checksum,const std::string & filename)83 bool checksum_save(const std::string& checksum, const std::string& filename) {
84 inc_func_call_count(__func__);
85 return false;
86 }
config_get_bool(const config_t & config,const std::string & section,const std::string & key,bool def_value)87 bool config_get_bool(const config_t& config, const std::string& section, const std::string& key,
88 bool def_value) {
89 inc_func_call_count(__func__);
90 return false;
91 }
config_has_key(const config_t & config,const std::string & section,const std::string & key)92 bool config_has_key(const config_t& config, const std::string& section, const std::string& key) {
93 inc_func_call_count(__func__);
94 return false;
95 }
config_has_section(const config_t & config,const std::string & section)96 bool config_has_section(const config_t& config, const std::string& section) {
97 inc_func_call_count(__func__);
98 return false;
99 }
config_remove_key(config_t * config,const std::string & section,const std::string & key)100 bool config_remove_key(config_t* config, const std::string& section, const std::string& key) {
101 inc_func_call_count(__func__);
102 return false;
103 }
config_remove_section(config_t * config,const std::string & section)104 bool config_remove_section(config_t* config, const std::string& section) {
105 inc_func_call_count(__func__);
106 return false;
107 }
config_save(const config_t & config,const std::string & filename)108 bool config_save(const config_t& config, const std::string& filename) {
109 inc_func_call_count(__func__);
110 return false;
111 }
Has(const std::string & key)112 bool config_t::Has(const std::string& key) {
113 inc_func_call_count(__func__);
114 return false;
115 }
Has(const std::string & key)116 bool section_t::Has(const std::string& key) {
117 inc_func_call_count(__func__);
118 return false;
119 }
config_get_string(const config_t & config,const std::string & section,const std::string & key,const std::string * def_value)120 const std::string* config_get_string(const config_t& config, const std::string& section,
121 const std::string& key, const std::string* def_value) {
122 inc_func_call_count(__func__);
123 return nullptr;
124 }
config_get_int(const config_t & config,const std::string & section,const std::string & key,int def_value)125 int config_get_int(const config_t& config, const std::string& section, const std::string& key,
126 int def_value) {
127 inc_func_call_count(__func__);
128 return 0;
129 }
checksum_read(const char * filename)130 std::string checksum_read(const char* filename) {
131 inc_func_call_count(__func__);
132 return 0;
133 }
config_new(const char * filename)134 std::unique_ptr<config_t> config_new(const char* filename) {
135 inc_func_call_count(__func__);
136 return 0;
137 }
config_new_clone(const config_t & src)138 std::unique_ptr<config_t> config_new_clone(const config_t& src) {
139 inc_func_call_count(__func__);
140 return 0;
141 }
config_new_empty(void)142 std::unique_ptr<config_t> config_new_empty(void) {
143 inc_func_call_count(__func__);
144 return 0;
145 }
config_get_uint64(const config_t & config,const std::string & section,const std::string & key,uint64_t def_value)146 uint64_t config_get_uint64(const config_t& config, const std::string& section,
147 const std::string& key, uint64_t def_value) {
148 inc_func_call_count(__func__);
149 return 0;
150 }
config_set_bool(config_t * config,const std::string & section,const std::string & key,bool value)151 void config_set_bool(config_t* config, const std::string& section, const std::string& key,
152 bool value) {
153 inc_func_call_count(__func__);
154 }
config_set_int(config_t * config,const std::string & section,const std::string & key,int value)155 void config_set_int(config_t* config, const std::string& section, const std::string& key,
156 int value) {
157 inc_func_call_count(__func__);
158 }
config_set_string(config_t * config,const std::string & section,const std::string & key,const std::string & value)159 void config_set_string(config_t* config, const std::string& section, const std::string& key,
160 const std::string& value) {
161 inc_func_call_count(__func__);
162 }
config_set_uint64(config_t * config,const std::string & section,const std::string & key,uint64_t value)163 void config_set_uint64(config_t* config, const std::string& section, const std::string& key,
164 uint64_t value) {
165 inc_func_call_count(__func__);
166 }
Set(std::string key,std::string value)167 void section_t::Set(std::string key, std::string value) { inc_func_call_count(__func__); }
168
reactor_change_registration(reactor_object_t * object,void (* read_ready)(void * context),void (* write_ready)(void * context))169 bool reactor_change_registration(reactor_object_t* object, void (*read_ready)(void* context),
170 void (*write_ready)(void* context)) {
171 inc_func_call_count(__func__);
172 return false;
173 }
reactor_register(reactor_t * reactor,int fd,void * context,void (* read_ready)(void * context),void (* write_ready)(void * context))174 reactor_object_t* reactor_register(reactor_t* reactor, int fd, void* context,
175 void (*read_ready)(void* context),
176 void (*write_ready)(void* context)) {
177 inc_func_call_count(__func__);
178 return nullptr;
179 }
reactor_run_once(reactor_t * reactor)180 reactor_status_t reactor_run_once(reactor_t* reactor) {
181 inc_func_call_count(__func__);
182 return REACTOR_STATUS_DONE;
183 }
reactor_start(reactor_t * reactor)184 reactor_status_t reactor_start(reactor_t* reactor) {
185 inc_func_call_count(__func__);
186 return REACTOR_STATUS_DONE;
187 }
reactor_new(void)188 reactor_t* reactor_new(void) {
189 inc_func_call_count(__func__);
190 return nullptr;
191 }
reactor_free(reactor_t * reactor)192 void reactor_free(reactor_t* reactor) { inc_func_call_count(__func__); }
reactor_stop(reactor_t * reactor)193 void reactor_stop(reactor_t* reactor) { inc_func_call_count(__func__); }
reactor_unregister(reactor_object_t * obj)194 void reactor_unregister(reactor_object_t* obj) { inc_func_call_count(__func__); }
195
future_new(void)196 future_t* future_new(void) {
197 inc_func_call_count(__func__);
198 return nullptr;
199 }
future_new_immediate(void * value)200 future_t* future_new_immediate(void* value) {
201 inc_func_call_count(__func__);
202 return nullptr;
203 }
future_ready(future_t * future,void * value)204 void future_ready(future_t* future, void* value) { inc_func_call_count(__func__); }
mutex_global_lock(void)205 void mutex_global_lock(void) { inc_func_call_count(__func__); }
mutex_global_unlock(void)206 void mutex_global_unlock(void) { inc_func_call_count(__func__); }
future_await(future_t * future)207 void* future_await(future_t* future) {
208 inc_func_call_count(__func__);
209 return nullptr;
210 }
211
thread_is_self(const thread_t * thread)212 bool thread_is_self(const thread_t* thread) {
213 inc_func_call_count(__func__);
214 return false;
215 }
thread_post(thread_t * thread,thread_fn func,void * context)216 bool thread_post(thread_t* thread, thread_fn func, void* context) {
217 inc_func_call_count(__func__);
218 return false;
219 }
thread_set_priority(thread_t * thread,int priority)220 bool thread_set_priority(thread_t* thread, int priority) {
221 inc_func_call_count(__func__);
222 return false;
223 }
thread_set_rt_priority(thread_t * thread,int priority)224 bool thread_set_rt_priority(thread_t* thread, int priority) {
225 inc_func_call_count(__func__);
226 return false;
227 }
thread_name(const thread_t * thread)228 const char* thread_name(const thread_t* thread) {
229 inc_func_call_count(__func__);
230 return nullptr;
231 }
thread_get_reactor(const thread_t * thread)232 reactor_t* thread_get_reactor(const thread_t* thread) {
233 inc_func_call_count(__func__);
234 return nullptr;
235 }
thread_new(const char * name)236 thread_t* thread_new(const char* name) {
237 inc_func_call_count(__func__);
238 return nullptr;
239 }
thread_new_sized(const char * name,size_t work_queue_capacity)240 thread_t* thread_new_sized(const char* name, size_t work_queue_capacity) {
241 inc_func_call_count(__func__);
242 return nullptr;
243 }
thread_free(thread_t * thread)244 void thread_free(thread_t* thread) { inc_func_call_count(__func__); }
thread_join(thread_t * thread)245 void thread_join(thread_t* thread) { inc_func_call_count(__func__); }
thread_stop(thread_t * thread)246 void thread_stop(thread_t* thread) { inc_func_call_count(__func__); }
247
osi_strdup(const char * str)248 char* osi_strdup(const char* str) {
249 inc_func_call_count(__func__);
250 return nullptr;
251 }
osi_strndup(const char * str,size_t len)252 char* osi_strndup(const char* str, size_t len) {
253 inc_func_call_count(__func__);
254 return nullptr;
255 }
osi_free(void * ptr)256 void osi_free(void* ptr) { inc_func_call_count(__func__); }
osi_free_and_reset(void ** p_ptr)257 void osi_free_and_reset(void** p_ptr) { inc_func_call_count(__func__); }
osi_calloc(size_t size)258 void* osi_calloc(size_t size) {
259 inc_func_call_count(__func__);
260 return nullptr;
261 }
osi_malloc(size_t size)262 void* osi_malloc(size_t size) {
263 inc_func_call_count(__func__);
264 return nullptr;
265 }
266
fixed_queue_is_empty(fixed_queue_t * queue)267 bool fixed_queue_is_empty(fixed_queue_t* queue) {
268 inc_func_call_count(__func__);
269 return false;
270 }
fixed_queue_try_enqueue(fixed_queue_t * queue,void * data)271 bool fixed_queue_try_enqueue(fixed_queue_t* queue, void* data) {
272 inc_func_call_count(__func__);
273 return false;
274 }
fixed_queue_new(size_t capacity)275 fixed_queue_t* fixed_queue_new(size_t capacity) {
276 inc_func_call_count(__func__);
277 return nullptr;
278 }
fixed_queue_get_dequeue_fd(const fixed_queue_t * queue)279 int fixed_queue_get_dequeue_fd(const fixed_queue_t* queue) {
280 inc_func_call_count(__func__);
281 return 0;
282 }
fixed_queue_get_enqueue_fd(const fixed_queue_t * queue)283 int fixed_queue_get_enqueue_fd(const fixed_queue_t* queue) {
284 inc_func_call_count(__func__);
285 return 0;
286 }
fixed_queue_get_list(fixed_queue_t * queue)287 list_t* fixed_queue_get_list(fixed_queue_t* queue) {
288 inc_func_call_count(__func__);
289 return nullptr;
290 }
fixed_queue_capacity(fixed_queue_t * queue)291 size_t fixed_queue_capacity(fixed_queue_t* queue) {
292 inc_func_call_count(__func__);
293 return 0;
294 }
fixed_queue_length(fixed_queue_t * queue)295 size_t fixed_queue_length(fixed_queue_t* queue) {
296 inc_func_call_count(__func__);
297 return 0;
298 }
fixed_queue_enqueue(fixed_queue_t * queue,void * data)299 void fixed_queue_enqueue(fixed_queue_t* queue, void* data) { inc_func_call_count(__func__); }
fixed_queue_flush(fixed_queue_t * queue,fixed_queue_free_cb free_cb)300 void fixed_queue_flush(fixed_queue_t* queue, fixed_queue_free_cb free_cb) {
301 inc_func_call_count(__func__);
302 }
fixed_queue_free(fixed_queue_t * queue,fixed_queue_free_cb free_cb)303 void fixed_queue_free(fixed_queue_t* queue, fixed_queue_free_cb free_cb) {
304 inc_func_call_count(__func__);
305 }
fixed_queue_register_dequeue(fixed_queue_t * queue,reactor_t * reactor,fixed_queue_cb ready_cb,void * context)306 void fixed_queue_register_dequeue(fixed_queue_t* queue, reactor_t* reactor, fixed_queue_cb ready_cb,
307 void* context) {
308 inc_func_call_count(__func__);
309 }
fixed_queue_unregister_dequeue(fixed_queue_t * queue)310 void fixed_queue_unregister_dequeue(fixed_queue_t* queue) { inc_func_call_count(__func__); }
fixed_queue_dequeue(fixed_queue_t * queue)311 void* fixed_queue_dequeue(fixed_queue_t* queue) {
312 inc_func_call_count(__func__);
313 return nullptr;
314 }
fixed_queue_try_dequeue(fixed_queue_t * queue)315 void* fixed_queue_try_dequeue(fixed_queue_t* queue) {
316 inc_func_call_count(__func__);
317 return nullptr;
318 }
fixed_queue_try_peek_first(fixed_queue_t * queue)319 void* fixed_queue_try_peek_first(fixed_queue_t* queue) {
320 inc_func_call_count(__func__);
321 return nullptr;
322 }
fixed_queue_try_peek_last(fixed_queue_t * queue)323 void* fixed_queue_try_peek_last(fixed_queue_t* queue) {
324 inc_func_call_count(__func__);
325 return nullptr;
326 }
fixed_queue_try_remove_from_queue(fixed_queue_t * queue,void * data)327 void* fixed_queue_try_remove_from_queue(fixed_queue_t* queue, void* data) {
328 inc_func_call_count(__func__);
329 return nullptr;
330 }
331
alarm_new(const char * name)332 alarm_t* alarm_new(const char* name) {
333 inc_func_call_count(__func__);
334 return (alarm_t*)new uint8_t[30];
335 }
alarm_new_periodic(const char * name)336 alarm_t* alarm_new_periodic(const char* name) {
337 inc_func_call_count(__func__);
338 return nullptr;
339 }
340
341 // Callback to last set alarm
342 struct fake_osi_alarm_set_on_mloop fake_osi_alarm_set_on_mloop_;
343
344 // Vector of previous osi alarms. Keep it for proper handling alarm_is_scheduler function
345 static std::vector<struct fake_osi_alarm_set_on_mloop> previous_fake_osi_alarms_;
346
alarm_is_scheduled(const alarm_t * alarm)347 bool alarm_is_scheduled(const alarm_t* alarm) {
348 inc_func_call_count(__func__);
349
350 auto iter = find_if(previous_fake_osi_alarms_.begin(), previous_fake_osi_alarms_.end(),
351 [alarm](auto const& a) {
352 bluetooth::log::debug("iter: {} == {} ?", std::format_ptr(a.alarm),
353 std::format_ptr(alarm));
354 return a.alarm == alarm;
355 });
356 if (iter != previous_fake_osi_alarms_.end()) {
357 return true;
358 }
359
360 bluetooth::log::debug(" {} == {} ?", std::format_ptr(fake_osi_alarm_set_on_mloop_.alarm),
361 std::format_ptr(alarm));
362
363 return fake_osi_alarm_set_on_mloop_.alarm == alarm;
364 }
alarm_get_remaining_ms(const alarm_t * alarm)365 uint64_t alarm_get_remaining_ms(const alarm_t* alarm) {
366 inc_func_call_count(__func__);
367 return 0;
368 }
369
fake_osi_alarm_clear(alarm_t * alarm)370 static void fake_osi_alarm_clear(alarm_t* alarm) {
371 if (alarm != nullptr) {
372 auto iter = find_if(previous_fake_osi_alarms_.begin(), previous_fake_osi_alarms_.end(),
373 [alarm](auto const& a) { return a.alarm == alarm; });
374 if (iter != previous_fake_osi_alarms_.end()) {
375 bluetooth::log::debug(" clearing alarm {} ", std::format_ptr(iter->alarm));
376 previous_fake_osi_alarms_.erase(iter);
377 return;
378 }
379 }
380
381 if (fake_osi_alarm_set_on_mloop_.alarm == alarm || alarm == nullptr) {
382 bluetooth::log::debug(" clearing alarm {} ", std::format_ptr(alarm));
383 fake_osi_alarm_set_on_mloop_.alarm = nullptr;
384 fake_osi_alarm_set_on_mloop_.interval_ms = 0;
385 fake_osi_alarm_set_on_mloop_.cb = nullptr;
386 fake_osi_alarm_set_on_mloop_.data = nullptr;
387 }
388 }
389
alarm_cancel(alarm_t * alarm)390 void alarm_cancel(alarm_t* alarm) {
391 inc_func_call_count(__func__);
392 fake_osi_alarm_clear(alarm);
393 }
394
alarm_cleanup(void)395 void alarm_cleanup(void) {
396 previous_fake_osi_alarms_.clear();
397 fake_osi_alarm_clear(nullptr);
398
399 inc_func_call_count(__func__);
400 }
alarm_debug_dump(int fd)401 void alarm_debug_dump(int fd) { inc_func_call_count(__func__); }
alarm_free(alarm_t * alarm)402 void alarm_free(alarm_t* alarm) {
403 fake_osi_alarm_clear(alarm);
404 uint8_t* ptr = (uint8_t*)alarm;
405 delete[] ptr;
406 inc_func_call_count(__func__);
407 }
alarm_set(alarm_t * alarm,uint64_t interval_ms,alarm_callback_t cb,void * data)408 void alarm_set(alarm_t* alarm, uint64_t interval_ms, alarm_callback_t cb, void* data) {
409 inc_func_call_count(__func__);
410 }
411
alarm_set_on_mloop(alarm_t * alarm,uint64_t interval_ms,alarm_callback_t cb,void * data)412 void alarm_set_on_mloop(alarm_t* alarm, uint64_t interval_ms, alarm_callback_t cb, void* data) {
413 inc_func_call_count(__func__);
414
415 if (fake_osi_alarm_set_on_mloop_.alarm != nullptr) {
416 bluetooth::log::info("Queuing alarm {}", std::format_ptr(fake_osi_alarm_set_on_mloop_.alarm));
417 previous_fake_osi_alarms_.push_back(fake_osi_alarm_set_on_mloop_);
418 }
419
420 bluetooth::log::info("Adding alarm {}", std::format_ptr(alarm));
421 fake_osi_alarm_set_on_mloop_.alarm = alarm;
422 fake_osi_alarm_set_on_mloop_.interval_ms = interval_ms;
423 fake_osi_alarm_set_on_mloop_.cb = cb;
424 fake_osi_alarm_set_on_mloop_.data = data;
425 }
426
socket_listen(const socket_t * socket,port_t port)427 bool socket_listen(const socket_t* socket, port_t port) {
428 inc_func_call_count(__func__);
429 return false;
430 }
socket_accept(const socket_t * socket)431 socket_t* socket_accept(const socket_t* socket) {
432 inc_func_call_count(__func__);
433 return nullptr;
434 }
socket_new(void)435 socket_t* socket_new(void) {
436 inc_func_call_count(__func__);
437 return nullptr;
438 }
socket_new_from_fd(int fd)439 socket_t* socket_new_from_fd(int fd) {
440 inc_func_call_count(__func__);
441 return nullptr;
442 }
socket_bytes_available(const socket_t * socket)443 ssize_t socket_bytes_available(const socket_t* socket) {
444 inc_func_call_count(__func__);
445 return 0;
446 }
socket_read(const socket_t * socket,void * buf,size_t count)447 ssize_t socket_read(const socket_t* socket, void* buf, size_t count) {
448 inc_func_call_count(__func__);
449 return 0;
450 }
socket_write(const socket_t * socket,const void * buf,size_t count)451 ssize_t socket_write(const socket_t* socket, const void* buf, size_t count) {
452 inc_func_call_count(__func__);
453 return 0;
454 }
socket_write_and_transfer_fd(const socket_t * socket,const void * buf,size_t count,int fd)455 ssize_t socket_write_and_transfer_fd(const socket_t* socket, const void* buf, size_t count,
456 int fd) {
457 inc_func_call_count(__func__);
458 return 0;
459 }
socket_free(socket_t * socket)460 void socket_free(socket_t* socket) { inc_func_call_count(__func__); }
socket_register(socket_t * socket,reactor_t * reactor,void * context,socket_cb read_cb,socket_cb write_cb)461 void socket_register(socket_t* socket, reactor_t* reactor, void* context, socket_cb read_cb,
462 socket_cb write_cb) {
463 inc_func_call_count(__func__);
464 }
socket_unregister(socket_t * socket)465 void socket_unregister(socket_t* socket) { inc_func_call_count(__func__); }
466
list_append(list_t * list,void * data)467 bool list_append(list_t* list, void* data) {
468 inc_func_call_count(__func__);
469 return false;
470 }
list_contains(const list_t * list,const void * data)471 bool list_contains(const list_t* list, const void* data) {
472 inc_func_call_count(__func__);
473 return false;
474 }
list_insert_after(list_t * list,list_node_t * prev_node,void * data)475 bool list_insert_after(list_t* list, list_node_t* prev_node, void* data) {
476 inc_func_call_count(__func__);
477 return false;
478 }
list_is_empty(const list_t * list)479 bool list_is_empty(const list_t* list) {
480 inc_func_call_count(__func__);
481 return false;
482 }
list_prepend(list_t * list,void * data)483 bool list_prepend(list_t* list, void* data) {
484 inc_func_call_count(__func__);
485 return false;
486 }
list_remove(list_t * list,void * data)487 bool list_remove(list_t* list, void* data) {
488 inc_func_call_count(__func__);
489 return false;
490 }
list_back_node(const list_t * list)491 list_node_t* list_back_node(const list_t* list) {
492 inc_func_call_count(__func__);
493 return nullptr;
494 }
list_begin(const list_t * list)495 list_node_t* list_begin(const list_t* list) {
496 inc_func_call_count(__func__);
497 return nullptr;
498 }
list_end(const list_t *)499 list_node_t* list_end(const list_t* /* list */) {
500 inc_func_call_count(__func__);
501 return nullptr;
502 }
list_foreach(const list_t * list,list_iter_cb callback,void * context)503 list_node_t* list_foreach(const list_t* list, list_iter_cb callback, void* context) {
504 inc_func_call_count(__func__);
505 return nullptr;
506 }
list_next(const list_node_t * node)507 list_node_t* list_next(const list_node_t* node) {
508 inc_func_call_count(__func__);
509 return nullptr;
510 }
list_new(list_free_cb callback)511 list_t* list_new(list_free_cb callback) {
512 inc_func_call_count(__func__);
513 return nullptr;
514 }
list_length(const list_t * list)515 size_t list_length(const list_t* list) {
516 inc_func_call_count(__func__);
517 return 0;
518 }
list_clear(list_t * list)519 void list_clear(list_t* list) { inc_func_call_count(__func__); }
list_free(list_t * list)520 void list_free(list_t* list) { inc_func_call_count(__func__); }
list_back(const list_t * list)521 void* list_back(const list_t* list) {
522 inc_func_call_count(__func__);
523 return nullptr;
524 }
list_front(const list_t * list)525 void* list_front(const list_t* list) {
526 inc_func_call_count(__func__);
527 return nullptr;
528 }
list_node(const list_node_t * node)529 void* list_node(const list_node_t* node) {
530 inc_func_call_count(__func__);
531 return nullptr;
532 }
533
osi_socket_local_client(const char * name,int namespaceId,int type)534 int osi_socket_local_client(const char* name, int namespaceId, int type) {
535 inc_func_call_count(__func__);
536 return 0;
537 }
osi_socket_local_client_connect(int fd,const char * name,int namespaceId,int type)538 int osi_socket_local_client_connect(int fd, const char* name, int namespaceId, int type) {
539 inc_func_call_count(__func__);
540 return 0;
541 }
osi_socket_local_server_bind(int s,const char * name,int namespaceId)542 int osi_socket_local_server_bind(int s, const char* name, int namespaceId) {
543 inc_func_call_count(__func__);
544 return 0;
545 }
osi_socket_make_sockaddr_un(const char * name,int namespaceId,struct sockaddr_un * p_addr,socklen_t * alen)546 int osi_socket_make_sockaddr_un(const char* name, int namespaceId, struct sockaddr_un* p_addr,
547 socklen_t* alen) {
548 inc_func_call_count(__func__);
549 return 0;
550 }
551
osi_property_get_bool(const char * key,bool default_value)552 bool osi_property_get_bool(const char* key, bool default_value) {
553 inc_func_call_count(__func__);
554 if (fake_osi_bool_props_map.count(key)) {
555 return fake_osi_bool_props_map.at(key);
556 }
557 return default_value;
558 }
559
osi_property_set_bool(const char * key,bool value)560 void osi_property_set_bool(const char* key, bool value) {
561 fake_osi_bool_props_map.insert_or_assign(key, value);
562 }
563
osi_property_get(const char * key,char * value,const char * default_value)564 int osi_property_get(const char* key, char* value, const char* default_value) {
565 inc_func_call_count(__func__);
566 return 0;
567 }
osi_property_set(const char * key,const char * value)568 int osi_property_set(const char* key, const char* value) {
569 inc_func_call_count(__func__);
570 return 0;
571 }
osi_property_get_int32(const char * key,int32_t default_value)572 int32_t osi_property_get_int32(const char* key, int32_t default_value) {
573 inc_func_call_count(__func__);
574 return 0;
575 }
576
wakelock_acquire(void)577 bool wakelock_acquire(void) {
578 inc_func_call_count(__func__);
579 return false;
580 }
wakelock_release(void)581 bool wakelock_release(void) {
582 inc_func_call_count(__func__);
583 return false;
584 }
wakelock_cleanup(void)585 void wakelock_cleanup(void) { inc_func_call_count(__func__); }
wakelock_debug_dump(int fd)586 void wakelock_debug_dump(int fd) { inc_func_call_count(__func__); }
wakelock_set_os_callouts(bt_os_callouts_t * callouts)587 void wakelock_set_os_callouts(bt_os_callouts_t* callouts) { inc_func_call_count(__func__); }
wakelock_set_paths(const char * lock_path,const char * unlock_path)588 void wakelock_set_paths(const char* lock_path, const char* unlock_path) {
589 inc_func_call_count(__func__);
590 }
591