%PDF- %PDF-
| Direktori : /home/opti/optisoftcom/.cpanm/work/1544535406.20768/MongoDB-v2.0.2/t/unit/ |
| Current File : /home/opti/optisoftcom/.cpanm/work/1544535406.20768/MongoDB-v2.0.2/t/unit/read_preference.t |
# Copyright 2014 - present MongoDB, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
use strict;
use warnings;
use Test::More 0.88;
use Test::Fatal;
my $class = "MongoDB::ReadPreference";
require_ok( $class );
is(
exception { $class->new },
undef,
"new without args has default"
);
subtest "mode" => sub {
my @modes = qw(
primary PRIMARY PrImArY
secondary secondary_preferred primary_preferred nearest
secondarypreferred primarypreferred
);
for my $mode (@modes) {
new_ok( $class, [ mode => $mode ], "new( mode => '$mode' )" );
}
like(
exception { $class->new( mode => 'primary', tag_sets => [ { dc => 'us' } ] ) },
qr/not allowed/,
"tag set list not allowed with primary"
);
};
subtest "max_staleness_seconds" => sub {
for my $t ( -1, 90 ) {
my $obj = new_ok(
$class,
[ mode => 'nearest', max_staleness_seconds => $t ],
"new with max_staleness_seconds $t"
);
is( $obj->max_staleness_seconds, $t, "max_staleness_seconds is correct" );
}
is( $class->new->max_staleness_seconds, -1, "max_staleness_seconds default is -1" );
like(
exception { $class->new( mode => 'primary', max_staleness_seconds => 42 ) },
qr/not allowed/,
"max staleness not allowed with primary"
);
};
subtest "stringification" => sub {
my $rp;
my @cases = (
[ {} => 'primary' ],
[ { mode => 'secondary_preferred' }, 'secondaryPreferred' ],
[
{
mode => 'secondary_preferred',
tag_sets => [ { dc => 'ny', rack => 1 }, { dc => 'ny' }, {} ]
},
'secondaryPreferred ({dc:ny,rack:1},{dc:ny},{})'
],
);
for my $case (@cases) {
my $rp = $class->new( $case->[0] );
is( $rp->as_string, $case->[1], $case->[1] );
}
};
done_testing;
# vim: ts=4 sts=4 sw=4 et: