This is an automated email from the ASF dual-hosted git repository.
albumenj pushed a commit to branch 3.2
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/3.2 by this push:
new 0553d70899 Add condition to match serviceKey. (#13869)
0553d70899 is described below
commit 0553d70899253519bd6fab00fb647eababf1c911
Author: kaze <[email protected]>
AuthorDate: Tue Mar 12 17:26:18 2024 +0800
Add condition to match serviceKey. (#13869)
---
.../dubbo/qos/command/impl/ChangeTelnet.java | 3 ++-
.../apache/dubbo/qos/command/impl/CountTelnet.java | 3 ++-
.../dubbo/qos/command/impl/ChangeTelnetTest.java | 11 ++++++++-
.../dubbo/qos/command/impl/CountTelnetTest.java | 26 +++++++++++++++++++++-
4 files changed, 39 insertions(+), 4 deletions(-)
diff --git
a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/impl/ChangeTelnet.java
b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/impl/ChangeTelnet.java
index e16d7e41b6..4eac865f2c 100644
---
a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/impl/ChangeTelnet.java
+++
b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/impl/ChangeTelnet.java
@@ -58,7 +58,8 @@ public class ChangeTelnet implements BaseCommand {
for (Exporter<?> exporter : dubboProtocol.getExporters()) {
if
(message.equals(exporter.getInvoker().getInterface().getSimpleName())
||
message.equals(exporter.getInvoker().getInterface().getName())
- ||
message.equals(exporter.getInvoker().getUrl().getPath())) {
+ ||
message.equals(exporter.getInvoker().getUrl().getPath())
+ ||
message.equals(exporter.getInvoker().getUrl().getServiceKey())) {
found = true;
break;
}
diff --git
a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/impl/CountTelnet.java
b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/impl/CountTelnet.java
index 9d89c98306..425f4706b3 100644
---
a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/impl/CountTelnet.java
+++
b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/impl/CountTelnet.java
@@ -85,7 +85,8 @@ public class CountTelnet implements BaseCommand {
for (Exporter<?> exporter : dubboProtocol.getExporters()) {
if
(service.equals(exporter.getInvoker().getInterface().getSimpleName())
||
service.equals(exporter.getInvoker().getInterface().getName())
- ||
service.equals(exporter.getInvoker().getUrl().getPath())) {
+ || service.equals(exporter.getInvoker().getUrl().getPath())
+ ||
service.equals(exporter.getInvoker().getUrl().getServiceKey())) {
invoker = exporter.getInvoker();
break;
}
diff --git
a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/ChangeTelnetTest.java
b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/ChangeTelnetTest.java
index 6a8b67531d..a182a5e168 100644
---
a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/ChangeTelnetTest.java
+++
b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/ChangeTelnetTest.java
@@ -71,7 +71,7 @@ class ChangeTelnetTest {
mockChannel.attr(ChangeTelnet.SERVICE_KEY).set("org.apache.dubbo.rpc.protocol.dubbo.support.DemoService");
given(mockCommandContext.getRemote()).willReturn(mockChannel);
given(mockInvoker.getInterface()).willReturn(DemoService.class);
-
given(mockInvoker.getUrl()).willReturn(URL.valueOf("dubbo://127.0.0.1:20884/demo"));
+
given(mockInvoker.getUrl()).willReturn(URL.valueOf("dubbo://127.0.0.1:20884/demo?group=g&version=1.0.0"));
}
@AfterEach
@@ -110,6 +110,15 @@ class ChangeTelnetTest {
assertEquals("Used the demo as default.\r\nYou can cancel default
service by command: cd /", result);
}
+ @Test
+ void testChangeServiceKey() {
+ ExtensionLoader.getExtensionLoader(Protocol.class)
+ .getExtension(DubboProtocol.NAME)
+ .export(mockInvoker);
+ String result = change.execute(mockCommandContext, new String[]
{"g/demo:1.0.0"});
+ assertEquals("Used the g/demo:1.0.0 as default.\r\nYou can cancel
default service by command: cd /", result);
+ }
+
@Test
void testChangeMessageNull() {
String result = change.execute(mockCommandContext, null);
diff --git
a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/CountTelnetTest.java
b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/CountTelnetTest.java
index 0777e39546..a1eafa4daa 100644
---
a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/CountTelnetTest.java
+++
b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/CountTelnetTest.java
@@ -52,7 +52,7 @@ class CountTelnetTest {
private CommandContext mockCommandContext;
private CountDownLatch latch;
- private final URL url = URL.valueOf("dubbo://127.0.0.1:20884/demo");
+ private final URL url =
URL.valueOf("dubbo://127.0.0.1:20884/demo?group=g&version=1.0.0");
@BeforeEach
public void setUp() {
@@ -70,12 +70,14 @@ class CountTelnetTest {
public void tearDown() {
FrameworkModel.destroyAll();
mockChannel.close();
+ RpcStatus.removeStatus(url);
reset(mockInvoker, mockCommandContext);
}
@Test
void test() throws Exception {
String methodName = "sayHello";
+ RpcStatus.removeStatus(url, methodName);
String[] args = new String[]
{"org.apache.dubbo.qos.legacy.service.DemoService", "sayHello", "1"};
ExtensionLoader.getExtensionLoader(Protocol.class)
@@ -94,6 +96,28 @@ class CountTelnetTest {
assertThat(sb.toString(), containsString(buildTable(methodName, 10,
10, "1", "0", "0")));
}
+ @Test
+ void testCountByServiceKey() throws Exception {
+ String methodName = "sayHello";
+ RpcStatus.removeStatus(url, methodName);
+ String[] args = new String[] {"g/demo:1.0.0", "sayHello", "1"};
+
+ ExtensionLoader.getExtensionLoader(Protocol.class)
+ .getExtension(DubboProtocol.NAME)
+ .export(mockInvoker);
+ RpcStatus.beginCount(url, methodName);
+ RpcStatus.endCount(url, methodName, 10L, true);
+ count.execute(mockCommandContext, args);
+ latch.await();
+
+ StringBuilder sb = new StringBuilder();
+ for (Object o : mockChannel.getReceivedObjects()) {
+ sb.append(o.toString());
+ }
+
+ assertThat(sb.toString(), containsString(buildTable(methodName, 10,
10, "1", "0", "0")));
+ }
+
public static String buildTable(
String methodName, long averageElapsed, long maxElapsed, String
total, String failed, String active) {
List<String> header = new LinkedList<>();