test: Update test cases with new degrade mechanism in sentinel-demo-quarkus
Signed-off-by: Eric Zhao <sczyh16@gmail.com>
This commit is contained in:
parent
19db20f00d
commit
a5fe23ad63
|
|
@ -18,15 +18,16 @@ package com.alibaba.csp.sentinel.demo.quarkus;
|
||||||
import com.alibaba.csp.sentinel.slots.block.RuleConstant;
|
import com.alibaba.csp.sentinel.slots.block.RuleConstant;
|
||||||
import com.alibaba.csp.sentinel.slots.block.degrade.DegradeRule;
|
import com.alibaba.csp.sentinel.slots.block.degrade.DegradeRule;
|
||||||
import com.alibaba.csp.sentinel.slots.block.degrade.DegradeRuleManager;
|
import com.alibaba.csp.sentinel.slots.block.degrade.DegradeRuleManager;
|
||||||
|
import com.alibaba.csp.sentinel.slots.block.degrade.circuitbreaker.CircuitBreakerStrategy;
|
||||||
import com.alibaba.csp.sentinel.slots.block.flow.FlowRule;
|
import com.alibaba.csp.sentinel.slots.block.flow.FlowRule;
|
||||||
import com.alibaba.csp.sentinel.slots.block.flow.FlowRuleManager;
|
import com.alibaba.csp.sentinel.slots.block.flow.FlowRuleManager;
|
||||||
import com.alibaba.csp.sentinel.slots.system.SystemRule;
|
|
||||||
import com.alibaba.csp.sentinel.slots.system.SystemRuleManager;
|
|
||||||
import io.quarkus.runtime.StartupEvent;
|
import io.quarkus.runtime.StartupEvent;
|
||||||
import org.jboss.logging.Logger;
|
import org.jboss.logging.Logger;
|
||||||
|
|
||||||
import javax.enterprise.context.ApplicationScoped;
|
import javax.enterprise.context.ApplicationScoped;
|
||||||
import javax.enterprise.event.Observes;
|
import javax.enterprise.event.Observes;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -39,31 +40,28 @@ public class AppLifecycleBean {
|
||||||
|
|
||||||
void onStart(@Observes StartupEvent ev) {
|
void onStart(@Observes StartupEvent ev) {
|
||||||
LOGGER.info("The application is starting...");
|
LOGGER.info("The application is starting...");
|
||||||
FlowRule rule = new FlowRule()
|
|
||||||
.setCount(1)
|
|
||||||
.setGrade(RuleConstant.FLOW_GRADE_QPS)
|
|
||||||
.setResource("GET:/hello/txt")
|
|
||||||
.setLimitApp("default")
|
|
||||||
.as(FlowRule.class);
|
|
||||||
FlowRuleManager.loadRules(Arrays.asList(rule));
|
|
||||||
|
|
||||||
SystemRule systemRule = new SystemRule();
|
// Only for test here. Actually it's recommended to configure rules via data-source.
|
||||||
systemRule.setLimitApp("default");
|
FlowRule rule1 = new FlowRule()
|
||||||
systemRule.setAvgRt(3000);
|
.setCount(1)
|
||||||
SystemRuleManager.loadRules(Arrays.asList(systemRule));
|
.setGrade(RuleConstant.FLOW_GRADE_QPS)
|
||||||
|
.setResource("GET:/hello/txt")
|
||||||
|
.setLimitApp("default")
|
||||||
|
.as(FlowRule.class);
|
||||||
|
FlowRule rule2 = new FlowRule("greeting2")
|
||||||
|
.setCount(1)
|
||||||
|
.setGrade(RuleConstant.FLOW_GRADE_QPS)
|
||||||
|
.as(FlowRule.class);
|
||||||
|
FlowRuleManager.loadRules(Arrays.asList(rule1, rule2));
|
||||||
|
|
||||||
DegradeRule degradeRule1 = new DegradeRule("greeting1")
|
DegradeRule degradeRule1 = new DegradeRule("greeting1")
|
||||||
.setCount(1)
|
.setCount(1)
|
||||||
.setGrade(RuleConstant.DEGRADE_GRADE_EXCEPTION_COUNT)
|
.setGrade(CircuitBreakerStrategy.ERROR_COUNT.getType())
|
||||||
.setTimeWindow(10)
|
.setTimeWindow(5)
|
||||||
.setMinRequestAmount(1);
|
.setStatIntervalMs(10000)
|
||||||
|
.setMinRequestAmount(1);
|
||||||
|
|
||||||
DegradeRule degradeRule2 = new DegradeRule("greeting2")
|
DegradeRuleManager.loadRules(Arrays.asList(degradeRule1));
|
||||||
.setCount(1)
|
|
||||||
.setGrade(RuleConstant.DEGRADE_GRADE_EXCEPTION_COUNT)
|
|
||||||
.setTimeWindow(10)
|
|
||||||
.setMinRequestAmount(1);
|
|
||||||
DegradeRuleManager.loadRules(Arrays.asList(degradeRule1, degradeRule2));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,7 @@ public class GreetingService {
|
||||||
return "hello " + name;
|
return "hello " + name;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String greetingFallback(String name) {
|
public String greetingFallback(String name, Throwable t) {
|
||||||
return "greetingFallback:" + name;
|
return "greetingFallback: " + t.getClass().getSimpleName();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,8 +15,8 @@
|
||||||
*/
|
*/
|
||||||
package com.alibaba.csp.sentinel.demo.quarkus;
|
package com.alibaba.csp.sentinel.demo.quarkus;
|
||||||
|
|
||||||
import com.alibaba.csp.sentinel.slots.block.flow.FlowRuleManager;
|
|
||||||
import com.alibaba.csp.sentinel.slots.clusterbuilder.ClusterBuilderSlot;
|
import com.alibaba.csp.sentinel.slots.clusterbuilder.ClusterBuilderSlot;
|
||||||
|
|
||||||
import io.quarkus.test.junit.QuarkusTest;
|
import io.quarkus.test.junit.QuarkusTest;
|
||||||
import org.junit.jupiter.api.AfterEach;
|
import org.junit.jupiter.api.AfterEach;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
@ -35,71 +35,60 @@ public class GreetingResourceTest {
|
||||||
@Test
|
@Test
|
||||||
public void testSentinelJaxRsQuarkusAdapter() {
|
public void testSentinelJaxRsQuarkusAdapter() {
|
||||||
given()
|
given()
|
||||||
.when().get("/hello/txt")
|
.when().get("/hello/txt")
|
||||||
.then()
|
.then()
|
||||||
.statusCode(200)
|
.statusCode(200)
|
||||||
.body(is("hello"));
|
.body(is("hello"));
|
||||||
given()
|
given()
|
||||||
.when().get("/hello/txt")
|
.when().get("/hello/txt")
|
||||||
.then()
|
.then()
|
||||||
.statusCode(javax.ws.rs.core.Response.Status.TOO_MANY_REQUESTS.getStatusCode())
|
.statusCode(javax.ws.rs.core.Response.Status.TOO_MANY_REQUESTS.getStatusCode())
|
||||||
.body(is("Blocked by Sentinel (flow limiting)"));
|
.body(is("Blocked by Sentinel (flow limiting)"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSentinelAnnotationQuarkusAdapter() {
|
public void testSentinelAnnotationQuarkusAdapter() {
|
||||||
given()
|
given()
|
||||||
.when().get("/hello/fallback/a")
|
.when().get("/hello/fallback/a")
|
||||||
.then()
|
.then()
|
||||||
.statusCode(200)
|
.statusCode(200)
|
||||||
.body(is("hello a"));
|
.body(is("hello a"));
|
||||||
given()
|
given()
|
||||||
.when().get("/hello/fallback/b")
|
.when().get("/hello/fallback/b")
|
||||||
.then()
|
.then()
|
||||||
.statusCode(200)
|
.statusCode(200)
|
||||||
.body(is("hello b"));
|
.body(is("hello b"));
|
||||||
given()
|
given()
|
||||||
.when().get("/hello/fallback/degrade")
|
.when().get("/hello/fallback/degrade")
|
||||||
.then()
|
.then()
|
||||||
.statusCode(200)
|
.statusCode(200)
|
||||||
.body(is("globalDefaultFallback, ex:test sentinel fallback"));
|
.body(is("globalDefaultFallback, ex:test sentinel fallback"));
|
||||||
given()
|
given()
|
||||||
.when().get("/hello/fallback/degrade")
|
.when().get("/hello/fallback/degrade")
|
||||||
.then()
|
.then()
|
||||||
.statusCode(200)
|
.statusCode(200)
|
||||||
.body(is("globalBlockHandler, ex:null"));
|
.body(is("globalDefaultFallback, ex:test sentinel fallback"));
|
||||||
given()
|
given()
|
||||||
.when().get("/hello/fallback/a")
|
.when().get("/hello/fallback/degrade")
|
||||||
.then()
|
.then()
|
||||||
.statusCode(200)
|
.statusCode(200)
|
||||||
.body(is("globalBlockHandler, ex:null"));
|
.body(is("globalBlockHandler, ex:null"));
|
||||||
|
given()
|
||||||
|
.when().get("/hello/fallback/a")
|
||||||
|
.then()
|
||||||
|
.statusCode(200)
|
||||||
|
.body(is("globalBlockHandler, ex:null"));
|
||||||
|
|
||||||
given()
|
given()
|
||||||
.when().get("/hello/fallback2/a")
|
.when().get("/hello/fallback2/a")
|
||||||
.then()
|
.then()
|
||||||
.statusCode(200)
|
.statusCode(200)
|
||||||
.body(is("hello a"));
|
.body(is("hello a"));
|
||||||
given()
|
given()
|
||||||
.when().get("/hello/fallback2/b")
|
.when().get("/hello/fallback2/b")
|
||||||
.then()
|
.then()
|
||||||
.statusCode(200)
|
.statusCode(200)
|
||||||
.body(is("hello b"));
|
.body(is("greetingFallback: FlowException"));
|
||||||
given()
|
|
||||||
.when().get("/hello/fallback2/degrade")
|
|
||||||
.then()
|
|
||||||
.statusCode(200)
|
|
||||||
.body(is("greetingFallback:degrade"));
|
|
||||||
given()
|
|
||||||
.when().get("/hello/fallback2/degrade")
|
|
||||||
.then()
|
|
||||||
.statusCode(200)
|
|
||||||
.body(is("greetingFallback:degrade"));
|
|
||||||
given()
|
|
||||||
.when().get("/hello/fallback2/a")
|
|
||||||
.then()
|
|
||||||
.statusCode(200)
|
|
||||||
.body(is("greetingFallback:a"));
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue