From 8dacfe9a74abd8d9c2d6395318be06f053b0a29a Mon Sep 17 00:00:00 2001 From: coke98 Date: Sat, 27 Jul 2024 15:29:45 +0900 Subject: [PATCH 01/12] =?UTF-8?q?feat:=20=EC=B1=84=ED=8C=85=EB=B0=A9=20?= =?UTF-8?q?=EC=83=81=ED=83=9C=20=EB=84=A4=EC=9D=B4=EB=B0=8D=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/aliens/backend/chat/domain/ChatRoomStatus.java | 2 +- src/test/java/com/aliens/backend/docs/ChatRestDocsTest.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/aliens/backend/chat/domain/ChatRoomStatus.java b/src/main/java/com/aliens/backend/chat/domain/ChatRoomStatus.java index 0e9229d6..0401bbd1 100644 --- a/src/main/java/com/aliens/backend/chat/domain/ChatRoomStatus.java +++ b/src/main/java/com/aliens/backend/chat/domain/ChatRoomStatus.java @@ -1,5 +1,5 @@ package com.aliens.backend.chat.domain; public enum ChatRoomStatus { - WAITING, OPEN, CLOSE, BLOCKED; + WAITING, OPENED, CLOSED, BLOCKED; } diff --git a/src/test/java/com/aliens/backend/docs/ChatRestDocsTest.java b/src/test/java/com/aliens/backend/docs/ChatRestDocsTest.java index 2c6e3687..759f754f 100644 --- a/src/test/java/com/aliens/backend/docs/ChatRestDocsTest.java +++ b/src/test/java/com/aliens/backend/docs/ChatRestDocsTest.java @@ -72,10 +72,10 @@ void getChatSummary() throws Exception { List chatRooms = new ArrayList<>(); ChatRoom chatRoom1 = mock(ChatRoom.class); when(chatRoom1.getId()).thenReturn(1L); - when(chatRoom1.getStatus()).thenReturn(ChatRoomStatus.OPEN); + when(chatRoom1.getStatus()).thenReturn(ChatRoomStatus.OPENED); ChatRoom chatRoom2 = mock(ChatRoom.class); when(chatRoom2.getId()).thenReturn(2L); - when(chatRoom2.getStatus()).thenReturn(ChatRoomStatus.OPEN); + when(chatRoom2.getStatus()).thenReturn(ChatRoomStatus.OPENED); chatRooms.add(chatRoom1); chatRooms.add(chatRoom2); Date now = new Date(); From 7338114d5a8d2372687f1a2ee5a4fbf8a9ce0db1 Mon Sep 17 00:00:00 2001 From: coke98 Date: Sat, 27 Jul 2024 15:51:11 +0900 Subject: [PATCH 02/12] =?UTF-8?q?feat:=20=EC=B1=84=ED=8C=85=20=EB=A1=9C?= =?UTF-8?q?=EA=B7=B8=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../global/config/interceptor/ChatChannelInterceptor.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/main/java/com/aliens/backend/global/config/interceptor/ChatChannelInterceptor.java b/src/main/java/com/aliens/backend/global/config/interceptor/ChatChannelInterceptor.java index b56ed6bf..0a99b24e 100644 --- a/src/main/java/com/aliens/backend/global/config/interceptor/ChatChannelInterceptor.java +++ b/src/main/java/com/aliens/backend/global/config/interceptor/ChatChannelInterceptor.java @@ -5,8 +5,6 @@ import com.aliens.backend.chat.domain.ChatRoom; import com.aliens.backend.chat.service.ChatAuthValidator; import com.aliens.backend.global.property.WebSocketProperties; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.messaging.Message; import org.springframework.messaging.MessageChannel; import org.springframework.messaging.converter.MappingJackson2MessageConverter; @@ -23,8 +21,6 @@ public class ChatChannelInterceptor implements ChannelInterceptor { private final ChatAuthValidator chatAuthValidator; private final WebSocketProperties properties; - private final Logger logger = LoggerFactory.getLogger("웹소켓 요청"); - private MappingJackson2MessageConverter messageConverter = new MappingJackson2MessageConverter(); public ChatChannelInterceptor(ChatAuthValidator chatAuthValidator, WebSocketProperties properties) { @@ -35,7 +31,6 @@ public ChatChannelInterceptor(ChatAuthValidator chatAuthValidator, WebSocketProp @Override public Message preSend(Message message, MessageChannel channel) { StompHeaderAccessor accessor = MessageHeaderAccessor.getAccessor(message, StompHeaderAccessor.class); - logger.info("preSend: {} - {}",accessor.getCommand(), accessor.getDestination()); List chatRooms = (List) accessor.getSessionAttributes().get("chatRooms"); if (StompCommand.SUBSCRIBE.equals(accessor.getCommand())) { From a11c30927afd738b8ff3f10f0f32472d7caefa4d Mon Sep 17 00:00:00 2001 From: coke98 Date: Sat, 27 Jul 2024 16:09:40 +0900 Subject: [PATCH 03/12] =?UTF-8?q?feat:=20=EC=B1=84=ED=8C=85=20=EB=A7=8C?= =?UTF-8?q?=EB=A3=8C=20=ED=95=B8=EB=93=A4=EB=9F=AC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ref: #136 --- .../com/aliens/backend/chat/service/ChatService.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/main/java/com/aliens/backend/chat/service/ChatService.java b/src/main/java/com/aliens/backend/chat/service/ChatService.java index 04bf3b35..983ad2d7 100644 --- a/src/main/java/com/aliens/backend/chat/service/ChatService.java +++ b/src/main/java/com/aliens/backend/chat/service/ChatService.java @@ -154,6 +154,17 @@ private void blockChatRoom(Long chatRoomId) { chatRoomRepository.save(chatRoom); } + @EventListener + @Transactional + public void handleChatRoomExpireEvent(ChatRoomExpireEvent chatRoomExpireEvent) { + expireAllChatRooms(); + } + + private void expireAllChatRooms() { + chatRoomRepository.expireAllChatRooms(); + chatParticipantRepository.deleteAll(); + } + private ChatRoom findChatRoomsById(final Long chatRoomId) { return chatRoomRepository.findById(chatRoomId).orElseThrow(() -> new RestApiException(ChatError.CHAT_ROOM_NOT_FOUND)); } From 2abae3af0b0a4c2a57927a761921f083234fba79 Mon Sep 17 00:00:00 2001 From: coke98 Date: Sat, 27 Jul 2024 16:10:55 +0900 Subject: [PATCH 04/12] =?UTF-8?q?feat:=20=EC=B1=84=ED=8C=85=EB=B0=A9=20?= =?UTF-8?q?=EC=A0=84=EC=B2=B4=20=EB=A7=8C=EB=A3=8C=20=EB=A0=88=ED=8F=AC?= =?UTF-8?q?=EC=A7=80=ED=86=A0=EB=A6=AC=20=EC=BF=BC=EB=A6=AC=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ref: #136 --- .../backend/chat/domain/repository/ChatRoomRepository.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/com/aliens/backend/chat/domain/repository/ChatRoomRepository.java b/src/main/java/com/aliens/backend/chat/domain/repository/ChatRoomRepository.java index 58e5721c..2d9afe0f 100644 --- a/src/main/java/com/aliens/backend/chat/domain/repository/ChatRoomRepository.java +++ b/src/main/java/com/aliens/backend/chat/domain/repository/ChatRoomRepository.java @@ -2,6 +2,7 @@ import com.aliens.backend.chat.domain.ChatRoom; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; import org.springframework.stereotype.Repository; @@ -11,4 +12,8 @@ public interface ChatRoomRepository extends JpaRepository { @Query("SELECT c FROM ChatRoom c JOIN c.participants p WHERE p.member.id = :memberId") List findByMemberId(Long memberId); + + @Modifying + @Query("UPDATE ChatRoom c SET c.status = com.aliens.backend.chat.domain.ChatRoomStatus.CLOSED") + void expireAllChatRooms(); } \ No newline at end of file From 370358573ae6d221fa06b1ec613accff3a378d3f Mon Sep 17 00:00:00 2001 From: coke98 Date: Sat, 27 Jul 2024 16:11:28 +0900 Subject: [PATCH 05/12] =?UTF-8?q?feat:=20=EC=B1=84=ED=8C=85=20=EB=A7=8C?= =?UTF-8?q?=EB=A3=8C=20=EC=9D=B4=EB=B2=A4=ED=8A=B8=20=ED=81=B4=EB=9E=98?= =?UTF-8?q?=EC=8A=A4=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ref: #136 --- .../chat/controller/dto/event/ChatRoomExpireEvent.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/main/java/com/aliens/backend/chat/controller/dto/event/ChatRoomExpireEvent.java b/src/main/java/com/aliens/backend/chat/controller/dto/event/ChatRoomExpireEvent.java index 4b61aac2..8be82896 100644 --- a/src/main/java/com/aliens/backend/chat/controller/dto/event/ChatRoomExpireEvent.java +++ b/src/main/java/com/aliens/backend/chat/controller/dto/event/ChatRoomExpireEvent.java @@ -1,8 +1,4 @@ package com.aliens.backend.chat.controller.dto.event; -import com.aliens.backend.chat.service.model.MemberPair; - -import java.util.Set; - -public record ChatRoomExpireEvent(Set matchedPairs) { +public record ChatRoomExpireEvent() { } From 2fc7f87405151780716f1a0ee66ccfba3e27adb8 Mon Sep 17 00:00:00 2001 From: coke98 Date: Sat, 27 Jul 2024 16:13:30 +0900 Subject: [PATCH 06/12] =?UTF-8?q?feat:=20=EC=B1=84=ED=8C=85=20=EC=84=9C?= =?UTF-8?q?=EB=B9=84=EC=8A=A4=20=EC=B0=B8=EA=B0=80=EC=9E=90=20=EB=A0=88?= =?UTF-8?q?=ED=8F=AC=EC=A7=80=ED=86=A0=EB=A6=AC=20=EC=9D=98=EC=A1=B4?= =?UTF-8?q?=EC=84=B1=20=EC=A3=BC=EC=9E=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ref: #136 --- .../java/com/aliens/backend/chat/service/ChatService.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/aliens/backend/chat/service/ChatService.java b/src/main/java/com/aliens/backend/chat/service/ChatService.java index 983ad2d7..460893d0 100644 --- a/src/main/java/com/aliens/backend/chat/service/ChatService.java +++ b/src/main/java/com/aliens/backend/chat/service/ChatService.java @@ -5,6 +5,7 @@ import com.aliens.backend.auth.domain.repository.MemberRepository; import com.aliens.backend.chat.controller.dto.event.ChatRoomBlockEvent; import com.aliens.backend.chat.controller.dto.event.ChatRoomCreationEvent; +import com.aliens.backend.chat.controller.dto.event.ChatRoomExpireEvent; import com.aliens.backend.chat.controller.dto.request.MessageSendRequest; import com.aliens.backend.chat.controller.dto.request.ReadRequest; import com.aliens.backend.chat.controller.dto.response.ChatSummaryResponse; @@ -12,6 +13,7 @@ import com.aliens.backend.chat.domain.ChatParticipant; import com.aliens.backend.chat.domain.ChatRoom; import com.aliens.backend.chat.domain.Message; +import com.aliens.backend.chat.domain.repository.ChatParticipantRepository; import com.aliens.backend.chat.domain.repository.ChatRoomRepository; import com.aliens.backend.chat.domain.repository.MessageRepository; import com.aliens.backend.chat.service.model.ChatMessageSummary; @@ -21,6 +23,7 @@ import com.aliens.backend.global.response.error.MemberError; import com.aliens.backend.global.response.success.ChatSuccess; import com.aliens.backend.notification.domain.FcmTokenRepository; +import jakarta.transaction.Transactional; import org.springframework.context.ApplicationEventPublisher; import org.springframework.context.event.EventListener; import org.springframework.messaging.simp.SimpMessagingTemplate; @@ -37,19 +40,22 @@ public class ChatService { private final FcmTokenRepository fcmTokenRepository; private final MemberRepository memberRepository; private final ApplicationEventPublisher eventPublisher; + private final ChatParticipantRepository chatParticipantRepository; public ChatService(final MessageRepository messageRepository, final SimpMessagingTemplate messagingTemplate, final ChatRoomRepository chatRoomRepository, final FcmTokenRepository fcmTokenRepository, final MemberRepository memberRepository, - final ApplicationEventPublisher eventPublisher) { + final ApplicationEventPublisher eventPublisher, + final ChatParticipantRepository chatParticipantRepository) { this.messageRepository = messageRepository; this.messagingTemplate = messagingTemplate; this.chatRoomRepository = chatRoomRepository; this.fcmTokenRepository = fcmTokenRepository; this.memberRepository = memberRepository; this.eventPublisher = eventPublisher; + this.chatParticipantRepository = chatParticipantRepository; } public String sendMessage(MessageSendRequest messageSendRequest) { From 38836bb574f5e1892f7f4a98c42f1cf1ae60b7a0 Mon Sep 17 00:00:00 2001 From: coke98 Date: Sat, 27 Jul 2024 16:17:08 +0900 Subject: [PATCH 07/12] =?UTF-8?q?feat:=20=EB=A7=A4=EC=B9=AD=20=EB=8F=84?= =?UTF-8?q?=EB=A9=94=EC=9D=B8=20=EC=B1=84=ED=8C=85=20=EB=A7=8C=EB=A3=8C=20?= =?UTF-8?q?=EC=9D=B4=EB=B2=A4=ED=8A=B8=20=EA=B4=80=EB=A0=A8=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ref: #136 --- .../backend/mathcing/service/MatchingProcessService.java | 4 ++-- .../mathcing/service/event/MatchingEventPublisher.java | 7 ++----- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/aliens/backend/mathcing/service/MatchingProcessService.java b/src/main/java/com/aliens/backend/mathcing/service/MatchingProcessService.java index 48218d78..0a26d87e 100644 --- a/src/main/java/com/aliens/backend/mathcing/service/MatchingProcessService.java +++ b/src/main/java/com/aliens/backend/mathcing/service/MatchingProcessService.java @@ -4,6 +4,7 @@ import com.aliens.backend.auth.domain.Member; import com.aliens.backend.block.domain.Block; import com.aliens.backend.block.domain.repository.BlockRepository; +import com.aliens.backend.chat.controller.dto.event.ChatRoomExpireEvent; import com.aliens.backend.chat.domain.ChatParticipant; import com.aliens.backend.chat.domain.ChatRoom; import com.aliens.backend.chat.domain.repository.ChatParticipantRepository; @@ -94,10 +95,9 @@ private MatchingApplication findMatchedMemberApplicationByRoundAndMemberId(Match @Scheduled(cron = "${matching.round.end}") @Transactional public void expireMatching() { - List previousMatchingResults = getPreviousMatchingResults(); List previousMatchingApplications = getPreviousMatchingApplications(); previousMatchingApplications.forEach(MatchingApplication::expireMatch); - eventPublisher.expireChatRoom(previousMatchingResults); + eventPublisher.expireChatRoom(); } private void saveMatchingResult(final MatchingRound matchingRound, final List participants) { diff --git a/src/main/java/com/aliens/backend/mathcing/service/event/MatchingEventPublisher.java b/src/main/java/com/aliens/backend/mathcing/service/event/MatchingEventPublisher.java index df3fd1d3..0644f3f6 100644 --- a/src/main/java/com/aliens/backend/mathcing/service/event/MatchingEventPublisher.java +++ b/src/main/java/com/aliens/backend/mathcing/service/event/MatchingEventPublisher.java @@ -4,7 +4,6 @@ import com.aliens.backend.chat.controller.dto.event.ChatRoomExpireEvent; import com.aliens.backend.chat.service.model.MemberPair; import com.aliens.backend.mathcing.business.model.Participant; -import com.aliens.backend.mathcing.domain.MatchingResult; import com.aliens.backend.mathcing.service.model.MatchingNotificationMessage; import com.aliens.backend.mathcing.service.model.MemberPairGroup; import com.google.firebase.messaging.MulticastMessage; @@ -28,10 +27,8 @@ public void createChatRoom(List participants) { eventPublisher.publishEvent(new ChatRoomCreationEvent(matchedMemberPairs)); } - public void expireChatRoom(List matchingResults) { - MemberPairGroup expiredMemberPairGroup = MemberPairGroup.fromMatchingResults(matchingResults); - Set expiredMemberPairs = expiredMemberPairGroup.getMemberPairs(); - eventPublisher.publishEvent(new ChatRoomExpireEvent(expiredMemberPairs)); + public void expireChatRoom() { + eventPublisher.publishEvent(new ChatRoomExpireEvent()); } public void sendNotification(List participants) { From 3c74293b735c23ed48cdf115d2220455f2e0f34f Mon Sep 17 00:00:00 2001 From: coke98 Date: Sat, 27 Jul 2024 16:25:23 +0900 Subject: [PATCH 08/12] =?UTF-8?q?test:=20=EC=9B=B9=EC=86=8C=EC=BC=93=20?= =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=20=ED=83=80=EC=9E=84=EC=95=84?= =?UTF-8?q?=EC=9B=83=20=EC=8B=9C=EA=B0=84=20100->1000ms=20=ED=99=95?= =?UTF-8?q?=EC=9E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ref: #137 --- .../chatting/socket/WebSocketTest.java | 42 +++++++++---------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/src/test/java/com/aliens/backend/chatting/socket/WebSocketTest.java b/src/test/java/com/aliens/backend/chatting/socket/WebSocketTest.java index a7a8da59..b9a7eb48 100644 --- a/src/test/java/com/aliens/backend/chatting/socket/WebSocketTest.java +++ b/src/test/java/com/aliens/backend/chatting/socket/WebSocketTest.java @@ -71,11 +71,11 @@ void WebSocketMessageSendingAndReceiving() throws Exception { chatClient.send(properties.getAppDestinationPrefix() + "/send", messageSendRequest); //Then - verify(chatService, timeout(100).times(1)).sendMessage(messageSendRequest); - verify(chatChannelInterceptor, timeout(100).times(3)).preSend(any(), any()); // 1. CONNECT, 2. SUBSCRIBE, 3. SEND - verify(chatService, timeout(100).times(1)).getChatRooms(member.getId()); // CONNECT - verify(chatAuthValidator, timeout(100).times(1)).validateRoomFromTopic(any(), any()); // SUBSCRIBE - verify(chatAuthValidator, timeout(100).times(1)).validateRoom(any(), any()); // SEND + verify(chatService, timeout(1000).times(1)).sendMessage(messageSendRequest); + verify(chatChannelInterceptor, timeout(1000).times(3)).preSend(any(), any()); // 1. CONNECT, 2. SUBSCRIBE, 3. SEND + verify(chatService, timeout(1000).times(1)).getChatRooms(member.getId()); // CONNECT + verify(chatAuthValidator, timeout(1000).times(1)).validateRoomFromTopic(any(), any()); // SUBSCRIBE + verify(chatAuthValidator, timeout(1000).times(1)).validateRoom(any(), any()); // SEND Message receivedMessage = objectMapper.readValue((byte[]) receiveMessage.get(0), Message.class); Assertions.assertEquals(1, receiveMessage.size()); Assertions.assertEquals(expectedMessage.getId(), receivedMessage.getId()); @@ -99,10 +99,10 @@ void WebSocketSendMessageWithUnauthorizedRoom() throws Exception { chatClient.send(properties.getAppDestinationPrefix() + "/send", messageSendRequest); //Then - verify(chatChannelInterceptor, timeout(100).times(4)).preSend(any(), any()); // 1. CONNECT, 2. SUBSCRIBE, 3. SEND, 4. DISCONNECT - verify(chatService, timeout(100).times(1)).getChatRooms(member.getId()); - verify(chatAuthValidator, timeout(100).times(1)).validateRoom(any(), any()); - verify(chatController, timeout(100).times(0)).sendMessage(messageSendRequest); // 호출되지 않음 + verify(chatChannelInterceptor, timeout(1000).times(4)).preSend(any(), any()); // 1. CONNECT, 2. SUBSCRIBE, 3. SEND, 4. DISCONNECT + verify(chatService, timeout(1000).times(1)).getChatRooms(member.getId()); + verify(chatAuthValidator, timeout(1000).times(1)).validateRoom(any(), any()); + verify(chatController, timeout(1000).times(0)).sendMessage(messageSendRequest); // 호출되지 않음 } @Test @@ -116,9 +116,9 @@ void WebSocketSubscribeWithUnauthorizedRoom() throws Exception { chatClient.subscribe(unAuthorizedRoomId); //Then - verify(chatChannelInterceptor, timeout(100).times(3)).preSend(any(), any()); // 1. CONNECT, 2. SUBSCRIBE, 3. DISCONNECT - verify(chatService, timeout(100).times(1)).getChatRooms(member.getId()); - verify(chatAuthValidator, timeout(100).times(1)).validateRoomFromTopic(any(), any()); + verify(chatChannelInterceptor, timeout(1000).times(3)).preSend(any(), any()); // 1. CONNECT, 2. SUBSCRIBE, 3. DISCONNECT + verify(chatService, timeout(1000).times(1)).getChatRooms(member.getId()); + verify(chatAuthValidator, timeout(1000).times(1)).validateRoomFromTopic(any(), any()); } @Test @@ -135,11 +135,11 @@ void WebSocketReadMessage() throws Exception { chatClient.send(properties.getAppDestinationPrefix() + "/read", readRequest); //Then - verify(chatChannelInterceptor, timeout(100).times(3)).preSend(any(), any()); // 1. CONNECT, 2. SUBSCRIBE, 3. SEND - verify(chatController, timeout(100).times(1)).readMessage(readRequest); - verify(chatService, timeout(100).times(1)).getChatRooms(member.getId()); // CONNECT - verify(chatAuthValidator, timeout(100).times(1)).validateRoomFromTopic(any(), any()); // SUBSCRIBE - verify(chatAuthValidator, timeout(100).times(1)).validateRoom(any(), any()); // SEND + verify(chatChannelInterceptor, timeout(1000).times(3)).preSend(any(), any()); // 1. CONNECT, 2. SUBSCRIBE, 3. SEND + verify(chatController, timeout(1000).times(1)).readMessage(readRequest); + verify(chatService, timeout(1000).times(1)).getChatRooms(member.getId()); // CONNECT + verify(chatAuthValidator, timeout(1000).times(1)).validateRoomFromTopic(any(), any()); // SUBSCRIBE + verify(chatAuthValidator, timeout(1000).times(1)).validateRoom(any(), any()); // SEND ReadResponse receivedReadResponse = objectMapper.readValue((byte[]) receiveMessage.get(0), ReadResponse.class); Assertions.assertEquals(1, receiveMessage.size()); Assertions.assertEquals(readResponse.readBy(), receivedReadResponse.readBy()); @@ -159,10 +159,10 @@ void WebSocketReadMessageWithUnauthorizedRoom() throws Exception { chatClient.send(properties.getAppDestinationPrefix() + "/read", unAuthorizedReadRequest); //Then - verify(chatChannelInterceptor, timeout(100).times(4)).preSend(any(), any()); // 1. CONNECT, 2. SUBSCRIBE, 3. SEND, 4. DISCONNECT - verify(chatService, timeout(100).times(1)).getChatRooms(member.getId()); - verify(chatAuthValidator, timeout(100).times(1)).validateRoom(any(), any()); - verify(chatController, timeout(100).times(0)).readMessage(unAuthorizedReadRequest); // 호출되지 않음 + verify(chatChannelInterceptor, timeout(1000).times(4)).preSend(any(), any()); // 1. CONNECT, 2. SUBSCRIBE, 3. SEND, 4. DISCONNECT + verify(chatService, timeout(1000).times(1)).getChatRooms(member.getId()); + verify(chatAuthValidator, timeout(1000).times(1)).validateRoom(any(), any()); + verify(chatController, timeout(1000).times(0)).readMessage(unAuthorizedReadRequest); // 호출되지 않음 } private MessageSendRequest createMessageSendRequest(Long roomId) { From 635ea520700d7400b7a7bd9b1f9aa60ff59a99c6 Mon Sep 17 00:00:00 2001 From: coke98 Date: Sat, 27 Jul 2024 16:35:02 +0900 Subject: [PATCH 09/12] =?UTF-8?q?test:=20=EC=9B=B9=EC=86=8C=EC=BC=93=20?= =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=20=ED=83=80=EC=9E=84=EC=95=84?= =?UTF-8?q?=EC=9B=83=20=EC=8B=9C=EA=B0=84=201000ms->20000ms=20=ED=99=95?= =?UTF-8?q?=EC=9E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ref: #137 --- .../chatting/socket/WebSocketTest.java | 42 +++++++++---------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/src/test/java/com/aliens/backend/chatting/socket/WebSocketTest.java b/src/test/java/com/aliens/backend/chatting/socket/WebSocketTest.java index b9a7eb48..0a8df0eb 100644 --- a/src/test/java/com/aliens/backend/chatting/socket/WebSocketTest.java +++ b/src/test/java/com/aliens/backend/chatting/socket/WebSocketTest.java @@ -71,11 +71,11 @@ void WebSocketMessageSendingAndReceiving() throws Exception { chatClient.send(properties.getAppDestinationPrefix() + "/send", messageSendRequest); //Then - verify(chatService, timeout(1000).times(1)).sendMessage(messageSendRequest); - verify(chatChannelInterceptor, timeout(1000).times(3)).preSend(any(), any()); // 1. CONNECT, 2. SUBSCRIBE, 3. SEND - verify(chatService, timeout(1000).times(1)).getChatRooms(member.getId()); // CONNECT - verify(chatAuthValidator, timeout(1000).times(1)).validateRoomFromTopic(any(), any()); // SUBSCRIBE - verify(chatAuthValidator, timeout(1000).times(1)).validateRoom(any(), any()); // SEND + verify(chatService, timeout(20000).times(1)).sendMessage(messageSendRequest); + verify(chatChannelInterceptor, timeout(20000).times(3)).preSend(any(), any()); // 1. CONNECT, 2. SUBSCRIBE, 3. SEND + verify(chatService, timeout(20000).times(1)).getChatRooms(member.getId()); // CONNECT + verify(chatAuthValidator, timeout(20000).times(1)).validateRoomFromTopic(any(), any()); // SUBSCRIBE + verify(chatAuthValidator, timeout(20000).times(1)).validateRoom(any(), any()); // SEND Message receivedMessage = objectMapper.readValue((byte[]) receiveMessage.get(0), Message.class); Assertions.assertEquals(1, receiveMessage.size()); Assertions.assertEquals(expectedMessage.getId(), receivedMessage.getId()); @@ -99,10 +99,10 @@ void WebSocketSendMessageWithUnauthorizedRoom() throws Exception { chatClient.send(properties.getAppDestinationPrefix() + "/send", messageSendRequest); //Then - verify(chatChannelInterceptor, timeout(1000).times(4)).preSend(any(), any()); // 1. CONNECT, 2. SUBSCRIBE, 3. SEND, 4. DISCONNECT - verify(chatService, timeout(1000).times(1)).getChatRooms(member.getId()); - verify(chatAuthValidator, timeout(1000).times(1)).validateRoom(any(), any()); - verify(chatController, timeout(1000).times(0)).sendMessage(messageSendRequest); // 호출되지 않음 + verify(chatChannelInterceptor, timeout(20000).times(4)).preSend(any(), any()); // 1. CONNECT, 2. SUBSCRIBE, 3. SEND, 4. DISCONNECT + verify(chatService, timeout(20000).times(1)).getChatRooms(member.getId()); + verify(chatAuthValidator, timeout(20000).times(1)).validateRoom(any(), any()); + verify(chatController, timeout(20000).times(0)).sendMessage(messageSendRequest); // 호출되지 않음 } @Test @@ -116,9 +116,9 @@ void WebSocketSubscribeWithUnauthorizedRoom() throws Exception { chatClient.subscribe(unAuthorizedRoomId); //Then - verify(chatChannelInterceptor, timeout(1000).times(3)).preSend(any(), any()); // 1. CONNECT, 2. SUBSCRIBE, 3. DISCONNECT - verify(chatService, timeout(1000).times(1)).getChatRooms(member.getId()); - verify(chatAuthValidator, timeout(1000).times(1)).validateRoomFromTopic(any(), any()); + verify(chatChannelInterceptor, timeout(20000).times(3)).preSend(any(), any()); // 1. CONNECT, 2. SUBSCRIBE, 3. DISCONNECT + verify(chatService, timeout(20000).times(1)).getChatRooms(member.getId()); + verify(chatAuthValidator, timeout(20000).times(1)).validateRoomFromTopic(any(), any()); } @Test @@ -135,11 +135,11 @@ void WebSocketReadMessage() throws Exception { chatClient.send(properties.getAppDestinationPrefix() + "/read", readRequest); //Then - verify(chatChannelInterceptor, timeout(1000).times(3)).preSend(any(), any()); // 1. CONNECT, 2. SUBSCRIBE, 3. SEND - verify(chatController, timeout(1000).times(1)).readMessage(readRequest); - verify(chatService, timeout(1000).times(1)).getChatRooms(member.getId()); // CONNECT - verify(chatAuthValidator, timeout(1000).times(1)).validateRoomFromTopic(any(), any()); // SUBSCRIBE - verify(chatAuthValidator, timeout(1000).times(1)).validateRoom(any(), any()); // SEND + verify(chatChannelInterceptor, timeout(20000).times(3)).preSend(any(), any()); // 1. CONNECT, 2. SUBSCRIBE, 3. SEND + verify(chatController, timeout(20000).times(1)).readMessage(readRequest); + verify(chatService, timeout(20000).times(1)).getChatRooms(member.getId()); // CONNECT + verify(chatAuthValidator, timeout(20000).times(1)).validateRoomFromTopic(any(), any()); // SUBSCRIBE + verify(chatAuthValidator, timeout(20000).times(1)).validateRoom(any(), any()); // SEND ReadResponse receivedReadResponse = objectMapper.readValue((byte[]) receiveMessage.get(0), ReadResponse.class); Assertions.assertEquals(1, receiveMessage.size()); Assertions.assertEquals(readResponse.readBy(), receivedReadResponse.readBy()); @@ -159,10 +159,10 @@ void WebSocketReadMessageWithUnauthorizedRoom() throws Exception { chatClient.send(properties.getAppDestinationPrefix() + "/read", unAuthorizedReadRequest); //Then - verify(chatChannelInterceptor, timeout(1000).times(4)).preSend(any(), any()); // 1. CONNECT, 2. SUBSCRIBE, 3. SEND, 4. DISCONNECT - verify(chatService, timeout(1000).times(1)).getChatRooms(member.getId()); - verify(chatAuthValidator, timeout(1000).times(1)).validateRoom(any(), any()); - verify(chatController, timeout(1000).times(0)).readMessage(unAuthorizedReadRequest); // 호출되지 않음 + verify(chatChannelInterceptor, timeout(20000).times(4)).preSend(any(), any()); // 1. CONNECT, 2. SUBSCRIBE, 3. SEND, 4. DISCONNECT + verify(chatService, timeout(20000).times(1)).getChatRooms(member.getId()); + verify(chatAuthValidator, timeout(20000).times(1)).validateRoom(any(), any()); + verify(chatController, timeout(20000).times(0)).readMessage(unAuthorizedReadRequest); // 호출되지 않음 } private MessageSendRequest createMessageSendRequest(Long roomId) { From 5fc5027ba9779288d3abb18f63fced4b948d06c6 Mon Sep 17 00:00:00 2001 From: coke98 Date: Sat, 27 Jul 2024 17:37:51 +0900 Subject: [PATCH 10/12] =?UTF-8?q?chore:=20yml=20=EB=A9=94=EC=8B=9C?= =?UTF-8?q?=EC=A7=80=20=EB=B8=8C=EB=A1=9C=EC=BB=A4=20=EB=A1=9C=EA=B7=B8=20?= =?UTF-8?q?=EB=A0=88=EB=B2=A8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/application.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 370ded8c..3dd936ae 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -10,13 +10,20 @@ spring: properties: hibernate: format_sql: true + dialect: org.hibernate.dialect.MySQL8Dialect defer-datasource-initialization: true profiles: include: secret, matching +logging: + level: + org.springframework.web.socket.config.WebSocketMessageBrokerStats: ERROR + websocket: port: 8080 endpoint: /ws topic: /room request: /chat + + From eae762a6b25a6efaedfefb52bbf3680108145e79 Mon Sep 17 00:00:00 2001 From: coke98 Date: Tue, 30 Jul 2024 18:11:51 +0900 Subject: [PATCH 11/12] =?UTF-8?q?test:=20=EC=9B=B9=EC=86=8C=EC=BC=93=20?= =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=20=ED=83=80=EC=9E=84=EC=95=84?= =?UTF-8?q?=EC=9B=83=20=EC=8B=9C=EA=B0=84=2020000ms->50000ms=20=ED=99=95?= =?UTF-8?q?=EC=9E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ref: #137 --- .../aliens/backend/chatting/socket/WebSocketTest.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/test/java/com/aliens/backend/chatting/socket/WebSocketTest.java b/src/test/java/com/aliens/backend/chatting/socket/WebSocketTest.java index 0a8df0eb..b7665193 100644 --- a/src/test/java/com/aliens/backend/chatting/socket/WebSocketTest.java +++ b/src/test/java/com/aliens/backend/chatting/socket/WebSocketTest.java @@ -71,11 +71,11 @@ void WebSocketMessageSendingAndReceiving() throws Exception { chatClient.send(properties.getAppDestinationPrefix() + "/send", messageSendRequest); //Then - verify(chatService, timeout(20000).times(1)).sendMessage(messageSendRequest); - verify(chatChannelInterceptor, timeout(20000).times(3)).preSend(any(), any()); // 1. CONNECT, 2. SUBSCRIBE, 3. SEND - verify(chatService, timeout(20000).times(1)).getChatRooms(member.getId()); // CONNECT - verify(chatAuthValidator, timeout(20000).times(1)).validateRoomFromTopic(any(), any()); // SUBSCRIBE - verify(chatAuthValidator, timeout(20000).times(1)).validateRoom(any(), any()); // SEND + verify(chatService, timeout(50000).times(1)).sendMessage(messageSendRequest); + verify(chatChannelInterceptor, timeout(50000).times(3)).preSend(any(), any()); // 1. CONNECT, 2. SUBSCRIBE, 3. SEND + verify(chatService, timeout(50000).times(1)).getChatRooms(member.getId()); // CONNECT + verify(chatAuthValidator, timeout(50000).times(1)).validateRoomFromTopic(any(), any()); // SUBSCRIBE + verify(chatAuthValidator, timeout(50000).times(1)).validateRoom(any(), any()); // SEND Message receivedMessage = objectMapper.readValue((byte[]) receiveMessage.get(0), Message.class); Assertions.assertEquals(1, receiveMessage.size()); Assertions.assertEquals(expectedMessage.getId(), receivedMessage.getId()); From 9037186b7d14e682a7de7a7b0c080ad8ee5a5239 Mon Sep 17 00:00:00 2001 From: coke98 Date: Tue, 30 Jul 2024 18:48:00 +0900 Subject: [PATCH 12/12] =?UTF-8?q?test:=20=EC=9B=B9=EC=86=8C=EC=BC=93?= =?UTF-8?q?=EC=97=90=EC=84=9C=20=EB=A9=94=EC=8B=9C=EC=A7=80=20=EC=88=98?= =?UTF-8?q?=EC=8B=A0=EA=B9=8C=EC=A7=80=20=EA=B8=B0=EB=8B=A4=EB=A6=AC?= =?UTF-8?q?=EB=8A=94=20=EC=8B=9C=EA=B0=84=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 50000ms->20000ms 재수정 ref: #137 --- .../backend/chatting/socket/WebSocketTest.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/test/java/com/aliens/backend/chatting/socket/WebSocketTest.java b/src/test/java/com/aliens/backend/chatting/socket/WebSocketTest.java index b7665193..ef0ce1ce 100644 --- a/src/test/java/com/aliens/backend/chatting/socket/WebSocketTest.java +++ b/src/test/java/com/aliens/backend/chatting/socket/WebSocketTest.java @@ -22,6 +22,8 @@ import java.util.ArrayList; import java.util.List; +import static java.util.concurrent.TimeUnit.SECONDS; +import static org.awaitility.Awaitility.await; import static org.mockito.Mockito.*; class WebSocketTest extends BaseIntegrationTest { @@ -69,13 +71,14 @@ void WebSocketMessageSendingAndReceiving() throws Exception { chatClient.connect(accessToken); List receiveMessage = chatClient.subscribe(authorizedRoomId); chatClient.send(properties.getAppDestinationPrefix() + "/send", messageSendRequest); + await().atMost(5, SECONDS).until(() -> !receiveMessage.isEmpty()); //Then - verify(chatService, timeout(50000).times(1)).sendMessage(messageSendRequest); - verify(chatChannelInterceptor, timeout(50000).times(3)).preSend(any(), any()); // 1. CONNECT, 2. SUBSCRIBE, 3. SEND - verify(chatService, timeout(50000).times(1)).getChatRooms(member.getId()); // CONNECT - verify(chatAuthValidator, timeout(50000).times(1)).validateRoomFromTopic(any(), any()); // SUBSCRIBE - verify(chatAuthValidator, timeout(50000).times(1)).validateRoom(any(), any()); // SEND + verify(chatService, timeout(20000).times(1)).sendMessage(messageSendRequest); + verify(chatChannelInterceptor, timeout(20000).times(3)).preSend(any(), any()); // 1. CONNECT, 2. SUBSCRIBE, 3. SEND + verify(chatService, timeout(20000).times(1)).getChatRooms(member.getId()); // CONNECT + verify(chatAuthValidator, timeout(20000).times(1)).validateRoomFromTopic(any(), any()); // SUBSCRIBE + verify(chatAuthValidator, timeout(20000).times(1)).validateRoom(any(), any()); // SEND Message receivedMessage = objectMapper.readValue((byte[]) receiveMessage.get(0), Message.class); Assertions.assertEquals(1, receiveMessage.size()); Assertions.assertEquals(expectedMessage.getId(), receivedMessage.getId());