diff --git a/CHANGELOG.md b/CHANGELOG.md
index 15da1cab..2d84afcb 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,3 +7,4 @@
- [feat:update spring framework version of 2022 branch.](https://github.com/Tencent/spring-cloud-tencent/pull/851)
- [feature:add PolarisRateLimiterLimitedFallback spi.](https://github.com/Tencent/spring-cloud-tencent/pull/857)
- [fix:fix the error capture of rate limit exception.](https://github.com/Tencent/spring-cloud-tencent/pull/860)
+- [feat:enable stat reporting as default.](https://github.com/Tencent/spring-cloud-tencent/pull/863)
diff --git a/pom.xml b/pom.xml
index f063eeb7..2ed1176b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -94,7 +94,7 @@
6.0.5
- 3.0.2
+ 3.0.3
2022.0.1
diff --git a/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/registry/PolarisServiceRegistry.java b/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/registry/PolarisServiceRegistry.java
index 17ea5307..10c29d0b 100644
--- a/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/registry/PolarisServiceRegistry.java
+++ b/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/registry/PolarisServiceRegistry.java
@@ -18,6 +18,7 @@
package com.tencent.cloud.polaris.registry;
+import java.util.Objects;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
@@ -25,8 +26,12 @@ import com.tencent.cloud.common.metadata.StaticMetadataManager;
import com.tencent.cloud.polaris.PolarisDiscoveryProperties;
import com.tencent.cloud.polaris.discovery.PolarisDiscoveryHandler;
import com.tencent.cloud.polaris.util.OkHttpUtil;
+import com.tencent.cloud.rpc.enhancement.stat.config.PolarisStatProperties;
+import com.tencent.polaris.api.config.global.StatReporterConfig;
import com.tencent.polaris.api.core.ProviderAPI;
import com.tencent.polaris.api.exception.PolarisException;
+import com.tencent.polaris.api.plugin.common.PluginTypes;
+import com.tencent.polaris.api.plugin.stat.StatReporter;
import com.tencent.polaris.api.pojo.Instance;
import com.tencent.polaris.api.rpc.InstanceDeregisterRequest;
import com.tencent.polaris.api.rpc.InstanceHeartbeatRequest;
@@ -61,9 +66,11 @@ public class PolarisServiceRegistry implements ServiceRegistry ReporterUtils.createServiceCallResult(any(Request.class), any(RetStatus.class)))
- .thenReturn(null);
+ .thenReturn(mock(ServiceCallResult.class));
}
@AfterClass
@@ -83,10 +87,16 @@ public class ExceptionPolarisReporterTest {
// mock response
Response response = mock(Response.class);
- EnhancedFeignContext context = new EnhancedFeignContext();
- context.setRequest(request);
- context.setResponse(response);
+ EnhancedFeignContext context = mock(EnhancedFeignContext.class);
+ doReturn(request).when(context).getRequest();
+ doReturn(response).when(context).getResponse();
+ // test not report
+ exceptionPolarisReporter.run(context);
+ verify(context, times(0)).getRequest();
+ // test do report
+ doReturn(true).when(reporterProperties).isEnabled();
exceptionPolarisReporter.run(context);
+ verify(context, times(1)).getRequest();
}
@Test
diff --git a/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/feign/plugin/reporter/SuccessPolarisReporterTest.java b/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/feign/plugin/reporter/SuccessPolarisReporterTest.java
index 56bd1181..edf9ac0c 100644
--- a/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/feign/plugin/reporter/SuccessPolarisReporterTest.java
+++ b/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/feign/plugin/reporter/SuccessPolarisReporterTest.java
@@ -22,6 +22,7 @@ import com.tencent.cloud.rpc.enhancement.feign.plugin.EnhancedFeignContext;
import com.tencent.cloud.rpc.enhancement.feign.plugin.EnhancedFeignPluginType;
import com.tencent.polaris.api.core.ConsumerAPI;
import com.tencent.polaris.api.pojo.RetStatus;
+import com.tencent.polaris.api.rpc.ServiceCallResult;
import feign.Request;
import feign.Response;
import org.junit.AfterClass;
@@ -38,6 +39,8 @@ import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
/**
* Test for {@link SuccessPolarisReporter}.
@@ -59,7 +62,7 @@ public class SuccessPolarisReporterTest {
public static void beforeClass() {
mockedReporterUtils = Mockito.mockStatic(ReporterUtils.class);
mockedReporterUtils.when(() -> ReporterUtils.createServiceCallResult(any(Request.class), any(RetStatus.class)))
- .thenReturn(null);
+ .thenReturn(mock(ServiceCallResult.class));
}
@AfterClass
@@ -85,10 +88,16 @@ public class SuccessPolarisReporterTest {
Response response = mock(Response.class);
doReturn(502).when(response).status();
- EnhancedFeignContext context = new EnhancedFeignContext();
- context.setRequest(request);
- context.setResponse(response);
+ EnhancedFeignContext context = mock(EnhancedFeignContext.class);
+ doReturn(request).when(context).getRequest();
+ doReturn(response).when(context).getResponse();
+ // test not report
+ successPolarisReporter.run(context);
+ verify(context, times(0)).getRequest();
+ // test do report
+ doReturn(true).when(reporterProperties).isEnabled();
successPolarisReporter.run(context);
+ verify(context, times(1)).getRequest();
}
@Test
diff --git a/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/stat/config/PolarisStatPropertiesDisableTest.java b/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/stat/config/PolarisStatPropertiesDisableTest.java
new file mode 100644
index 00000000..c333cc43
--- /dev/null
+++ b/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/stat/config/PolarisStatPropertiesDisableTest.java
@@ -0,0 +1,55 @@
+/*
+ * Tencent is pleased to support the open source community by making Spring Cloud Tencent available.
+ *
+ * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved.
+ *
+ * Licensed under the BSD 3-Clause License (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://opensource.org/licenses/BSD-3-Clause
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed
+ * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+ * CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+
+package com.tencent.cloud.rpc.enhancement.stat.config;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.ActiveProfiles;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+/**
+ * Test for {@link PolarisStatProperties}.
+ *
+ * @author Haotian Zhang
+ */
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = PolarisStatPropertiesDisableTest.TestApplication.class)
+@ActiveProfiles("disable")
+public class PolarisStatPropertiesDisableTest {
+
+ @Autowired
+ private PolarisStatProperties polarisStatProperties;
+
+ @Test
+ public void testDefaultInitialization() {
+ assertThat(polarisStatProperties).isNotNull();
+ assertThat(polarisStatProperties.isEnabled()).isFalse();
+ assertThat(polarisStatProperties.getHost()).isBlank();
+ }
+
+ @SpringBootApplication
+ protected static class TestApplication {
+
+ }
+}
diff --git a/spring-cloud-tencent-rpc-enhancement/src/test/resources/application-disable.properties b/spring-cloud-tencent-rpc-enhancement/src/test/resources/application-disable.properties
new file mode 100644
index 00000000..a6af090d
--- /dev/null
+++ b/spring-cloud-tencent-rpc-enhancement/src/test/resources/application-disable.properties
@@ -0,0 +1,8 @@
+spring.cloud.polaris.stat.enabled=false
+spring.cloud.polaris.stat.port=20000
+spring.cloud.polaris.stat.path=/xxx
+spring.cloud.tencent.rpc-enhancement.reporter.ignore-internal-server-error=false
+spring.cloud.tencent.rpc-enhancement.reporter.series[0]=CLIENT_ERROR
+spring.cloud.tencent.rpc-enhancement.reporter.series[1]=SERVER_ERROR
+spring.cloud.tencent.rpc-enhancement.reporter.statuses[0]=MULTIPLE_CHOICES
+spring.cloud.tencent.rpc-enhancement.reporter.statuses[1]=MOVED_PERMANENTLY
diff --git a/spring-cloud-tencent-rpc-enhancement/src/test/resources/application-test.properties b/spring-cloud-tencent-rpc-enhancement/src/test/resources/application-test.properties
index 34e566e7..96d94d0d 100644
--- a/spring-cloud-tencent-rpc-enhancement/src/test/resources/application-test.properties
+++ b/spring-cloud-tencent-rpc-enhancement/src/test/resources/application-test.properties
@@ -1,8 +1,3 @@
spring.cloud.polaris.stat.enabled=true
spring.cloud.polaris.stat.port=20000
spring.cloud.polaris.stat.path=/xxx
-spring.cloud.tencent.rpc-enhancement.reporter.ignore-internal-server-error=false
-spring.cloud.tencent.rpc-enhancement.reporter.series[0]=CLIENT_ERROR
-spring.cloud.tencent.rpc-enhancement.reporter.series[1]=SERVER_ERROR
-spring.cloud.tencent.rpc-enhancement.reporter.statuses[0]=MULTIPLE_CHOICES
-spring.cloud.tencent.rpc-enhancement.reporter.statuses[1]=MOVED_PERMANENTLY