]> git.sur5r.net Git - i3/i3/blob - testcases/t/207-shmlog.t
i3-dump-log: enable shmlog on demand
[i3/i3] / testcases / t / 207-shmlog.t
1 #!perl
2 # vim:ts=4:sw=4:expandtab
3 #
4 # Please read the following documents before working on tests:
5 # • https://build.i3wm.org/docs/testsuite.html
6 #   (or docs/testsuite)
7 #
8 # • https://build.i3wm.org/docs/lib-i3test.html
9 #   (alternatively: perldoc ./testcases/lib/i3test.pm)
10 #
11 # • https://build.i3wm.org/docs/ipc.html
12 #   (or docs/ipc)
13 #
14 # • http://onyxneon.com/books/modern_perl/modern_perl_a4.pdf
15 #   (unless you are already familiar with Perl)
16 #
17 use i3test;
18 use IPC::Run qw(run);
19 use File::Temp;
20
21 ################################################################################
22 # 1: test that shared memory logging does not work yet
23 ################################################################################
24
25 # NB: launch_with_config (called in i3test) sets --shmlog-size=0 because the
26 # logfile gets redirected via stdout redirection anyways.
27
28 my $stdout;
29 my $stderr;
30 run [ 'i3-dump-log' ],
31     '>', \$stdout,
32     '2>', \$stderr;
33
34 like($stderr, qr#^i3-dump-log: ERROR: i3 is running, but SHM logging is not enabled\.#,
35     'shm logging not enabled');
36
37 ################################################################################
38 # 2: enable shared memory logging and verify new content shows up
39 ################################################################################
40
41 cmd 'shmlog on';
42
43 my $random_nop = mktemp('nop.XXXXXX');
44 cmd "nop $random_nop";
45
46 run [ 'i3-dump-log' ],
47     '>', \$stdout,
48     '2>', \$stderr;
49
50 like($stdout, qr#$random_nop#, 'random nop found in shm log');
51 like($stderr, qr#^$#, 'stderr empty');
52
53 ################################################################################
54 # 3: change size of the shared memory log buffer and verify old content is gone
55 ################################################################################
56
57 cmd 'shmlog ' . (1 * 1024 * 1024);
58
59 run [ 'i3-dump-log' ],
60     '>', \$stdout,
61     '2>', \$stderr;
62
63 unlike($stdout, qr#$random_nop#, 'random nop not found in shm log');
64 like($stderr, qr#^$#, 'stderr empty');
65
66 ################################################################################
67 # 4: disable logging and verify it no longer works
68 ################################################################################
69
70 cmd 'shmlog off';
71
72 run [ 'i3-dump-log' ],
73     '>', \$stdout,
74     '2>', \$stderr;
75
76 like($stderr, qr#^i3-dump-log: ERROR: i3 is running, but SHM logging is not enabled\.#,
77     'shm logging not enabled');
78
79 done_testing;