+++ /dev/null
-/*
- * Copyright (c) 2023, Samsung Electronics Co., Ltd. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#include "../src/logger/log_storage.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <assert.h>
-#include <limits.h>
-
-void callback(const dlogutil_entry_s *le, void *user_data)
-{
-}
-
-int main(void)
-{
- log_storage *const s = log_storage_create(1000000, DLOGUTIL_SORT_SENT_MONO);
- assert(s);
-
- log_storage_reader *const r_base_from_zero = log_storage_new_reader(s, false, false, callback, NULL);
- log_storage_reader *const r_dump_from_zero = log_storage_new_reader(s, true, false, callback, NULL);
- log_storage_reader *const r_mino_from_zero = log_storage_new_reader(s, false, true, callback, NULL);
- assert(r_base_from_zero);
- assert(r_dump_from_zero);
- assert(r_mino_from_zero);
-
- assert(log_storage_reader_peek_entry(r_base_from_zero) == NULL);
- assert(log_storage_reader_peek_entry(r_dump_from_zero) == NULL);
- assert(log_storage_reader_peek_entry(r_mino_from_zero) == NULL);
-
-
- struct dlogutil_entry_with_msg m = {{sizeof(dlogutil_entry_s)+3, 0, 0, 1, 1, 123, 123, 0, 0, 0, 0, 0, 0, 0}, "a"};
- assert(log_storage_add_new_entry(s, &m.header));
-
- log_storage_reader *const r_base_from_one = log_storage_new_reader(s, false, false, callback, NULL);
- log_storage_reader *const r_dump_from_one = log_storage_new_reader(s, true, false, callback, NULL);
- log_storage_reader *const r_mino_from_one = log_storage_new_reader(s, false, true, callback, NULL);
- assert(r_base_from_one);
- assert(r_dump_from_one);
- assert(r_mino_from_one);
-
- const dlogutil_entry_s *entry;
- entry = log_storage_reader_peek_entry(r_base_from_zero);
- assert(entry);
- assert(entry->sec_sent_mono == 123);
- entry = log_storage_reader_peek_entry(r_base_from_zero); // peek twice on purpose: peek shouldn't advance further
- assert(entry);
- assert(entry->sec_sent_mono == 123);
- entry = log_storage_reader_peek_entry(r_mino_from_zero);
- assert(entry);
- assert(entry->sec_sent_mono == 123);
- entry = log_storage_reader_peek_entry(r_mino_from_zero);
- assert(entry);
- assert(entry->sec_sent_mono == 123);
- entry = log_storage_reader_peek_entry(r_base_from_one);
- assert(entry);
- assert(entry->sec_sent_mono == 123);
- entry = log_storage_reader_peek_entry(r_base_from_one);
- assert(entry);
- assert(entry->sec_sent_mono == 123);
- entry = log_storage_reader_peek_entry(r_dump_from_one);
- assert(entry);
- assert(entry->sec_sent_mono == 123);
- entry = log_storage_reader_peek_entry(r_dump_from_one);
- assert(entry);
- assert(entry->sec_sent_mono == 123);
- assert(log_storage_reader_peek_entry(r_dump_from_zero) == NULL);
- assert(log_storage_reader_peek_entry(r_dump_from_zero) == NULL);
- assert(log_storage_reader_peek_entry(r_mino_from_one) == NULL);
- assert(log_storage_reader_peek_entry(r_mino_from_one) == NULL);
-
-
- m.header.sec_sent_mono = 456;
- assert(log_storage_add_new_entry(s, &m.header));
-
- log_storage_reader *const r_base_from_two = log_storage_new_reader(s, false, false, callback, NULL);
- log_storage_reader *const r_dump_from_two = log_storage_new_reader(s, true, false, callback, NULL);
- log_storage_reader *const r_mino_from_two = log_storage_new_reader(s, false, true, callback, NULL);
- assert(r_base_from_two);
- assert(r_dump_from_two);
- assert(r_mino_from_two);
-
- entry = log_storage_reader_peek_entry(r_base_from_zero);
- assert(entry);
- assert(entry->sec_sent_mono == 123);
- entry = log_storage_reader_peek_entry(r_base_from_zero);
- assert(entry);
- assert(entry->sec_sent_mono == 123);
- entry = log_storage_reader_peek_entry(r_mino_from_zero);
- assert(entry);
- assert(entry->sec_sent_mono == 123);
- entry = log_storage_reader_peek_entry(r_mino_from_zero);
- assert(entry);
- assert(entry->sec_sent_mono == 123);
- entry = log_storage_reader_peek_entry(r_base_from_one);
- assert(entry);
- assert(entry->sec_sent_mono == 123);
- entry = log_storage_reader_peek_entry(r_base_from_one);
- assert(entry);
- assert(entry->sec_sent_mono == 123);
- entry = log_storage_reader_peek_entry(r_dump_from_one);
- assert(entry);
- assert(entry->sec_sent_mono == 123);
- entry = log_storage_reader_peek_entry(r_dump_from_one);
- assert(entry);
- assert(entry->sec_sent_mono == 123);
- entry = log_storage_reader_peek_entry(r_mino_from_one);
- assert(entry);
- assert(entry->sec_sent_mono == 456);
- entry = log_storage_reader_peek_entry(r_mino_from_one);
- assert(entry);
- assert(entry->sec_sent_mono == 456);
- entry = log_storage_reader_peek_entry(r_base_from_two);
- assert(entry);
- assert(entry->sec_sent_mono == 123);
- entry = log_storage_reader_peek_entry(r_base_from_two);
- assert(entry);
- assert(entry->sec_sent_mono == 123);
- entry = log_storage_reader_peek_entry(r_dump_from_two);
- assert(entry);
- assert(entry->sec_sent_mono == 123);
- entry = log_storage_reader_peek_entry(r_dump_from_two);
- assert(entry);
- assert(entry->sec_sent_mono == 123);
- assert(log_storage_reader_peek_entry(r_dump_from_zero) == NULL);
- assert(log_storage_reader_peek_entry(r_dump_from_zero) == NULL);
- assert(log_storage_reader_peek_entry(r_mino_from_two) == NULL);
- assert(log_storage_reader_peek_entry(r_mino_from_two) == NULL);
-
- // advance
- struct dlogutil_entry_with_msg dewm;
- bool ok;
- ok = log_storage_reader_get_new_entry(r_base_from_zero, &dewm.header);
- assert(ok);
- assert(dewm.header.sec_sent_mono == 123);
- ok = log_storage_reader_get_new_entry(r_mino_from_zero, &dewm.header);
- assert(ok);
- assert(dewm.header.sec_sent_mono == 123);
- ok = log_storage_reader_get_new_entry(r_base_from_one, &dewm.header);
- assert(ok);
- assert(dewm.header.sec_sent_mono == 123);
- ok = log_storage_reader_get_new_entry(r_dump_from_one, &dewm.header);
- assert(ok);
- assert(dewm.header.sec_sent_mono == 123);
- ok = log_storage_reader_get_new_entry(r_mino_from_one, &dewm.header);
- assert(ok);
- assert(dewm.header.sec_sent_mono == 456);
- ok = log_storage_reader_get_new_entry(r_base_from_two, &dewm.header);
- assert(ok);
- assert(dewm.header.sec_sent_mono == 123);
- ok = log_storage_reader_get_new_entry(r_dump_from_two, &dewm.header);
- assert(ok);
- assert(dewm.header.sec_sent_mono == 123);
- assert(log_storage_reader_get_new_entry(r_dump_from_zero, &dewm.header) == false);
- assert(log_storage_reader_get_new_entry(r_mino_from_two, &dewm.header) == false);
-
-
- entry = log_storage_reader_peek_entry(r_base_from_zero);
- assert(entry);
- assert(entry->sec_sent_mono == 456);
- entry = log_storage_reader_peek_entry(r_base_from_zero);
- assert(entry);
- assert(entry->sec_sent_mono == 456);
- entry = log_storage_reader_peek_entry(r_mino_from_zero);
- assert(entry);
- assert(entry->sec_sent_mono == 456);
- entry = log_storage_reader_peek_entry(r_mino_from_zero);
- assert(entry);
- assert(entry->sec_sent_mono == 456);
- entry = log_storage_reader_peek_entry(r_base_from_one);
- assert(entry);
- assert(entry->sec_sent_mono == 456);
- entry = log_storage_reader_peek_entry(r_base_from_one);
- assert(entry);
- assert(entry->sec_sent_mono == 456);
- entry = log_storage_reader_peek_entry(r_base_from_two);
- assert(entry);
- assert(entry->sec_sent_mono == 456);
- entry = log_storage_reader_peek_entry(r_base_from_two);
- assert(entry);
- assert(entry->sec_sent_mono == 456);
- entry = log_storage_reader_peek_entry(r_dump_from_two);
- assert(entry);
- assert(entry->sec_sent_mono == 456);
- entry = log_storage_reader_peek_entry(r_dump_from_two);
- assert(entry);
- assert(entry->sec_sent_mono == 456);
- assert(log_storage_reader_peek_entry(r_dump_from_zero) == NULL);
- assert(log_storage_reader_peek_entry(r_dump_from_zero) == NULL);
- assert(log_storage_reader_peek_entry(r_dump_from_one) == NULL);
- assert(log_storage_reader_peek_entry(r_dump_from_one) == NULL);
- assert(log_storage_reader_peek_entry(r_mino_from_one) == NULL);
- assert(log_storage_reader_peek_entry(r_mino_from_one) == NULL);
- assert(log_storage_reader_peek_entry(r_mino_from_two) == NULL);
- assert(log_storage_reader_peek_entry(r_mino_from_two) == NULL);
-
-
- // inserting a lagged log does nothing since it is received via callback
- m.header.sec_sent_mono = 76;
- assert(log_storage_add_new_entry(s, &m.header));
-
- entry = log_storage_reader_peek_entry(r_base_from_zero);
- assert(entry);
- assert(entry->sec_sent_mono == 456);
- entry = log_storage_reader_peek_entry(r_base_from_zero);
- assert(entry);
- assert(entry->sec_sent_mono == 456);
- entry = log_storage_reader_peek_entry(r_mino_from_zero);
- assert(entry);
- assert(entry->sec_sent_mono == 456);
- entry = log_storage_reader_peek_entry(r_mino_from_zero);
- assert(entry);
- assert(entry->sec_sent_mono == 456);
- entry = log_storage_reader_peek_entry(r_base_from_one);
- assert(entry);
- assert(entry->sec_sent_mono == 456);
- entry = log_storage_reader_peek_entry(r_base_from_one);
- assert(entry);
- assert(entry->sec_sent_mono == 456);
- entry = log_storage_reader_peek_entry(r_base_from_two);
- assert(entry);
- assert(entry->sec_sent_mono == 456);
- entry = log_storage_reader_peek_entry(r_base_from_two);
- assert(entry);
- assert(entry->sec_sent_mono == 456);
- entry = log_storage_reader_peek_entry(r_dump_from_two);
- assert(entry);
- assert(entry->sec_sent_mono == 456);
- entry = log_storage_reader_peek_entry(r_dump_from_two);
- assert(entry);
- assert(entry->sec_sent_mono == 456);
- assert(log_storage_reader_peek_entry(r_dump_from_zero) == NULL);
- assert(log_storage_reader_peek_entry(r_dump_from_zero) == NULL);
- assert(log_storage_reader_peek_entry(r_dump_from_one) == NULL);
- assert(log_storage_reader_peek_entry(r_dump_from_one) == NULL);
- assert(log_storage_reader_peek_entry(r_mino_from_one) == NULL);
- assert(log_storage_reader_peek_entry(r_mino_from_one) == NULL);
- assert(log_storage_reader_peek_entry(r_mino_from_two) == NULL);
- assert(log_storage_reader_peek_entry(r_mino_from_two) == NULL);
-
-
- // advance again
- ok = log_storage_reader_get_new_entry(r_base_from_zero, &dewm.header);
- assert(ok);
- assert(dewm.header.sec_sent_mono == 456);
- ok = log_storage_reader_get_new_entry(r_mino_from_zero, &dewm.header);
- assert(ok);
- assert(dewm.header.sec_sent_mono == 456);
- ok = log_storage_reader_get_new_entry(r_base_from_one, &dewm.header);
- assert(ok);
- assert(dewm.header.sec_sent_mono == 456);
- ok = log_storage_reader_get_new_entry(r_base_from_two, &dewm.header);
- assert(ok);
- assert(dewm.header.sec_sent_mono == 456);
- ok = log_storage_reader_get_new_entry(r_dump_from_two, &dewm.header);
- assert(ok);
- assert(dewm.header.sec_sent_mono == 456);
- assert(log_storage_reader_get_new_entry(r_dump_from_zero, &dewm.header) == false);
- assert(log_storage_reader_get_new_entry(r_dump_from_one, &dewm.header) == false);
- assert(log_storage_reader_get_new_entry(r_mino_from_one, &dewm.header) == false);
- assert(log_storage_reader_get_new_entry(r_mino_from_two, &dewm.header) == false);
-
- assert(log_storage_reader_peek_entry(r_base_from_zero) == NULL);
- assert(log_storage_reader_peek_entry(r_base_from_zero) == NULL);
- assert(log_storage_reader_peek_entry(r_dump_from_zero) == NULL);
- assert(log_storage_reader_peek_entry(r_dump_from_zero) == NULL);
- assert(log_storage_reader_peek_entry(r_mino_from_zero) == NULL);
- assert(log_storage_reader_peek_entry(r_mino_from_zero) == NULL);
- assert(log_storage_reader_peek_entry(r_base_from_one) == NULL);
- assert(log_storage_reader_peek_entry(r_base_from_one) == NULL);
- assert(log_storage_reader_peek_entry(r_dump_from_one) == NULL);
- assert(log_storage_reader_peek_entry(r_dump_from_one) == NULL);
- assert(log_storage_reader_peek_entry(r_mino_from_one) == NULL);
- assert(log_storage_reader_peek_entry(r_mino_from_one) == NULL);
- assert(log_storage_reader_peek_entry(r_base_from_two) == NULL);
- assert(log_storage_reader_peek_entry(r_base_from_two) == NULL);
- assert(log_storage_reader_peek_entry(r_dump_from_two) == NULL);
- assert(log_storage_reader_peek_entry(r_dump_from_two) == NULL);
- assert(log_storage_reader_peek_entry(r_mino_from_two) == NULL);
- assert(log_storage_reader_peek_entry(r_mino_from_two) == NULL);
-
-
- log_storage_release_reader(r_base_from_zero);
- log_storage_release_reader(r_dump_from_zero);
- log_storage_release_reader(r_mino_from_zero);
- log_storage_release_reader(r_base_from_one);
- log_storage_release_reader(r_dump_from_one);
- log_storage_release_reader(r_mino_from_one);
- log_storage_release_reader(r_base_from_two);
- log_storage_release_reader(r_dump_from_two);
- log_storage_release_reader(r_mino_from_two);
- log_storage_free(s);
-
- return EXIT_SUCCESS;
-}