This is an automated email from the ASF dual-hosted git repository.
hefengen pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shenyu.git
The following commit(s) were added to refs/heads/master by this push:
new d4f9a351ab [type:fix] (logging-elasticsearch): Fixed the issue where
Elasticsearch log configuration was not refreshed correctly after modification.
(#6004)
d4f9a351ab is described below
commit d4f9a351ab9256ad8d2738d41083cec7602bed8c
Author: yqw570994511 <[email protected]>
AuthorDate: Sat Apr 12 23:56:47 2025 +0800
[type:fix] (logging-elasticsearch): Fixed the issue where Elasticsearch log
configuration was not refreshed correctly after modification. (#6004)
Co-authored-by: yuqianwei <qq120405>
---
.../config/ElasticSearchLogCollectConfig.java | 8 ++-
.../LoggingElasticSearchPluginDataHandlerTest.java | 72 +++++++++++++++++++++-
2 files changed, 77 insertions(+), 3 deletions(-)
diff --git
a/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-elasticsearch/src/main/java/org/apache/shenyu/plugin/logging/elasticsearch/config/ElasticSearchLogCollectConfig.java
b/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-elasticsearch/src/main/java/org/apache/shenyu/plugin/logging/elasticsearch/config/ElasticSearchLogCollectConfig.java
index 9ba4e9121b..15b8964bfb 100644
---
a/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-elasticsearch/src/main/java/org/apache/shenyu/plugin/logging/elasticsearch/config/ElasticSearchLogCollectConfig.java
+++
b/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-elasticsearch/src/main/java/org/apache/shenyu/plugin/logging/elasticsearch/config/ElasticSearchLogCollectConfig.java
@@ -209,12 +209,16 @@ public class ElasticSearchLogCollectConfig {
&& Objects.equals(getBufferQueueSize(),
that.getBufferQueueSize())
&& Objects.equals(getMaxRequestBody(),
that.getMaxRequestBody())
&& Objects.equals(getMaxResponseBody(),
that.getMaxResponseBody())
- && Objects.equals(getIndexName(), that.getIndexName());
+ && Objects.equals(getIndexName(), that.getIndexName())
+ && Objects.equals(getUsername(), that.getUsername())
+ && Objects.equals(getPassword(), that.getPassword())
+ && Objects.equals(getAuthCache(), that.getAuthCache());
}
@Override
public int hashCode() {
- return Objects.hash(host, compressAlg, port);
+ return Objects.hash(host, compressAlg, port, indexName, username,
password, authCache,
+ getSampleRate(), getBufferQueueSize(),
getMaxRequestBody(), getMaxResponseBody());
}
}
diff --git
a/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-elasticsearch/src/test/java/org/apache/shenyu/plugin/logging/elasticsearch/handler/LoggingElasticSearchPluginDataHandlerTest.java
b/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-elasticsearch/src/test/java/org/apache/shenyu/plugin/logging/elasticsearch/handler/LoggingElasticSearchPluginDataHandlerTest.java
index 51afc4816b..0c1fd6ddd0 100644
---
a/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-elasticsearch/src/test/java/org/apache/shenyu/plugin/logging/elasticsearch/handler/LoggingElasticSearchPluginDataHandlerTest.java
+++
b/shenyu-plugin/shenyu-plugin-logging/shenyu-plugin-logging-elasticsearch/src/test/java/org/apache/shenyu/plugin/logging/elasticsearch/handler/LoggingElasticSearchPluginDataHandlerTest.java
@@ -20,10 +20,18 @@ package
org.apache.shenyu.plugin.logging.elasticsearch.handler;
import org.apache.shenyu.common.dto.ConditionData;
import org.apache.shenyu.common.dto.PluginData;
import org.apache.shenyu.common.dto.SelectorData;
+import org.apache.shenyu.common.utils.GsonUtils;
+import org.apache.shenyu.common.utils.Singleton;
import
org.apache.shenyu.plugin.logging.elasticsearch.client.ElasticSearchLogCollectClient;
+import
org.apache.shenyu.plugin.logging.elasticsearch.config.ElasticSearchLogCollectConfig;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.Mockito;
+import org.mockito.junit.jupiter.MockitoExtension;
+import org.mockito.junit.jupiter.MockitoSettings;
+import org.mockito.quality.Strictness;
import java.lang.reflect.Field;
import java.util.ArrayList;
@@ -31,9 +39,17 @@ import java.util.List;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+
/**
* The Test Case For LoggingElasticSearchPluginDataHandler.
*/
+@ExtendWith(MockitoExtension.class)
+@MockitoSettings(strictness = Strictness.LENIENT)
public final class LoggingElasticSearchPluginDataHandlerTest {
private LoggingElasticSearchPluginDataHandler
loggingElasticSearchPluginDataHandler;
@@ -46,7 +62,7 @@ public final class LoggingElasticSearchPluginDataHandlerTest {
@BeforeEach
public void setUp() {
- this.loggingElasticSearchPluginDataHandler = new
LoggingElasticSearchPluginDataHandler();
+ this.loggingElasticSearchPluginDataHandler = Mockito.spy(new
LoggingElasticSearchPluginDataHandler());
selectorData.setId("1");
selectorData.setType(1);
selectorData.setHandle("{\"index\":\"test\", \"sampleRate\":\"1\",
\"topic\":\"1\"}");
@@ -106,4 +122,58 @@ public final class
LoggingElasticSearchPluginDataHandlerTest {
public void testGetSelectApiConfigMap() {
Assertions.assertEquals(LoggingElasticSearchPluginDataHandler.getSelectApiConfigMap().getClass(),
ConcurrentHashMap.class);
}
+
+ @Test
+ public void testHandlerPluginUpdateSameConfig() {
+ ElasticSearchLogCollectConfig.ElasticSearchLogConfig existingConfig =
createValidConfig();
+ Singleton.INST.single(existingConfig.getClass(), existingConfig);
+
+ PluginData pluginData = createPluginData();
+ pluginData.setConfig(GsonUtils.getGson().toJson(existingConfig));
+
+ loggingElasticSearchPluginDataHandler.handlerPlugin(pluginData);
+
+ verify(loggingElasticSearchPluginDataHandler,
never()).doRefreshConfig(any());
+ }
+
+ @Test
+ public void testHandlerPluginUpdateDifferentConfig() {
+ ElasticSearchLogCollectConfig.ElasticSearchLogConfig existingConfig =
createValidConfig();
+ Singleton.INST.single(existingConfig.getClass(), existingConfig);
+
+ ElasticSearchLogCollectConfig.ElasticSearchLogConfig updatedConfig =
createValidConfig();
+ updatedConfig.setUsername("updatedUsername");
+ updatedConfig.setPassword("updatedPassword");
+ updatedConfig.setAuthCache(false);
+ PluginData pluginData = createPluginData();
+ pluginData.setConfig(GsonUtils.getGson().toJson(updatedConfig));
+
+
doNothing().when(loggingElasticSearchPluginDataHandler).doRefreshConfig(any());
+
+ loggingElasticSearchPluginDataHandler.handlerPlugin(pluginData);
+
+ verify(loggingElasticSearchPluginDataHandler,
times(1)).doRefreshConfig(any());
+ }
+
+ private PluginData createPluginData() {
+ PluginData pluginData = new PluginData();
+ pluginData.setEnabled(true);
+ pluginData.setId(UUID.randomUUID().toString().replace("-", ""));
+ return pluginData;
+ }
+
+ private ElasticSearchLogCollectConfig.ElasticSearchLogConfig
createValidConfig() {
+ ElasticSearchLogCollectConfig.ElasticSearchLogConfig config = new
ElasticSearchLogCollectConfig.ElasticSearchLogConfig();
+ config.setHost("localhost");
+ config.setPort("9200");
+ config.setUsername("username");
+ config.setPassword("password");
+ config.setAuthCache(true);
+ config.setSampleRate("1");
+ config.setMaxResponseBody(1024);
+ config.setMaxRequestBody(1024);
+ config.setCompressAlg("none");
+ config.setIndexName("shenyu-access-logging");
+ return config;
+ }
}