การจัดการตัวเลือกใน Tradefed

การจัดการตัวเลือกเป็นหัวใจสำคัญของแนวทางแบบโมดูลของสหพันธ์การค้า โดยเฉพาะอย่างยิ่ง ตัวเลือกเป็นกลไกที่นักพัฒนาแอป ผู้ผสานรวม และ Test Runner สามารถทำงานร่วมกันได้โดยไม่ต้องทำซ้ำงานของกันและกัน กล่าวโดยย่อ การติดตั้งใช้งานการจัดการตัวเลือกของเราช่วยให้นักพัฒนาซอฟต์แวร์สามารถทำเครื่องหมายสมาชิกคลาส Java ว่ากำหนดค่าได้ ซึ่งในจุดนี้ผู้ผสานรวมจะเพิ่มหรือลบล้างค่าของสมาชิกนั้นได้ และต่อมา Test Runner จะเพิ่มหรือลบล้างค่าได้ กลไกนี้ใช้ได้กับประเภทข้อมูลดั้งเดิมของ Java ทั้งหมด รวมถึงอินสแตนซ์ Map หรือ Collection ของประเภทข้อมูลดั้งเดิม

หมายเหตุ: กลไกการจัดการตัวเลือกจะใช้ได้กับคลาส ที่ใช้หนึ่งใน อินเทอร์เฟซที่รวมอยู่ในวงจรทดสอบ และเฉพาะเมื่อคลาสนั้นสร้างอินสแตนซ์โดยกลไกวงจรเท่านั้น

นักพัฒนา

ในการเริ่มต้น นักพัฒนาซอฟต์แวร์จะทำเครื่องหมายสมาชิกด้วยคำอธิบายประกอบ @Option โดยจะระบุค่า name และ description (อย่างน้อย) ซึ่ง ระบุชื่ออาร์กิวเมนต์ที่เชื่อมโยงกับตัวเลือกนั้น และคำอธิบายที่จะแสดงใน คอนโซล TF เมื่อเรียกใช้คำสั่งด้วย --help หรือ --help-all

ตัวอย่างเช่น สมมติว่าเราต้องการสร้างการทดสอบโทรศัพท์ที่ใช้งานได้ซึ่งจะโทรหมายเลขโทรศัพท์ต่างๆ และคาดว่าจะได้รับลำดับเสียง DTMF จากแต่ละหมายเลขหลังจากที่เชื่อมต่อแล้ว

public class PhoneCallFuncTest extends IRemoteTest {
    @Option(name = "timeout", description = "How long to wait for connection, in millis")
    private long mWaitTime = 30 * 1000;  // 30 seconds

    @Option(name = "call", description = "Key: Phone number to attempt. " +
            "Value: DTMF to expect. May be repeated.")
    private Map<String, String> mCalls = new HashMap<String, String>;

    public PhoneCallFuncTest() {
        mCalls.add("123-456-7890", "01134");  // default
    }

นักพัฒนาแอปต้องทำเพียงเท่านี้เพื่อตั้งค่าการกำหนดค่า 2 จุดสำหรับการทดสอบนั้น จากนั้นก็สามารถใช้ mWaitTime และ mCalls ได้ตามปกติ โดยไม่ต้องสนใจว่ากำหนดค่าได้ เนื่องจากมีการตั้งค่าฟิลด์ @Option หลังจากสร้างอินสแตนซ์ของคลาส แต่ก่อนที่จะเรียกใช้เมธอด run ซึ่งจะช่วยให้ผู้ใช้ตั้งค่าเริ่มต้นสำหรับ หรือทำการกรองบางอย่างในฟิลด์ Map และ Collection ได้ง่าย ซึ่ง มิฉะนั้นจะเพิ่มได้เท่านั้น

ผู้รวมบริการ

ผู้ผสานรวมจะทำงานในโลกของการกำหนดค่าซึ่งเขียนด้วย XML รูปแบบการกำหนดค่า ช่วยให้ผู้ผสานรวมตั้งค่า (หรือต่อท้าย) ค่าสำหรับฟิลด์ @Option ได้ ตัวอย่างเช่น สมมติว่าผู้ผสานรวมต้องการกำหนดการทดสอบที่มีเวลาในการตอบสนองต่ำซึ่งเรียกหมายเลขเริ่มต้น รวมถึงการทดสอบที่ใช้เวลานานซึ่งเรียกหมายเลขต่างๆ โดยอาจสร้างการกำหนดค่า 2 รายการ ซึ่งอาจมีลักษณะดังนี้

<?xml version="1.0" encoding="utf-8"?>
<configuration description="low-latency default test; low-latency.xml">
    <test class="com.example.PhoneCallFuncTest">
        <option name="timeout" value="5000" />
    </test>
</configuration>
<?xml version="1.0" encoding="utf-8"?>
<configuration description="call a bunch of numbers; many-numbers.xml">
    <test class="com.example.PhoneCallFuncTest">
        <option name="call" key="111-111-1111" value="#*#*TEST1*#*#" />
        <option name="call" key="222-222-2222" value="#*#*TEST2*#*#" />
        <!-- ... -->
    </test>
</configuration>

Test Runner

นอกจากนี้ Test Runner ยังมีสิทธิ์เข้าถึงจุดกำหนดค่าเหล่านี้ผ่านคอนโซล Trade Federation ด้วย ก่อนอื่น ผู้ใช้จะเรียกใช้คำสั่ง (ซึ่งก็คือการกำหนดค่าและอาร์กิวเมนต์ทั้งหมด) ด้วย run command <name> คำสั่ง (หรือ run <name> แบบย่อ) นอกจากนี้ ผู้ใช้ยังระบุรายการอาร์กิวเมนต์ใดก็ได้ซึ่งเป็นส่วนหนึ่งของคำสั่ง ซึ่งสามารถแทนที่หรือ ต่อท้ายฟิลด์ที่ระบุโดยออบเจ็กต์วงจรภายในแต่ละการกำหนดค่า

หากต้องการเรียกใช้การทดสอบที่มีเวลาในการตอบสนองต่ำด้วยหมายเลขโทรศัพท์ many-numbers หมายเลข เครื่องมือเรียกใช้การทดสอบ จะดำเนินการดังนี้

tf> run low-latency.xml --call 111-111-1111 #*#*TEST1*#*# --call 222-222-2222 #*#*TEST2*#*#

หรือหากต้องการให้ได้ผลลัพธ์ที่คล้ายกันจากทิศทางตรงกันข้าม Test Runner อาจลดเวลา รอสำหรับmany-numbersการทดสอบได้ดังนี้

tf> run many-numbers.xml --timeout 5000

การจัดเรียงตัวเลือก

คุณอาจสังเกตเห็นว่าcallตัวเลือกที่ใช้ในการติดตั้งใช้งานคือ Map ดังนั้นเมื่อ--callซ้ำในบรรทัดคำสั่ง ระบบจะจัดเก็บตัวเลือกทั้งหมด

ตัวเลือก timeout ซึ่งมีการติดตั้งใช้งานพื้นฐานของ long จัดเก็บได้เพียงค่าเดียว ดังนั้นระบบจะจัดเก็บเฉพาะค่าสุดท้ายที่ระบุ --timeout 5 --timeout 10 ผลลัพธ์ใน timeout ที่มี 10

ในกรณีที่ใช้ List หรือ Collection เป็นการติดตั้งใช้งานพื้นฐาน ระบบจะจัดเก็บค่าทั้งหมดตามลำดับที่ระบุในบรรทัดคำสั่ง

ตัวเลือกบูลีน

คุณตั้งค่าตัวเลือกของประเภทพื้นฐานแบบบูลีนเป็น true ได้โดยการส่งชื่อตัวเลือกโดยตรง เช่น --[option-name] และตั้งค่าเป็น false ได้โดยใช้ไวยากรณ์ --no-[option-name]

ดูเพิ่มเติม

ส่งตัวเลือกไปยังชุดโปรแกรมและ โมดูล