EV-Pg
view release on metacpan or search on metacpan
t/08_features.t view on Meta::CPAN
ok($done, 'connect_params: connected and queried');
$pg->finish if $pg && $pg->is_connected;
}
# --- connect_params reset ---
{
my $params = EV::Pg->conninfo_parse($conninfo);
my $reset_done;
my $pg;
$pg = EV::Pg->new(
conninfo_params => $params,
on_error => sub { diag "Error: $_[0]"; EV::break },
);
$pg->on_connect(sub {
if (!$reset_done) {
$reset_done = 1;
$pg->on_connect(sub {
$pg->query("select 1", sub {
my ($rows, $err) = @_;
ok(!$err, 'connect_params reset: query after reset ok');
is($rows->[0][0], '1', 'connect_params reset: correct result');
EV::break;
});
});
$pg->reset;
return;
}
});
my $t = EV::timer(5, 0, sub { EV::break });
EV::run;
ok($reset_done, 'connect_params reset: reset completed');
$pg->finish if $pg && $pg->is_connected;
}
# --- conninfo_parse ---
{
my $params = EV::Pg->conninfo_parse('host=localhost dbname=testdb port=5433');
is(ref $params, 'HASH', 'conninfo_parse: returns hashref');
is($params->{host}, 'localhost', 'conninfo_parse: host');
is($params->{dbname}, 'testdb', 'conninfo_parse: dbname');
is($params->{port}, '5433', 'conninfo_parse: port');
}
# --- conninfo_parse with URI ---
{
my $params = EV::Pg->conninfo_parse('postgresql://user@host:5434/mydb');
is(ref $params, 'HASH', 'conninfo_parse URI: returns hashref');
is($params->{host}, 'host', 'conninfo_parse URI: host');
is($params->{dbname}, 'mydb', 'conninfo_parse URI: dbname');
}
# --- disconnected accessor tests for new methods ---
{
my $pg = EV::Pg->new(on_error => sub {});
is($pg->connection_needs_password, 0, 'connection_needs_password: 0 when not connected');
ok(!defined $pg->hostaddr, 'hostaddr: undef when not connected');
ok(!defined $pg->ssl_attribute_names, 'ssl_attribute_names: undef when not connected');
is($pg->protocol_version, 0, 'protocol_version: 0 when not connected');
}
# --- keep_alive ---
{
my $pg = EV::Pg->new(on_error => sub {});
is($pg->keep_alive, 0, 'keep_alive: default off');
$pg->keep_alive(1);
is($pg->keep_alive, 1, 'keep_alive: set on');
$pg->keep_alive(0);
is($pg->keep_alive, 0, 'keep_alive: set off');
}
# keep_alive via constructor
{
my $notified;
my $pg;
$pg = EV::Pg->new(
conninfo => $conninfo,
keep_alive => 1,
on_notify => sub {
$notified = 1;
EV::break;
},
on_connect => sub {
is($pg->keep_alive, 1, 'keep_alive: set via constructor');
$pg->query("listen ka_test", sub {
$pg->query("notify ka_test", sub {});
});
},
on_error => sub { diag "Error: $_[0]"; EV::break },
);
my $t = EV::timer(5, 0, sub { EV::break });
EV::run;
ok($notified, 'keep_alive: notification received');
$pg->finish if $pg && $pg->is_connected;
}
( run in 1.502 second using v1.01-cache-2.11-cpan-941387dca55 )