सॉकेट त्रुटियों का अनुकरण कैसे करें? (कभी-कभी सर्वर या क्लाइंट कुछ सॉकेट त्रुटि के कारण डिस्कनेक्ट हो जाता है और पुन: पेश करना असंभव है।) मैं ऐसा करने के लिए एक टूल ढूंढ रहा था, लेकिन मुझे कोई नहीं मिला। क्या किसी को किसी भी उपकरण के बारे में पता है या यह कैसे करना है इस पर कोड उदाहरण है? (सी # या सी/सी ++)सॉकेट त्रुटियों का अनुकरण करें
उत्तर
सॉकेट तक पहुंचने के लिए उपयोग किए जा रहे एपीआई में एक रैपर परत जोड़ें और उन्हें समय की रैंड()% 100> x प्रतिशत विफल करें।
ठीक है, यह सुनिश्चित नहीं है कि यह कैसे करें .. असफल भाग .. – ra170
@ रैपर फ़ंक्शन में @ आर 170, असली फ़ंक्शन के माध्यम से कॉल करने के बजाय, यह वापस लौटा है जो भी त्रुटि कोड का मतलब है कि उस एपीआई के कुछ भाग "विफल" समय –
मुझे इस गर्मी में बिल्कुल वही समस्या थी।
मेरे पास कस्टम 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"));
पढ़ और लिखना अपवाद फेंक नहीं सकता –
यह एक कस्टम सॉकेट क्लास है, जो कनेक्शन के साथ अप्रत्याशित कुछ हुआ तो अपवाद फेंक देता है। – laura
मेरे सॉकेट कोड इकाई परीक्षण शायद बेहतर एकीकरण परीक्षणों रूप में वर्णित हैं के रूप में मैं परीक्षण के अंतर्गत कोड ड्राइव एक 'नकली' से कनेक्ट करने रिमोट सहकर्मी चूंकि रिमोट पीयर परीक्षण के नियंत्रण में है (यह केवल एक साधारण ग्राहक या सर्वर है) मेरे पास रिमोट पीयर विभिन्न तरीकों से कनेक्शन को बाधित करने का परीक्षण कर सकता है और फिर सुनिश्चित करता है कि परीक्षण के तहत कोड अपेक्षित प्रतिक्रिया करता है। इसे स्थापित करने में थोड़ा सा काम लगता है, लेकिन एक बार जब आपके पास सभी टुकड़े होते हैं तो यह ज्यादातर स्थितियों का परीक्षण करने के लिए बहुत छोटा बनाता है।
तो, मुझे लगता है कि, मेरा सुझाव यह है कि आप जिन परिस्थितियों का सामना कर रहे हैं उन्हें अनुकरण करने के बजाय आपको उन्हें समझना चाहिए और फिर उन्हें विश्वसनीय रूप से उत्पन्न करना चाहिए।
- 1. सॉकेट कनेक्शन हानि को अनुकरण कैसे करें?
- 2. मैं टीसीपी/आईपी त्रुटियों का अनुकरण कैसे कर सकता हूं?
- 3. आलसी का अनुकरण कैसे करें
- 4. सी में एक बड़े-अंत व्यवहार का अनुकरण/अनुकरण करें?
- 5. जुनीट: System.in परीक्षण का अनुकरण कैसे करें?
- 6. विभिन्न एनएटी व्यवहारों का अनुकरण कैसे करें
- 7. रंग पारदर्शिता अनुकरण करें
- 8. राफेल जेएस में ड्रैग एंड इवेंट का अनुकरण कैसे करें?
- 9. पढ़ने वाली त्रुटियों के साथ एक दोषपूर्ण ब्लॉक डिवाइस अनुकरण करें?
- 10. डब्ल्यूपीएफ बाध्यकारी त्रुटियों का शिकार कैसे करें?
- 11. win32: माउस आंदोलन अनुकरण किए बिना एक क्लिक अनुकरण करें?
- 12. mysql प्रश्नों को अनुकरण करें
- 13. LowMemory() पर अनुकरण कैसे करें?
- 14. एंड्रॉइड - होम पर अनुकरण करें
- 15. सी #: मेमोरी लीक अनुकरण करें
- 16. आउटगोइंग सॉकेट कनेक्शन का नकल कैसे करें?
- 17. log4j: सॉकेट ऐपेंडर का उपयोग कैसे करें?
- 18. वास्तविक माउस को अनुकरण करें
- 19. अनुकरण बटन पर क्लिक करें
- 20. स्पर्श घटना अनुकरण कैसे करें?
- 21. टूटी हुई पाइप त्रुटियों को फ़िल्टर करें
- 22. सी/सी ++ सॉकेट
- 23. सॉकेट
- 24. यूनिट परीक्षणों में अपवाद फेंकने का अनुकरण कैसे करें?
- 25. डेस्कटॉप पर मोबाइल (एंड्रॉइड) ब्राउज़र का अनुकरण कैसे करें
- 26. एंड्रॉइड एमुलेटर - हेडसेट प्लगिंग एक्शन का अनुकरण कैसे करें
- 27. जीवाश्म, बीजीआर में 'गिट स्टैश' का अनुकरण कैसे करें?
- 28. नोडजेस में "विंडो" ऑब्जेक्ट का अनुकरण कैसे करें?
- 29. वास्तविक डिवाइस पर आने वाली कॉल का अनुकरण कैसे करें?
- 30. विंडोज सर्वर पर क्रॉन नौकरियों का अनुकरण कैसे करें?
नेटवर्क केबल अनप्लग करें? – Eclipse