본문 바로가기

Netty21

EmbeddedChannel with JUnit - 2 JUnit이라고 단위테스트용으로 쓰이는 모듈이 있다. 단위테스트 용 모듈 만들어놓고, 프로젝트 빌드 시 함수들 테스트 잘(?) 정의해놓고 함수에 대한 테스트를 자동으로 수행함으로 혹시 있을지 모를 버그들을 사전에 체크할 수가 있지. 그래봐짜~ 잘 짜여진 테스트 코드를 만드는것도 쉽지도 않구.. 어려운 문제다 JUnit을 써보자 ( with Visual Studio Code ) 우선 vscode 사이트에 가보면 JUnit4, JUnit5, TestNG가 있는데 JUnit4를 써보자 아직 빌드툴을 통해 프로젝트를 생성 안했으니 Unmanaged Folder 부분을 보고 필요한 Jar를 찾자 https://code.visualstudio.com/docs/java/java-testing#_junit-4 아래 폴.. 2022. 1. 10.
Netty Pipeline 및 Codec 활용(4) 이전에 해봤던 LineBasedFrameDecoder 외에 자주 쓰이는 LengthFieldBasedFrameDecoder를 배워보자 Netty를 하면서 나에겐 가장 이해가 힘들었던 부분이기도 하다.( 내 실력 기준이다 ㅎㅎ) 우선 앞에서 해봤던 걸 티키타카 해보자 카페 오픈 ▶ 손님입장 ▶ 손님에게 인사하기 ▶ 손님응답하기 ▶ 주문받기 ▶ 금액말하기 우선 만들어보 보자 우선 서버코드는 간단하게 channelHandler에서 channelActive에서 환영인사, channelRead에서 액션을 보낸다 @Override public void channelActive(ChannelHandlerContext ctx) throws Exception { logger.info("channelActive.."); .. 2022. 1. 10.
Netty Pipeline 및 Codec 활용(1) 편의점을 예로 들어 설명했었는데, 이번엔 카페로 한번 해보자. ( 명퇴나 은퇴하면 내 꿈이다.. ) 손님이 문을 열고 들어온뒤 손님을 대응하는 메뉴얼에 대한 절차라고 언급했던 내용을 다시 보자 CodecSample.java import org.slf4j.Logger; import org.slf4j.LoggerFactory; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelOption; import io.netty.channel.EventLoopGroup; import io.n.. 2022. 1. 10.
Netty Pipeline 및 Codec 활용(3) 손님이 와서 주문을 하는데 주문이 끝날때는 카드를 내밀어야 한다. 주문이 끝나기도 전에 카드를 내밀면 무조건 결제하고, 추가주문을 받는다는 원칙을 세웠다고 하자. 그럼 고객은 항상 주문이 완료되면 카드를 내밀것이다. 그걸 캐치해서 다음 단계로 진행시키고, 이후 다시 주문받고 하면 되겠다. ChannelHandler 중 Netty 샘플에서 가장많이 쓰는것이 아래 두개이다 LineBasedFrameDecoder : 라인단위로 가져와서 처리 LengthFieldBasedFrameDecoder : 앞에다가 내가 보낼 사이즈는 얼마야 라고 먼저 보내고 이야기를 하는것 그 중 LineBasedFrameDecoder 를 써보자 우선 설명을 보면 받은 ByteBuf를 \n, \r\n으로 나눈다고 한다 함수에 커서를 두.. 2022. 1. 10.