เมื่อคลังข้อมูลการทดสอบมีขนาดใหญ่หรือเวลาดำเนินการนานขึ้น เรามีตัวเลือกในการแยกการทดสอบออกเป็นหลายอุปกรณ์ ซึ่งเรียกว่า การแบ่งพาร์ติชัน
การแบ่งพาร์ติชันมีข้อกำหนดเบื้องต้น เพื่อให้ตัวเรียกใช้การทดสอบรองรับการแบ่งพาร์ติชัน
ตัวเรียกใช้การทดสอบหลักส่วนใหญ่รองรับการแบ่งพาร์ติชันอยู่แล้ว จึงไม่จำเป็นต้องดำเนินการเพิ่มเติม ตัวเรียกใช้การทดสอบต่อไปนี้รองรับการแบ่งพาร์ติชันอยู่แล้ว ได้แก่ การทดสอบการวัดคุม การทดสอบที่ขับเคลื่อนด้วยฝั่งโฮสต์ และ GTest
เรามีตัวเลือกการแบ่งพาร์ติชัน 2 ประเภทที่รองรับใน Tradefed ได้แก่ การแบ่งพาร์ติชันในเครื่องและการแบ่งพาร์ติชันแบบกระจาย ตัวเลือกทั้ง 2 ประเภทมีความคล้ายคลึงกันบางอย่าง ดังนั้นหน้านี้จะอธิบายพร็อพเพอร์ตี้ที่ใช้ร่วมกันและรายละเอียดเฉพาะของแต่ละประเภท
พร็อพเพอร์ตี้ที่ใช้ร่วมกัน
การแบ่งพาร์ติชันทั้ง 2 รูปแบบมีพร็อพเพอร์ตี้เดียวกันจากตัวเรียกใช้การทดสอบ นั่นคือ พาร์ติชันต้อง เป็นอิสระและ กำหนดได้ ขั้นตอนแรกของการแบ่งพาร์ติชันทั้ง 2 รูปแบบคือการสร้างรายการการทดสอบที่สมบูรณ์และเรียงลำดับแล้ว จากนั้นจึงแยกการทดสอบออกเป็นกลุ่ม/พาร์ติชันต่างๆ
ความแตกต่างหลักของการแบ่งพาร์ติชันทั้ง 2 รูปแบบคือวิธีที่ใช้ในการดำเนินการทดสอบ ดูรายละเอียดเพิ่มเติมได้ในส่วนด้านล่าง
การแบ่งพาร์ติชันในเครื่อง
การแบ่งพาร์ติชันในเครื่องหมายความว่าอุปกรณ์ทั้งหมดที่เกี่ยวข้องกับการดำเนินการเรียกใช้ที่แบ่งพาร์ติชันจะเชื่อมต่อกับโฮสต์จริงเครื่องเดียวกัน
การดำเนินการ
การแบ่งพาร์ติชันในเครื่องใช้ประโยชน์จากอุปกรณ์ทั้งหมดที่เชื่อมต่อกับโฮสต์เครื่องเดียวกันโดยการสร้างพูลการทดสอบที่ต้องดำเนินการ และให้อุปกรณ์แต่ละเครื่องโพลการทดสอบเมื่อพร้อม (นั่นคือ การทดสอบก่อนหน้าเสร็จสมบูรณ์แล้ว) ซึ่งจะช่วยเพิ่มประสิทธิภาพการใช้อุปกรณ์ เราเรียกการแบ่งพาร์ติชันในเครื่องว่า การแบ่งพาร์ติชันแบบไดนามิกด้วย
ตัวเลือก
--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