use t::share;
use Inferno::RegMgr;
use Inferno::RegMgr::TCP;
use Inferno::RegMgr::Service;
use Inferno::RegMgr::Monitor;
use Inferno::RegMgr::Lookup;
use Scalar::Util qw( weaken );
@CheckPoint = (
[ 'cb_add', 'srv1', {type=>'old',auth=>'none',role=>'devel'} ], 'cb_add: srv1 type old auth none role devel',
[ 'cb_add', 'srv2', {type=>'old',auth=>'none',role=>'prod'} ], 'cb_add: srv2 type old auth none role prod',
);
plan tests => @CheckPoint/2;
registry_start();
my $reg = Inferno::RegMgr::TCP->new({ host => '127.0.0.172' });
my $regmgr = Inferno::RegMgr->new( $reg );
my $srv1 = Inferno::RegMgr::Service->new({ name => 'srv1', attr => {
type => 'old',
auth => 'none',
role => 'devel',
} });
my $srv2 = Inferno::RegMgr::Service->new({ name => 'srv2', attr => {
type => 'old',
auth => 'infpk1',
role => 'prod',
} });
my $srv3 = Inferno::RegMgr::Service->new({ name => 'srv3', attr => {
type => 'new',
auth => 'infpk1',
role => 'prod',
} });
my $monitor = Inferno::RegMgr::Monitor->new({ cb_add => \&cb_add, attr => {
type => 'old',
auth => 'none',
} });
$regmgr->attach( $srv1 );
$regmgr->attach( $srv2 );
$regmgr->attach( $srv3 );
$regmgr->attach( $monitor );
my $t = EV::timer 5, 0, sub { die "timeout\n" };
EV::loop;
registry_stop();
sub cb_add {
my ($name, $attr) = @_;
&checkpoint;
if ($name eq 'srv1') {
$srv2->update({ auth => 'none' });
}
if ($name eq 'srv2') {
$regmgr->detach( $srv1 );
$t = EV::timer 1, 0, sub { EV::unloop };
}
}