class TestCheckZookeeper(unittest.TestCase): def setUp(self): self.zk = ZooKeeperServer() def test_parse_valid_line(self): key, value = self.zk._parse_line('something\t5') self.assertEqual(key, 'something') self.assertEqual(value, 5) def test_parse_line_raises_exception_on_invalid_output(self): invalid_lines = ['something', '', 'a\tb\tc', '\t1'] for line in invalid_lines: self.assertRaises(ValueError, self.zk._parse_line, line) def test_parser_on_valid_output(self): data = self.zk._parse(ZK_MNTR_OUTPUT) self.assertEqual(len(data), 14) self.assertEqual(data['zk_znode_count'], 4) def test_parse_should_ignore_invalid_lines(self): data = self.zk._parse(ZK_MNTR_OUTPUT_WITH_BROKEN_LINES) self.assertEqual(len(data), 2) def test_parse_stat_valid_output(self): data = self.zk._parse_stat(ZK_STAT_OUTPUT) result = { 'zk_version': '3.3.0-943314, built on 05/11/2010 22:20 GMT', 'zk_min_latency': 0, 'zk_avg_latency': 40, 'zk_max_latency': 121, 'zk_packets_received': 11, 'zk_packets_sent': 10, 'zk_server_state': 'follower', 'zk_znode_count': 4 } for k, v in result.iteritems(): self.assertEqual(v, data[k]) def test_recv_valid_output(self): zk = create_server_mock(SocketMock) data = zk.get_stats() self.assertEqual(len(data), 14) self.assertEqual(data['zk_znode_count'], 4) def test_socket_unable_to_connect(self): zk = create_server_mock(UnableToConnectSocketMock) self.assertRaises(socket.error, zk.get_stats) def test_use_stat_cmd_if_mntr_is_not_available(self): zk = create_server_mock(ZK33xSocketMock) data = zk.get_stats() self.assertEqual(data['zk_version'], '3.3.0-943314, built on 05/11/2010 22:20 GMT')
class TestCheckZookeeper(unittest.TestCase): def setUp(self): self.zk = ZooKeeperServer() def test_parse_valid_line(self): key, value = self.zk._parse_line('something\t5') self.assertEqual(key, 'something') self.assertEqual(value, 5) def test_parse_line_raises_exception_on_invalid_output(self): invalid_lines = ['something', '', 'a\tb\tc', '\t1'] for line in invalid_lines: self.assertRaises(ValueError, self.zk._parse_line, line) def test_parser_on_valid_output(self): data = self.zk._parse(ZK_MNTR_OUTPUT) self.assertEqual(len(data), 14) self.assertEqual(data['zk_znode_count'], 4) def test_parse_should_ignore_invalid_lines(self): data = self.zk._parse(ZK_MNTR_OUTPUT_WITH_BROKEN_LINES) self.assertEqual(len(data), 2) def test_parse_stat_valid_output(self): data = self.zk._parse_stat(ZK_STAT_OUTPUT) result = { 'zk_version' : '3.3.0-943314, built on 05/11/2010 22:20 GMT', 'zk_min_latency' : 0, 'zk_avg_latency' : 40, 'zk_max_latency' : 121, 'zk_packets_received': 11, 'zk_packets_sent': 10, 'zk_server_state': 'follower', 'zk_znode_count': 4 } for k, v in result.iteritems(): self.assertEqual(v, data[k]) def test_recv_valid_output(self): zk = create_server_mock(SocketMock) data = zk.get_stats() self.assertEqual(len(data), 14) self.assertEqual(data['zk_znode_count'], 4) def test_socket_unable_to_connect(self): zk = create_server_mock(UnableToConnectSocketMock) self.assertRaises(socket.error, zk.get_stats) def test_use_stat_cmd_if_mntr_is_not_available(self): zk = create_server_mock(ZK33xSocketMock) data = zk.get_stats() self.assertEqual(data['zk_version'], '3.3.0-943314, built on 05/11/2010 22:20 GMT')
def metric_handler(name): if time.time() - ZK_LAST_METRICS['time'] > TIME_BETWEEN_QUERIES: zk = ZooKeeperServer(metric_handler.host, metric_handler.port, 5) try: metric_handler.info = zk.get_stats() except Exception, e: print >>sys.stderr, e metric_handler.info = {}
def get_cluster_stats(servers): """ Get stats for all the servers in the cluster """ stats = {} for host, port in servers: try: zk = ZooKeeperServer(host, port) stats["%s:%s" % (host, port)] = zk.get_stats() except socket.error, e: # ignore because the cluster can still work even # if some servers fail completely # this error should be also visible in a variable # exposed by the server in the statistics logging.info('unable to connect to server '\ '"%s" on port "%s"' % (host, port))
def setUp(self): self.zk = ZooKeeperServer()