작년 여름까지 작성했던 서버를 테스트하는 코드들은 대부분 이런 형태였다
이 방법의 문제는,
등등의 문제가 있다. 대충 떠오른게 이정도니 좀 더 있겠지?
지난 주 + 이번 주 하면서 일단 서버를 직접 테스트하려고 몇 가지 작업을 했는데, 구체적으로는 다음과 같은 방향으로 진행 중이고 일부만 완성된 상태.
혹은 대상으로 삼지 않는다. Intel TBB의 철학?적인 부분과도 연관된 것인데,
싱글 스레드에서 잡을 수 있는 버그를 모두 잡고 멀티스레드로 넘어가라
라는 것. 사실 이 둘 사이의 버그는 그 영역이 조금 다르고, 특히 멀티스레딩 쪽에서 발생하는 버그는 테스트 케이스보다는 무작위 테스트(더미 클라이언트 붙이기 등등)에서 찾기 쉬운 듯 하다. 그래서 원래의 로직을 싱글 스레드 기반의 테스트 코드들 위에서 돌 수 있게 한다.
네트웍 만큼 성격이 불량한(?) 계층도 컴퓨터 공학에서 찾기가 좀 힘들 것이다. 다행히도 작업 중인 서버 개체들이 비슷한 프레임웍을 써서 그 부분을 래핑해서 이상적인 + 싱글스레드 기반의 무언가로 바꿔서 동작할 수 있게 만들었다.
전송을 하면,
메인 루프의 특정 시점에,
같은 형태로 전송이 이뤄지고, 이에 대해서 큐를 처리하는 프레임웍의 코드에서,
이런 형태로 동작하게 했다 — 지만 아직 이 부분은 구현만 대충 되었고 전체가 돌아가는 중은 아님 (불완전?)
첫번째랑 비슷한 맥락인데, 싱글 스레드로 돌아가게 제어해준다. 근데 이 부분의 작업이 좀 귀찮다 -_-;; 그래도 Producer–Consumer 패러다임으로 도는 것은 싱글 스레드로 대체해도 잘 돌기 때문에 별 무리없이(?) 이전이 되어가는 듯 …[2]
이렇게 하면 서버 객체 간 연결은 몰라도 서버와 특정 연결(다른 서버든 클라이언트든…)을 테스트 용 블랙박스 개념으로 만들 수 있는 것 같다 (아직까지는 잘 진행되는 중)
뭐 올해 목표이기도 하니, 앞으로 잘 진행해봐야지.
No comments yet.
Jump to comments