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;
+    }
 }

Reply via email to