package JUnit;
import static org.junit.Assert.*;
import java.io.IOException;
import java.net.UnknownHostException;
import java.util.Calendar;
import org.junit.Test;
import protocol.ProtoHead;
import protocol.Data.ChatData.ChatItem;
import protocol.Data.ChatData.ChatItem.ChatType;
import protocol.Data.ChatData.ChatItem.TargetType;
import protocol.Msg.LoginMsg.LoginReq;
import protocol.Msg.LoginMsg.LoginRsp;
import protocol.Msg.ReceiveChatMsg;
import protocol.Msg.ReceiveChatMsg.ReceiveChatSync;
import protocol.Msg.SendChatMsg.SendChatReq;
import protocol.Msg.SendChatMsg.SendChatRsp;
import server.NetworkPacket;
import test.Client111;
import tools.DataTypeTranslater;
/**
* 测试群发消息
*
* @author Administrator
*
*/
//@FixMethodOrder(MethodSorters.DEFAULT)
public class TestSendGroupChatting {
private SendChatRsp.ResultCode sendChatting(ClientSocket clientSocket, ChatItem.Builder chatItem) throws IOException {
// 构建消息对象
SendChatReq.Builder sendChattingBuilder = SendChatReq.newBuilder();
sendChattingBuilder.setChatData(chatItem);
clientSocket.writeToServer(NetworkPacket.packMessage(ProtoHead.ENetworkMessage.SEND_CHAT_REQ_VALUE, sendChattingBuilder
.build().toByteArray()));
byte[] byteArray;
for (int i = 0; i < 10; i++) {
byteArray = clientSocket.readFromServerWithoutKeepAlive();
if (NetworkPacket.getMessageType(byteArray) != ProtoHead.ENetworkMessage.SEND_CHAT_RSP)
continue;
return SendChatRsp.parseFrom(NetworkPacket.getMessageObjectBytes(byteArray)).getResultCode();
}
return null;
}
@Test
public void test1() throws UnknownHostException, IOException {
ClientSocket clientSocket1 = new ClientSocket();
ClientSocket clientSocket2 = new ClientSocket();
ClientSocket clientSocket3;
byte[] response;
String user1 = "a", user2 = "b", user3 = "c", message = "a fuck b and c", groupId = "13";
// a,b 登陆
assertEquals(clientSocket1.login(user1, user1), LoginRsp.ResultCode.SUCCESS);
assertEquals(clientSocket2.login(user2, user2), LoginRsp.ResultCode.SUCCESS);
System.out.println(user1 + " , " + user2 + " Login Over!");
// 构建消息对象
ChatItem.Builder chatItem = ChatItem.newBuilder();
chatItem.setChatBody(message);
chatItem.setSendUserId(user1);
chatItem.setReceiveUserId(groupId);
chatItem.setChatType(ChatType.TEXT);
chatItem.setTargetType(TargetType.GROUP);
// user1发送
assertEquals(sendChatting(clientSocket1, chatItem), SendChatRsp.ResultCode.SUCCESS);
System.out.println(user1 + " Send Chatting Over!");
// user2接收
byte[] byteArray = clientSocket2.readFromServerWithoutKeepAlive(ProtoHead.ENetworkMessage.RECEIVE_CHAT_SYNC);
assertNotNull(byteArray);
ReceiveChatSync receiveChatting = ReceiveChatSync.parseFrom(NetworkPacket.getMessageObjectBytes(byteArray));
ChatItem chatItem2 = receiveChatting.getChatData(0);
assertEquals(chatItem2.getChatBody(), message);
System.out.println(user2 + " Get Chatting");
// Calendar calendar = Calendar.getInstance();
// calendar.setTimeInMillis(chatItem2.getDate()-99999);
System.out.println(ClientSocket.getChatItemInfo(chatItem2));
// user3接收
clientSocket3 = new ClientSocket();
// user3登陆
assertEquals(clientSocket3.login(user3, user3), LoginRsp.ResultCode.SUCCESS);
byteArray = clientSocket3.readFromServerWithoutKeepAlive(ProtoHead.ENetworkMessage.RECEIVE_CHAT_SYNC);
assertNotNull(byteArray);
receiveChatting = ReceiveChatSync.parseFrom(NetworkPacket.getMessageObjectBytes(byteArray));
assertEquals(receiveChatting.getChatData(0).getChatBody(), message);
System.out.println(user3 + " Get Chatting");
}
}