public void Getting_sockets_in_parallel_will_create_a_new_socket() { // Arrange var pool = new ConnectionPool(_factory.Create); // Act var s1 = pool.GetSocket(); var s2 = pool.GetSocket(); // Assert Assert.AreEqual(2, _factory.Sockets.Count); }
public void Getting_sockets_sequentially_will_not_create_a_new_socket() { // Arrange var pool = new ConnectionPool(_factory.Create); // Act var s1 = pool.GetSocket(); s1.Dispose(); var s2 = pool.GetSocket(); // Assert Assert.AreEqual(1, _factory.Sockets.Count); }
public void Disposing_client_returns_socket_to_pool() { // Arrange var pool = new ConnectionPool(_factory.Create); // Act var client = new ClacksClient(pool); client.Dispose(); var s = pool.GetSocket(); // Assert Assert.AreEqual(1, _factory.Sockets.Count); }
public void Disposing_pool_socket_does_not_dispose_underlying_socket() { // Arrange var pool = new ConnectionPool(_factory.Create); // Act var s1 = pool.GetSocket(); s1.Dispose(); // Assert Assert.AreEqual(1, _factory.Sockets.Count); Assert.AreNotSame(_factory.Sockets[0], s1); Assert.AreEqual(0, _factory.Sockets[0].DisposeCalled); }
public void Getting_sockets_quickly_in_sequence_when_the_first_has_closed_will_return_closed_socket() { // Arrange var pool = new ConnectionPool(_factory.Create); // Act var s1 = pool.GetSocket(); s1.Dispose(); _factory.Sockets[0].Connected = false; var s2 = pool.GetSocket(); // Assert Assert.AreEqual(1, _factory.Sockets.Count); Assert.IsFalse(s2.Connected); }
public void Getting_sockets_slowly_in_sequence_when_the_first_has_closed_will_return_new_socket() { // Arrange var pool = new ConnectionPool(_factory.Create); pool.CheckInterval = TimeSpan.FromSeconds(1); // Act var s1 = pool.GetSocket(); s1.Dispose(); _factory.Sockets[0].Connected = false; Thread.Sleep(3000); var s2 = pool.GetSocket(); // Assert Assert.AreEqual(2, _factory.Sockets.Count); }