1
use Test::Simple tests => 11;
3
my $GCPLOG = 't/fixtures/cloudsql.log.gz';
4
my $SYSLOG1 = 't/fixtures/pg-syslog.1.bz2';
5
my $SYSLOG2 = 't/fixtures/pg-syslog.1.bz2';
6
my $STDERR1 = 't/fixtures/postgresql_param_range.log';
7
my $STDERR2 = 't/fixtures/multiline_param.log';
8
my $JSON = 't/out.json';
11
`rm t/cluster1_day_*.bin t/file_cluster1 2>/dev/null`;
12
`rm *.html 2>/dev/null`;
13
my $ret = `perl pgbadger -q --exclude-db=pgbench --explode $SYSLOG1 && ls *.html`;
15
ok( $? == 0 && ($ret eq "out.html"), "Test --exclude-db + --explode");
17
$ret = `perl pgbadger -q --dbname=pgbench --explode $SYSLOG1 && ls *.html`;
19
ok( $? == 0 && ($ret eq "pgbench_out.html"), "Test --dbname + --explode");
23
my $incr_outdir = "/tmp/pgbadger_data_tmp";
26
$ret = `perl pgbadger -q --explode -I -O $incr_outdir $SYSLOG1 $SYSLOG2 && ls $incr_outdir | wc -l`;
28
ok( $? == 0 && ($ret == 4), "Test incremental mode with --explode");
30
`rm -rf $incr_outdir/*`;
32
$ret = `perl pgbadger -q --dbname=pgbench --explode -I -O $incr_outdir $SYSLOG1 $SYSLOG2 && ls $incr_outdir | grep ">12,474 queries" $incr_outdir/pgbench/20*/week-0*/index.html`;
34
ok( $? == 0 && ($ret ne ''), "Test incremental mode with --explode and --dbname");
36
$ret = `perl pgbadger -q --exclude-db cloudsqladmin --explode $GCPLOG && ls *.html | wc -l`;
38
ok( $? == 0 && ($ret == 2), "Test database exclusion with jsonlog");
40
$ret = `perl pgbadger --disable-type --disable-session --disable-connection --disable-lock --disable-checkpoint --disable-autovacuum --disable-query -o $TEXT t/fixtures/tempfile_only.log.gz -q`;
41
$ret = `grep "Example.*SELECT" $TEXT | wc -l`;
43
ok( $? == 0 && ($ret == 9), "Test log_temp_files only");
45
$ret = `perl pgbadger --last-parsed t/file_cluster1 -o t/cluster1_day_1.bin t/fixtures/tempfile_only.log.gz -q`;
46
$ret = `md5sum t/file_cluster1 | awk '{print \$1}'`;
48
ok( $? == 0 && ($ret eq "7faeb101abf32de3bc4e14fcf525e005" ), "Test last parse file without incremental mode");
50
$ret = `perl pgbadger --last-parsed t/file_cluster1 -o t/cluster1_day_2.bin t/fixtures/tempfile_only.log.gz -q`;
51
$ret = `ls -la t/cluster1_day_2.bin | awk '{print \$4}'`;
53
ok( $? == 0 && ($ret < 4000), "Second pass on last parse file without incremental mode");
54
$ret = `md5sum t/file_cluster1 | awk '{print \$1}'`;
56
ok( $? == 0 && ($ret eq "7faeb101abf32de3bc4e14fcf525e005" ), "Last parse file must not have changed");
58
`rm -f $JSON 2>/dev/null`;
59
$ret = `perl pgbadger -f stderr -q $STDERR1 -o $JSON`;
60
$ret = `grep "('D17756227', 'J16274127', 'IDA001127') and (public.t_plage_cloturee_utilisateur.pcu_range_cloture && '\\[2023-02-24T00:00,2023-02-25T00:00\\]'::tsrange" $JSON | wc -l`;
62
ok( $? == 0 && ($ret == 1), "Bind parameter with range: $ret");
64
$ret = `perl pgbadger -q -o t/out.txt $STDERR2`;
65
$ret = `grep 'njvarchar\\\\nbye'* $TEXT | wc -l`;
67
ok( $? == 0 && ($ret == 4), "Multiline bind parameters: $ret");
69
# Remove files generated during the tests
74
`rm t/cluster1_day_*.bin t/file_cluster1`;