2012-06-22 24 views
0

我有這樣的腳本:測試:: mysqld的將不關閉mysqld的預期

#!/var/home/cherry/opt/perl 

use Test::More; 
use DBI; 
use Test::mysqld; 
use Data::Dumper; 

my $mysqld = Test::mysqld->new(
    base_dir => '/tmp/test_mysqls', 
    my_cnf => { 
     'skip-networking' => '', # no TCP socket 
    } 
) or plan skip_all => $Test::mysqld::errstr; 

my $dbh = DBI->connect(
    $mysqld->dsn(dbname => 'test'), 
); 

warn Dumper($mysqld); 

done_testing(); 

當我運行此,這裏的輸出我得到:

prove -lv t/test.t 
t/test.t .. $VAR1 = bless({ 
       '_owner_pid' => 21854, 
       'base_dir' => '/tmp/test_mysqls', 
       'pid' => 21918, 
       'mysql_install_db' => '/usr/bin/mysql_install_db', 
       'auto_start' => 2, 
       'my_cnf' => { 
           'tmpdir' => '/tmp/test_mysqls/tmp', 
           'pid-file' => '/tmp/test_mysqls/tmp/mysqld.pid', 
           'skip-networking' => '', 
           'datadir' => '/tmp/test_mysqls/var', 
           'socket' => '/tmp/test_mysqls/tmp/mysql.sock' 
          }, 
       'mysqld' => '/usr/sbin/mysqld' 
       }, 'Test::mysqld'); 

1..0 

測試從未完成。腳本永遠等待在換行符上,並且永遠不會退出 - 當我執行ps aux時,即使在執行ctrl + c之後,仍可以看到mysqld的實例正在運行。我甚至不知道從哪裏開始解決這個問題。任何提示?

+0

什麼是調用Data :: Dumper並打印出Test :: mysqld內容? – mob

+0

一秒鐘......讓我快速編輯。對不起'回合。 – thealexbaron

+0

如果我這樣做:$ mysqld-> stop(9);它會停止msyqld。有人會考慮一個可接受的解決方案嗎 – thealexbaron

回答

0

嘗試在eval {}中添加do {}並調用$ mysqld-> stop來關閉mysqld。

my $mysqld = Test::mysqld->new(
    base_dir => '/tmp/test_mysqls', 
    my_cnf => { 
     'skip-networking' => '', # no TCP socket 
    } 
) or do { 
    eval { $mysqld->stop }; 
    plan skip_all => $Test::mysqld::errstr; 
};