]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/journal/test-journal.c
relicense to LGPLv2.1 (with exceptions)
[thirdparty/systemd.git] / src / journal / test-journal.c
CommitLineData
87d2c1ff
LP
1/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
2
3/***
4 This file is part of systemd.
5
6 Copyright 2011 Lennart Poettering
7
8 systemd is free software; you can redistribute it and/or modify it
5430f7f2
LP
9 under the terms of the GNU Lesser General Public License as published by
10 the Free Software Foundation; either version 2.1 of the License, or
87d2c1ff
LP
11 (at your option) any later version.
12
13 systemd is distributed in the hope that it will be useful, but
14 WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
5430f7f2 16 Lesser General Public License for more details.
87d2c1ff 17
5430f7f2 18 You should have received a copy of the GNU Lesser General Public License
87d2c1ff
LP
19 along with systemd; If not, see <http://www.gnu.org/licenses/>.
20***/
21
22#include <fcntl.h>
0ac38b70 23#include <unistd.h>
87d2c1ff 24
81527be1
LP
25#include <systemd/sd-journal.h>
26
cec736d2 27#include "journal-file.h"
87d2c1ff
LP
28#include "log.h"
29
30int main(int argc, char *argv[]) {
31 dual_timestamp ts;
32 JournalFile *f;
33 struct iovec iovec;
34 static const char test[] = "test", test2[] = "test2";
35 Object *o;
de190aef 36 uint64_t p;
87d2c1ff
LP
37
38 log_set_max_level(LOG_DEBUG);
39
0ac38b70
LP
40 unlink("test.journal");
41
42 assert_se(journal_file_open("test.journal", O_RDWR|O_CREAT, 0666, NULL, &f) == 0);
87d2c1ff
LP
43
44 dual_timestamp_get(&ts);
45
46 iovec.iov_base = (void*) test;
47 iovec.iov_len = strlen(test);
c2373f84 48 assert_se(journal_file_append_entry(f, &ts, &iovec, 1, NULL, NULL, NULL) == 0);
87d2c1ff
LP
49
50 iovec.iov_base = (void*) test2;
51 iovec.iov_len = strlen(test2);
c2373f84 52 assert_se(journal_file_append_entry(f, &ts, &iovec, 1, NULL, NULL, NULL) == 0);
87d2c1ff
LP
53
54 iovec.iov_base = (void*) test;
55 iovec.iov_len = strlen(test);
c2373f84 56 assert_se(journal_file_append_entry(f, &ts, &iovec, 1, NULL, NULL, NULL) == 0);
87d2c1ff
LP
57
58 journal_file_dump(f);
59
de190aef 60 assert(journal_file_next_entry(f, NULL, 0, DIRECTION_DOWN, &o, &p) == 1);
87d2c1ff
LP
61 assert(le64toh(o->entry.seqnum) == 1);
62
de190aef 63 assert(journal_file_next_entry(f, o, p, DIRECTION_DOWN, &o, &p) == 1);
87d2c1ff
LP
64 assert(le64toh(o->entry.seqnum) == 2);
65
de190aef 66 assert(journal_file_next_entry(f, o, p, DIRECTION_DOWN, &o, &p) == 1);
87d2c1ff
LP
67 assert(le64toh(o->entry.seqnum) == 3);
68
de190aef 69 assert(journal_file_next_entry(f, o, p, DIRECTION_DOWN, &o, &p) == 0);
87d2c1ff 70
de190aef 71 assert(journal_file_next_entry(f, NULL, 0, DIRECTION_DOWN, &o, &p) == 1);
87d2c1ff
LP
72 assert(le64toh(o->entry.seqnum) == 1);
73
de190aef 74 assert(journal_file_skip_entry(f, o, p, 2, &o, &p) == 1);
87d2c1ff
LP
75 assert(le64toh(o->entry.seqnum) == 3);
76
de190aef
LP
77 assert(journal_file_skip_entry(f, o, p, -2, &o, &p) == 1);
78 assert(le64toh(o->entry.seqnum) == 1);
79
80 assert(journal_file_skip_entry(f, o, p, -2, &o, &p) == 1);
81 assert(le64toh(o->entry.seqnum) == 1);
82
83 assert(journal_file_find_data_object(f, test, strlen(test), NULL, &p) == 1);
84 assert(journal_file_next_entry_for_data(f, NULL, 0, p, DIRECTION_DOWN, &o, NULL) == 1);
85 assert(le64toh(o->entry.seqnum) == 1);
86
87 assert(journal_file_next_entry_for_data(f, NULL, 0, p, DIRECTION_UP, &o, NULL) == 1);
88 assert(le64toh(o->entry.seqnum) == 3);
89
90 assert(journal_file_find_data_object(f, test2, strlen(test2), NULL, &p) == 1);
91 assert(journal_file_next_entry_for_data(f, NULL, 0, p, DIRECTION_UP, &o, NULL) == 1);
87d2c1ff
LP
92 assert(le64toh(o->entry.seqnum) == 2);
93
de190aef 94 assert(journal_file_next_entry_for_data(f, NULL, 0, p, DIRECTION_DOWN, &o, NULL) == 1);
87d2c1ff
LP
95 assert(le64toh(o->entry.seqnum) == 2);
96
de190aef 97 assert(journal_file_find_data_object(f, "quux", 4, NULL, &p) == 0);
87d2c1ff 98
de190aef 99 assert(journal_file_move_to_entry_by_seqnum(f, 1, DIRECTION_DOWN, &o, NULL) == 1);
87d2c1ff
LP
100 assert(le64toh(o->entry.seqnum) == 1);
101
de190aef 102 assert(journal_file_move_to_entry_by_seqnum(f, 3, DIRECTION_DOWN, &o, NULL) == 1);
87d2c1ff
LP
103 assert(le64toh(o->entry.seqnum) == 3);
104
de190aef 105 assert(journal_file_move_to_entry_by_seqnum(f, 2, DIRECTION_DOWN, &o, NULL) == 1);
87d2c1ff
LP
106 assert(le64toh(o->entry.seqnum) == 2);
107
de190aef 108 assert(journal_file_move_to_entry_by_seqnum(f, 10, DIRECTION_DOWN, &o, NULL) == 0);
87d2c1ff 109
0ac38b70
LP
110 journal_file_rotate(&f);
111 journal_file_rotate(&f);
112
87d2c1ff
LP
113 journal_file_close(f);
114
0ac38b70
LP
115 journal_directory_vacuum(".", 3000000, 0);
116
6ad1d1c3
LP
117 log_error("Exiting...");
118
87d2c1ff
LP
119 return 0;
120}