public void ConnectTimeout()
{
var unknownIp = Environment.GetEnvironmentVariable("NPGSQL_UNKNOWN_IP");
if (unknownIp == null)
TestUtil.IgnoreExceptOnBuildServer("NPGSQL_UNKNOWN_IP isn't defined and is required for connection timeout tests");
var csb = new NpgsqlConnectionStringBuilder(ConnectionString) {
Host = unknownIp,
Pooling = false,
Timeout = 2
};
using (var conn = new NpgsqlConnection(csb))
{
var sw = Stopwatch.StartNew();
Assert.That(() => conn.Open(), Throws.Exception.TypeOf<TimeoutException>());
Assert.That(sw.Elapsed.TotalMilliseconds, Is.GreaterThanOrEqualTo((csb.Timeout * 1000) - 100),
$"Timeout was supposed to happen after {csb.Timeout} seconds, but fired after {sw.Elapsed.TotalSeconds}");
Assert.That(conn.State, Is.EqualTo(ConnectionState.Closed));
}
}