소켓 오류를 시뮬레이트하는 방법은 무엇입니까? (때로는 일부 소켓 오류로 인해 서버 또는 클라이언트 연결이 끊어지며이를 재현 할 수 없습니다.) 이 작업을 수행 할 도구를 찾고 있었지만 찾을 수 없습니다. 누구나 도구를 알고 있거나이를 수행하는 방법에 대한 코드 예제가 있습니까? (C# 또는 C/C++)소켓 오류 시뮬레이션
답변
소켓에 액세스하는 데 사용하는 API에 래퍼 레이어를 추가하여 rand() % 100> x % 시간 동안 실패하게 만듭니다.
ok, 확실하지는 않습니다. .. 실패한 부분 .. – ra170
랩퍼 함수에서 @ ra170은 실제 함수를 호출하는 대신 오류 코드가 해당 API에 대해 "실패"를 의미하는 것으로 반환합니다. 시간 –
저는 이번 여름에 똑같은 문제가있었습니다.
사용자 정의 Socket
클래스가 있으며 read
또는 write
이 예외를 던진 경우 어떤 일이 발생할지 테스트하고 싶습니다. 정말 프레임 워크를 조롱 자바를 모방하고 싶어, 나는 이런 식으로했다 :
FakeSocket
클래스로
Socket
클래스를 상속, 뭔가가
SocketExpectation
라고 만들었습니다. 그런 다음 유닛 테스트에서 가짜 소켓을 만들고 기대치를 설정 한 다음 가짜 소켓을 테스트하려는 코드로 전달했습니다.
uint32_t write(buffer, length); // calls check
uint32_t read(buffer, length); // calls check
bool matches();
void expect(expectation);
uint32_t check(CallType, buffer, length) const;
그들은있어 모든 꽤 정직 :
FakeSocket
check
은 현재 예상과 비교하여 인수를 확인하고 계획에 따라 모든 것이 수행되면
SocketExpectation
요구 사항을 수행합니다. 내가 그들을 필요에 따라
typedef enum { write, read } CallType;
SocketExpectation(CallType type);
SocketExpectation &with_arguments(void *a1, uint32_t a2); // expects these args
SocketExpectation &will_return(uint32_t value);
SocketExpectation &will_throw(const char * e); // test error handling
bool matches();
내가 더 방법을 추가하십시오 SocketExpectation
(또한 제거)이 윤곽을 가지고있다.
fake_socket = FakeSocket();
fake_socket.expect(SocketExpectation(write).with_arguments(....).will_return(...));
fake_socket.expect(SocketExpectation(read).with_arguments(...).will_throw("something"));
읽기 및 쓰기 예외를 throw 할 수 없습니다. –
예기치 않은 연결이 발생한 경우 예외를 throw하는 사용자 정의 소켓 클래스입니다. – laura
나는 '모의'에 연결하기 위해 테스트중인 코드를 드라이브로 내 소켓 코드 단위 테스트는 아마 더 나은 통합 테스트로 설명되어 있습니다 : I는 관련 법에 가짜 소켓을 통과,이처럼 만들 것 원격 피어. 원격 피어는 테스트 (단순히 클라이언트 또는 서버 일뿐) 때문에 테스트를 통해 원격 피어가 다양한 방식으로 연결을 중단시키고 테스트중인 코드가 예상대로 반응하는지 확인할 수 있습니다. 설정하는 데는 약간의 작업이 필요하지만 모든 조각을 확보하면 대부분의 상황을 테스트하는 것이 매우 쉽습니다.
내 생각에, 당신이 직면 한 상황을 시뮬레이션하려고 시도하는 것이 아니라 그것을 이해하고 안정적으로 생성해야한다는 것입니다.
- 1. Verilog에서 시뮬레이션 오류
- 2. 오류 : 소켓
- 3. 자바 소켓 소켓 프로그래밍 오류
- 4. I/O 오류 : 소켓 오류
- 5. 소켓 연결 오류
- 6. 소켓 클래스 오류
- 7. Java 서버 소켓 오류
- 8. 안드로이드 소켓 ... UnknownHostException의 오류
- 9. 파이썬 소켓 오류 -
- 10. 안드로이드 블루투스 소켓 오류
- 11. 소켓 통신 오류
- 12. dev-C++ 소켓 오류
- 13. C# 소켓 읽기 오류
- 14. C++ 소켓 연결 오류
- 15. 오류 # 2031 : 소켓 오류. URL : 127.0.0.1
- 16. UDP 소켓에서 소켓 오류 10052
- 17. 프로토콜 오류 방지 소켓 서버
- 18. WSAEINVAL 소켓 복제시 WSAocket 오류
- 19. 윈속 소켓 오류 VB6 코드
- 20. Tcp 소켓 + send() 오류 # 10054
- 21. 소켓 오류 동안 톰캣 끊어
- 22. 에 phpMyAdmin과 MySQL의 소켓 오류
- 23. 소켓 부러진 파이프로 오류 보내기
- 24. .NET 멀티 캐스트 소켓 오류
- 25. Amazon FPS 샌드 박스의 오류 시뮬레이션
- 26. 의 Verilog 테스트 벤치 시뮬레이션 오류
- 27. Windows에서 파일 오류 시뮬레이션 (예 : ERROR_ACCESS_DENIED)
- 28. 파이썬에서 다중 소켓/재사용/닫기 소켓? _socketobject 오류
- 29. ActionScript에서 내부 코드 시뮬레이션?
- 30. TcpListener 소켓 오류 10013의 원인은 무엇입니까?
네트워크 케이블을 분리합니까? – Eclipse