เมื่อคลังข้อมูลการทดสอบมีขนาดใหญ่หรือใช้เวลาดำเนินการนาน เราเสนอความเป็นไปได้ในการแบ่งการทดสอบออกเป็นอุปกรณ์ต่างๆ ได้แก่ การแบ่งส่วน
Sharding มี ข้อกำหนดเบื้องต้น สำหรับนักวิ่งทดสอบเพื่อรองรับชาร์ดดิ้ง
ผู้ทดสอบหลักส่วนใหญ่รองรับการแบ่งส่วนอยู่แล้ว ดังนั้นจึงไม่จำเป็นต้องดำเนินการใดๆ เพิ่มเติม สิ่งเหล่านี้รองรับการแบ่งส่วนแล้ว: การทดสอบเครื่องมือ, การทดสอบที่ขับเคลื่อนด้วยฝั่งโฮสต์, Gtest
ชาร์ดดิ้งที่เรารองรับใน Tradefed มีอยู่สองประเภท: แบบท้องถิ่นและแบบกระจาย มีความคล้ายคลึงกันบางประการ ดังนั้นหน้านี้จึงอธิบายคุณสมบัติทั่วไปและข้อมูลเฉพาะของแต่ละรายการ
คุณสมบัติทั่วไป
ชาร์ดดิ้งทั้งสองรูปแบบถือว่าคุณสมบัติเดียวกันจากนักวิ่งทดสอบ: ชาร์ดต้องเป็น อิสระ และ กำหนดได้ ขั้นตอนแรกของการแบ่งส่วนข้อมูลทั้งสองส่วนคือการสร้างรายการการทดสอบตามลำดับที่สมบูรณ์ จากนั้นจึงแบ่งออกเป็นกลุ่ม/ส่วนย่อยต่างๆ
ความแตกต่างที่สำคัญของแบบฟอร์มการแบ่งส่วนคือวิธีดำเนินการทดสอบ รายละเอียดเพิ่มเติมในส่วนด้านล่าง
การแบ่งส่วนท้องถิ่น
การแบ่งส่วนเฉพาะ ที่หมายถึงอุปกรณ์ทั้งหมดที่เกี่ยวข้องกับการดำเนินการเรียกใช้การแบ่งส่วนนั้นเชื่อมต่อกับโฮสต์จริงเดียวกัน
การดำเนินการ
การแบ่งส่วนภายในเครื่องใช้ประโยชน์จากอุปกรณ์ทั้งหมดที่เชื่อมต่อกับโฮสต์เดียวกันโดยการสร้างกลุ่มการทดสอบที่จำเป็นต้องดำเนินการและให้แต่ละอุปกรณ์ทดสอบการโพลเมื่อว่าง (นั่นคือ เสร็จสิ้นกับการทดสอบครั้งก่อน) ส่งผลให้เกิดการใช้อุปกรณ์ให้เกิดประโยชน์สูงสุด เรายังเรียกมันว่า การแบ่งส่วนแบบไดนามิก
ตัวเลือก
--shard-count XX
การแบ่งส่วนแบบกระจาย
การแบ่งกลุ่มข้อมูลแบบกระจาย หมายถึงอุปกรณ์ทั้งหมดที่เกี่ยวข้องกับการดำเนินการเรียกใช้การแบ่งกลุ่มข้อมูลสามารถอยู่ที่ใดก็ได้และเชื่อมต่อกับโฮสต์ทางกายภาพที่แตกต่างกัน
การดำเนินการ
ชาร์ดแบบกระจายจะเกิดขึ้นเมื่อมีการสร้างรายการการทดสอบ และเนื้อหาของแต่ละชาร์ดจะดำเนินการเฉพาะชาร์ดที่ร้องขอในปัจจุบันเท่านั้น ดังนั้นส่วนแบ่งข้อมูลแบบกระจายทั้งหมดจึงสร้างรายการเดียวกันในตอนแรก จากนั้นจึงดำเนินการชุดย่อยย่อยที่ไม่เกิดร่วมกัน ซึ่งส่งผลให้มีการดำเนินการทดสอบทั้งหมด
คุณสมบัติหลักของแบบฟอร์มนี้คือชิ้นส่วนต่างๆ โดยไม่รับรู้ถึงกันและกันโดยสิ้นเชิงและอาจล้มเหลวได้โดยอิสระ
ข้อเสียเปรียบหลักคือความยาวของชาร์ดไม่จำเป็นต้องสมดุลเพียงเพราะเราไม่สามารถคาดการณ์ล่วงหน้ารันไทม์ของการทดสอบแต่ละครั้งในแต่ละชาร์ดได้ การกระจายทำให้มีจำนวนกรณีทดสอบเท่ากันโดยประมาณในแต่ละส่วน
ตัวเลือก
--shard-count XX --shard-index XX
การแบ่งส่วนโทเค็น
การแบ่งส่วนโทเค็น สามารถใช้ได้กับการแบ่งส่วนข้อมูลในเครื่องเท่านั้น การตั้งค่าสถานะไม่สามารถใช้งานได้ในกรณีการใช้งานการแบ่งส่วนข้อมูลที่ไม่ใช่ภายในเครื่อง บางครั้งอุปกรณ์ตัวใดตัวหนึ่งที่เกี่ยวข้องกับการแบ่งส่วนจะมีทรัพยากรพิเศษที่อุปกรณ์อื่นไม่มี เช่น ซิมการ์ด การทดสอบบางอย่างอาจใช้งานได้เมื่อมีทรัพยากรพิเศษนั้นเท่านั้น มิฉะนั้นจะล้มเหลว
การแบ่งส่วนโทเค็นเป็นวิธีแก้ปัญหาของเราสำหรับกรณีการใช้งานดังกล่าว โมดูลทดสอบสามารถประกาศทรัพยากรพิเศษที่พวกเขาต้องการใน AndroidTest.xml
และ Tradefed กำหนดเส้นทางการทดสอบไปยังอุปกรณ์ที่มีทรัพยากร
การกำหนดค่า XML
<option name="config-descriptor:metadata" key="token" value="SIM_CARD" />
value
ของโทเค็นตรงกับ TokenProperty
ของ Tradefed และเชื่อมโยงกับตัวจัดการใน TokenProviderHelper
ซึ่งช่วยให้โมดูลทดสอบสามารถรันกับอุปกรณ์ที่สามารถทำการทดสอบได้อย่างเหมาะสม
จะเกิดอะไรขึ้นหากไม่มีอุปกรณ์ใดที่สามารถรันการทดสอบได้?
หากไม่มีอุปกรณ์ใดที่มีทรัพยากรตรงกับโมดูลทดสอบ โมดูลทดสอบจะล้มเหลวและข้ามไปเนื่องจากไม่สามารถดำเนินการได้อย่างถูกต้อง
ตัวอย่างเช่น หากโมดูลทดสอบร้องขอให้ซิมการ์ดทำงาน แต่ไม่มีอุปกรณ์ใดมีซิมการ์ด โมดูลทดสอบจะล้มเหลว
การนำไปปฏิบัติ
ส่งแฟล็กคุณลักษณะนี้ไปยังบรรทัดคำสั่งหลักของ Tradefed:
--enable-token-sharding