Soket hataları nasıl taklit edilir? (bazen sunucu veya istemci, bazı soket hatası nedeniyle kesilir ve yeniden üretilmesi imkansızdır.) Bunu yapmak için bir araç arıyordum ama bulamıyorum. Bir araçtan herhangi birini tanıyor veya bunun nasıl yapılacağı konusunda bir kod örneği var mı? (C# veya C/C++)soket hatalarını taklit etme
cevap
Yuvalara erişmek için kullandığınız API'lere bir sarıcı katman ekleyin ve rand() 'nın% 100'ü>%' si için başarısız olmasını sağlayın.
tamam, nasıl yapılacağından emin değilsiniz .. başarısız parçası .. – ra170
@ ra170, sarma işlevinin yerine, gerçek işleve çağırmak yerine, hata kodu ne olursa olsun bu API için "başarısız" anlamına gelir. time –
Bu yaz tam olarak aynı problemi yaşadım.
Özel bir Socket
sınıfı vardı ve read
ya da ya da write
bir istisna attığında ne olacağını test etmek istedim. Gerçekten çerçeveler alay Java taklit etmek istedim ve böyle yaptım:
FakeSocket
sınıfa
Socket
sınıfı miras ve bir şey bir
SocketExpectation
denilen oluşturdu. Daha sonra, birim testlerinde, sahte prizler oluşturdum, beklentileri oluşturdum ve sonra sahte soketi test etmek istediğim koda geçirdim.
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;
Onların hepsi oldukça yalındır:
FakeSocket
check
, geçerli beklentiye karşı argümanları kontrol eder ve her şey plana uygunsa,
SocketExpectation
gereksinimini yerine getirmeye devam eder. Onları gerektiği gibi
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();
daha yöntemleri eklendi: SocketExpectation
(ayrıca soyuldu) bu çevre çizgisine sahiptir.
fake_socket = FakeSocket();
fake_socket.expect(SocketExpectation(write).with_arguments(....).will_return(...));
fake_socket.expect(SocketExpectation(read).with_arguments(...).will_throw("something"));
read ve write istisnalar atamıyor –
Bağlantıya beklenmedik bir şey olursa istisnalar atan özel bir yuva sınıfıdır. – laura
Bir 'mock' ile bağlantı test altındaki kodu sürücü olarak benim soket kod birimi testleri muhtemelen daha iyi entegrasyon testlerinde olarak tarif edilmektedir: Sonra alakalı yönteme sahte soket geçmesine Bak, böyle yaratacak uzak akran. Uzaktaki eş testin kontrolü altında olduğu için (basit bir istemci ya da sunucu) testin uzaktaki eşin bağlantıyı çeşitli şekillerde bozmasına neden olabilir ve test edilen kodun beklendiği gibi tepki vermesini sağlarım. Kurmak için biraz iş gerekir, ancak tüm parçaları bir kez yerine getirdiğinizde, çoğu durumu test etmek oldukça kolaylaşır.
Yani, benim önerim, karşılaştığınız durumları simüle etmeyi denemekten ziyade onları anlamanız ve sonra onları güvenilir bir şekilde üretmenizdir.
- 1. Curl PHP ile ajax çağrısını taklit etme
- 2. Kullanıcı adı ve şifrenizle taklit etme?
- 3. Android'de Espresso ile EditText hatalarını test etme
- 4. phpunit ile PHP ayrıştırma hatalarını test etme
- 5. Linux, ekran görüntüsünü yakalama ve fare hareketlerini taklit etme
- 6. Yolun Python 2.7'de bir soket olup olmadığını kontrol etme
- 7. Bozuk boru hatalarını filtrele
- 8. Soket protokolü tanımlayamıyor (soket sızıntısı)
- 9. (How) Soket tipini soket tanımlayıcısından bulabilir miyim?
- 10. Birim testleri için HttpContext'i nasıl taklit edebilirim?
- 11. Haskell'de keypress olayı nasıl taklit edilir/taklit edilir?
- 12. Portföyü taklit eden Windows
- 13. PHP'yi Taklit PHP İçermez
- 14. MySQL saklı yordamlarında veya taklit etme yöntemlerinde herhangi bir liste veri türü var mı?
- 15. Fare Tıklatma ve Fare Tekerini Taklit Etme ve Fare Tekeri Qt'yi Kullanma
- 16. Picasa'nın çizim hızını düşürmek için düşük kaliteli görüntü oluşturma işlemini taklit etme
- 17. Bir FULL HD (1920 × 1080) android cihazını taklit etme. Maksimum çözünürlük petek üzerinde çalışır?
- 18. JavaScript hatalarını/istisnasını genişletme
- 19. Visual Studio makro hatalarını
- 20. http hatalarını yakalamak
- 21. MySQL hatalarını nasıl önlerim?
- 22. R: 'nls' hatalarını yakalamak
- 23. Silverlight: Bağlama Hatalarını Onarma
- 24. Hyper-V makinede soket istisnası
- 25. Linux: Bir soket/borunun bir okuma yapmadan kırılıp kırılmadığını kontrol etme()/write()
- 26. Ağ arabirimine soket soketi
- 27. Soket ve dosya tanıtıcıları
- 28. Soket Programlama Chat Sistemi
- 29. uwsgi soket dosyası oluşturulmadı
- 30. cygwin + Windows soket programlama
Ağ kablosunu çıkarın. – Eclipse