This is an automated email from the ASF dual-hosted git repository.
liubao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git
The following commit(s) were added to refs/heads/master by this push:
new 2d44592b2 [SCB-2723]governance handler allows user to define their own
key/bean (#3469)
2d44592b2 is described below
commit 2d44592b20cd162bb379d826d3d8a84748de2526
Author: liubao68 <[email protected]>
AuthorDate: Thu Nov 10 08:51:55 2022 +0800
[SCB-2723]governance handler allows user to define their own key/bean
(#3469)
---
.../governance/handler/BulkheadHandler.java | 6 +--
.../governance/handler/CircuitBreakerHandler.java | 16 +++----
.../handler/IdentifierRateLimitingHandler.java | 8 ++--
.../handler/InstanceBulkheadHandler.java | 8 ++--
.../handler/InstanceIsolationHandler.java | 18 ++++----
.../governance/handler/LoadBalanceHandler.java | 8 ++--
.../governance/handler/RateLimitingHandler.java | 6 +--
.../governance/handler/RetryHandler.java | 4 +-
.../governance/properties/BulkheadProperties.java | 4 ++
.../properties/CircuitBreakerProperties.java | 4 ++
.../properties/FaultInjectionProperties.java | 4 ++
.../properties/IdentifierRateLimitProperties.java | 4 ++
.../properties/InstanceBulkheadProperties.java | 4 ++
.../properties/InstanceIsolationProperties.java | 4 ++
.../properties/LoadBalanceProperties.java | 4 ++
.../governance/properties/MapperProperties.java | 2 +-
.../governance/properties/RateLimitProperties.java | 4 ++
.../governance/properties/RetryProperties.java | 4 ++
.../servicecomb/governance/FaultInjectionTest.java | 29 +++++++++++-
.../governance/GovernancePropertiesTest.java | 2 +-
.../apache/servicecomb/governance/MapperTest.java | 16 ++++++-
.../servicecomb/governance/MockConfiguration.java | 53 ++++++++++++++++++++++
governance/src/test/resources/application.yaml | 9 ++++
23 files changed, 180 insertions(+), 41 deletions(-)
diff --git
a/governance/src/main/java/org/apache/servicecomb/governance/handler/BulkheadHandler.java
b/governance/src/main/java/org/apache/servicecomb/governance/handler/BulkheadHandler.java
index 4b09cce00..3fa0e21db 100644
---
a/governance/src/main/java/org/apache/servicecomb/governance/handler/BulkheadHandler.java
+++
b/governance/src/main/java/org/apache/servicecomb/governance/handler/BulkheadHandler.java
@@ -42,7 +42,7 @@ public class BulkheadHandler extends
AbstractGovernanceHandler<Bulkhead, Bulkhea
@Override
protected String createKey(GovernanceRequest governanceRequest,
BulkheadPolicy policy) {
- return BulkheadProperties.MATCH_BULKHEAD_KEY + "." + policy.getName();
+ return bulkheadProperties.getConfigKey() + "." + policy.getName();
}
@Override
@@ -67,9 +67,9 @@ public class BulkheadHandler extends
AbstractGovernanceHandler<Bulkhead, Bulkhea
if (meterRegistry != null) {
TaggedBulkheadMetrics
.ofBulkheadRegistry(BulkheadMetricNames.custom()
-
.availableConcurrentCallsMetricName(BulkheadProperties.MATCH_BULKHEAD_KEY +
".available.concurrent.calls")
+
.availableConcurrentCallsMetricName(bulkheadProperties.getConfigKey() +
".available.concurrent.calls")
.maxAllowedConcurrentCallsMetricName(
- BulkheadProperties.MATCH_BULKHEAD_KEY +
".max.allowed.concurrent.calls").build(), registry)
+ bulkheadProperties.getConfigKey() +
".max.allowed.concurrent.calls").build(), registry)
.bindTo(meterRegistry);
}
return new DisposableBulkhead(key, registry, registry.bulkhead(key));
diff --git
a/governance/src/main/java/org/apache/servicecomb/governance/handler/CircuitBreakerHandler.java
b/governance/src/main/java/org/apache/servicecomb/governance/handler/CircuitBreakerHandler.java
index fccbbfd7c..0f75e7ea7 100644
---
a/governance/src/main/java/org/apache/servicecomb/governance/handler/CircuitBreakerHandler.java
+++
b/governance/src/main/java/org/apache/servicecomb/governance/handler/CircuitBreakerHandler.java
@@ -46,7 +46,7 @@ public class CircuitBreakerHandler extends
AbstractGovernanceHandler<CircuitBrea
@Override
protected String createKey(GovernanceRequest governanceRequest,
CircuitBreakerPolicy policy) {
- return CircuitBreakerProperties.MATCH_CIRCUITBREAKER_KEY + "." +
policy.getName();
+ return this.circuitBreakerProperties.getConfigKey() + "." +
policy.getName();
}
@Override
@@ -79,13 +79,13 @@ public class CircuitBreakerHandler extends
AbstractGovernanceHandler<CircuitBrea
if (meterRegistry != null) {
TaggedCircuitBreakerMetrics
.ofCircuitBreakerRegistry(CircuitBreakerMetricNames.custom()
-
.callsMetricName(CircuitBreakerProperties.MATCH_CIRCUITBREAKER_KEY + ".calls")
-
.notPermittedCallsMetricName(CircuitBreakerProperties.MATCH_CIRCUITBREAKER_KEY
+ ".not.permitted.calls")
-
.stateMetricName(CircuitBreakerProperties.MATCH_CIRCUITBREAKER_KEY + ".state")
-
.bufferedCallsMetricName(CircuitBreakerProperties.MATCH_CIRCUITBREAKER_KEY +
".buffered.calls")
-
.slowCallsMetricName(CircuitBreakerProperties.MATCH_CIRCUITBREAKER_KEY +
".slow.calls")
-
.failureRateMetricName(CircuitBreakerProperties.MATCH_CIRCUITBREAKER_KEY +
".failure.rate")
-
.slowCallRateMetricName(CircuitBreakerProperties.MATCH_CIRCUITBREAKER_KEY +
".slow.call.rate")
+ .callsMetricName(this.circuitBreakerProperties.getConfigKey() +
".calls")
+
.notPermittedCallsMetricName(this.circuitBreakerProperties.getConfigKey() +
".not.permitted.calls")
+ .stateMetricName(this.circuitBreakerProperties.getConfigKey() +
".state")
+
.bufferedCallsMetricName(this.circuitBreakerProperties.getConfigKey() +
".buffered.calls")
+
.slowCallsMetricName(this.circuitBreakerProperties.getConfigKey() +
".slow.calls")
+
.failureRateMetricName(this.circuitBreakerProperties.getConfigKey() +
".failure.rate")
+
.slowCallRateMetricName(this.circuitBreakerProperties.getConfigKey() +
".slow.call.rate")
.build(), circuitBreakerRegistry)
.bindTo(meterRegistry);
}
diff --git
a/governance/src/main/java/org/apache/servicecomb/governance/handler/IdentifierRateLimitingHandler.java
b/governance/src/main/java/org/apache/servicecomb/governance/handler/IdentifierRateLimitingHandler.java
index 8b704e4aa..e733d1d17 100644
---
a/governance/src/main/java/org/apache/servicecomb/governance/handler/IdentifierRateLimitingHandler.java
+++
b/governance/src/main/java/org/apache/servicecomb/governance/handler/IdentifierRateLimitingHandler.java
@@ -49,14 +49,14 @@ public class IdentifierRateLimitingHandler extends
LOGGER.info("identifier rate limiting is not properly configured,
identifier is empty.");
return null;
}
- return IdentifierRateLimitProperties.MATCH_RATE_LIMIT_KEY
+ return this.rateLimitProperties.getConfigKey()
+ "." + policy.getName()
+ "." + governanceRequest.getHeader(policy.getIdentifier());
}
@Override
protected void onConfigurationChanged(String key) {
- if (key.startsWith(IdentifierRateLimitProperties.MATCH_RATE_LIMIT_KEY)) {
+ if (key.startsWith(this.rateLimitProperties.getConfigKey())) {
for (String processorKey : processors.keySet()) {
if (processorKey.startsWith(key)) {
Disposable<RateLimiter> processor = processors.remove(processorKey);
@@ -93,8 +93,8 @@ public class IdentifierRateLimitingHandler extends
TaggedRateLimiterMetrics
.ofRateLimiterRegistry(RateLimiterMetricNames.custom()
.availablePermissionsMetricName(
- IdentifierRateLimitProperties.MATCH_RATE_LIMIT_KEY +
".available.permissions")
-
.waitingThreadsMetricName(IdentifierRateLimitProperties.MATCH_RATE_LIMIT_KEY +
".waiting.threads")
+ this.rateLimitProperties.getConfigKey() +
".available.permissions")
+
.waitingThreadsMetricName(this.rateLimitProperties.getConfigKey() +
".waiting.threads")
.build(),
rateLimiterRegistry)
.bindTo(meterRegistry);
diff --git
a/governance/src/main/java/org/apache/servicecomb/governance/handler/InstanceBulkheadHandler.java
b/governance/src/main/java/org/apache/servicecomb/governance/handler/InstanceBulkheadHandler.java
index 0f8e5d6b5..31e407434 100644
---
a/governance/src/main/java/org/apache/servicecomb/governance/handler/InstanceBulkheadHandler.java
+++
b/governance/src/main/java/org/apache/servicecomb/governance/handler/InstanceBulkheadHandler.java
@@ -43,7 +43,7 @@ public class InstanceBulkheadHandler extends
AbstractGovernanceHandler<Bulkhead,
@Override
protected String createKey(GovernanceRequest governanceRequest,
BulkheadPolicy policy) {
- return InstanceBulkheadProperties.MATCH_INSTANCE_BULKHEAD_KEY
+ return this.bulkheadProperties.getConfigKey()
+ "." + policy.getName()
+ "." + governanceRequest.getServiceName()
+ "." + governanceRequest.getInstanceId();
@@ -51,7 +51,7 @@ public class InstanceBulkheadHandler extends
AbstractGovernanceHandler<Bulkhead,
@Override
protected void onConfigurationChanged(String key) {
- if
(key.startsWith(InstanceBulkheadProperties.MATCH_INSTANCE_BULKHEAD_KEY)) {
+ if (key.startsWith(this.bulkheadProperties.getConfigKey())) {
for (String processorKey : processors.keySet()) {
if (processorKey.startsWith(key)) {
Disposable<Bulkhead> processor = processors.remove(processorKey);
@@ -92,9 +92,9 @@ public class InstanceBulkheadHandler extends
AbstractGovernanceHandler<Bulkhead,
TaggedBulkheadMetrics
.ofBulkheadRegistry(BulkheadMetricNames.custom()
.availableConcurrentCallsMetricName(
- InstanceBulkheadProperties.MATCH_INSTANCE_BULKHEAD_KEY +
".available.concurrent.calls")
+ this.bulkheadProperties.getConfigKey() +
".available.concurrent.calls")
.maxAllowedConcurrentCallsMetricName(
- InstanceBulkheadProperties.MATCH_INSTANCE_BULKHEAD_KEY +
".max.allowed.concurrent.calls").build(),
+ this.bulkheadProperties.getConfigKey() +
".max.allowed.concurrent.calls").build(),
registry)
.bindTo(meterRegistry);
}
diff --git
a/governance/src/main/java/org/apache/servicecomb/governance/handler/InstanceIsolationHandler.java
b/governance/src/main/java/org/apache/servicecomb/governance/handler/InstanceIsolationHandler.java
index 14ce46177..d9d194373 100644
---
a/governance/src/main/java/org/apache/servicecomb/governance/handler/InstanceIsolationHandler.java
+++
b/governance/src/main/java/org/apache/servicecomb/governance/handler/InstanceIsolationHandler.java
@@ -54,7 +54,7 @@ public class InstanceIsolationHandler extends
AbstractGovernanceHandler<CircuitB
@Override
protected String createKey(GovernanceRequest governanceRequest,
CircuitBreakerPolicy policy) {
- return InstanceIsolationProperties.MATCH_INSTANCE_ISOLATION_KEY
+ return this.instanceIsolationProperties.getConfigKey()
+ "." + policy.getName()
+ "." + governanceRequest.getServiceName()
+ "." + governanceRequest.getInstanceId();
@@ -62,7 +62,7 @@ public class InstanceIsolationHandler extends
AbstractGovernanceHandler<CircuitB
@Override
protected void onConfigurationChanged(String key) {
- if
(key.startsWith(InstanceIsolationProperties.MATCH_INSTANCE_ISOLATION_KEY)) {
+ if (key.startsWith(this.instanceIsolationProperties.getConfigKey())) {
for (String processorKey : processors.keySet()) {
if (processorKey.startsWith(key)) {
Disposable<CircuitBreaker> circuitBreaker =
processors.remove(processorKey);
@@ -110,14 +110,14 @@ public class InstanceIsolationHandler extends
AbstractGovernanceHandler<CircuitB
if (meterRegistry != null) {
TaggedCircuitBreakerMetrics
.ofCircuitBreakerRegistry(CircuitBreakerMetricNames.custom()
-
.callsMetricName(InstanceIsolationProperties.MATCH_INSTANCE_ISOLATION_KEY +
".calls")
+ .callsMetricName(this.instanceIsolationProperties.getConfigKey()
+ ".calls")
.notPermittedCallsMetricName(
- InstanceIsolationProperties.MATCH_INSTANCE_ISOLATION_KEY +
".not.permitted.calls")
-
.stateMetricName(InstanceIsolationProperties.MATCH_INSTANCE_ISOLATION_KEY +
".state")
-
.bufferedCallsMetricName(InstanceIsolationProperties.MATCH_INSTANCE_ISOLATION_KEY
+ ".buffered.calls")
-
.slowCallsMetricName(InstanceIsolationProperties.MATCH_INSTANCE_ISOLATION_KEY +
".slow.calls")
-
.failureRateMetricName(InstanceIsolationProperties.MATCH_INSTANCE_ISOLATION_KEY
+ ".failure.rate")
-
.slowCallRateMetricName(InstanceIsolationProperties.MATCH_INSTANCE_ISOLATION_KEY
+ ".slow.call.rate")
+ this.instanceIsolationProperties.getConfigKey() +
".not.permitted.calls")
+ .stateMetricName(this.instanceIsolationProperties.getConfigKey()
+ ".state")
+
.bufferedCallsMetricName(this.instanceIsolationProperties.getConfigKey() +
".buffered.calls")
+
.slowCallsMetricName(this.instanceIsolationProperties.getConfigKey() +
".slow.calls")
+
.failureRateMetricName(this.instanceIsolationProperties.getConfigKey() +
".failure.rate")
+
.slowCallRateMetricName(this.instanceIsolationProperties.getConfigKey() +
".slow.call.rate")
.build(), circuitBreakerRegistry)
.bindTo(meterRegistry);
}
diff --git
a/governance/src/main/java/org/apache/servicecomb/governance/handler/LoadBalanceHandler.java
b/governance/src/main/java/org/apache/servicecomb/governance/handler/LoadBalanceHandler.java
index dbaf5de32..d63c8c766 100644
---
a/governance/src/main/java/org/apache/servicecomb/governance/handler/LoadBalanceHandler.java
+++
b/governance/src/main/java/org/apache/servicecomb/governance/handler/LoadBalanceHandler.java
@@ -19,8 +19,8 @@ package org.apache.servicecomb.governance.handler;
import org.apache.servicecomb.governance.marker.GovernanceRequest;
import org.apache.servicecomb.governance.policy.LoadBalancerPolicy;
-import org.apache.servicecomb.governance.properties.LoadBalanceProperties;
import org.apache.servicecomb.governance.processor.loadbanlance.LoadBalance;
+import org.apache.servicecomb.governance.properties.LoadBalanceProperties;
public class LoadBalanceHandler extends AbstractGovernanceHandler<LoadBalance,
LoadBalancerPolicy> {
@@ -32,7 +32,7 @@ public class LoadBalanceHandler extends
AbstractGovernanceHandler<LoadBalance, L
@Override
protected String createKey(GovernanceRequest governanceRequest,
LoadBalancerPolicy policy) {
- return LoadBalanceProperties.MATCH_LOADBANLANCER_KEY + "." +
policy.getName();
+ return this.loadBalanceProperties.getConfigKey() + "." + policy.getName();
}
@Override
@@ -41,8 +41,8 @@ public class LoadBalanceHandler extends
AbstractGovernanceHandler<LoadBalance, L
}
@Override
- protected DisposableHolder<LoadBalance> createProcessor(String key,
GovernanceRequest governanceRequest, LoadBalancerPolicy policy) {
+ protected DisposableHolder<LoadBalance> createProcessor(String key,
GovernanceRequest governanceRequest,
+ LoadBalancerPolicy policy) {
return new DisposableHolder<>(key, LoadBalance.getLoadBalance(key,
policy));
}
-
}
diff --git
a/governance/src/main/java/org/apache/servicecomb/governance/handler/RateLimitingHandler.java
b/governance/src/main/java/org/apache/servicecomb/governance/handler/RateLimitingHandler.java
index b4653bf8c..7570137ad 100644
---
a/governance/src/main/java/org/apache/servicecomb/governance/handler/RateLimitingHandler.java
+++
b/governance/src/main/java/org/apache/servicecomb/governance/handler/RateLimitingHandler.java
@@ -41,7 +41,7 @@ public class RateLimitingHandler extends
AbstractGovernanceHandler<RateLimiter,
@Override
protected String createKey(GovernanceRequest governanceRequest,
RateLimitingPolicy policy) {
- return RateLimitProperties.MATCH_RATE_LIMIT_KEY + "." + policy.getName();
+ return this.rateLimitProperties.getConfigKey() + "." + policy.getName();
}
@Override
@@ -68,8 +68,8 @@ public class RateLimitingHandler extends
AbstractGovernanceHandler<RateLimiter,
TaggedRateLimiterMetrics
.ofRateLimiterRegistry(RateLimiterMetricNames.custom()
.availablePermissionsMetricName(
- RateLimitProperties.MATCH_RATE_LIMIT_KEY +
".available.permissions")
-
.waitingThreadsMetricName(RateLimitProperties.MATCH_RATE_LIMIT_KEY +
".waiting.threads")
+ this.rateLimitProperties.getConfigKey() +
".available.permissions")
+
.waitingThreadsMetricName(this.rateLimitProperties.getConfigKey() +
".waiting.threads")
.build(),
rateLimiterRegistry)
.bindTo(meterRegistry);
diff --git
a/governance/src/main/java/org/apache/servicecomb/governance/handler/RetryHandler.java
b/governance/src/main/java/org/apache/servicecomb/governance/handler/RetryHandler.java
index b46f7d406..18abbdbda 100644
---
a/governance/src/main/java/org/apache/servicecomb/governance/handler/RetryHandler.java
+++
b/governance/src/main/java/org/apache/servicecomb/governance/handler/RetryHandler.java
@@ -48,7 +48,7 @@ public class RetryHandler extends
AbstractGovernanceHandler<Retry, RetryPolicy>
@Override
protected String createKey(GovernanceRequest governanceRequest, RetryPolicy
policy) {
- return RetryProperties.MATCH_RETRY_KEY + "." + policy.getName();
+ return this.retryProperties.getConfigKey() + "." + policy.getName();
}
@Override
@@ -76,7 +76,7 @@ public class RetryHandler extends
AbstractGovernanceHandler<Retry, RetryPolicy>
if (meterRegistry != null) {
TaggedRetryMetrics
.ofRetryRegistry(RetryMetricNames.custom()
- .callsMetricName(RetryProperties.MATCH_RETRY_KEY + ".calls")
+ .callsMetricName(this.retryProperties.getConfigKey() +
".calls")
.build(),
registry)
.bindTo(meterRegistry);
diff --git
a/governance/src/main/java/org/apache/servicecomb/governance/properties/BulkheadProperties.java
b/governance/src/main/java/org/apache/servicecomb/governance/properties/BulkheadProperties.java
index 6bef14c74..62d6cc2c7 100644
---
a/governance/src/main/java/org/apache/servicecomb/governance/properties/BulkheadProperties.java
+++
b/governance/src/main/java/org/apache/servicecomb/governance/properties/BulkheadProperties.java
@@ -26,6 +26,10 @@ public class BulkheadProperties extends
PolicyProperties<BulkheadPolicy> {
super(MATCH_BULKHEAD_KEY);
}
+ public BulkheadProperties(String key) {
+ super(key);
+ }
+
@Override
public Class<BulkheadPolicy> getEntityClass() {
return BulkheadPolicy.class;
diff --git
a/governance/src/main/java/org/apache/servicecomb/governance/properties/CircuitBreakerProperties.java
b/governance/src/main/java/org/apache/servicecomb/governance/properties/CircuitBreakerProperties.java
index 9b04fd0a9..96aa701ad 100644
---
a/governance/src/main/java/org/apache/servicecomb/governance/properties/CircuitBreakerProperties.java
+++
b/governance/src/main/java/org/apache/servicecomb/governance/properties/CircuitBreakerProperties.java
@@ -25,6 +25,10 @@ public class CircuitBreakerProperties extends
PolicyProperties<CircuitBreakerPol
super(MATCH_CIRCUITBREAKER_KEY);
}
+ public CircuitBreakerProperties(String key) {
+ super(key);
+ }
+
@Override
public Class<CircuitBreakerPolicy> getEntityClass() {
return CircuitBreakerPolicy.class;
diff --git
a/governance/src/main/java/org/apache/servicecomb/governance/properties/FaultInjectionProperties.java
b/governance/src/main/java/org/apache/servicecomb/governance/properties/FaultInjectionProperties.java
index 3fe8af40e..3a881352c 100644
---
a/governance/src/main/java/org/apache/servicecomb/governance/properties/FaultInjectionProperties.java
+++
b/governance/src/main/java/org/apache/servicecomb/governance/properties/FaultInjectionProperties.java
@@ -26,6 +26,10 @@ public class FaultInjectionProperties extends
PolicyProperties<FaultInjectionPol
super(MATCH_FAULT_INJECTION_KEY);
}
+ public FaultInjectionProperties(String key) {
+ super(key);
+ }
+
@Override
public Class<FaultInjectionPolicy> getEntityClass() {
return FaultInjectionPolicy.class;
diff --git
a/governance/src/main/java/org/apache/servicecomb/governance/properties/IdentifierRateLimitProperties.java
b/governance/src/main/java/org/apache/servicecomb/governance/properties/IdentifierRateLimitProperties.java
index a02d69bfd..7db52c45b 100644
---
a/governance/src/main/java/org/apache/servicecomb/governance/properties/IdentifierRateLimitProperties.java
+++
b/governance/src/main/java/org/apache/servicecomb/governance/properties/IdentifierRateLimitProperties.java
@@ -25,6 +25,10 @@ public class IdentifierRateLimitProperties extends
PolicyProperties<IdentifierRa
super(MATCH_RATE_LIMIT_KEY);
}
+ public IdentifierRateLimitProperties(String key) {
+ super(key);
+ }
+
@Override
public Class<IdentifierRateLimitingPolicy> getEntityClass() {
return IdentifierRateLimitingPolicy.class;
diff --git
a/governance/src/main/java/org/apache/servicecomb/governance/properties/InstanceBulkheadProperties.java
b/governance/src/main/java/org/apache/servicecomb/governance/properties/InstanceBulkheadProperties.java
index edd4b6045..126270467 100644
---
a/governance/src/main/java/org/apache/servicecomb/governance/properties/InstanceBulkheadProperties.java
+++
b/governance/src/main/java/org/apache/servicecomb/governance/properties/InstanceBulkheadProperties.java
@@ -26,6 +26,10 @@ public class InstanceBulkheadProperties extends
PolicyProperties<BulkheadPolicy>
super(MATCH_INSTANCE_BULKHEAD_KEY);
}
+ public InstanceBulkheadProperties(String key) {
+ super(key);
+ }
+
@Override
public Class<BulkheadPolicy> getEntityClass() {
return BulkheadPolicy.class;
diff --git
a/governance/src/main/java/org/apache/servicecomb/governance/properties/InstanceIsolationProperties.java
b/governance/src/main/java/org/apache/servicecomb/governance/properties/InstanceIsolationProperties.java
index 0f773ed7b..e47193fd3 100644
---
a/governance/src/main/java/org/apache/servicecomb/governance/properties/InstanceIsolationProperties.java
+++
b/governance/src/main/java/org/apache/servicecomb/governance/properties/InstanceIsolationProperties.java
@@ -26,6 +26,10 @@ public class InstanceIsolationProperties extends
PolicyProperties<CircuitBreaker
super(MATCH_INSTANCE_ISOLATION_KEY);
}
+ public InstanceIsolationProperties(String key) {
+ super(key);
+ }
+
@Override
public Class<CircuitBreakerPolicy> getEntityClass() {
return CircuitBreakerPolicy.class;
diff --git
a/governance/src/main/java/org/apache/servicecomb/governance/properties/LoadBalanceProperties.java
b/governance/src/main/java/org/apache/servicecomb/governance/properties/LoadBalanceProperties.java
index be8e9b267..892bbb8a5 100644
---
a/governance/src/main/java/org/apache/servicecomb/governance/properties/LoadBalanceProperties.java
+++
b/governance/src/main/java/org/apache/servicecomb/governance/properties/LoadBalanceProperties.java
@@ -26,6 +26,10 @@ public class LoadBalanceProperties extends
PolicyProperties<LoadBalancerPolicy>
super(MATCH_LOADBANLANCER_KEY);
}
+ public LoadBalanceProperties(String key) {
+ super(key);
+ }
+
@Override
protected Class<LoadBalancerPolicy> getEntityClass() {
return LoadBalancerPolicy.class;
diff --git
a/governance/src/main/java/org/apache/servicecomb/governance/properties/MapperProperties.java
b/governance/src/main/java/org/apache/servicecomb/governance/properties/MapperProperties.java
index fe2a6eb37..5a20d4dd3 100644
---
a/governance/src/main/java/org/apache/servicecomb/governance/properties/MapperProperties.java
+++
b/governance/src/main/java/org/apache/servicecomb/governance/properties/MapperProperties.java
@@ -20,7 +20,7 @@ package org.apache.servicecomb.governance.properties;
import org.apache.servicecomb.governance.policy.MapperPolicy;
public class MapperProperties extends PolicyProperties<MapperPolicy> {
- private static final String MATCH_MAPPER_KEY = "servicecomb.mapper";
+ public static final String MATCH_MAPPER_KEY = "servicecomb.mapper";
public MapperProperties() {
super(MATCH_MAPPER_KEY);
diff --git
a/governance/src/main/java/org/apache/servicecomb/governance/properties/RateLimitProperties.java
b/governance/src/main/java/org/apache/servicecomb/governance/properties/RateLimitProperties.java
index 7aa5daef8..c3c094346 100644
---
a/governance/src/main/java/org/apache/servicecomb/governance/properties/RateLimitProperties.java
+++
b/governance/src/main/java/org/apache/servicecomb/governance/properties/RateLimitProperties.java
@@ -26,6 +26,10 @@ public class RateLimitProperties extends
PolicyProperties<RateLimitingPolicy> {
super(MATCH_RATE_LIMIT_KEY);
}
+ public RateLimitProperties(String key) {
+ super(key);
+ }
+
@Override
public Class<RateLimitingPolicy> getEntityClass() {
return RateLimitingPolicy.class;
diff --git
a/governance/src/main/java/org/apache/servicecomb/governance/properties/RetryProperties.java
b/governance/src/main/java/org/apache/servicecomb/governance/properties/RetryProperties.java
index b19d44653..50106c2a0 100644
---
a/governance/src/main/java/org/apache/servicecomb/governance/properties/RetryProperties.java
+++
b/governance/src/main/java/org/apache/servicecomb/governance/properties/RetryProperties.java
@@ -25,6 +25,10 @@ public class RetryProperties extends
PolicyProperties<RetryPolicy> {
super(MATCH_RETRY_KEY);
}
+ public RetryProperties(String key) {
+ super(key);
+ }
+
@Override
public Class<RetryPolicy> getEntityClass() {
return RetryPolicy.class;
diff --git
a/governance/src/test/java/org/apache/servicecomb/governance/FaultInjectionTest.java
b/governance/src/test/java/org/apache/servicecomb/governance/FaultInjectionTest.java
index 40e58b78d..47eadd80d 100644
---
a/governance/src/test/java/org/apache/servicecomb/governance/FaultInjectionTest.java
+++
b/governance/src/test/java/org/apache/servicecomb/governance/FaultInjectionTest.java
@@ -30,6 +30,7 @@ import
org.apache.servicecomb.governance.processor.injection.FaultInjectionExcep
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ContextConfiguration;
@@ -38,9 +39,13 @@ import org.springframework.test.context.ContextConfiguration;
public class FaultInjectionTest {
private FaultInjectionHandler faultInjectionHandler;
+ private FaultInjectionHandler faultInjectionHandler2;
+
@Autowired
- public void setFaultInjectionHandler(FaultInjectionHandler
faultInjectionHandler) {
+ public void setFaultInjectionHandler(FaultInjectionHandler
faultInjectionHandler,
+ @Qualifier("faultInjectionHandler2") FaultInjectionHandler
faultInjectionHandler2) {
this.faultInjectionHandler = faultInjectionHandler;
+ this.faultInjectionHandler2 = faultInjectionHandler2;
}
public FaultInjectionTest() {
@@ -175,4 +180,26 @@ public class FaultInjectionTest {
ds.withFaultInjection(fault);
Assertions.assertEquals("test", ds.get());
}
+
+ @Test
+ public void test_fallback_ThrowException_work_handler2() throws Throwable {
+ FaultInjectionDecorateCheckedSupplier<Object> ds =
+ FaultInjectionDecorators.ofCheckedSupplier(() -> "test");
+
+ GovernanceRequest request = new GovernanceRequest();
+ request.setUri("/throwException");
+ request.setServiceName("ThrowException");
+
+ Fault fault = faultInjectionHandler2.getActuator(request);
+ ds.withFaultInjection(fault);
+ boolean expected = false;
+ try {
+ ds.get();
+ } catch (FaultInjectionException e) {
+ if (e.getFaultResponse().getErrorCode() == 500) {
+ expected = true;
+ }
+ }
+ Assertions.assertEquals(true, expected);
+ }
}
diff --git
a/governance/src/test/java/org/apache/servicecomb/governance/GovernancePropertiesTest.java
b/governance/src/test/java/org/apache/servicecomb/governance/GovernancePropertiesTest.java
index df05676dc..77902d848 100644
---
a/governance/src/test/java/org/apache/servicecomb/governance/GovernancePropertiesTest.java
+++
b/governance/src/test/java/org/apache/servicecomb/governance/GovernancePropertiesTest.java
@@ -164,7 +164,7 @@ public class GovernancePropertiesTest {
@Test
public void test_all_bean_is_loaded() {
- Assertions.assertEquals(10, propertiesList.size());
+ Assertions.assertEquals(14, propertiesList.size());
}
@Test
diff --git
a/governance/src/test/java/org/apache/servicecomb/governance/MapperTest.java
b/governance/src/test/java/org/apache/servicecomb/governance/MapperTest.java
index 8afd9d762..8ee861bc9 100644
--- a/governance/src/test/java/org/apache/servicecomb/governance/MapperTest.java
+++ b/governance/src/test/java/org/apache/servicecomb/governance/MapperTest.java
@@ -23,6 +23,7 @@ import
org.apache.servicecomb.governance.processor.mapping.Mapper;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ContextConfiguration;
@@ -31,9 +32,12 @@ import org.springframework.test.context.ContextConfiguration;
public class MapperTest {
private MapperHandler mapperHandler;
+ private MapperHandler mapperHandler2;
+
@Autowired
- public void setMapperHandler(MapperHandler mapperHandler) {
+ public void setMapperHandler(MapperHandler mapperHandler,
@Qualifier("mapperHandler2") MapperHandler mapperHandler2) {
this.mapperHandler = mapperHandler;
+ this.mapperHandler2 = mapperHandler2;
}
@Test
@@ -45,4 +49,14 @@ public class MapperTest {
Assertions.assertEquals("127.0.0.1", mapper.target().get("host"));
Assertions.assertEquals("8080", mapper.target().get("port"));
}
+
+ @Test
+ public void test_mapper2_work() {
+ GovernanceRequest request = new GovernanceRequest();
+ request.setUri("/mapper/v1");
+ Mapper mapper = mapperHandler2.getActuator(request);
+ Assertions.assertEquals(2, mapper.target().size());
+ Assertions.assertEquals("127.0.0.1", mapper.target().get("host"));
+ Assertions.assertEquals("9090", mapper.target().get("port"));
+ }
}
diff --git
a/governance/src/test/java/org/apache/servicecomb/governance/MockConfiguration.java
b/governance/src/test/java/org/apache/servicecomb/governance/MockConfiguration.java
index 7b0281682..b75d9cdb9 100644
---
a/governance/src/test/java/org/apache/servicecomb/governance/MockConfiguration.java
+++
b/governance/src/test/java/org/apache/servicecomb/governance/MockConfiguration.java
@@ -17,6 +17,16 @@
package org.apache.servicecomb.governance;
+import org.apache.servicecomb.governance.handler.BulkheadHandler;
+import org.apache.servicecomb.governance.handler.CircuitBreakerHandler;
+import org.apache.servicecomb.governance.handler.FaultInjectionHandler;
+import org.apache.servicecomb.governance.handler.MapperHandler;
+import
org.apache.servicecomb.governance.handler.ext.AbstractCircuitBreakerExtension;
+import org.apache.servicecomb.governance.properties.BulkheadProperties;
+import org.apache.servicecomb.governance.properties.CircuitBreakerProperties;
+import org.apache.servicecomb.governance.properties.FaultInjectionProperties;
+import org.apache.servicecomb.governance.properties.MapperProperties;
+import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -49,4 +59,47 @@ public class MockConfiguration {
public PrometheusMeterRegistry meterRegistry() {
return new PrometheusMeterRegistry(PrometheusConfig.DEFAULT);
}
+
+ @Bean
+ public MapperProperties mapperProperties2() {
+ return new MapperProperties(MapperProperties.MATCH_MAPPER_KEY + "2");
+ }
+
+ @Bean
+ public MapperHandler mapperHandler2(@Qualifier("mapperProperties2")
MapperProperties mapperProperties) {
+ return new MapperHandler(mapperProperties);
+ }
+
+ @Bean
+ public BulkheadProperties bulkheadProperties2() {
+ return new BulkheadProperties(BulkheadProperties.MATCH_BULKHEAD_KEY + "2");
+ }
+
+ @Bean
+ public BulkheadHandler bulkheadHandler2(@Qualifier("bulkheadProperties2")
BulkheadProperties bulkheadProperties) {
+ return new BulkheadHandler(bulkheadProperties);
+ }
+
+ @Bean
+ public CircuitBreakerProperties circuitBreakerProperties2() {
+ return new
CircuitBreakerProperties(CircuitBreakerProperties.MATCH_CIRCUITBREAKER_KEY +
"2");
+ }
+
+ @Bean
+ public CircuitBreakerHandler circuitBreakerHandler2(
+ @Qualifier("circuitBreakerProperties2") CircuitBreakerProperties
circuitBreakerProperties,
+ AbstractCircuitBreakerExtension circuitBreakerExtension) {
+ return new CircuitBreakerHandler(circuitBreakerProperties,
circuitBreakerExtension);
+ }
+
+ @Bean
+ public FaultInjectionProperties faultInjectionProperties2() {
+ return new
FaultInjectionProperties(FaultInjectionProperties.MATCH_FAULT_INJECTION_KEY +
"2");
+ }
+
+ @Bean
+ public FaultInjectionHandler faultInjectionHandler2(
+ @Qualifier("faultInjectionProperties2") FaultInjectionProperties
faultInjectionProperties) {
+ return new FaultInjectionHandler(faultInjectionProperties);
+ }
}
diff --git a/governance/src/test/resources/application.yaml
b/governance/src/test/resources/application.yaml
index 923f8f58a..69c07171c 100644
--- a/governance/src/test/resources/application.yaml
+++ b/governance/src/test/resources/application.yaml
@@ -165,6 +165,10 @@ servicecomb:
wrongIngored: |
delayTime: -1
type: ERROR
+ faultInjection2:
+ demo-fallback-ThrowException: |
+ type: abort
+ percentage: 100
loadbalance:
demo-loadbalance-random: |
rule: Random
@@ -175,6 +179,11 @@ servicecomb:
target:
host: 127.0.0.1
port: 8080
+ mapper2:
+ demo-mapper: |
+ target:
+ host: 127.0.0.1
+ port: 9090
routeRule:
test_server1: | # 服务名
- precedence: 1 # 优先级,数字越大,优先级越高。