%PDF- %PDF-
Direktori : /home/opti/optisoftcom/.cpanm/work/1544535406.20768/MongoDB-v2.0.2/t/ |
Current File : /home/opti/optisoftcom/.cpanm/work/1544535406.20768/MongoDB-v2.0.2/t/enumerate_databases.t |
# Copyright 2017 - 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.96; use Test::Fatal; use Test::Deep qw/!blessed/; use utf8; use Tie::IxHash; use MongoDB::Error; use MongoDB; use lib "t/lib"; use MongoDBTest qw/ skip_unless_mongod build_client get_test_db server_version server_type get_unique_collection /; skip_unless_mongod(); my $conn = build_client(); my $testdb = get_test_db($conn); my $server_version = server_version($conn); my $server_type = server_type($conn); plan skip_all => "Requires MongoDB 3.6" if $server_version < v3.6.0; subtest 'list databases' => sub { my @test_dbs; my $time_prefix = time(); for my $prefix ( qw/ foo bar baz / ) { my $db1 = get_test_db( $conn, $prefix . $time_prefix ); my $db2 = get_test_db( $conn, $prefix . $time_prefix ); # getting a new db is not enough, must insert something into them first get_unique_collection( $db1, 'test' )->insert_one({ _id => 1 }); get_unique_collection( $db2, 'test' )->insert_one({ _id => 1 }); push @test_dbs, $db1, $db2; } my @all_dbs = $conn->list_databases; ok( scalar( @all_dbs ) >= 6, "Found at least 6 databases" ); my @foo_dbs = $conn->list_databases({ filter => { name => qr/^foo${\$time_prefix}/ } }); is( scalar( @foo_dbs ), 2, "Found two foo databases" ); for my $foo_db ( @foo_dbs ) { ok( exists $foo_db->{empty}, "Database has empty attribute" ); ok( $foo_db->{name} =~ /^foo${\$time_prefix}/, "Database has correct name" ); ok( exists $foo_db->{sizeOnDisk}, "Database has sizeOnDisk attribute" ); } for my $db ( @test_dbs ) { $db->drop; } }; subtest 'list database names' => sub { my @test_dbs; my @test_db_names; my $time_prefix = time(); for my $prefix ( qw/ foo bar baz / ) { my $db1 = get_test_db( $conn, $prefix . $time_prefix ); my $db2 = get_test_db( $conn, $prefix . $time_prefix ); # getting a new db is not enough, must insert something into them first get_unique_collection( $db1, 'test' )->insert_one({ _id => 1 }); get_unique_collection( $db2, 'test' )->insert_one({ _id => 1 }); push @test_dbs, $db1, $db2; push @test_db_names, $db1->{name}, $db2->{name}; } my @all_names = $conn->database_names({ filter => { name => qr/^(foo|bar|baz)${\$time_prefix}/ } }); my @sorted_test_db_names = sort @test_db_names; is_deeply( \@all_names, \@sorted_test_db_names, "Got expected set of names" ); for my $db ( @test_dbs ) { $db->drop; } }; done_testing;