use strict;

use lib 't';
use TestLib;
use PgCommon;

use Test::More tests => 20;

my $v = $MAJORS[-1];

# create cluster
ok ((system "pg_createcluster $v main --start >/dev/null") == 0,
    "pg_createcluster $v main");

# test pg_renamecluster with a running cluster
program_ok (0, "pg_renamecluster $v main donau");
is_program_out 'postgres', 'psql -tAc "show data_directory"', 0,
    "/var/lib/postgresql/$v/donau\n", 'cluster is running and data_directory was moved';
is ((PgCommon::get_conf_value $v, 'donau', 'postgresql.conf', 'hba_file'),
    "/etc/postgresql/$v/donau/pg_hba.conf", 'pg_hba.conf location updated');
is ((PgCommon::get_conf_value $v, 'donau', 'postgresql.conf', 'ident_file'),
    "/etc/postgresql/$v/donau/pg_ident.conf", 'pg_ident.conf location updated');
is ((PgCommon::get_conf_value $v, 'donau', 'postgresql.conf', 'external_pid_file'),
    "/var/run/postgresql/$v-donau.pid", 'external_pid_file location updated');
ok (-f "/var/run/postgresql/$v-donau.pid", 'external_pid_file exists');
SKIP: {
    skip "no stats_temp_directory in $v", 2 if ($v < 8.4 or $v >= 15);
    is ((PgCommon::get_conf_value $v, 'donau', 'postgresql.conf', 'stats_temp_directory'),
        "/var/run/postgresql/$v-donau.pg_stat_tmp", 'stats_temp_directory location updated');
    ok (-d "/var/run/postgresql/$v-donau.pg_stat_tmp", 'stats_temp_directory exists');
}
SKIP: {
    skip "cluster name not supported in $v", 1 if ($v < 9.5);
    is (PgCommon::get_conf_value ($v, 'donau', 'postgresql.conf', 'cluster_name'), "$v/donau", "cluster_name is updated");
}

# stop server, clean up, check for leftovers
ok ((system "pg_dropcluster $v donau --stop") == 0,
    'pg_dropcluster removes cluster');

check_clean;

# vim: filetype=perl
