Skip to content

Commit

Permalink
allegro-internal/flex-roadmap#601 Added test to check metric value
Browse files Browse the repository at this point in the history
  • Loading branch information
nastassia-dailidava committed Apr 26, 2024
1 parent f64e072 commit ec0e58b
Showing 1 changed file with 13 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,12 @@ import java.util.stream.IntStream
internal class ClusterCircuitBreakerDefaultSettingsTest {

companion object {
const val maxPending = 2
private val properties = mapOf(
"envoy-control.envoy.snapshot.egress.commonHttp.circuitBreakers.defaultThreshold" to Threshold("DEFAULT").also {
it.maxConnections = 1
it.maxPendingRequests = 2
it.maxRequests = 3
it.maxPendingRequests = maxPending
it.maxRequests = 1
it.maxRetries = 4
},
"envoy-control.envoy.snapshot.egress.commonHttp.circuitBreakers.highThreshold" to Threshold("HIGH").also {
Expand Down Expand Up @@ -74,7 +75,7 @@ internal class ClusterCircuitBreakerDefaultSettingsTest {
val remainingRqMetric = envoy.container.admin().statValue("cluster.echo.circuit_breakers.default.remaining_rq")

// then
assertThat(maxRequestsSetting).isEqualTo(3)
assertThat(maxRequestsSetting).isEqualTo(1)
assertThat(maxRetriesSetting).isEqualTo(8)
assertThat(remainingPendingMetric).isNotNull()
assertThat(remainingRqMetric).isNotNull()
Expand All @@ -88,32 +89,30 @@ internal class ClusterCircuitBreakerDefaultSettingsTest {
assertThat(response).isOk().isFrom(service)
}
val latch = CountDownLatch(1)
val expectedRemainingPending = "1"
val callTask = Callable {
envoy2.egressOperations.callService("echo")
true
}
val checkTask = Callable {
if (isValueDecreasedTo(expectedRemainingPending)) {
if (pendingRqLessThan(maxPending)) {
latch.countDown()
}
true
}
val rqNum = 5
val rqNum = 10
val callableTasks: ArrayList<Callable<Boolean>> = ArrayList()
IntStream.of(rqNum).forEach {
IntStream.range(0, rqNum).forEach {
callableTasks.add(callTask)
callableTasks.add(checkTask)
}

val invokeAll = Executors.newFixedThreadPool(2 * rqNum).invokeAll(callableTasks)
untilAsserted { invokeAll.all { it.isDone } }
assertThat(latch.await(1, TimeUnit.SECONDS)).isTrue()
val executor = Executors.newFixedThreadPool(2 * rqNum)
executor.invokeAll(callableTasks)
assertThat(latch.await(2, TimeUnit.SECONDS)).isTrue()
executor.shutdown()
}

private fun isValueDecreasedTo(value: String) =
private fun pendingRqLessThan(value: Int) =
envoy2.container.admin().statValue("cluster.echo.circuit_breakers.default.remaining_pending")
?.let {
it == value
} ?: false
?.let { it.toIntOrNull() != value } ?: false
}

0 comments on commit ec0e58b

Please sign in to comment.