def test_when_client_is_removed_the_socket_batch_client_socket_is_not_closed(self): client = Client("localhost") batch_client = client.batch_client() sock = batch_client._socket del client gc.collect() self.assertFalse(sock.closed)
def test_context_manager_creates_batch_client(self): client = Client("localhost") client._socket = self.mock_socket with client.batch_client() as batch_client: self.assertIsInstance(batch_client, BatchClient) self.assertGreater(batch_client.batch_size, 0) self.assertEqual(client.host, batch_client.host) self.assertEqual(client.port, batch_client.port) self.assertEqual( client._remote_address, batch_client._remote_address ) self.assertEqual( client._socket, batch_client._socket ) with client.batch_client(2048) as batch_client: self.assertEqual(batch_client.batch_size, 2048)
def test_context_manager_flushes_metrics(self): client = Client("localhost", prefix="_.") client._socket = self.mock_socket with client.batch_client() as batch_client: batch_client.increment("event", rate=0.5) batch_client.timing("query", 1200) batch_client.decrement("event", rate=0.2) self.assertEqual(self.mock_sendto.call_count, 0) expected_calls = [ mock.call(bytearray("_.event:1|c|@0.5\n_.query:1200|ms\n".encode()), ("127.0.0.2", 8125)), ] self.assertEqual(self.mock_sendto.mock_calls, expected_calls)
def test_context_manager_flushes_metrics_when_context_ends(self): client = Client("localhost", prefix="_.") client._socket = self.mock_socket with client.batch_client() as batch_client: batch_client.increment("event", rate=0.5) batch_client.timing("query", 1200) batch_client.decrement("event", rate=0.2) self.assertEqual(self.mock_sendto.call_count, 0) expected_calls = [ mock.call(bytearray("_.event:1|c|@0.5\n_.query:1200|ms\n".encode()), ("127.0.0.2", 8125)), ] self.assertEqual(self.mock_sendto.mock_calls, expected_calls)
def test_context_manager_flushes_metrics_when_context_raises_errors(self): client = Client("localhost", prefix="_.") client._socket = self.mock_socket with self.assertRaises(RuntimeError): with client.batch_client() as batch_client: batch_client.increment("event", rate=0.5) batch_client.timing("query", 300) self.assertEqual(self.mock_sendto.call_count, 0) raise RuntimeError('mock error') batch_client.timing("not.there", 300) expected_calls = [ mock.call(bytearray("_.event:1|c|@0.5\n_.query:300|ms\n".encode()), ("127.0.0.2", 8125)), ] self.assertEqual(self.mock_sendto.mock_calls, expected_calls)