Skip to content

Commit

Permalink
Issue resilience4j#1335: numberOfSlowFailedCalls was not reset, when …
Browse files Browse the repository at this point in the history
…Measurement had to be reset (resilience4j#1342)
  • Loading branch information
jaemok committed Feb 24, 2021
1 parent a0ff85b commit 9ffb769
Show file tree
Hide file tree
Showing 3 changed files with 78 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ void reset() {
this.totalDurationInMillis = 0;
this.numberOfSlowCalls = 0;
this.numberOfFailedCalls = 0;
this.numberOfSlowFailedCalls = 0;
this.numberOfCalls = 0;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,12 @@ public void checkInitialBucketCreation() {
assertThat(snapshot.getTotalNumberOfCalls()).isEqualTo(0);
assertThat(snapshot.getNumberOfSuccessfulCalls()).isEqualTo(0);
assertThat(snapshot.getNumberOfFailedCalls()).isEqualTo(0);
assertThat(snapshot.getTotalNumberOfSlowCalls()).isEqualTo(0);
assertThat(snapshot.getNumberOfSlowSuccessfulCalls()).isEqualTo(0);
assertThat(snapshot.getNumberOfSlowFailedCalls()).isEqualTo(0);
assertThat(snapshot.getTotalDuration().toMillis()).isEqualTo(0);
assertThat(snapshot.getAverageDuration().toMillis()).isEqualTo(0);
assertThat(snapshot.getFailureRate()).isEqualTo(0);
}

@Test
Expand Down Expand Up @@ -178,4 +183,64 @@ public void testSlidingWindowMetrics() {
assertThat(snapshot.getAverageDuration().toMillis()).isEqualTo(100);
assertThat(snapshot.getFailureRate()).isEqualTo(0);
}

@Test
public void testSlidingWindowMetricsWithSlowCalls() {
FixedSizeSlidingWindowMetrics metrics = new FixedSizeSlidingWindowMetrics(2);

Snapshot snapshot = metrics.record(100, TimeUnit.MILLISECONDS, Metrics.Outcome.SLOW_ERROR);
assertThat(snapshot.getTotalNumberOfCalls()).isEqualTo(1);
assertThat(snapshot.getTotalNumberOfSlowCalls()).isEqualTo(1);
assertThat(snapshot.getNumberOfSuccessfulCalls()).isEqualTo(0);
assertThat(snapshot.getNumberOfFailedCalls()).isEqualTo(1);
assertThat(snapshot.getNumberOfSlowSuccessfulCalls()).isEqualTo(0);
assertThat(snapshot.getNumberOfSlowFailedCalls()).isEqualTo(1);
assertThat(snapshot.getTotalDuration().toMillis()).isEqualTo(100);
assertThat(snapshot.getAverageDuration().toMillis()).isEqualTo(100);
assertThat(snapshot.getFailureRate()).isEqualTo(100);

snapshot = metrics.record(100, TimeUnit.MILLISECONDS, Metrics.Outcome.SLOW_SUCCESS);
assertThat(snapshot.getTotalNumberOfCalls()).isEqualTo(2);
assertThat(snapshot.getTotalNumberOfSlowCalls()).isEqualTo(2);
assertThat(snapshot.getNumberOfSuccessfulCalls()).isEqualTo(1);
assertThat(snapshot.getNumberOfFailedCalls()).isEqualTo(1);
assertThat(snapshot.getNumberOfSlowSuccessfulCalls()).isEqualTo(1);
assertThat(snapshot.getNumberOfSlowFailedCalls()).isEqualTo(1);
assertThat(snapshot.getTotalDuration().toMillis()).isEqualTo(200);
assertThat(snapshot.getAverageDuration().toMillis()).isEqualTo(100);
assertThat(snapshot.getFailureRate()).isEqualTo(50);

snapshot = metrics.record(100, TimeUnit.MILLISECONDS, Metrics.Outcome.SUCCESS);
assertThat(snapshot.getTotalNumberOfCalls()).isEqualTo(2);
assertThat(snapshot.getTotalNumberOfSlowCalls()).isEqualTo(1);
assertThat(snapshot.getNumberOfSuccessfulCalls()).isEqualTo(2);
assertThat(snapshot.getNumberOfFailedCalls()).isEqualTo(0);
assertThat(snapshot.getNumberOfSlowSuccessfulCalls()).isEqualTo(1);
assertThat(snapshot.getNumberOfSlowFailedCalls()).isEqualTo(0);
assertThat(snapshot.getTotalDuration().toMillis()).isEqualTo(200);
assertThat(snapshot.getAverageDuration().toMillis()).isEqualTo(100);
assertThat(snapshot.getFailureRate()).isEqualTo(0);

snapshot = metrics.record(100, TimeUnit.MILLISECONDS, Metrics.Outcome.SUCCESS);
assertThat(snapshot.getTotalNumberOfCalls()).isEqualTo(2);
assertThat(snapshot.getTotalNumberOfSlowCalls()).isEqualTo(0);
assertThat(snapshot.getNumberOfSuccessfulCalls()).isEqualTo(2);
assertThat(snapshot.getNumberOfFailedCalls()).isEqualTo(0);
assertThat(snapshot.getNumberOfSlowSuccessfulCalls()).isEqualTo(0);
assertThat(snapshot.getNumberOfSlowFailedCalls()).isEqualTo(0);
assertThat(snapshot.getTotalDuration().toMillis()).isEqualTo(200);
assertThat(snapshot.getAverageDuration().toMillis()).isEqualTo(100);
assertThat(snapshot.getFailureRate()).isEqualTo(0);

snapshot = metrics.record(100, TimeUnit.MILLISECONDS, Metrics.Outcome.SUCCESS);
assertThat(snapshot.getTotalNumberOfCalls()).isEqualTo(2);
assertThat(snapshot.getTotalNumberOfSlowCalls()).isEqualTo(0);
assertThat(snapshot.getNumberOfSuccessfulCalls()).isEqualTo(2);
assertThat(snapshot.getNumberOfFailedCalls()).isEqualTo(0);
assertThat(snapshot.getNumberOfSlowSuccessfulCalls()).isEqualTo(0);
assertThat(snapshot.getNumberOfSlowFailedCalls()).isEqualTo(0);
assertThat(snapshot.getTotalDuration().toMillis()).isEqualTo(200);
assertThat(snapshot.getAverageDuration().toMillis()).isEqualTo(100);
assertThat(snapshot.getFailureRate()).isEqualTo(0);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -215,6 +215,18 @@ public void shouldClearSlidingTimeWindowMetrics() {
assertThat(snapshot.getTotalNumberOfCalls()).isEqualTo(1);
assertThat(snapshot.getNumberOfSuccessfulCalls()).isEqualTo(1);
assertThat(snapshot.getNumberOfFailedCalls()).isEqualTo(0);
assertThat(snapshot.getNumberOfSlowFailedCalls()).isEqualTo(0);
assertThat(snapshot.getTotalDuration().toMillis()).isEqualTo(100);
assertThat(snapshot.getAverageDuration().toMillis()).isEqualTo(100);
assertThat(snapshot.getFailureRate()).isEqualTo(0);

clock.advanceBySeconds(5);

snapshot = metrics.record(100, TimeUnit.MILLISECONDS, Metrics.Outcome.SUCCESS);
assertThat(snapshot.getTotalNumberOfCalls()).isEqualTo(1);
assertThat(snapshot.getNumberOfSuccessfulCalls()).isEqualTo(1);
assertThat(snapshot.getNumberOfFailedCalls()).isEqualTo(0);
assertThat(snapshot.getNumberOfSlowFailedCalls()).isEqualTo(0);
assertThat(snapshot.getTotalDuration().toMillis()).isEqualTo(100);
assertThat(snapshot.getAverageDuration().toMillis()).isEqualTo(100);
assertThat(snapshot.getFailureRate()).isEqualTo(0);
Expand Down

0 comments on commit 9ffb769

Please sign in to comment.