ทดสอบความโกลาหลของเครือข่ายบน Windows
การทดสอบความโกลาหลคือการทำให้บางอย่างพังโดยตั้งใจขณะที่คุณเฝ้าดู เพื่อดูว่าซอฟต์แวร์ของคุณทำอย่างไรกับเรื่องนั้น ในระดับเครือข่าย เครื่องมือนี้ก็คือสิ่งนั้นเอง คือวิธีใส่ความผิดพลาดเข้าไปในแอปเดียวและดูว่ามันรอดหรือไม่
ความผิดพลาดที่ใส่ได้
| ความผิดพลาด | จำลองอะไร |
|---|---|
| การสูญหาย ความเสียหาย การซ้ำ | เส้นทางที่เสื่อมสภาพ แพ็กเก็ตหายไป มาถึงแบบเสียหาย หรือมาถึงสองครั้ง |
| ความหน่วง จิตเตอร์ สไปก์ | เส้นทางที่ช้าหรือไม่เสถียร รวมถึงการหยุดนิ่งหลายวินาทีที่ทำให้ไทม์เอาต์พัง |
| การรีเซ็ตการเชื่อมต่อ | ไฟร์วอลล์หรือโหลดบาลานเซอร์ที่ฆ่าการเชื่อมต่อกลางการส่งข้อมูล |
| ลิงก์ขาดช่วง | เส้นทางที่หายไปแล้วกลับมาเป็นรอบ |
| ที่อยู่หรือพอร์ตที่ถูกบล็อก | ส่วนพึ่งพาหนึ่งอย่างเข้าถึงไม่ได้ ขณะที่ที่เหลือทำงานได้ |
| ไม่มีอินเทอร์เน็ต แต่ LAN ยังอยู่ | ลักษณะของ captive portal คือในเครือข่ายใช้ได้ แต่โลกภายนอกใช้ไม่ได้ |
สิ่งที่แยกความโกลาหลออกจากสัญญาณรบกวน คือการทำซ้ำได้
ความล้มเหลวแบบสุ่มที่เล่นซ้ำไม่ได้ให้เรื่องเล่า ไม่ใช่รายงานบั๊ก การตัดสินใจแบบสุ่มทุกอย่างที่นี่มาจาก seed คำสั่งเดียวกันจึงให้การรันแบบเดียวกัน คือแพ็กเก็ตที่หายชุดเดิม จิตเตอร์เดิม ลำดับเดิม:
BeanNetworkTester.exe --loss 15 --rst-prob 5 --seed 42 --target myapp.exe --duration 120
นั่นคือความต่างระหว่าง “อังคารที่แล้วมันล่มครั้งหนึ่ง” กับเทสต์ที่ล้มเหลวซึ่งคนอื่นรันได้
ในไปป์ไลน์
บรรทัดคำสั่งรายงานผลผ่านรหัสออก บิลด์จึงแยก “แอปล้มเหลว” ออกจาก “เครื่องมือเริ่มไม่ได้” ได้ และเซสชันจบเอง จึงไม่มีขั้นตอนล้างข้อมูลที่ลืมได้:
BeanNetworkTester.exe --loss 10 --rst-prob 5 --target myapp.exe --duration 90 --format json > chaos.ndjson
ลำดับของความผิดพลาดแทนที่จะเป็นอย่างเดียวคือไฟล์สถานการณ์จำลอง และไฟล์เหล่านั้นก็ทำซ้ำได้เช่นกัน ดู สถานการณ์ตามเวลา และ ทดสอบเครือข่ายใน CI สำหรับรหัสออกและรันเนอร์ที่ต้องใช้
ขอบเขตของผลกระทบหยุดที่ไหน
มีสองขอบเขต และทั้งสองเป็นความตั้งใจ การทำให้เครือข่ายแย่ไปถึงโปรเซส PID ที่อยู่ หรือพอร์ตเดียวเมื่อคุณเล็งไปที่มัน เครื่องที่คุณใช้งานจึงทำงานต่อได้ และเป็นเครื่องเดียว นี่คือการใส่ความผิดพลาดให้ไคลเอนต์หนึ่งตัวและการเชื่อมต่อของมัน ไม่ใช่ให้คลัสเตอร์ ถ้าคุณมองหาความโกลาหลข้ามบริการและโหนด นั่นเป็นเครื่องมืออีกประเภท และตัวนี้คือชิ้นส่วนที่ทำให้เครือข่ายพังใต้แอป Windows แอปเดียว
ทุกอย่างย้อนกลับได้ทันที STOP คืนเครือข่าย ขีดจำกัดเวลาก็ทำเช่นเดียวกัน และวอตช์ด็อกภายในเครื่องมือจะปิดการดักจับถ้าตัวเครื่องมือเองตาย ความผิดพลาดที่คุณใส่ไว้ต้องไม่อยู่ยาวกว่าการรันที่ใส่มัน