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 e9b30732ed3 Add more test cases on ComputeNodePersistService (#32913)
e9b30732ed3 is described below
commit e9b30732ed3640249b40483e6eae87a3397f7852
Author: Liang Zhang <[email protected]>
AuthorDate: Wed Sep 18 09:41:25 2024 +0800
Add more test cases on ComputeNodePersistService (#32913)
* Add more test cases on ComputeNodePersistService
* Add more test cases on QualifiedDataSourceStatePersistService
---
...eadwriteSplittingStorageUnitStatusExecutor.java | 2 +-
.../QualifiedDataSourceStatePersistService.java | 14 +++++-----
...QualifiedDataSourceStatePersistServiceTest.java | 31 +++++++++++++++++-----
3 files changed, 33 insertions(+), 14 deletions(-)
diff --git
a/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/AlterReadwriteSplittingStorageUnitStatusExecutor.java
b/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/AlterReadwriteSplittingStorageUnitStatusExecutor.java
index d96c8f6974d..e5e6b1ba1d5 100644
---
a/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/AlterReadwriteSplittingStorageUnitStatusExecutor.java
+++
b/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/AlterReadwriteSplittingStorageUnitStatusExecutor.java
@@ -74,7 +74,7 @@ public final class
AlterReadwriteSplittingStorageUnitStatusExecutor
private void updateStatus(final ContextManager contextManager, final
AlterReadwriteSplittingStorageUnitStatusStatement sqlStatement) {
DataSourceState status = sqlStatement.isEnable() ?
DataSourceState.ENABLED : DataSourceState.DISABLED;
-
contextManager.getPersistServiceFacade().getQualifiedDataSourceStatePersistService().updateState(database.getName(),
sqlStatement.getRuleName(), sqlStatement.getStorageUnitName(), status);
+
contextManager.getPersistServiceFacade().getQualifiedDataSourceStatePersistService().update(database.getName(),
sqlStatement.getRuleName(), sqlStatement.getStorageUnitName(), status);
}
@Override
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/persist/service/QualifiedDataSourceStatePersistService.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/persist/service/QualifiedDataSourceStatePersistService.java
index d6e1579b8c4..75ba907af84 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/persist/service/QualifiedDataSourceStatePersistService.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/persist/service/QualifiedDataSourceStatePersistService.java
@@ -43,9 +43,9 @@ public final class QualifiedDataSourceStatePersistService {
/**
* Load qualified data source states.
*
- * @return qualified data source states
+ * @return loaded qualified data source states
*/
- public Map<String, QualifiedDataSourceState> loadStates() {
+ public Map<String, QualifiedDataSourceState> load() {
Collection<String> qualifiedDataSourceNodes =
repository.getChildrenKeys(QualifiedDataSourceNode.getRootPath());
Map<String, QualifiedDataSourceState> result = new
HashMap<>(qualifiedDataSourceNodes.size(), 1F);
qualifiedDataSourceNodes.forEach(each -> {
@@ -60,12 +60,12 @@ public final class QualifiedDataSourceStatePersistService {
/**
* Update qualified data source state.
*
- * @param databaseName database name
- * @param groupName group name
- * @param storageUnitName storage unit name
- * @param dataSourceState data source state
+ * @param databaseName to be updated database name
+ * @param groupName to be updated group name
+ * @param storageUnitName to be updated storage unit name
+ * @param dataSourceState to be updated data source state
*/
- public void updateState(final String databaseName, final String groupName,
final String storageUnitName, final DataSourceState dataSourceState) {
+ public void update(final String databaseName, final String groupName,
final String storageUnitName, final DataSourceState dataSourceState) {
QualifiedDataSourceState status = new
QualifiedDataSourceState(dataSourceState);
repository.persist(QualifiedDataSourceNode.getQualifiedDataSourceNodePath(
new QualifiedDataSource(databaseName, groupName,
storageUnitName)), YamlEngine.marshal(new
YamlQualifiedDataSourceStateSwapper().swapToYamlConfiguration(status)));
diff --git
a/mode/core/src/test/java/org/apache/shardingsphere/mode/persist/service/QualifiedDataSourceStatePersistServiceTest.java
b/mode/core/src/test/java/org/apache/shardingsphere/mode/persist/service/QualifiedDataSourceStatePersistServiceTest.java
index b5721114c2d..3719093359e 100644
---
a/mode/core/src/test/java/org/apache/shardingsphere/mode/persist/service/QualifiedDataSourceStatePersistServiceTest.java
+++
b/mode/core/src/test/java/org/apache/shardingsphere/mode/persist/service/QualifiedDataSourceStatePersistServiceTest.java
@@ -17,29 +17,48 @@
package org.apache.shardingsphere.mode.persist.service;
+import org.apache.shardingsphere.infra.state.datasource.DataSourceState;
+import
org.apache.shardingsphere.infra.state.datasource.qualified.QualifiedDataSourceState;
import org.apache.shardingsphere.mode.spi.PersistRepository;
+import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import java.util.Arrays;
-import java.util.List;
+import java.util.Map;
-import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
-import static org.mockito.ArgumentMatchers.anyString;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@ExtendWith(MockitoExtension.class)
class QualifiedDataSourceStatePersistServiceTest {
+ private QualifiedDataSourceStatePersistService
qualifiedDataSourceStatePersistService;
+
@Mock
private PersistRepository repository;
+ @BeforeEach
+ void setUp() {
+ qualifiedDataSourceStatePersistService = new
QualifiedDataSourceStatePersistService(repository);
+ }
+
@Test
void assertLoadStatus() {
- List<String> disabledDataSources =
Arrays.asList("replica_query_db.readwrite_ds.replica_ds_0",
"other_schema.other_ds.other_ds0");
-
when(repository.getChildrenKeys(anyString())).thenReturn(disabledDataSources);
- assertDoesNotThrow(() -> new
QualifiedDataSourceStatePersistService(repository).loadStates());
+
when(repository.getChildrenKeys("/nodes/qualified_data_sources")).thenReturn(Arrays.asList("foo_db.foo_group.foo_ds",
"bar_db.bar_group.bar_ds"));
+
when(repository.query("/nodes/qualified_data_sources/foo_db.foo_group.foo_ds")).thenReturn("state:
ENABLED");
+ Map<String, QualifiedDataSourceState> actual =
qualifiedDataSourceStatePersistService.load();
+ assertThat(actual.size(), is(1));
+ assertThat(actual.get("foo_db.foo_group.foo_ds").getState(),
is(DataSourceState.ENABLED));
+ }
+
+ @Test
+ void assertUpdateStatus() {
+ qualifiedDataSourceStatePersistService.update("foo_db", "foo_group",
"foo_ds", DataSourceState.ENABLED);
+
verify(repository).persist("/nodes/qualified_data_sources/foo_db.foo_group.foo_ds",
"state: ENABLED\n");
}
}