use Test;
BEGIN { plan tests => 2 }
use Spread::Session;
use Data::Dumper;
if (defined eval { require Log::Channel }) {
disable Log::Channel "Spread::Session";
}
my $group = "session_test";
if (fork) {
# parent; this is the sender
sleep(1);
my $session = new Spread::Session (
MESSAGE_CALLBACK => sub {
my ($container) = @_;
ok($container->{BODY} eq "response!");
},
TIMEOUT => 2,
);
$session->publish($group, "test message");
$session->receive;
} else {
# child; this is the listener
my $done = 0;
my $session = new Spread::Session(
MESSAGE_CALLBACK => sub {
my ($container) = @_;
$container->{SESSION}->publish($container->{SENDER},
"response!");
$done++;
},
TIMEOUT => 2,
);
$session->subscribe($group);
while (!$done) {
$session->receive;
}
exit;
}
ok(1);