@Test public void testPacketsMetrics() { // Given ... ServerStats serverStats = new ServerStats(providerMock); int incrementCount = 20; // When increment ... for (int i = 0; i < incrementCount; i++) { serverStats.incrementPacketsSent(); serverStats.incrementPacketsReceived(); serverStats.incrementPacketsReceived(); } // Then ... Assert.assertEquals(incrementCount, serverStats.getPacketsSent()); Assert.assertEquals(incrementCount*2, serverStats.getPacketsReceived()); // When reset ... serverStats.resetRequestCounters(); // Then ... assertAllPacketsZero(serverStats); }
@Override public String toString(){ StringBuilder sb = new StringBuilder(); sb.append("Latency min/avg/max: " + getMinLatency() + "/" + getAvgLatency() + "/" + getMaxLatency() + "\n"); sb.append("Received: " + getPacketsReceived() + "\n"); sb.append("Sent: " + getPacketsSent() + "\n"); sb.append("Connections: " + getNumAliveClientConnections() + "\n"); if (provider != null) { sb.append("Outstanding: " + getOutstandingRequests() + "\n"); sb.append("Zxid: 0x"+ Long.toHexString(getLastProcessedZxid())+ "\n"); } sb.append("Mode: " + getServerState() + "\n"); return sb.toString(); }
@Override public void commandRun() { if (!isZKServerRunning()) { pw.println(ZK_NOT_SERVING); } else { ServerStats serverStats = zkServer.serverStats(); serverStats.reset(); if (serverStats.getServerState().equals("leader")) { ((LeaderZooKeeperServer)zkServer).getLeader().getProposalStats().reset(); } pw.println("Server stats reset."); } } }
@Test public void testLatencyMetrics() { // Given ... ServerStats serverStats = new ServerStats(providerMock); // When incremented... Request fakeRequest = new Request(0, 0, 0, null, null, 0); serverStats.updateLatency(fakeRequest, fakeRequest.createTime + 1000); serverStats.updateLatency(fakeRequest, fakeRequest.createTime + 2000); // Then ... assertThat("Max latency check", 2000L, lessThanOrEqualTo(serverStats.getMaxLatency())); assertThat("Min latency check", 1000L, lessThanOrEqualTo(serverStats.getMinLatency())); Assert.assertEquals((double)1500, serverStats.getAvgLatency(), (double)200); // When reset... serverStats.resetLatency(); // Then ... assertAllLatencyZero(serverStats); }
@Test public void testReset() { // Given ... ServerStats serverStats = new ServerStats(providerMock); assertAllPacketsZero(serverStats); assertAllLatencyZero(serverStats); // When ... Request fakeRequest = new Request(0, 0, 0, null, null, 0); serverStats.incrementPacketsSent(); serverStats.incrementPacketsReceived(); serverStats.updateLatency(fakeRequest, fakeRequest.createTime + 1000); serverStats.reset(); // Then ... assertAllPacketsZero(serverStats); assertAllLatencyZero(serverStats); }
@Test public void testFsyncThresholdExceedMetrics() { // Given ... ServerStats serverStats = new ServerStats(providerMock); int incrementCount = 30; // When increment ... for (int i = 0; i < incrementCount; i++) { serverStats.incrementFsyncThresholdExceedCount(); } // Then ... Assert.assertEquals(incrementCount, serverStats.getFsyncThresholdExceedCount()); // When reset ... serverStats.resetFsyncThresholdExceedCount(); // Then ... assertFsyncThresholdExceedCountZero(serverStats); }
private void assertAllLatencyZero(ServerStats serverStats) { Assert.assertEquals(0L, serverStats.getMaxLatency()); Assert.assertEquals(0L, serverStats.getMinLatency()); Assert.assertEquals((double)0, serverStats.getAvgLatency(), (double)0.00001); }
pw.print(serverStats.toString()); pw.print("Node count: "); pw.println(zkServer.getZKDatabase().getNodeCount()); if (serverStats.getServerState().equals("leader")) { Leader leader = ((LeaderZooKeeperServer)zkServer).getLeader(); BufferStats proposalStats = leader.getProposalStats();
private void assertAllPacketsZero(ServerStats serverStats) { Assert.assertEquals(0L, serverStats.getPacketsSent()); Assert.assertEquals(0L, serverStats.getPacketsReceived()); }
/** * Creates a ZooKeeperServer instance. Nothing is setup, use the setX * methods to prepare the instance (eg datadir, datalogdir, ticktime, * builder, etc...) * * @throws IOException */ public ZooKeeperServer() { serverStats = new ServerStats(this); listener = new ZooKeeperServerListenerImpl(this); }
synchronized public void resetMaxLatency(){ maxLatency = getMinLatency(); } synchronized public void incrementPacketsReceived() {
public void testSyncThresholdExceedCount() throws IOException { // Given ... // Set threshold to -1, as after the first commit it takes 0ms to commit to disk. java.lang.System.setProperty(FileTxnLog.ZOOKEEPER_FSYNC_WARNING_THRESHOLD_MS_PROPERTY, "-1"); ServerStats.Provider providerMock = mock(ServerStats.Provider.class); ServerStats serverStats = new ServerStats(providerMock); File logDir = ClientBase.createTmpDir(); FileTxnLog fileTxnLog = new FileTxnLog(logDir); fileTxnLog.setServerStats(serverStats); // Verify serverStats is 0 before any commit Assert.assertEquals(0L, serverStats.getFsyncThresholdExceedCount()); // When ... for (int i = 0; i < 50; i++) { fileTxnLog.append(new TxnHeader(1, 1, 1, 1, ZooDefs.OpCode.create), new CreateTxn("/testFsyncThresholdCountIncreased", new byte[]{}, ZooDefs.Ids.OPEN_ACL_UNSAFE, false, 0)); fileTxnLog.commit(); // only 1 commit, otherwise it will be flaky // Then ... verify serverStats is updated to the number of commits (as threshold is set to 0) Assert.assertEquals((long) i + 1 , serverStats.getFsyncThresholdExceedCount()); } }
protected void packetReceived(long bytes) { incrPacketsReceived(); ServerStats serverStats = serverStats(); if (serverStats != null) { serverStats().incrementPacketsReceived(); } ServerMetrics.BYTES_RECEIVED_COUNT.add(bytes); }
protected void packetSent() { incrPacketsSent(); ServerStats serverStats = serverStats(); if (serverStats != null) { serverStats.incrementPacketsSent(); } }
public long getPacketsReceived() { return zks.serverStats().getPacketsReceived(); }
public long getPacketsSent() { return zks.serverStats().getPacketsSent(); }
public long getMaxRequestLatency() { return zks.serverStats().getMaxLatency(); }
public double getAvgRequestLatency() { return zks.serverStats().getAvgLatency(); }
@Override public CommandResponse run(ZooKeeperServer zkServer, Map<String, String> kwargs) { CommandResponse response = initializeResponse(); zkServer.serverStats().reset(); return response; } }
pw.print(serverStats.toString()); pw.print("Node count: "); pw.println(zkServer.getZKDatabase().getNodeCount()); if (serverStats.getServerState().equals("leader")) { Leader leader = ((LeaderZooKeeperServer)zkServer).getLeader(); ProposalStats proposalStats = leader.getProposalStats();