Advertisement
Alice_Kim

Chatserver

Jan 26th, 2020
218
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.85 KB | None | 0 0
  1. package pgdp.threads;
  2.  
  3. import org.junit.Assert;
  4. import org.junit.jupiter.api.MethodOrderer;
  5. import org.junit.jupiter.api.Order;
  6. import org.junit.jupiter.api.Test;
  7. import org.junit.jupiter.api.TestMethodOrder;
  8.  
  9. import java.io.IOException;
  10. import java.io.ObjectInputStream;
  11. import java.io.ObjectOutputStream;
  12. import java.net.Socket;
  13.  
  14. import static org.junit.jupiter.api.Assertions.assertEquals;
  15.  
  16. @TestMethodOrder(MethodOrderer.OrderAnnotation.class)
  17. public class ChatServerTest {
  18. @Test
  19. @Order(1)
  20. public void sendUsername() {
  21. try {
  22. ChatServer chatServer = new ChatServer(3000);
  23. chatServer.start();
  24. while (!chatServer.isAlive()) {
  25. Thread.sleep(100);
  26. }
  27. Socket socket = new Socket("127.0.0.1", 3000);
  28. ObjectOutputStream writer = new ObjectOutputStream(socket.getOutputStream());
  29. ObjectInputStream reader = new ObjectInputStream(socket.getInputStream());
  30. writer.writeUTF("alice");
  31. writer.flush();
  32. String result = reader.readUTF();
  33. assertEquals(result,
  34. "Hello! Welcome to the chatroom.\n " +
  35. "Instructions:\n" +
  36. "- Simply type the message to send broadcast to all active clients\n " +
  37. "- Type '@username<space>yourmessage' without quotes to send message to desired client\n" +
  38. "- Type 'WHOIS' without quotes to see list of active clients\n" +
  39. "- Type 'LOGOUT' without quotes to logoff from server\n" +
  40. "- Type 'PENGU' without quotes to request a random penguin fact");
  41. chatServer.stop();
  42. } catch (Exception e) {
  43. Assert.fail("Sending username has failed (" + e.getMessage() + ")");
  44. }
  45. }
  46.  
  47. @Test
  48. @Order(2)
  49. public void sendWHOIS() {
  50. try {
  51. ChatServer chatServer = new ChatServer(3000);
  52. chatServer.start();
  53. while (!chatServer.isAlive()) {
  54. Thread.sleep(100);
  55. }
  56. Socket socket1 = new Socket("127.0.0.1", 3000);
  57. ObjectOutputStream writer1 = new ObjectOutputStream(socket1.getOutputStream());
  58. ObjectInputStream reader1 = new ObjectInputStream(socket1.getInputStream());
  59.  
  60. Socket socket2 = new Socket("127.0.0.1", 3000);
  61. ObjectOutputStream writer2 = new ObjectOutputStream(socket2.getOutputStream());
  62. ObjectInputStream reader2 = new ObjectInputStream(socket2.getInputStream());
  63.  
  64. Socket socket3 = new Socket("127.0.0.1", 3000);
  65. ObjectOutputStream writer3 = new ObjectOutputStream(socket3.getOutputStream());
  66. ObjectInputStream reader3 = new ObjectInputStream(socket3.getInputStream());
  67.  
  68. writer2.writeUTF("amanda");
  69. writer2.flush();
  70. Thread.sleep(100);
  71. writer3.writeUTF("bob");
  72. writer3.flush();
  73. Thread.sleep(100);
  74. writer1.writeUTF("alice");
  75. writer1.flush();
  76. if (reader1.readUTF() != null) {
  77. writer1.writeUTF("WHOIS");
  78. writer1.flush();
  79. }
  80. String result = reader1.readUTF();
  81. String[] users = result.split("\n", 2);
  82. assertEquals(2, users.length);
  83. assert (users[0].startsWith("1) amanda since"));
  84. assert (users[1].startsWith("2) bob since"));
  85. chatServer.stop();
  86. } catch (Exception e) {
  87. Assert.fail("Sending WHOIS has failed (" + e.getMessage() + ")");
  88. }
  89. }
  90.  
  91. @Test
  92. @Order(3)
  93. public void sendBroadcastMessage() {
  94. try {
  95. ChatServer chatServer = new ChatServer(3000);
  96. chatServer.start();
  97. while (!chatServer.isAlive()) {
  98. Thread.sleep(100);
  99. }
  100. Socket socket1 = new Socket("127.0.0.1", 3000);
  101. ObjectOutputStream writer1 = new ObjectOutputStream(socket1.getOutputStream());
  102. ObjectInputStream reader1 = new ObjectInputStream(socket1.getInputStream());
  103.  
  104. Socket socket2 = new Socket("127.0.0.1", 3000);
  105. ObjectOutputStream writer2 = new ObjectOutputStream(socket2.getOutputStream());
  106. ObjectInputStream reader2 = new ObjectInputStream(socket2.getInputStream());
  107.  
  108. Socket socket3 = new Socket("127.0.0.1", 3000);
  109. ObjectOutputStream writer3 = new ObjectOutputStream(socket3.getOutputStream());
  110. ObjectInputStream reader3 = new ObjectInputStream(socket3.getInputStream());
  111.  
  112. writer1.writeUTF("alice");
  113. writer1.flush();
  114. Thread.sleep(100);
  115. writer2.writeUTF("amanda");
  116. writer2.flush();
  117. Thread.sleep(100);
  118. writer3.writeUTF("bob");
  119. writer3.flush();
  120. Thread.sleep(100);
  121. if (reader1.readUTF() != null) {
  122. writer1.writeUTF("Broadcast message");
  123. writer1.flush();
  124. }
  125. String[] result = new String[2];
  126. result[0] = reader2.readUTF();
  127. result[1] = reader3.readUTF();
  128. assertEquals("Broadcast message", result[0]);
  129. assertEquals("Broadcast message", result[1]);
  130. chatServer.stop();
  131. } catch (Exception e) {
  132. Assert.fail("Sending message has failed (" + e.getMessage() + ")");
  133. }
  134. }
  135. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement