#!perl
use Cassandane::Tiny;

sub test_lint_partitions_dups
    :NoStartInstances
    ($self)
{
    $self->config_set(
        # each has its own disk path: good
        'partition-good' => '/tmp/pgood',
        'metapartition-good' => '/tmp/mgood',
        'archivepartition-good' => '/tmp/agood',
        'foosearchpartition-good' => '/tmp/sgood',

        # reusing disk paths for same-named partition: bad
        'partition-bad1' => '/tmp/bad',
        'metapartition-bad1' => '/tmp/bad',

        # reusing disk paths for other-named partition: bad
        'partition-bad2' => '/tmp/bad',
    );

    # master should fail to start
    eval {
        $self->_start_instances();
    };
    my $e = $@;
    $self->assert_not_null($e);

    xlog $self, "test 'cyr_info conf-lint' with duplicated partitions configured";

    my @output = $self->{instance}->run_cyr_info('conf-lint');
    @output = grep { !m/_db: / } @output;  # skip database types

    $self->assert_deep_equals(
        [ sort(
            "partition-bad1: /tmp/bad\n",
            "metapartition-bad1: /tmp/bad\n",
            "partition-bad2: /tmp/bad\n",
        ) ],
        [ sort @output ]
    );

    $self->assert_syslog_matches($self->{instance},
                                 qr{disk path used by multiple partitions});
}
