2 * Copyright (c) 2019-2020, Samsung Electronics Co., Ltd. All rights reserved.
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 #include "fdi_logger_wrap.c"
21 struct fd_info fdi = {
25 list_head used_paths = NULL;
27 ops_logger.destroy(&fdi);
30 assert(-ENOMEM == ops_logger.create(&fdi, (struct log_config *) 0xABDUL, LOG_ID_RADIO, &used_paths, &(log_id_t){ LOG_ID_INVALID }));
33 assert(-536 == ops_logger.create(&fdi, (struct log_config *) 0xABDUL, LOG_ID_RADIO, &used_paths, &(log_id_t){ LOG_ID_INVALID }));
35 assert(-EINVAL == ops_logger.create(&fdi, (struct log_config *) 0xABDUL, LOG_ID_RADIO, &used_paths, &(log_id_t){ LOG_ID_INVALID }));
37 open_buf_path = "abc";
40 assert(-ENOMEM == ops_logger.create(&fdi, (struct log_config *) 0xABDUL, LOG_ID_RADIO, &used_paths, &(log_id_t){ LOG_ID_INVALID }));
42 assert(!fdi.priv_data);
45 assert(-ENOMEM == ops_logger.create(&fdi, (struct log_config *) 0xABDUL, LOG_ID_RADIO, &used_paths, &(log_id_t){ LOG_ID_INVALID }));
47 assert(!fdi.priv_data);
50 assert(!ops_logger.create(&fdi, (struct log_config *) 0xABDUL, LOG_ID_RADIO, &used_paths, &(log_id_t){ LOG_ID_INVALID }));
51 ops_logger.destroy(&fdi);
54 assert(-EALREADY == ops_logger.create(&fdi, (struct log_config *) 0xABDUL, LOG_ID_RADIO, &used_paths, &(log_id_t){ LOG_ID_INVALID }));
56 assert(!fdi.priv_data);
58 open_buf_path = "def";
59 assert(!ops_logger.create(&fdi, (struct log_config *) 0xABDUL, LOG_ID_RADIO, &used_paths, &(log_id_t){ LOG_ID_INVALID }));
61 expected_ioctl = LOGGER_FLUSH_LOG;
63 assert(-77 == ops_logger.clear(&fdi));
66 expected_ioctl = LOGGER_GET_LOG_BUF_SIZE;
67 ioctl_ret = -EALREADY;
68 assert(-EALREADY == ops_logger.get_capacity(&fdi, &sz));
69 assert(-EALREADY == ops_logger.get_usage(&fdi, &us));
71 expected_ioctl = LOGGER_GET_LOG_LEN;
73 assert(-67 == ops_logger.prepare_print(&fdi, 123, false, (struct log_filter *) 0xCA5CADE));
76 assert(!ops_logger.prepare_print(&fdi, 0, false, (struct log_filter *) 0xCA5CADE));
79 assert(-334 == ops_logger.read(&fdi));
82 for (size_t i = 0; i < NELEMS(READS) + 15; ++i) {
83 assert(!ops_logger.has_log(&fdi));
85 assert(NULL == ops_logger.extract_entry(&fdi));
86 assert(NULL == ops_logger.peek_entry(&fdi));
87 assert(NULL == ops_logger.extract_entry(&fdi));
89 fail_malloc = !(rand() % 4) * 3;
90 ops_logger.read(&fdi);
91 if (!fail_malloc && i < NELEMS(READS) && READS[i] > sizeof(struct android_logger_entry)) {
92 assert(ops_logger.has_log(&fdi));
93 assert(-EAGAIN == ops_logger.read(&fdi));
94 const dlogutil_entry_s *const le = ops_logger.peek_entry(&fdi);
96 assert(le == ops_logger.peek_entry(&fdi));
98 assert(le == ops_logger.extract_entry(&fdi));
100 free((dlogutil_entry_s *) le);
103 assert(!ops_logger.has_log(&fdi));
104 assert(NULL == ops_logger.peek_entry(&fdi));
106 assert(NULL == ops_logger.extract_entry(&fdi));
110 ops_logger.destroy(&fdi);