]>
Commit | Line | Data |
---|---|---|
1b7cf0e5 AG |
1 | /* SPDX-License-Identifier: LGPL-2.1+ */ |
2 | /*** | |
3 | This file is part of systemd. | |
4 | ||
5 | Copyright 2011 Lennart Poettering | |
1b7cf0e5 AG |
6 | ***/ |
7 | ||
8 | #include <stdbool.h> | |
9 | ||
10 | #include "journald-server.h" | |
11 | ||
12 | #define _COMPRESS_PARSE_CHECK(str, enab, thresh, varname) \ | |
13 | do { \ | |
14 | JournalCompressOptions varname = {true, 111}; \ | |
15 | config_parse_compress("", "", 0, "", 0, "", 0, str, \ | |
16 | &varname, NULL); \ | |
17 | assert_se((enab) == varname.enabled); \ | |
18 | if (varname.enabled) \ | |
19 | assert_se((thresh) == varname.threshold_bytes); \ | |
20 | } while (0) | |
21 | ||
22 | #define COMPRESS_PARSE_CHECK(str, enabled, threshold) \ | |
23 | _COMPRESS_PARSE_CHECK(str, enabled, threshold, conf##__COUNTER__) | |
24 | ||
25 | static void test_config_compress(void) { | |
26 | COMPRESS_PARSE_CHECK("yes", true, 111); | |
27 | COMPRESS_PARSE_CHECK("no", false, 111); | |
28 | COMPRESS_PARSE_CHECK("y", true, 111); | |
29 | COMPRESS_PARSE_CHECK("n", false, 111); | |
30 | COMPRESS_PARSE_CHECK("true", true, 111); | |
31 | COMPRESS_PARSE_CHECK("false", false, 111); | |
32 | COMPRESS_PARSE_CHECK("t", true, 111); | |
33 | COMPRESS_PARSE_CHECK("f", false, 111); | |
34 | COMPRESS_PARSE_CHECK("on", true, 111); | |
35 | COMPRESS_PARSE_CHECK("off", false, 111); | |
36 | ||
37 | /* Weird size/bool overlapping case. We preserve backward compatibility instead of assuming these are byte | |
38 | * counts. */ | |
39 | COMPRESS_PARSE_CHECK("1", true, 111); | |
40 | COMPRESS_PARSE_CHECK("0", false, 111); | |
41 | ||
42 | /* IEC sizing */ | |
43 | COMPRESS_PARSE_CHECK("1B", true, 1); | |
44 | COMPRESS_PARSE_CHECK("1K", true, 1024); | |
45 | COMPRESS_PARSE_CHECK("1M", true, 1024 * 1024); | |
46 | COMPRESS_PARSE_CHECK("1G", true, 1024 * 1024 * 1024); | |
47 | ||
48 | /* Invalid Case */ | |
49 | COMPRESS_PARSE_CHECK("-1", true, 111); | |
50 | COMPRESS_PARSE_CHECK("blah blah", true, 111); | |
51 | COMPRESS_PARSE_CHECK("", true, (uint64_t)-1); | |
52 | } | |
53 | ||
54 | int main(int argc, char *argv[]) { | |
55 | test_config_compress(); | |
56 | ||
57 | return 0; | |
58 | } |