如何模擬套接字錯誤? (有時服務器或客戶端由於某些套接字錯誤而斷開連接,並且無法重現。) 我正在尋找一個工具來執行此操作,但找不到一個工具。 有沒有人知道任何一種工具或有關於如何做到這一點的代碼示例? (C#或C/C++)模擬套接字錯誤
模擬套接字錯誤
回答
向您用於訪問套接字的API添加包裝層,使它們失敗rand()%100> x%的時間。
好吧,不知道如何做到這一點..失敗的一部分.. – ra170 2010-02-01 19:57:45
@ ra170在你的包裝函數,而不是調用通過真正的函數,讓它返回任何錯誤代碼意味着「失敗」的API的某些部分時間 – 2010-02-02 20:59:12
今年夏天我的問題完全一樣。
我有一個自定義Socket
類,想測試如果read
或write
拋出異常會發生什麼。我真的很想模仿的Java嘲弄的框架,而我卻這樣說:
我繼承了Socket
類成FakeSocket
類,並創建了一種叫SocketExpectation
。然後,在單元測試中,我創建了僞套接字,設置了期望值,然後將該僞套接字傳遞給我想測試的代碼。
的FakeSocket
有這些方法(剝離不需要的細節):
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;
他們都非常直截了當。 check
根據當前期望檢查參數,如果一切都按照計劃進行,則繼續執行SocketExpectation
要求。
的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();
我增加了更多的方法,因爲我需要他們。謹以此創建它,然後將假插座傳遞給相關的方法:
fake_socket = FakeSocket();
fake_socket.expect(SocketExpectation(write).with_arguments(....).will_return(...));
fake_socket.expect(SocketExpectation(read).with_arguments(...).will_throw("something"));
讀取和寫入不能拋出異常 – 2010-01-14 21:04:44
這是一個自定義套接字類,如果連接發生任何意外事件,它會引發異常。 – laura 2010-01-14 21:07:18
我開車被測代碼連接到一個「模擬」我的套接字代碼的單元測試可能是更好的描述爲集成測試遠程對等。由於遠程對等體處於測試的控制之下(它只是一個簡單的客戶機或服務器),我可以讓測試使遠程對等體以各種方式破壞連接,然後確保被測代碼按預期做出反應。它需要一些工作來設置,但是一旦你完成了所有的工作,就可以測試大多數情況。
所以,我想,我的建議是,而不是試圖模擬你遇到的情況,你應該瞭解它們,然後可靠地生成它們。
- 1. 如何模擬一個套接字錯誤
- 2. 模擬套接字斷開連接
- 3. 套接字連接錯誤
- 4. 模擬連接錯誤
- 5. 本地主機套接字未連接錯誤與虛擬機
- 6. 如何使用RAII模擬套接字
- 7. 如何模擬套接字斷開?
- 8. 如何在Android模擬器中模擬多個套接字
- 9. 如何通過模擬庫模擬套接字對象
- 10. dev-C++套接字錯誤
- 11. C#套接字錯誤10022
- 12. 套接字發送錯誤
- 13. Java套接字錯誤
- 14. 套接字錯誤 - 蟒蛇
- 15. IPC套接字錯誤
- 16. 套接字EADDRINUSE錯誤
- 17. 套接字錯誤10047
- 18. Python套接字錯誤
- 19. 套接字寫入錯誤
- 20. Windows套接字錯誤10013
- 21. python SMTP - 套接字錯誤
- 22. 套接字通信錯誤
- 23. Android新套接字錯誤
- 24. 套接字錯誤1411
- 25. Android套接字錯誤
- 26. 套接字寫入錯誤
- 27. 套接字讀/寫錯誤
- 28. WCF套接字錯誤10045
- 29. android套接字寫錯誤
- 30. 套接字綁定錯誤
拔下網線? – Eclipse 2010-01-14 20:32:53