From 8ffbfdcbff8d8156a360eaa50eee33ad08fb1315 Mon Sep 17 00:00:00 2001 From: Liang Zhang Date: Sun, 15 Sep 2024 23:44:03 +0800 Subject: [PATCH] Refactor ComputeNodeOnlineDispatchEventBuilderTest (#32897) --- ...ComputeNodeOnlineDispatchEventBuilder.java | 23 ++++++++++--------- .../ClusterStateDispatchEventBuilderTest.java | 5 ++++ ...uteNodeOnlineDispatchEventBuilderTest.java | 20 ++++++++++++++-- 3 files changed, 35 insertions(+), 13 deletions(-) diff --git a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/event/builder/ComputeNodeOnlineDispatchEventBuilder.java b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/event/builder/ComputeNodeOnlineDispatchEventBuilder.java index ecbbf6759ff6a..6ffe881c9f1cc 100644 --- a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/event/builder/ComputeNodeOnlineDispatchEventBuilder.java +++ b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/event/builder/ComputeNodeOnlineDispatchEventBuilder.java @@ -49,7 +49,7 @@ public String getSubscribedKey() { @Override public Collection getSubscribedTypes() { - return Arrays.asList(Type.ADDED, Type.UPDATED, Type.DELETED); + return Arrays.asList(Type.ADDED, Type.DELETED); } @Override @@ -59,16 +59,17 @@ public Optional build(final DataChangedEvent event) { private Optional createInstanceEvent(final DataChangedEvent event) { Matcher matcher = getInstanceOnlinePathMatcher(event.getKey()); - if (matcher.find()) { - ComputeNodeData computeNodeData = new YamlComputeNodeDataSwapper().swapToObject(YamlEngine.unmarshal(event.getValue(), YamlComputeNodeData.class)); - InstanceMetaData instanceMetaData = InstanceMetaDataFactory.create(matcher.group(2), - InstanceType.valueOf(matcher.group(1).toUpperCase()), computeNodeData.getAttribute(), computeNodeData.getVersion()); - if (Type.ADDED == event.getType()) { - return Optional.of(new InstanceOnlineEvent(instanceMetaData)); - } - if (Type.DELETED == event.getType()) { - return Optional.of(new InstanceOfflineEvent(instanceMetaData)); - } + if (!matcher.find()) { + return Optional.empty(); + } + ComputeNodeData computeNodeData = new YamlComputeNodeDataSwapper().swapToObject(YamlEngine.unmarshal(event.getValue(), YamlComputeNodeData.class)); + InstanceMetaData instanceMetaData = InstanceMetaDataFactory.create( + matcher.group(2), InstanceType.valueOf(matcher.group(1).toUpperCase()), computeNodeData.getAttribute(), computeNodeData.getVersion()); + if (Type.ADDED == event.getType()) { + return Optional.of(new InstanceOnlineEvent(instanceMetaData)); + } + if (Type.DELETED == event.getType()) { + return Optional.of(new InstanceOfflineEvent(instanceMetaData)); } return Optional.empty(); } diff --git a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/event/builder/ClusterStateDispatchEventBuilderTest.java b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/event/builder/ClusterStateDispatchEventBuilderTest.java index 57bb9cb6d4613..f0eccbcb9adf9 100644 --- a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/event/builder/ClusterStateDispatchEventBuilderTest.java +++ b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/event/builder/ClusterStateDispatchEventBuilderTest.java @@ -35,6 +35,11 @@ class ClusterStateDispatchEventBuilderTest { private final ClusterStateDispatchEventBuilder builder = new ClusterStateDispatchEventBuilder(); + @Test + void assertGetSubscribedKey() { + assertThat(builder.getSubscribedKey(), is("/nodes/compute_nodes/status")); + } + @Test void assertBuildEventWhenDelete() { assertFalse(builder.build(new DataChangedEvent("/nodes/compute_nodes/status", ClusterState.READ_ONLY.name(), Type.DELETED)).isPresent()); diff --git a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/event/builder/ComputeNodeOnlineDispatchEventBuilderTest.java b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/event/builder/ComputeNodeOnlineDispatchEventBuilderTest.java index 82a6831413fb4..c693e5feb54e1 100644 --- a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/event/builder/ComputeNodeOnlineDispatchEventBuilderTest.java +++ b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/event/builder/ComputeNodeOnlineDispatchEventBuilderTest.java @@ -29,6 +29,7 @@ import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; +import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; class ComputeNodeOnlineDispatchEventBuilderTest { @@ -36,7 +37,17 @@ class ComputeNodeOnlineDispatchEventBuilderTest { private final ComputeNodeOnlineDispatchEventBuilder builder = new ComputeNodeOnlineDispatchEventBuilder(); @Test - void assertComputeNodeOnline() { + void assertGetSubscribedKey() { + assertThat(builder.getSubscribedKey(), is("/nodes/compute_nodes/online")); + } + + @Test + void assertBuildWithInvalidInstanceOnlinePath() { + assertFalse(builder.build(new DataChangedEvent("/nodes/compute_nodes/online/foo", "{attribute: 127.0.0.1@3307,version: 1}", Type.ADDED)).isPresent()); + } + + @Test + void assertBuildComputeNodeOnlineEvent() { Optional actual = builder.build(new DataChangedEvent("/nodes/compute_nodes/online/proxy/foo_instance_id", "{attribute: 127.0.0.1@3307,version: 1}", Type.ADDED)); assertTrue(actual.isPresent()); InstanceOnlineEvent event = (InstanceOnlineEvent) actual.get(); @@ -48,7 +59,7 @@ void assertComputeNodeOnline() { } @Test - void assertComputeNodeOffline() { + void assertBuildWithComputeNodeOfflineEvent() { Optional actual = builder.build(new DataChangedEvent("/nodes/compute_nodes/online/proxy/foo_instance_id", "{attribute: 127.0.0.1@3307,version: 1}", Type.DELETED)); assertTrue(actual.isPresent()); InstanceOfflineEvent event = (InstanceOfflineEvent) actual.get(); @@ -58,4 +69,9 @@ void assertComputeNodeOffline() { assertThat(event.getInstanceMetaData().getVersion(), is("1")); assertThat(event.getInstanceMetaData().getAttributes(), is("127.0.0.1@3307")); } + + @Test + void assertBuildWithInvalidOperationType() { + assertFalse(builder.build(new DataChangedEvent("/nodes/compute_nodes/online/proxy/foo_instance_id", "{attribute: 127.0.0.1@3307,version: 1}", Type.UPDATED)).isPresent()); + } }