This is an automated email from the ASF dual-hosted git repository.

zhangliang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git


The following commit(s) were added to refs/heads/master by this push:
     new cd195a5e57d Split MetaDataChangedHandler and DataSourceChangedHandler 
(#34881)
cd195a5e57d is described below

commit cd195a5e57d6b0f0b808576bd6d60b29f045ec0c
Author: Liang Zhang <zhangli...@apache.org>
AuthorDate: Wed Mar 5 14:17:29 2025 +0800

    Split MetaDataChangedHandler and DataSourceChangedHandler (#34881)
    
    * Split MetaDataChangedHandler and DataSourceChangedHandler
    
    * Split MetaDataChangedHandler and DataSourceChangedHandler
---
 .../DataSourceChangedHandler.java}                 | 81 +++-------------------
 .../type/StorageNodeChangedHandler.java            |  2 +-
 .../type/StorageUnitChangedHandler.java            |  2 +-
 .../database/metadata/MetaDataChangedHandler.java  | 64 -----------------
 .../type/DatabaseMetaDataChangedListener.java      |  8 ++-
 .../datasource/DataSourceChangedHandlerTest.java   | 79 +++++++++++++++++++++
 .../metadata/MetaDataChangedHandlerTest.java       | 25 -------
 7 files changed, 94 insertions(+), 167 deletions(-)

diff --git 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/MetaDataChangedHandler.java
 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/datasource/DataSourceChangedHandler.java
similarity index 50%
copy from 
mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/MetaDataChangedHandler.java
copy to 
mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/datasource/DataSourceChangedHandler.java
index 79cb578b891..db198ea0e7b 100644
--- 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/MetaDataChangedHandler.java
+++ 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/datasource/DataSourceChangedHandler.java
@@ -15,19 +15,14 @@
  * limitations under the License.
  */
 
-package 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.metadata;
+package 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.datasource;
 
 import org.apache.shardingsphere.mode.event.DataChangedEvent;
 import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
 import org.apache.shardingsphere.mode.manager.ContextManager;
-import 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.metadata.type.SchemaChangedHandler;
-import 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.metadata.type.StorageNodeChangedHandler;
-import 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.metadata.type.StorageUnitChangedHandler;
-import 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.metadata.type.TableChangedHandler;
-import 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.metadata.type.ViewChangedHandler;
+import 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.datasource.type.StorageNodeChangedHandler;
+import 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.datasource.type.StorageUnitChangedHandler;
 import 
org.apache.shardingsphere.mode.node.path.engine.searcher.NodePathSearcher;
-import 
org.apache.shardingsphere.mode.node.path.type.metadata.database.TableMetadataNodePath;
-import 
org.apache.shardingsphere.mode.node.path.type.metadata.database.ViewMetadataNodePath;
 import 
org.apache.shardingsphere.mode.node.path.type.metadata.storage.StorageNodeNodePath;
 import 
org.apache.shardingsphere.mode.node.path.type.metadata.storage.StorageUnitNodePath;
 import 
org.apache.shardingsphere.mode.node.path.type.version.VersionNodePathParser;
@@ -35,89 +30,29 @@ import 
org.apache.shardingsphere.mode.node.path.type.version.VersionNodePathPars
 import java.util.Optional;
 
 /**
- * Meta data changed handler.
+ * Data source changed handler.
  */
-public final class MetaDataChangedHandler {
-    
-    private final SchemaChangedHandler schemaChangedHandler;
-    
-    private final TableChangedHandler tableChangedHandler;
-    
-    private final ViewChangedHandler viewChangedHandler;
+public final class DataSourceChangedHandler {
     
     private final StorageUnitChangedHandler storageUnitChangedHandler;
     
     private final StorageNodeChangedHandler storageNodeChangedHandler;
     
-    public MetaDataChangedHandler(final ContextManager contextManager) {
-        schemaChangedHandler = new SchemaChangedHandler(contextManager);
-        tableChangedHandler = new TableChangedHandler(contextManager);
-        viewChangedHandler = new ViewChangedHandler(contextManager);
+    public DataSourceChangedHandler(final ContextManager contextManager) {
         storageUnitChangedHandler = new 
StorageUnitChangedHandler(contextManager);
         storageNodeChangedHandler = new 
StorageNodeChangedHandler(contextManager);
     }
     
     /**
-     * Handle meta data changed.
+     * Handle data source changed.
      *
      * @param databaseName database name
      * @param event data changed event
      */
     public void handle(final String databaseName, final DataChangedEvent 
event) {
-        String eventKey = event.getKey();
-        Optional<String> schemaName = NodePathSearcher.find(eventKey, 
TableMetadataNodePath.createSchemaSearchCriteria(false));
-        if (schemaName.isPresent()) {
-            handleSchemaChanged(databaseName, schemaName.get(), event);
-            return;
-        }
-        schemaName = NodePathSearcher.find(eventKey, 
TableMetadataNodePath.createSchemaSearchCriteria(true));
-        if (schemaName.isPresent() && isTableMetaDataChanged(eventKey)) {
-            handleTableChanged(databaseName, schemaName.get(), event);
-            return;
-        }
-        if (schemaName.isPresent() && isViewMetaDataChanged(eventKey)) {
-            handleViewChanged(databaseName, schemaName.get(), event);
+        if (!NodePathSearcher.isMatchedPath(event.getKey(), 
StorageUnitNodePath.createDataSourceSearchCriteria())) {
             return;
         }
-        if (NodePathSearcher.isMatchedPath(eventKey, 
StorageUnitNodePath.createDataSourceSearchCriteria())) {
-            handleDataSourceChanged(databaseName, event);
-        }
-    }
-    
-    private void handleSchemaChanged(final String databaseName, final String 
schemaName, final DataChangedEvent event) {
-        if (Type.ADDED == event.getType() || Type.UPDATED == event.getType()) {
-            schemaChangedHandler.handleCreated(databaseName, schemaName);
-        } else if (Type.DELETED == event.getType()) {
-            schemaChangedHandler.handleDropped(databaseName, schemaName);
-        }
-    }
-    
-    private boolean isTableMetaDataChanged(final String key) {
-        return NodePathSearcher.isMatchedPath(key, 
TableMetadataNodePath.createTableSearchCriteria()) || new 
VersionNodePathParser(new TableMetadataNodePath()).isActiveVersionPath(key);
-    }
-    
-    private void handleTableChanged(final String databaseName, final String 
schemaName, final DataChangedEvent event) {
-        if ((Type.ADDED == event.getType() || Type.UPDATED == event.getType()) 
&& new VersionNodePathParser(new 
TableMetadataNodePath()).isActiveVersionPath(event.getKey())) {
-            tableChangedHandler.handleCreatedOrAltered(databaseName, 
schemaName, event);
-        } else if (Type.DELETED == event.getType() && 
NodePathSearcher.isMatchedPath(event.getKey(), 
TableMetadataNodePath.createTableSearchCriteria())) {
-            tableChangedHandler.handleDropped(databaseName, schemaName, event);
-        }
-    }
-    
-    private boolean isViewMetaDataChanged(final String key) {
-        return new VersionNodePathParser(new 
ViewMetadataNodePath()).isActiveVersionPath(key) || 
NodePathSearcher.isMatchedPath(key, 
ViewMetadataNodePath.createViewSearchCriteria());
-    }
-    
-    private void handleViewChanged(final String databaseName, final String 
schemaName, final DataChangedEvent event) {
-        if ((Type.ADDED == event.getType() || Type.UPDATED == event.getType())
-                && new VersionNodePathParser(new 
ViewMetadataNodePath()).isActiveVersionPath(event.getKey())) {
-            viewChangedHandler.handleCreatedOrAltered(databaseName, 
schemaName, event);
-        } else if (Type.DELETED == event.getType() && 
NodePathSearcher.isMatchedPath(event.getKey(), 
ViewMetadataNodePath.createViewSearchCriteria())) {
-            viewChangedHandler.handleDropped(databaseName, schemaName, event);
-        }
-    }
-    
-    private void handleDataSourceChanged(final String databaseName, final 
DataChangedEvent event) {
         Optional<String> storageUnitName = new VersionNodePathParser(new 
StorageUnitNodePath()).findIdentifierByActiveVersionPath(event.getKey(), 2);
         boolean isActiveVersion = true;
         if (!storageUnitName.isPresent()) {
diff --git 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/type/StorageNodeChangedHandler.java
 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/datasource/type/StorageNodeChangedHandler.java
similarity index 98%
rename from 
mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/type/StorageNodeChangedHandler.java
rename to 
mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/datasource/type/StorageNodeChangedHandler.java
index 076d38de0bf..a49d48f882e 100644
--- 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/type/StorageNodeChangedHandler.java
+++ 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/datasource/type/StorageNodeChangedHandler.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.metadata.type;
+package 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.datasource.type;
 
 import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.mode.event.DataChangedEvent;
diff --git 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/type/StorageUnitChangedHandler.java
 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/datasource/type/StorageUnitChangedHandler.java
similarity index 99%
rename from 
mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/type/StorageUnitChangedHandler.java
rename to 
mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/datasource/type/StorageUnitChangedHandler.java
index 656b3591876..7c48981db1d 100644
--- 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/type/StorageUnitChangedHandler.java
+++ 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/datasource/type/StorageUnitChangedHandler.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.metadata.type;
+package 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.datasource.type;
 
 import com.google.common.base.Preconditions;
 import lombok.RequiredArgsConstructor;
diff --git 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/MetaDataChangedHandler.java
 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/MetaDataChangedHandler.java
index 79cb578b891..820b683091f 100644
--- 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/MetaDataChangedHandler.java
+++ 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/MetaDataChangedHandler.java
@@ -21,15 +21,11 @@ import 
org.apache.shardingsphere.mode.event.DataChangedEvent;
 import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
 import org.apache.shardingsphere.mode.manager.ContextManager;
 import 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.metadata.type.SchemaChangedHandler;
-import 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.metadata.type.StorageNodeChangedHandler;
-import 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.metadata.type.StorageUnitChangedHandler;
 import 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.metadata.type.TableChangedHandler;
 import 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.metadata.type.ViewChangedHandler;
 import 
org.apache.shardingsphere.mode.node.path.engine.searcher.NodePathSearcher;
 import 
org.apache.shardingsphere.mode.node.path.type.metadata.database.TableMetadataNodePath;
 import 
org.apache.shardingsphere.mode.node.path.type.metadata.database.ViewMetadataNodePath;
-import 
org.apache.shardingsphere.mode.node.path.type.metadata.storage.StorageNodeNodePath;
-import 
org.apache.shardingsphere.mode.node.path.type.metadata.storage.StorageUnitNodePath;
 import 
org.apache.shardingsphere.mode.node.path.type.version.VersionNodePathParser;
 
 import java.util.Optional;
@@ -45,16 +41,10 @@ public final class MetaDataChangedHandler {
     
     private final ViewChangedHandler viewChangedHandler;
     
-    private final StorageUnitChangedHandler storageUnitChangedHandler;
-    
-    private final StorageNodeChangedHandler storageNodeChangedHandler;
-    
     public MetaDataChangedHandler(final ContextManager contextManager) {
         schemaChangedHandler = new SchemaChangedHandler(contextManager);
         tableChangedHandler = new TableChangedHandler(contextManager);
         viewChangedHandler = new ViewChangedHandler(contextManager);
-        storageUnitChangedHandler = new 
StorageUnitChangedHandler(contextManager);
-        storageNodeChangedHandler = new 
StorageNodeChangedHandler(contextManager);
     }
     
     /**
@@ -77,10 +67,6 @@ public final class MetaDataChangedHandler {
         }
         if (schemaName.isPresent() && isViewMetaDataChanged(eventKey)) {
             handleViewChanged(databaseName, schemaName.get(), event);
-            return;
-        }
-        if (NodePathSearcher.isMatchedPath(eventKey, 
StorageUnitNodePath.createDataSourceSearchCriteria())) {
-            handleDataSourceChanged(databaseName, event);
         }
     }
     
@@ -116,54 +102,4 @@ public final class MetaDataChangedHandler {
             viewChangedHandler.handleDropped(databaseName, schemaName, event);
         }
     }
-    
-    private void handleDataSourceChanged(final String databaseName, final 
DataChangedEvent event) {
-        Optional<String> storageUnitName = new VersionNodePathParser(new 
StorageUnitNodePath()).findIdentifierByActiveVersionPath(event.getKey(), 2);
-        boolean isActiveVersion = true;
-        if (!storageUnitName.isPresent()) {
-            storageUnitName = NodePathSearcher.find(event.getKey(), 
StorageUnitNodePath.createStorageUnitSearchCriteria());
-            isActiveVersion = false;
-        }
-        if (storageUnitName.isPresent()) {
-            handleStorageUnitChanged(databaseName, event, 
storageUnitName.get(), isActiveVersion);
-            return;
-        }
-        Optional<String> storageNodeName = new VersionNodePathParser(new 
StorageNodeNodePath()).findIdentifierByActiveVersionPath(event.getKey(), 2);
-        isActiveVersion = true;
-        if (!storageNodeName.isPresent()) {
-            storageNodeName = NodePathSearcher.find(event.getKey(), 
StorageNodeNodePath.createStorageNodeSearchCriteria());
-            isActiveVersion = false;
-        }
-        if (storageNodeName.isPresent()) {
-            handleStorageNodeChanged(databaseName, event, 
storageNodeName.get(), isActiveVersion);
-        }
-    }
-    
-    private void handleStorageUnitChanged(final String databaseName, final 
DataChangedEvent event, final String storageUnitName, final boolean 
isActiveVersion) {
-        if (isActiveVersion) {
-            if (Type.ADDED == event.getType()) {
-                storageUnitChangedHandler.handleRegistered(databaseName, 
storageUnitName, event);
-            } else if (Type.UPDATED == event.getType()) {
-                storageUnitChangedHandler.handleAltered(databaseName, 
storageUnitName, event);
-            }
-            return;
-        }
-        if (Type.DELETED == event.getType()) {
-            storageUnitChangedHandler.handleUnregistered(databaseName, 
storageUnitName);
-        }
-    }
-    
-    private void handleStorageNodeChanged(final String databaseName, final 
DataChangedEvent event, final String storageNodeName, final boolean 
isActiveVersion) {
-        if (isActiveVersion) {
-            if (Type.ADDED == event.getType()) {
-                storageNodeChangedHandler.handleRegistered(databaseName, 
storageNodeName, event);
-            } else if (Type.UPDATED == event.getType()) {
-                storageNodeChangedHandler.handleAltered(databaseName, 
storageNodeName, event);
-            }
-            return;
-        }
-        if (Type.DELETED == event.getType()) {
-            storageNodeChangedHandler.handleUnregistered(databaseName, 
storageNodeName);
-        }
-    }
 }
diff --git 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/listener/type/DatabaseMetaDataChangedListener.java
 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/listener/type/DatabaseMetaDataChangedListener.java
index 71bb03b97e1..0d9760acad9 100644
--- 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/listener/type/DatabaseMetaDataChangedListener.java
+++ 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/listener/type/DatabaseMetaDataChangedListener.java
@@ -22,8 +22,9 @@ import 
org.apache.shardingsphere.infra.exception.core.external.sql.type.wrapper.
 import 
org.apache.shardingsphere.infra.spi.type.ordered.cache.OrderedServicesCache;
 import org.apache.shardingsphere.mode.event.DataChangedEvent;
 import org.apache.shardingsphere.mode.manager.ContextManager;
-import 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.metadata.MetaDataChangedHandler;
+import 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.datasource.DataSourceChangedHandler;
 import 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.rule.RuleConfigurationChangedHandler;
+import 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.metadata.MetaDataChangedHandler;
 import 
org.apache.shardingsphere.mode.node.path.engine.searcher.NodePathSearcher;
 import 
org.apache.shardingsphere.mode.node.path.type.metadata.database.TableMetadataNodePath;
 import 
org.apache.shardingsphere.mode.node.path.type.metadata.rule.DatabaseRuleNodePath;
@@ -48,9 +49,10 @@ public final class DatabaseMetaDataChangedListener 
implements DataChangedEventLi
             return;
         }
         OrderedServicesCache.clearCache();
-        if (NodePathSearcher.isMatchedPath(event.getKey(), 
TableMetadataNodePath.createSchemaSearchCriteria(true))
-                || NodePathSearcher.isMatchedPath(event.getKey(), 
StorageUnitNodePath.createDataSourceSearchCriteria())) {
+        if (NodePathSearcher.isMatchedPath(event.getKey(), 
TableMetadataNodePath.createSchemaSearchCriteria(true))) {
             new 
MetaDataChangedHandler(contextManager).handle(databaseName.get(), event);
+        } else if (NodePathSearcher.isMatchedPath(event.getKey(), 
StorageUnitNodePath.createDataSourceSearchCriteria())) {
+            new 
DataSourceChangedHandler(contextManager).handle(databaseName.get(), event);
         } else if (NodePathSearcher.isMatchedPath(event.getKey(), 
DatabaseRuleNodePath.createRuleTypeSearchCriteria())) {
             try {
                 new 
RuleConfigurationChangedHandler(contextManager).handle(databaseName.get(), 
event);
diff --git 
a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/datasource/DataSourceChangedHandlerTest.java
 
b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/datasource/DataSourceChangedHandlerTest.java
new file mode 100644
index 00000000000..2b489577685
--- /dev/null
+++ 
b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/datasource/DataSourceChangedHandlerTest.java
@@ -0,0 +1,79 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.datasource;
+
+import 
org.apache.shardingsphere.infra.config.props.temporary.TemporaryConfigurationPropertyKey;
+import 
org.apache.shardingsphere.infra.datasource.pool.props.domain.DataSourcePoolProperties;
+import org.apache.shardingsphere.mode.event.DataChangedEvent;
+import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
+import org.apache.shardingsphere.mode.manager.ContextManager;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.Answers;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+import org.mockito.junit.jupiter.MockitoSettings;
+import org.mockito.quality.Strictness;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+@ExtendWith(MockitoExtension.class)
+@MockitoSettings(strictness = Strictness.LENIENT)
+class DataSourceChangedHandlerTest {
+    
+    private DataSourceChangedHandler handler;
+    
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private ContextManager contextManager;
+    
+    @BeforeEach
+    void setUp() {
+        
when(contextManager.getMetaDataContexts().getMetaData().getTemporaryProps().getValue(TemporaryConfigurationPropertyKey.PROXY_META_DATA_COLLECTOR_ENABLED)).thenReturn(false);
+        
when(contextManager.getComputeNodeInstanceContext().getModeConfiguration().isCluster()).thenReturn(true);
+        
when(contextManager.getPersistServiceFacade().getRepository().query(any())).thenReturn("0");
+        handler = new DataSourceChangedHandler(contextManager);
+    }
+    
+    @Test
+    void assertHandleStorageUnitRegistered() {
+        
when(contextManager.getPersistServiceFacade().getRepository().query("key")).thenReturn("value");
+        
when(contextManager.getPersistServiceFacade().getMetaDataPersistFacade().getDataSourceUnitService().load("foo_db",
 "foo_unit")).thenReturn(mock(DataSourcePoolProperties.class));
+        handler.handle("foo_db", new 
DataChangedEvent("/metadata/foo_db/data_sources/units/foo_unit/active_version", 
"0", Type.ADDED));
+        
verify(contextManager.getMetaDataContextManager().getStorageUnitManager()).register(eq("foo_db"),
 any());
+    }
+    
+    @Test
+    void assertHandleStorageUnitAltered() {
+        
when(contextManager.getPersistServiceFacade().getRepository().query("key")).thenReturn("value");
+        
when(contextManager.getPersistServiceFacade().getMetaDataPersistFacade().getDataSourceUnitService().load("foo_db",
 "foo_unit")).thenReturn(mock(DataSourcePoolProperties.class));
+        handler.handle("foo_db", new 
DataChangedEvent("/metadata/foo_db/data_sources/units/foo_unit/active_version", 
"0", Type.UPDATED));
+        
verify(contextManager.getMetaDataContextManager().getStorageUnitManager()).alter(eq("foo_db"),
 any());
+    }
+    
+    @Test
+    void assertHandleStorageUnitUnregistered() {
+        
when(contextManager.getMetaDataContexts().getMetaData().containsDatabase("foo_db")).thenReturn(true);
+        handler.handle("foo_db", new 
DataChangedEvent("/metadata/foo_db/data_sources/units/foo_unit", "", 
Type.DELETED));
+        
verify(contextManager.getMetaDataContextManager().getStorageUnitManager()).unregister("foo_db",
 "foo_unit");
+    }
+}
diff --git 
a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/MetaDataChangedHandlerTest.java
 
b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/MetaDataChangedHandlerTest.java
index 53a4a1e9c21..4b016602689 100644
--- 
a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/MetaDataChangedHandlerTest.java
+++ 
b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/dispatch/handler/database/metadata/MetaDataChangedHandlerTest.java
@@ -18,7 +18,6 @@
 package 
org.apache.shardingsphere.mode.manager.cluster.dispatch.handler.database.metadata;
 
 import 
org.apache.shardingsphere.infra.config.props.temporary.TemporaryConfigurationPropertyKey;
-import 
org.apache.shardingsphere.infra.datasource.pool.props.domain.DataSourcePoolProperties;
 import org.apache.shardingsphere.infra.instance.metadata.InstanceType;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereView;
@@ -35,7 +34,6 @@ import org.mockito.junit.jupiter.MockitoSettings;
 import org.mockito.quality.Strictness;
 
 import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
@@ -122,27 +120,4 @@ class MetaDataChangedHandlerTest {
         handler.handle("foo_db", new 
DataChangedEvent("/metadata/foo_db/schemas/foo_schema/views/foo_view", "", 
Type.DELETED));
         
verify(contextManager.getMetaDataContextManager().getDatabaseMetaDataManager()).dropView("foo_db",
 "foo_schema", "foo_view");
     }
-    
-    @Test
-    void assertHandleStorageUnitRegistered() {
-        
when(contextManager.getPersistServiceFacade().getRepository().query("key")).thenReturn("value");
-        
when(contextManager.getPersistServiceFacade().getMetaDataPersistFacade().getDataSourceUnitService().load("foo_db",
 "foo_unit")).thenReturn(mock(DataSourcePoolProperties.class));
-        handler.handle("foo_db", new 
DataChangedEvent("/metadata/foo_db/data_sources/units/foo_unit/active_version", 
"0", Type.ADDED));
-        
verify(contextManager.getMetaDataContextManager().getStorageUnitManager()).register(eq("foo_db"),
 any());
-    }
-    
-    @Test
-    void assertHandleStorageUnitAltered() {
-        
when(contextManager.getPersistServiceFacade().getRepository().query("key")).thenReturn("value");
-        
when(contextManager.getPersistServiceFacade().getMetaDataPersistFacade().getDataSourceUnitService().load("foo_db",
 "foo_unit")).thenReturn(mock(DataSourcePoolProperties.class));
-        handler.handle("foo_db", new 
DataChangedEvent("/metadata/foo_db/data_sources/units/foo_unit/active_version", 
"0", Type.UPDATED));
-        
verify(contextManager.getMetaDataContextManager().getStorageUnitManager()).alter(eq("foo_db"),
 any());
-    }
-    
-    @Test
-    void assertHandleStorageUnitUnregistered() {
-        
when(contextManager.getMetaDataContexts().getMetaData().containsDatabase("foo_db")).thenReturn(true);
-        handler.handle("foo_db", new 
DataChangedEvent("/metadata/foo_db/data_sources/units/foo_unit", "", 
Type.DELETED));
-        
verify(contextManager.getMetaDataContextManager().getStorageUnitManager()).unregister("foo_db",
 "foo_unit");
-    }
 }

Reply via email to