test[tcp]: 优化Tcp服务器的测试用例

This commit is contained in:
jaysunxiao
2021-07-01 12:01:07 +08:00
parent aa0ec37a5d
commit c7d3fe1d69
7 changed files with 116 additions and 35 deletions
@@ -14,9 +14,11 @@
package com.zfoo.net.core.tcp.client;
import com.zfoo.net.dispatcher.model.anno.PacketReceiver;
import com.zfoo.net.packet.SM_Int;
import com.zfoo.net.packet.tcp.TcpHelloResponse;
import com.zfoo.net.session.model.Session;
import com.zfoo.protocol.util.JsonUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
/**
@@ -27,10 +29,11 @@ import org.springframework.stereotype.Component;
public class TcpClientPacketController {
private static final Logger logger = LoggerFactory.getLogger(TcpClientPacketController.class);
@PacketReceiver
public void atSM_Int(Session session, SM_Int sm) {
System.out.println("receive packet from server:");
System.out.println(JsonUtils.object2String(sm));
public void atTcpHelloResponse(Session session, TcpHelloResponse response) {
logger.info("tcp client receive [packet:{}] from server", JsonUtils.object2String(response));
}
}
@@ -15,7 +15,11 @@ package com.zfoo.net.core.tcp.client;
import com.zfoo.net.NetContext;
import com.zfoo.net.core.tcp.TcpClient;
import com.zfoo.net.packet.*;
import com.zfoo.net.packet.CM_AsyncMess0;
import com.zfoo.net.packet.CM_SyncMess;
import com.zfoo.net.packet.SM_AsyncMess0;
import com.zfoo.net.packet.SM_SyncMess;
import com.zfoo.net.packet.tcp.TcpHelloRequest;
import com.zfoo.net.session.SessionUtils;
import com.zfoo.protocol.exception.ExceptionUtils;
import com.zfoo.protocol.util.FileUtils;
@@ -48,22 +52,14 @@ public class TcpClientTest {
var client = new TcpClient(HostAndPort.valueOf(NetContext.getConfigManager().getLocalConfig().getHostConfig().getAddressMap().get("server0")));
var session = client.start();
new Thread(() -> {
CM_Int cm = new CM_Int();
cm.setFlag(false);
cm.setA(Byte.MIN_VALUE);
cm.setB(Short.MIN_VALUE);
cm.setC(Integer.MIN_VALUE);
cm.setD(Long.MIN_VALUE);
cm.setE('e');
cm.setF("Hellothis is the client!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
var request = new TcpHelloRequest();
request.setMessage("Hello, this is the tcp client!");
for (int i = 0; i < 1000; i++) {
ThreadUtils.sleep(2000);
NetContext.getDispatcher().send(session, cm);
}
}).start();
for (int i = 0; i < 1000; i++) {
ThreadUtils.sleep(2000);
NetContext.getDispatcher().send(session, request);
}
ThreadUtils.sleep(Long.MAX_VALUE);
}
@@ -15,10 +15,14 @@ package com.zfoo.net.core.tcp.server;
import com.zfoo.net.NetContext;
import com.zfoo.net.dispatcher.model.anno.PacketReceiver;
import com.zfoo.net.packet.*;
import com.zfoo.net.packet.tcp.TcpHelloRequest;
import com.zfoo.net.packet.tcp.TcpHelloResponse;
import com.zfoo.net.session.model.Session;
import com.zfoo.protocol.util.FileUtils;
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;
/**
@@ -28,21 +32,16 @@ import org.springframework.stereotype.Component;
@Component
public class TcpServerPacketController {
private static final Logger logger = LoggerFactory.getLogger(TcpServerPacketController.class);
@PacketReceiver
public void atCM_Int(Session session, CM_Int cm) {
System.out.println("receive packet from client:");
System.out.println(JsonUtils.object2String(cm));
public void atTcpHelloRequest(Session session, TcpHelloRequest request) {
logger.info("receive [packet:{}] from client", JsonUtils.object2String(request));
SM_Int sm = new SM_Int();
sm.setFlag(false);
sm.setA(Byte.MIN_VALUE);
sm.setB(Short.MIN_VALUE);
sm.setC(Integer.MIN_VALUE);
sm.setD(Long.MIN_VALUE);
sm.setE('e');
sm.setF("Hellothis is the Server!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
var response = new TcpHelloResponse();
response.setMessage("Hello, this is the udp server!");
NetContext.getDispatcher().send(session, sm);
NetContext.getDispatcher().send(session, response);
}
@PacketReceiver
@@ -54,19 +54,19 @@ public class TcpServerTest {
public void startServer1() {
SessionUtils.printSessionInfo();
connectServer1();
connectServer0();
var server1 = new TcpServer(HostAndPort.valueOf(NetContext.getConfigManager().getLocalConfig().getHostConfig().getAddressMap().get("server1")));
server1.start();
ThreadUtils.sleep(Long.MAX_VALUE);
}
private void connectServer1() {
private void connectServer0() {
executor.execute(() -> {
while (true) {
try {
var client1 = new TcpClient(HostAndPort.valueOf(NetContext.getConfigManager().getLocalConfig().getHostConfig().getAddressMap().get("client0")));
client1.start();
var client0 = new TcpClient(HostAndPort.valueOf(NetContext.getConfigManager().getLocalConfig().getHostConfig().getAddressMap().get("client0")));
client0.start();
break;
} catch (Exception e) {
System.out.println("连接失败,开始重新连接");
@@ -0,0 +1,40 @@
/*
* 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
*
* 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 com.zfoo.net.packet.tcp;
import com.zfoo.protocol.IPacket;
/**
* @author jaysunxiao
* @version 3.0
*/
public class TcpHelloRequest implements IPacket {
public static final transient short PROTOCOL_ID = 1300;
private String message;
@Override
public short protocolId() {
return PROTOCOL_ID;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
@@ -0,0 +1,40 @@
/*
* 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
*
* 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 com.zfoo.net.packet.tcp;
import com.zfoo.protocol.IPacket;
/**
* @author jaysunxiao
* @version 3.0
*/
public class TcpHelloResponse implements IPacket {
public static final transient short PROTOCOL_ID = 1301;
private String message;
@Override
public short protocolId() {
return PROTOCOL_ID;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
+3
View File
@@ -61,6 +61,9 @@
<protocol id="1200" location="com.zfoo.net.packet.udp.UdpHelloRequest"/>
<protocol id="1201" location="com.zfoo.net.packet.udp.UdpHelloResponse"/>
<protocol id="1300" location="com.zfoo.net.packet.tcp.TcpHelloRequest"/>
<protocol id="1301" location="com.zfoo.net.packet.tcp.TcpHelloResponse"/>
</module>
<module id="4" name="js" minId="2000" maxId="3000" version="1.0.0">