2012-06-22 2 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

1 초 ... 빨리 편집하십시오. 미안해. – thealexbaron

+0

내가하는 일 : $ mysqld-> stop (9); msyqld를 중지합니다. 누구든지 수용 가능한 해결책을 고려할 것입니까? – thealexbaron

답변

0

do {}를 추가하고 eval {} 안에 $ 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; 
}; 
관련 문제