pgbadger

Форк
0
/t
/
02_basics.t 
113 строк · 4.0 Кб
1
use Test::Simple tests => 17;
2

3
my $LOG = 't/fixtures/light.postgres.log.bz2';
4
my $SYSLOG = 't/fixtures/pg-syslog.1.bz2';
5
my $BIN = 't/fixtures/light.postgres.bin';
6
my $ANON = 't/fixtures/anonymize.log';
7
my $JSON = 't/out.json';
8
my $TEXT = 't/out.txt';
9
my $WEEKDAYLOG = 't/fixtures/weeknumber.log';
10

11
`rm -rf t/test_incr/ 2>/dev/null`;
12

13
my $ret = `perl pgbadger --help`;
14
ok( $? == 0, "Inline help");
15

16
$ret = `perl pgbadger -q -o - $LOG`;
17
ok( $? == 0 && length($ret) > 0, "Light log report to stdout");
18

19
`rm -f out.html`;
20
$ret = `perl pgbadger -q --outdir '.' $LOG`;
21
ok( $? == 0 && -e "out.html", "Light log report to HTML");
22

23
$ret = `perl pgbadger -q -o $BIN $LOG`;
24
ok( $? == 0 && -e "$BIN", "Light log to binary");
25

26
`rm -f $JSON`;
27
$ret = `perl pgbadger -q -o $JSON --format binary $BIN`;
28
$ret = `cat $JSON | perl -pe 's/.*"select":([1-9]+),.*/\$1/'`;
29
ok( $? == 0 && $ret > 0, "From binary to JSON");
30

31
`mkdir t/test_incr/`;
32
$ret = `perl pgbadger -q -O t/test_incr -I --extra-files $LOG`;
33
ok( $? == 0 && -e "t/test_incr/2017/09/06/index.html"
34
	&& -e "t/test_incr/2017/week-37/index.html", "Incremental mode report");
35
$ret = `grep 'src="../../../.*/bootstrap.min.js"' t/test_incr/2017/09/06/index.html`;
36
ok( $? == 0 && substr($ret, 32, 14) eq 'src="../../../', "Ressources files in incremental mode");
37

38
`rm -f $JSON`;
39
$ret = `bunzip2 -c $LOG | perl pgbadger -q -o $JSON -`;
40
$ret = `cat $JSON | perl -pe 's/.*"select":([1-9]+),.*/\$1/'`;
41
ok( $? == 0 && $ret > 0, "Light log from STDIN");
42

43
$ret = `perl pgbadger -q --outdir '.' -o $TEXT -o $JSON -o - -x json $LOG > t/ret.json`;
44
my $ret2 = `stat --printf='%s' t/ret.json $TEXT $JSON`;
45
chomp($ret);
46
chomp($ret2);
47
ok( $? == 0 && $ret2 eq '13486915883134869', "Multiple output format '$ret2' = '13486915883134869'");
48

49
`perl pgbadger -q -o /tmp/syslog.html $SYSLOG`;
50
$ret = `perl pgbadger -q -o - $SYSLOG`;
51
ok( $? == 0 && (length($ret) >= 23995), "syslog report to stdout: " . length($ret));
52

53
$ret = `perl pgbadger -q -f stderr -o /tmp/report$$.txt t/fixtures/stmt_type.log`;
54
$ret = `grep -E "^(SELECT|INSERT|UPDATE|DELETE|COPY|CTE|DDL|TCL|CURSOR)" /tmp/report$$.txt > /tmp/stmt_type.out`;
55
$ret = `diff t/exp/stmt_type.out /tmp/stmt_type.out`;
56
ok( $? == 0 && ($ret eq ''), "statement type");
57

58
$ret = `grep "forêt & océan" /tmp/report$$.txt |wc -l`;
59
chomp($ret);
60
ok( $? == 0 && ($ret eq '7'), "French encoding");
61

62
$ret = `grep "камень & почка" /tmp/report$$.txt | wc -l`;
63
chomp($ret);
64
ok( $? == 0 && ($ret eq '7'), "Cyrillic encoding");
65

66
`cp /tmp/report$$.txt titi.txt`;
67
`rm /tmp/report$$.txt`;
68

69
# Test CSV and anonymization only if Text::CSV_XS is installed
70
`perl -MText::CSV_XS -e 1 2>/dev/null`;
71
if ($? == 0)
72
{
73
	$ret = `perl pgbadger -m 1000 -q -f csv --anonymize -o /tmp/report$$.txt $ANON`;
74
	$ret = `grep "11111111" /tmp/report$$.txt | wc -l`;
75
	chomp($ret);
76
	ok( $? == 0 && ($ret eq '0'), "Anonymization #1");
77
	$ret = `grep "'r','p','v','f','m'" /tmp/report$$.txt | wc -l`;
78
	chomp($ret);
79
	ok( $? == 0 && ($ret eq '0'), "Anonymization #2");
80
	$ret = `grep "x255044" /tmp/report$$.txt | wc -l`;
81
	chomp($ret);
82
	ok( $? == 0 && ($ret eq '0'), "Anonymization #3");
83
}
84
else
85
{
86
	$ret = `perl pgbadger -q -f csv --anonymize -o /tmp/report$$.txt $SYSLOG`;
87
	$ret = `grep "aid = 62643" /tmp/report$$.txt | wc -l`;
88
	chomp($ret);
89
	ok( $? == 0 && ($ret eq '0'), "Anonymization #1");
90
	$ret = `grep "tid = 1;" /tmp/report$$.txt | wc -l`;
91
	chomp($ret);
92
	ok( $? == 0 && ($ret eq '0'), "Anonymization #2");
93
	$ret = `grep "8, 1, 27361, 529, CURRENT_TIMESTAMP" /tmp/report$$.txt | wc -l`;
94
	chomp($ret);
95
	ok( $? == 0 && ($ret eq '0'), "Anonymization #3");
96
}
97

98
my $incr_outdir = "/tmp/pgbadger_data_tmp";
99
mkdir($incr_outdir);
100
$ret = `perl pgbadger -q --iso-week-number -X -I -O $incr_outdir -f csv $WEEKDAYLOG && ls $incr_outdir/2021/ | grep -E '(week-27|week-53)' | wc -l`;
101
chomp($ret);
102

103
ok( $? == 0 && $ret eq '2');
104
# Remove files generated during the tests
105
`rm -f out.html`;
106
`rm -r $JSON`;
107
`rm -r $TEXT`;
108
`rm -f $BIN`;
109
`rm -rf t/test_incr/`;
110
`rm t/ret.json`;
111
`rm /tmp/report$$.txt`;
112
`rm /tmp/stmt_type.out`;
113
`rm -rf $incr_outdir`;
114

115

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.