From de87bd7a210f6c097e798bdbf7b0c81a71d3a3fc Mon Sep 17 00:00:00 2001 From: jaysunxiao Date: Thu, 1 Jul 2021 14:26:37 +0800 Subject: [PATCH] =?UTF-8?q?test[gateway]:=20=E7=AE=80=E5=8C=96=E7=BD=91?= =?UTF-8?q?=E5=85=B3=E8=BD=AC=E5=8F=91=E6=B5=8B=E8=AF=95=E7=94=A8=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GatewayProviderController.java | 24 ++++++------ .../zfoo/net/core/gateway/GatewayTest.java | 38 ++++++++++++------- .../net/core/tcp/client/TcpClientTest.java | 3 +- .../net/core/tcp/server/TcpServerTest.java | 17 ++++----- ...der.java => GatewayToProviderRequest.java} | 31 ++++++--------- ...er.java => GatewayToProviderResponse.java} | 30 ++++++--------- net/src/test/resources/protocol.xml | 4 +- 7 files changed, 71 insertions(+), 76 deletions(-) rename net/src/test/java/com/zfoo/net/core/gateway/{controller => }/GatewayProviderController.java (52%) rename net/src/test/java/com/zfoo/net/packet/gateway/{CM_GatewayProvider.java => GatewayToProviderRequest.java} (74%) rename net/src/test/java/com/zfoo/net/packet/gateway/{SM_GatewayProvider.java => GatewayToProviderResponse.java} (74%) diff --git a/net/src/test/java/com/zfoo/net/core/gateway/controller/GatewayProviderController.java b/net/src/test/java/com/zfoo/net/core/gateway/GatewayProviderController.java similarity index 52% rename from net/src/test/java/com/zfoo/net/core/gateway/controller/GatewayProviderController.java rename to net/src/test/java/com/zfoo/net/core/gateway/GatewayProviderController.java index fdf59be0..d26ada4c 100644 --- a/net/src/test/java/com/zfoo/net/core/gateway/controller/GatewayProviderController.java +++ b/net/src/test/java/com/zfoo/net/core/gateway/GatewayProviderController.java @@ -1,6 +1,5 @@ /* * Copyright (C) 2020 The zfoo Authors - * * Licensed 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 * @@ -11,15 +10,18 @@ * See the License for the specific language governing permissions and limitations under the License. */ -package com.zfoo.net.core.gateway.controller; +package com.zfoo.net.core.gateway; import com.zfoo.net.NetContext; import com.zfoo.net.dispatcher.model.anno.PacketReceiver; -import com.zfoo.net.packet.gateway.CM_GatewayProvider; -import com.zfoo.net.packet.gateway.SM_GatewayProvider; +import com.zfoo.net.packet.gateway.GatewayToProviderRequest; +import com.zfoo.net.packet.gateway.GatewayToProviderResponse; import com.zfoo.net.packet.model.GatewayPacketAttachment; import com.zfoo.net.session.model.Session; import com.zfoo.protocol.util.JsonUtils; +import com.zfoo.protocol.util.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; /** @@ -29,15 +31,15 @@ import org.springframework.stereotype.Component; @Component public class GatewayProviderController { + private static final Logger logger = LoggerFactory.getLogger(GatewayProviderController.class); + @PacketReceiver - public void atCM_GatewayProvider(Session session, CM_GatewayProvider cm, GatewayPacketAttachment gatewayAttachment) { - System.out.println("服务器收到消息:" + JsonUtils.object2String(cm)); + public void atGatewayToProviderRequest(Session session, GatewayToProviderRequest request, GatewayPacketAttachment gatewayAttachment) { + logger.info("provider receive [packet:{}] from client", JsonUtils.object2String(request)); - var sm = new SM_GatewayProvider(); - sm.setA(NetContext.getConfigManager().getLocalConfig().toLocalRegisterVO().toString()); - sm.setB(cm.getB()); + var response = new GatewayToProviderResponse(); + response.setMessage(StringUtils.format("Hello, this is the [provider:{}] response!", NetContext.getConfigManager().getLocalConfig().toLocalRegisterVO().toString())); - System.out.println("服务器返回消息:" + JsonUtils.object2String(sm)); - NetContext.getDispatcher().send(session, sm, gatewayAttachment); + NetContext.getDispatcher().send(session, response, gatewayAttachment); } } diff --git a/net/src/test/java/com/zfoo/net/core/gateway/GatewayTest.java b/net/src/test/java/com/zfoo/net/core/gateway/GatewayTest.java index 518fbb1e..fbd75329 100644 --- a/net/src/test/java/com/zfoo/net/core/gateway/GatewayTest.java +++ b/net/src/test/java/com/zfoo/net/core/gateway/GatewayTest.java @@ -15,17 +15,20 @@ package com.zfoo.net.core.gateway; import com.zfoo.net.NetContext; import com.zfoo.net.core.tcp.TcpClient; -import com.zfoo.net.packet.gateway.CM_GatewayProvider; -import com.zfoo.net.packet.gateway.SM_GatewayProvider; +import com.zfoo.net.packet.gateway.GatewayToProviderRequest; +import com.zfoo.net.packet.gateway.GatewayToProviderResponse; import com.zfoo.net.session.SessionUtils; import com.zfoo.protocol.util.JsonUtils; import com.zfoo.util.ThreadUtils; import com.zfoo.util.net.HostAndPort; import org.junit.Ignore; import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.context.support.ClassPathXmlApplicationContext; import java.util.concurrent.Executors; +import java.util.concurrent.atomic.AtomicInteger; /** * @author jaysunxiao @@ -34,6 +37,8 @@ import java.util.concurrent.Executors; @Ignore public class GatewayTest { + private static final Logger logger = LoggerFactory.getLogger(GatewayTest.class); + /** * 启动zookeeper,依次运行下面的测试方法启动服务提供者,网关,然后运行clientTest,消息会通过网关转发到服务提供者 */ @@ -70,27 +75,32 @@ public class GatewayTest { @Test public void clientTest() { var context = new ClassPathXmlApplicationContext("gateway/gateway_client_config.xml"); - var executor = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()); SessionUtils.printSessionInfo(); + var client = new TcpClient(HostAndPort.valueOf(NetContext.getConfigManager().getLocalConfig().getHostConfig().getAddressMap().get("server0"))); var session = client.start(); - for (int i = 0; i <= 100; i++) { - int finalI = i; + var executorSize = Runtime.getRuntime().availableProcessors() * 2; + var executor = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()); + + var request = new GatewayToProviderRequest(); + request.setMessage(NetContext.getConfigManager().getLocalConfig().toLocalRegisterVO().toString()); + var atomicInteger = new AtomicInteger(0); + + for (int i = 0; i < executorSize; i++) { var thread = new Thread(() -> { - var cm = new CM_GatewayProvider(); - cm.setA(NetContext.getConfigManager().getLocalConfig().toLocalRegisterVO().toString()); - cm.setB(finalI); - try { - System.out.println("客户端发送消息:" + JsonUtils.object2String(cm)); - var sm = NetContext.getDispatcher().syncAsk(session, cm, SM_GatewayProvider.class, null).packet(); - System.out.println("客户端收到消息:" + JsonUtils.object2String(sm)); - } catch (Exception e) { - e.printStackTrace(); + for (int j = 0; j < 10000; j++) { + try { + var response = NetContext.getDispatcher().syncAsk(session, request, GatewayToProviderResponse.class, null).packet(); + logger.info("客户端请求[{}]收到消息[{}]", atomicInteger.incrementAndGet(), JsonUtils.object2String(response)); + } catch (Exception e) { + e.printStackTrace(); + } } }); executor.execute(thread); } + ThreadUtils.sleep(Long.MAX_VALUE); } diff --git a/net/src/test/java/com/zfoo/net/core/tcp/client/TcpClientTest.java b/net/src/test/java/com/zfoo/net/core/tcp/client/TcpClientTest.java index b8530ee8..74b4ef6b 100644 --- a/net/src/test/java/com/zfoo/net/core/tcp/client/TcpClientTest.java +++ b/net/src/test/java/com/zfoo/net/core/tcp/client/TcpClientTest.java @@ -97,6 +97,7 @@ public class TcpClientTest { var executorSize = Runtime.getRuntime().availableProcessors() * 2; var executor = Executors.newFixedThreadPool(executorSize); + var atomicInteger = new AtomicInteger(0); for (int i = 0; i < executorSize; i++) { var thread = new Thread(() -> { @@ -106,7 +107,7 @@ public class TcpClientTest { var answer = NetContext.getDispatcher().asyncAsk(session1, ask, AsyncMess0Answer.class, null); answer.whenComplete(sm -> { - logger.info("异步请求收到结果[{}]", JsonUtils.object2String(answer)); + logger.info("异步请求[{}]收到结果[{}]", atomicInteger.incrementAndGet(), JsonUtils.object2String(answer)); } ); } diff --git a/net/src/test/java/com/zfoo/net/core/tcp/server/TcpServerTest.java b/net/src/test/java/com/zfoo/net/core/tcp/server/TcpServerTest.java index 79953039..b51bc592 100644 --- a/net/src/test/java/com/zfoo/net/core/tcp/server/TcpServerTest.java +++ b/net/src/test/java/com/zfoo/net/core/tcp/server/TcpServerTest.java @@ -23,7 +23,6 @@ import org.junit.Ignore; import org.junit.Test; import org.springframework.context.support.ClassPathXmlApplicationContext; -import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; /** @@ -33,9 +32,6 @@ import java.util.concurrent.Executors; @Ignore public class TcpServerTest { - private static final ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("config.xml"); - private static final ExecutorService executor = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()); - /** * 单机服务器教程,启动成功过后在com.zfoo.net.core.tcp.client.TcpClientTest中运行startClientTest *

@@ -43,6 +39,7 @@ public class TcpServerTest { */ @Test public void startServer0() { + var context = new ClassPathXmlApplicationContext("config.xml"); SessionUtils.printSessionInfo(); var server0 = new TcpServer(HostAndPort.valueOf(NetContext.getConfigManager().getLocalConfig().getHostConfig().getAddressMap().get("server0"))); @@ -52,16 +49,15 @@ public class TcpServerTest { @Test public void startServer1() { - SessionUtils.printSessionInfo(); + var context = new ClassPathXmlApplicationContext("config.xml"); - connectServer0(); + SessionUtils.printSessionInfo(); var server1 = new TcpServer(HostAndPort.valueOf(NetContext.getConfigManager().getLocalConfig().getHostConfig().getAddressMap().get("server1"))); server1.start(); - ThreadUtils.sleep(Long.MAX_VALUE); - } - private void connectServer0() { + // 连接server0 + var executor = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()); executor.execute(() -> { while (true) { try { @@ -75,6 +71,9 @@ public class TcpServerTest { } } }); + + ThreadUtils.sleep(Long.MAX_VALUE); } + } diff --git a/net/src/test/java/com/zfoo/net/packet/gateway/CM_GatewayProvider.java b/net/src/test/java/com/zfoo/net/packet/gateway/GatewayToProviderRequest.java similarity index 74% rename from net/src/test/java/com/zfoo/net/packet/gateway/CM_GatewayProvider.java rename to net/src/test/java/com/zfoo/net/packet/gateway/GatewayToProviderRequest.java index 71bd8815..f475fb0d 100644 --- a/net/src/test/java/com/zfoo/net/packet/gateway/CM_GatewayProvider.java +++ b/net/src/test/java/com/zfoo/net/packet/gateway/GatewayToProviderRequest.java @@ -19,32 +19,23 @@ import com.zfoo.protocol.IPacket; * @author jaysunxiao * @version 3.0 */ -public class CM_GatewayProvider implements IPacket { +public class GatewayToProviderRequest implements IPacket { public static final transient short PROTOCOL_ID = 4102; - private String a; - - private int b; - - public String getA() { - return a; - } - - public void setA(String a) { - this.a = a; - } - - public int getB() { - return b; - } - - public void setB(int b) { - this.b = b; - } + private String message; @Override public short protocolId() { return PROTOCOL_ID; } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + } diff --git a/net/src/test/java/com/zfoo/net/packet/gateway/SM_GatewayProvider.java b/net/src/test/java/com/zfoo/net/packet/gateway/GatewayToProviderResponse.java similarity index 74% rename from net/src/test/java/com/zfoo/net/packet/gateway/SM_GatewayProvider.java rename to net/src/test/java/com/zfoo/net/packet/gateway/GatewayToProviderResponse.java index 013a3004..9b55c293 100644 --- a/net/src/test/java/com/zfoo/net/packet/gateway/SM_GatewayProvider.java +++ b/net/src/test/java/com/zfoo/net/packet/gateway/GatewayToProviderResponse.java @@ -19,31 +19,23 @@ import com.zfoo.protocol.IPacket; * @author jaysunxiao * @version 3.0 */ -public class SM_GatewayProvider implements IPacket { +public class GatewayToProviderResponse implements IPacket { public static final transient short PROTOCOL_ID = 4103; - private String a; - private int b; - - public String getA() { - return a; - } - - public void setA(String a) { - this.a = a; - } - - public int getB() { - return b; - } - - public void setB(int b) { - this.b = b; - } + private String message; @Override public short protocolId() { return PROTOCOL_ID; } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + } diff --git a/net/src/test/resources/protocol.xml b/net/src/test/resources/protocol.xml index 0aac7f38..b9882fb0 100644 --- a/net/src/test/resources/protocol.xml +++ b/net/src/test/resources/protocol.xml @@ -75,8 +75,8 @@ - - + +