⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 env.t

📁 关于Berkelay数据库的共享源码
💻 T
字号:
#!./perl -wuse strict ;use lib 't' ;BEGIN {    $ENV{LC_ALL} = 'de_DE@euro';}use BerkeleyDB; use util ;print "1..53\n";my $Dfile = "dbhash.tmp";umask(0);my $version_major  = 0;{    # db version stuff    my ($major, $minor, $patch) = (0, 0, 0) ;    ok 1, my $VER = BerkeleyDB::DB_VERSION_STRING ;    ok 2, my $ver = BerkeleyDB::db_version($version_major, $minor, $patch) ;    ok 3, $VER eq $ver ;    ok 4, $version_major > 1 ;    ok 5, defined $minor ;    ok 6, defined $patch ;}{    # Check for invalid parameters    my $env ;    eval ' $env = new BerkeleyDB::Env( -Stupid => 3) ; ' ;    ok 7, $@ =~ /unknown key value\(s\) Stupid/  ;    eval ' $env = new BerkeleyDB::Env( -Bad => 2, -Home => "/tmp", -Stupid => 3) ; ' ;    ok 8, $@ =~ /unknown key value\(s\) (Bad,? |Stupid,? ){2}/  ;    eval ' $env = new BerkeleyDB::Env (-Config => {"fred" => " "} ) ; ' ;    ok 9, !$env ;    ok 10, $BerkeleyDB::Error =~ /^(illegal name-value pair|Invalid argument)/ ;    #print " $BerkeleyDB::Error\n";}{    # create a very simple environment    my $home = "./fred" ;    ok 11, my $lexD = new LexDir($home) ;    chdir "./fred" ;    ok 12, my $env = new BerkeleyDB::Env -Flags => DB_CREATE,					@StdErrFile;    chdir ".." ;    undef $env ;}{    # create an environment with a Home    my $home = "./fred" ;    ok 13, my $lexD = new LexDir($home) ;    ok 14, my $env = new BerkeleyDB::Env -Home => $home,    					 -Flags => DB_CREATE ;    undef $env ;}{    # make new fail.    my $home = "./not_there" ;    rmtree $home ;    ok 15, ! -d $home ;    my $env = new BerkeleyDB::Env -Home => $home, @StdErrFile,			          -Flags => DB_INIT_LOCK ;    ok 16, ! $env ;    ok 17,   $! != 0 || $^E != 0 ;    rmtree $home ;}{    # Config    use Cwd ;    my $cwd = cwd() ;    my $home = "$cwd/fred" ;    my $data_dir = "$home/data_dir" ;    my $log_dir = "$home/log_dir" ;    my $data_file = "data.db" ;    ok 18, my $lexD = new LexDir($home) ;    ok 19, -d $data_dir ? chmod 0777, $data_dir : mkdir($data_dir, 0777) ;    ok 20, -d $log_dir ? chmod 0777, $log_dir : mkdir($log_dir, 0777) ;    my $env = new BerkeleyDB::Env -Home   => $home, @StdErrFile,			      -Config => { DB_DATA_DIR => $data_dir,					   DB_LOG_DIR  => $log_dir					 },			      -Flags  => DB_CREATE|DB_INIT_TXN|DB_INIT_LOG|					 DB_INIT_MPOOL|DB_INIT_LOCK ;    ok 21, $env ;    ok 22, my $txn = $env->txn_begin() ;    my %hash ;    ok 23, tie %hash, 'BerkeleyDB::Hash', -Filename => $data_file,                                       -Flags     => DB_CREATE ,                                       -Env       => $env,                                       -Txn       => $txn  ;    $hash{"abc"} = 123 ;    $hash{"def"} = 456 ;    $txn->txn_commit() ;    untie %hash ;    undef $txn ;    undef $env ;}sub chkMsg{    my $prefix = shift || '';    $prefix = "$prefix: " if $prefix;    my $ErrMsg = join "|", map { "$prefix$_" }                        'illegal flag specified to (db_open|DB->open)',                       'DB_AUTO_COMMIT may not be specified in non-transactional environment';        return 1 if $BerkeleyDB::Error =~ /^$ErrMsg/ ;    warn "# $BerkeleyDB::Error\n" ;    return 0;}{    # -ErrFile with a filename    my $errfile = "./errfile" ;    my $home = "./fred" ;    ok 24, my $lexD = new LexDir($home) ;    my $lex = new LexFile $errfile ;    ok 25, my $env = new BerkeleyDB::Env( -ErrFile => $errfile,     					  -Flags => DB_CREATE,					  -Home   => $home) ;    my $db = new BerkeleyDB::Hash -Filename => $Dfile,			     -Env      => $env,			     -Flags    => -1;    ok 26, !$db ;    my $ErrMsg = join "'", 'illegal flag specified to (db_open|DB->open)',                           'DB_AUTO_COMMIT may not be specified in non-transactional environment';        ok 27, chkMsg();    ok 28, -e $errfile ;    my $contents = docat($errfile) ;    chomp $contents ;    ok 29, $BerkeleyDB::Error eq $contents ;    undef $env ;}{    # -ErrFile with a filehandle    use IO::File ;    my $errfile = "./errfile" ;    my $home = "./fred" ;    ok 30, my $lexD = new LexDir($home) ;    my $lex = new LexFile $errfile ;    my $fh = new IO::File ">$errfile" ;    ok 31, my $env = new BerkeleyDB::Env( -ErrFile => $fh,     					  -Flags => DB_CREATE,					  -Home   => $home) ;    my $db = new BerkeleyDB::Hash -Filename => $Dfile,			     -Env      => $env,			     -Flags    => -1;    ok 32, !$db ;    ok 33, chkMsg();    ok 34, -e $errfile ;    my $contents = docat($errfile) ;    chomp $contents ;    ok 35, $BerkeleyDB::Error eq $contents ;    undef $env ;}{    # -ErrPrefix    my $home = "./fred" ;    ok 36, my $lexD = new LexDir($home) ;    my $errfile = "./errfile" ;    my $lex = new LexFile $errfile ;    ok 37, my $env = new BerkeleyDB::Env( -ErrFile => $errfile,					-ErrPrefix => "PREFIX",    					  -Flags => DB_CREATE,					  -Home   => $home) ;    my $db = new BerkeleyDB::Hash -Filename => $Dfile,			     -Env      => $env,			     -Flags    => -1;    ok 38, !$db ;    ok 39, chkMsg('PREFIX');    ok 40, -e $errfile ;    my $contents = docat($errfile) ;    chomp $contents ;    ok 41, $BerkeleyDB::Error eq $contents ;    # change the prefix on the fly    my $old = $env->errPrefix("NEW ONE") ;    ok 42, $old eq "PREFIX" ;    $db = new BerkeleyDB::Hash -Filename => $Dfile,			     -Env      => $env,			     -Flags    => -1;    ok 43, !$db ;    ok 44, chkMsg('NEW ONE');    $contents = docat($errfile) ;    chomp $contents ;    ok 45, $contents =~ /$BerkeleyDB::Error$/ ;    undef $env ;}{    # test db_appexit    use Cwd ;    my $cwd = cwd() ;    my $home = "$cwd/fred" ;    my $data_dir = "$home/data_dir" ;    my $log_dir = "$home/log_dir" ;    my $data_file = "data.db" ;    ok 46, my $lexD = new LexDir($home);    ok 47, -d $data_dir ? chmod 0777, $data_dir : mkdir($data_dir, 0777) ;    ok 48, -d $log_dir ? chmod 0777, $log_dir : mkdir($log_dir, 0777) ;    my $env = new BerkeleyDB::Env -Home   => $home, @StdErrFile,			      -Config => { DB_DATA_DIR => $data_dir,					   DB_LOG_DIR  => $log_dir					 },			      -Flags  => DB_CREATE|DB_INIT_TXN|DB_INIT_LOG|					 DB_INIT_MPOOL|DB_INIT_LOCK ;    ok 49, $env ;    ok 50, my $txn_mgr = $env->TxnMgr() ;    ok 51, $env->db_appexit() == 0 ;}{    # attempt to open a new environment without DB_CREATE    # should fail with Berkeley DB 3.x or better.    my $home = "./fred" ;    ok 52, my $lexD = new LexDir($home) ;    chdir "./fred" ;    my $env = new BerkeleyDB::Env -Home => $home, -Flags => DB_CREATE ;    ok 53, $version_major == 2 ? $env : ! $env ;    # The test below is not portable -- the error message returned by    # $BerkeleyDB::Error is locale dependant.    #ok 54, $version_major == 2 ? 1     #                           : $BerkeleyDB::Error =~ /No such file or directory/ ;    #    or print "# BerkeleyDB::Error is $BerkeleyDB::Error\n";    chdir ".." ;    undef $env ;}# test -Verbose# test -Flags# db_value_set

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -