package JUnit; import static org.junit.Assert.*; import java.io.IOException; import java.net.UnknownHostException; import org.junit.Before; import org.junit.Test; import protocol.ProtoHead; import protocol.Msg.LoginMsg; import protocol.Msg.LoginMsg.LoginRsp.ResultCode; import server.NetworkPacket; import client.SocketClientTest; /** * 测试第二个人登陆后第一个人被踢下来的情况 * * @author Feng * */ public class TestDoubleLogin { // public SocketClientTest client1, client2; // @Before // public void init() throws UnknownHostException, IOException { // client1 = new SocketClientTest(); // client1.link(); // client2 = new SocketClientTest(); // client2.link(); // } @Test public void test() throws UnknownHostException, IOException { ClientSocket client1, client2; String user = "a"; // 1号客户端登陆 client1 = new ClientSocket(); ResultCode resultCode = client1.login(user, user); assertEquals(resultCode, LoginMsg.LoginRsp.ResultCode.SUCCESS); // 2号客户端登陆 client2 = new ClientSocket(); resultCode = client2.login(user, user); assertEquals(resultCode, LoginMsg.LoginRsp.ResultCode.SUCCESS); // 检测1号客户端的收到的“踢下线”消息 byte[] resultBytes; boolean getResponse = false; for (int i = 0; i < 2; i++) { resultBytes = client1.readFromServerWithoutKeepAlive(); // 其他消息,不管 if (ProtoHead.ENetworkMessage.OFFLINE_SYNC != NetworkPacket.getMessageType(resultBytes)) continue; // System.err.println(NetworkMessage.getMessageType(resultBytes)); // 回复服务器 // client1.writeToServer(NetworkPacket.packMessage(ProtoHead.ENetworkMessage.OFFLINE_SYNC_VALUE, // NetworkPacket.getMessageID(resultBytes), new byte[]{})); // 踢人通知 assertTrue(true); getResponse = true; return; } if (!getResponse) assertFalse(true); } }