2009-07-28 2 views
2

저는 프로젝트의 서버 측을위한 논 블로킹 IO 시스템을 만들고 있습니다. 실제 구현은 중요하지 않습니다 (신경 쓰면 Java NIO입니다).하지만 소켓 통신을 프로그래밍 할 때 세심한주의를 기울여야하는 미묘한 문제로 인해 매우 협박을받습니다. 내 지식은 많은 분야에서 부족하기 때문에 상황이 잘못 될 수있는 모든 방법을 생각조차 할 수 없다 ... "반 폐쇄"연결, 예상보다 많은 데이터를 보내는 연결 등.네트워크 연결을위한 테스트/문제 해결 도구?

내가 찾고있는 것은 특정 동작을 연결하고 테스트하는 프로세스를 자동화하여 시스템의 견고성을 테스트하는 데 도움이되는 일종의 클라이언트 측 도구입니다. 연결이 열리고 사용되고 닫힐 수있는 여러 가지 방법을 시뮬레이션하는 여러 종류의 옵션이있는 일종의 도구입니다. 아마도 그것은 내가 횡설수설의 메가 바이트를 한 번에 보냈거나 내 코드를 깨뜨릴 수있는 무작위, 희귀 한 것들을 테스트 할 수있게하기 위해 "이해할 수없는"일을 시도하거나 "깨진"연결을 인식하지 못하고 연결을 닫지 못합니다.

공구 종류가 있습니까? 또 다른 접근법은 Java 코드/유닛 테스트 일 수 있습니다. 이견있는 사람? 정말 고마워!

답변

1

당신은 임의의 클라이언트 동작을 에뮬레이트 간단한 단위 테스트를 작성하는 자바에 대한 지식을 활용할 수 있습니다 :

  • 너무 많은 데이터
  • 너무 많은 연결
  • 개폐
  • 다른 코너 케이스

네이티브 코드 및 기타 까다로운 구성이없는 순수 Java 테스트는 큰 이점입니다. 출발점으로

나는 JMeter 추천 :

아파치 JMeter를 정적 및 동적 자원에 대한 성능 모두를 테스트하는 데 사용할 수 있습니다 (파일, 서블릿, 펄 스크립트, 자바 객체, 데이터베이스 및 쿼리, FTP 서버 및 더). 서버, 네트워크 또는 개체의 부하를 시뮬레이트하여 강도를 테스트하거나 다양한 부하 유형에서 전반적인 성능을 분석하는 데 사용할 수 있습니다. 이를 사용하여 성능을 그래픽으로 분석하거나 동시로드가 심한 상황에서 서버/스크립트/객체 동작을 테스트 할 수 있습니다.

JUnitPerf 웹 사이트를 살펴보십시오.

2

나는 netcat을 제안합니다. 그것은 당신에게 실행중인 서버에 모든 종류의 데이터를 밀어 넣는 매우 유연한 방법을 제공합니다.

+0

거의 모든 시스템에서 사용할 수 있습니다. – aperkins

0

저수준 소켓 프로그래밍을하는 사람은 Richard Steven의 유닉스 네트워크 프로그래밍 (http://www.kohala.com/start/unpv12e.html) 또는 TCP/IP 일러스트 (동일한 사이트)가 필수입니다. 모든 것은 C 언어이지만 컨셉은 전송 가능합니다.

관련 문제