From 9ddd5848312cbec95a87611c96b41ea452dbb319 Mon Sep 17 00:00:00 2001 From: Francis Dong Date: Thu, 29 Jun 2023 11:28:47 +0800 Subject: [PATCH] support rejecting all requests by ratelimit --- .../main/java/com/fizzgate/stats/ResourceConfig.java | 8 ++++---- .../stats/ratelimit/ResourceRateLimitConfig.java | 4 ++-- .../com/fizzgate/proxy/CallbackServiceTests.java | 3 ++- .../test/java/com/fizzgate/stats/FlowStatTests.java | 12 ++++++------ 4 files changed, 14 insertions(+), 13 deletions(-) diff --git a/fizz-core/src/main/java/com/fizzgate/stats/ResourceConfig.java b/fizz-core/src/main/java/com/fizzgate/stats/ResourceConfig.java index 8c2b22f..651a185 100644 --- a/fizz-core/src/main/java/com/fizzgate/stats/ResourceConfig.java +++ b/fizz-core/src/main/java/com/fizzgate/stats/ResourceConfig.java @@ -46,14 +46,14 @@ public class ResourceConfig { // Flow control rule //--------------------------------------------------------------------- /** - * Maximum concurrent request, zero or negative for no limit + * Maximum concurrent request, negative for no limit */ - private long maxCon; + private long maxCon = -1L; /** - * Maximum QPS, zero or negative for no limit + * Maximum QPS, negative for no limit */ - private long maxQPS; + private long maxQPS = -1L; //--------------------------------------------------------------------- diff --git a/fizz-core/src/main/java/com/fizzgate/stats/ratelimit/ResourceRateLimitConfig.java b/fizz-core/src/main/java/com/fizzgate/stats/ratelimit/ResourceRateLimitConfig.java index 9eaf39b..24453e1 100644 --- a/fizz-core/src/main/java/com/fizzgate/stats/ratelimit/ResourceRateLimitConfig.java +++ b/fizz-core/src/main/java/com/fizzgate/stats/ratelimit/ResourceRateLimitConfig.java @@ -63,9 +63,9 @@ public class ResourceRateLimitConfig { public byte type; - public long qps; + public long qps = -1L; - public long concurrents; + public long concurrents = -1L; public String responseType; diff --git a/fizz-core/src/test/java/com/fizzgate/proxy/CallbackServiceTests.java b/fizz-core/src/test/java/com/fizzgate/proxy/CallbackServiceTests.java index b0e16e4..1327577 100644 --- a/fizz-core/src/test/java/com/fizzgate/proxy/CallbackServiceTests.java +++ b/fizz-core/src/test/java/com/fizzgate/proxy/CallbackServiceTests.java @@ -23,6 +23,7 @@ import com.fizzgate.util.ReflectionUtils; import reactor.core.publisher.Mono; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Collections; @@ -62,7 +63,7 @@ public class CallbackServiceTests { HttpHeaders headers = new HttpHeaders(); headers.add("h1", "v1"); - DataBuffer body = null; + String body = null; CallbackConfig callbackConfig = new CallbackConfig(); callbackConfig.receivers = new ArrayList<>(); diff --git a/fizz-core/src/test/java/com/fizzgate/stats/FlowStatTests.java b/fizz-core/src/test/java/com/fizzgate/stats/FlowStatTests.java index 0b797cc..95ac803 100644 --- a/fizz-core/src/test/java/com/fizzgate/stats/FlowStatTests.java +++ b/fizz-core/src/test/java/com/fizzgate/stats/FlowStatTests.java @@ -115,8 +115,8 @@ public class FlowStatTests { // Note: use different resource ID to avoid being affected by previous test data FlowRuleCase c5 = new FlowRuleCase(); - c5.resourceConfigs.add(new ResourceConfig("_global5", 0, 0)); - c5.resourceConfigs.add(new ResourceConfig("service5", 0, 0)); + c5.resourceConfigs.add(new ResourceConfig("_global5", -1L, -1L)); + c5.resourceConfigs.add(new ResourceConfig("service5", -1L, -1L)); c5.resourceExpects.add(new ResourceExpect(c5.totalReqs, c5.totalReqs, c5.totalReqs, 0)); c5.resourceExpects.add(new ResourceExpect(c5.totalReqs, c5.totalReqs, c5.totalReqs, 0)); c5.expectResult = IncrRequestResult.success(); @@ -124,8 +124,8 @@ public class FlowStatTests { // Note: use different resource ID to avoid being affected by previous test data FlowRuleCase c6 = new FlowRuleCase(); - c6.resourceConfigs.add(new ResourceConfig("_global6", 20, 0)); - c6.resourceConfigs.add(new ResourceConfig("service6", 20, 0)); + c6.resourceConfigs.add(new ResourceConfig("_global6", 20, -1L)); + c6.resourceConfigs.add(new ResourceConfig("service6", 20, -1L)); c6.resourceExpects.add(new ResourceExpect(20, 20, 20, c6.totalReqs - 20)); c6.resourceExpects.add(new ResourceExpect(20, 20, 20, 0)); c6.expectResult = IncrRequestResult.block("_global6", BlockType.CONCURRENT_REQUEST); @@ -133,8 +133,8 @@ public class FlowStatTests { // Note: use different resource ID to avoid being affected by previous test data FlowRuleCase c7 = new FlowRuleCase(); - c7.resourceConfigs.add(new ResourceConfig("_global7", 0, 0)); - c7.resourceConfigs.add(new ResourceConfig("service7", 0, 20)); + c7.resourceConfigs.add(new ResourceConfig("_global7", -1L, -1L)); + c7.resourceConfigs.add(new ResourceConfig("service7", -1L, 20)); c7.resourceExpects.add(new ResourceExpect(20, 20, 20, 0)); c7.resourceExpects.add(new ResourceExpect(20, 20, 20, c7.totalReqs - 20)); c7.expectResult = IncrRequestResult.block("service7", BlockType.QPS);