Elasticsearch - การทดสอบ
Elasticsearch มีไฟล์ jar ซึ่งสามารถเพิ่มลงใน java IDE ใด ๆ และสามารถใช้เพื่อทดสอบโค้ดที่เกี่ยวข้องกับ Elasticsearch การทดสอบต่างๆสามารถทำได้โดยใช้กรอบการทำงานที่ Elasticsearch จัดเตรียมไว้ให้ ในบทนี้เราจะพูดถึงการทดสอบเหล่านี้โดยละเอียด -
- การทดสอบหน่วย
- การทดสอบการผสานรวม
- การทดสอบแบบสุ่ม
ข้อกำหนดเบื้องต้น
ในการเริ่มต้นการทดสอบคุณต้องเพิ่มการพึ่งพาการทดสอบ Elasticsearch ในโปรแกรมของคุณ คุณสามารถใช้ maven เพื่อจุดประสงค์นี้และสามารถเพิ่มสิ่งต่อไปนี้ใน pom.xml
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>2.1.0</version>
</dependency>
EsSetup ได้รับการเตรียมใช้งานเพื่อเริ่มต้นและหยุดโหนด Elasticsearch และเพื่อสร้างดัชนี
EsSetup esSetup = new EsSetup();
esSetup.execute () ฟังก์ชันด้วย createIndex จะสร้างดัชนีคุณต้องระบุการตั้งค่าประเภทและข้อมูล
การทดสอบหน่วย
การทดสอบหน่วยดำเนินการโดยใช้กรอบการทดสอบ JUnit และ Elasticsearch โหนดและดัชนีสามารถสร้างได้โดยใช้คลาส Elasticsearch และในวิธีการทดสอบสามารถใช้เพื่อทำการทดสอบได้ ใช้คลาส ESTestCase และ ESTokenStreamTestCase สำหรับการทดสอบนี้
การทดสอบการผสานรวม
การทดสอบการรวมใช้หลายโหนดในคลัสเตอร์ คลาส ESIntegTestCase ใช้สำหรับการทดสอบนี้ มีวิธีการต่างๆที่ทำให้งานเตรียมกรณีทดสอบง่ายขึ้น
ส. เลขที่ | วิธีการและคำอธิบาย |
---|---|
1 | refresh() ดัชนีทั้งหมดในคลัสเตอร์จะถูกรีเฟรช |
2 | ensureGreen() ตรวจสอบสถานะคลัสเตอร์สุขภาพสีเขียว |
3 | ensureYellow() ตรวจสอบสถานะคลัสเตอร์สุขภาพสีเหลือง |
4 | createIndex(name) สร้างดัชนีด้วยชื่อที่ส่งไปยังเมธอดนี้ |
5 | flush() ดัชนีทั้งหมดในคลัสเตอร์จะถูกล้าง |
6 | flushAndRefresh() ล้าง () และรีเฟรช () |
7 | indexExists(name) ตรวจสอบการมีอยู่ของดัชนีที่ระบุ |
8 | clusterService() ส่งคืนคลาส Java ของคลัสเตอร์เซอร์วิส |
9 | cluster() ส่งคืนคลาสคลัสเตอร์ทดสอบ |
วิธีการทดสอบคลัสเตอร์
ส. เลขที่ | วิธีการและคำอธิบาย |
---|---|
1 | ensureAtLeastNumNodes(n) ตรวจสอบให้แน่ใจว่าจำนวนโหนดขั้นต่ำในคลัสเตอร์มากกว่าหรือเท่ากับจำนวนที่ระบุ |
2 | ensureAtMostNumNodes(n) ตรวจสอบให้แน่ใจว่าจำนวนโหนดสูงสุดในคลัสเตอร์น้อยกว่าหรือเท่ากับจำนวนที่ระบุ |
3 | stopRandomNode() เพื่อหยุดโหนดสุ่มในคลัสเตอร์ |
4 | stopCurrentMasterNode() เพื่อหยุดโหนดหลัก |
5 | stopRandomNonMaster() เพื่อหยุดโหนดสุ่มในคลัสเตอร์ซึ่งไม่ใช่โหนดหลัก |
6 | buildNode() สร้างโหนดใหม่ |
7 | startNode(settings) เริ่มโหนดใหม่ |
8 | nodeSettings() แทนที่วิธีนี้สำหรับการเปลี่ยนการตั้งค่าโหนด |
การเข้าถึงลูกค้า
ไคลเอ็นต์ใช้เพื่อเข้าถึงโหนดต่างๆในคลัสเตอร์และดำเนินการบางอย่าง วิธี ESIntegTestCase.client () ใช้สำหรับรับไคลเอ็นต์แบบสุ่ม Elasticsearch เสนอวิธีการอื่น ๆ ในการเข้าถึงไคลเอนต์และวิธีการเหล่านั้นสามารถเข้าถึงได้โดยใช้เมธอด ESIntegTestCase.internalCluster ()
ส. เลขที่ | วิธีการและคำอธิบาย |
---|---|
1 | iterator() สิ่งนี้ช่วยให้คุณเข้าถึงไคลเอนต์ที่มีอยู่ทั้งหมด |
2 | masterClient() ส่งคืนไคลเอ็นต์ซึ่งกำลังสื่อสารกับโหนดหลัก |
3 | nonMasterClient() ส่งคืนไคลเอ็นต์ซึ่งไม่ได้สื่อสารกับโหนดหลัก |
4 | clientNodeClient() ส่งคืนไคลเอ็นต์ที่อยู่บนโหนดไคลเอ็นต์ |
การทดสอบแบบสุ่ม
การทดสอบนี้ใช้เพื่อทดสอบโค้ดของผู้ใช้กับข้อมูลที่เป็นไปได้ทั้งหมดเพื่อไม่ให้เกิดความล้มเหลวในอนาคตกับข้อมูลประเภทใด ๆ ข้อมูลแบบสุ่มเป็นตัวเลือกที่ดีที่สุดในการทดสอบนี้
การสร้างข้อมูลแบบสุ่ม
ในการทดสอบนี้คลาส Random ถูกสร้างอินสแตนซ์โดยอินสแตนซ์ที่ RandomizedTest จัดเตรียมไว้และมีวิธีการมากมายในการรับข้อมูลประเภทต่างๆ
วิธี | ส่งคืนค่า |
---|---|
getRandom () | อินสแตนซ์ของคลาสสุ่ม |
สุ่มบูลีน () | บูลีนแบบสุ่ม |
randomByte () | ไบต์สุ่ม |
สุ่มสั้น () | สุ่มสั้น |
randomInt () | จำนวนเต็มสุ่ม |
สุ่มลอง () | สุ่มยาว |
สุ่มลอย () | ลอยแบบสุ่ม |
สุ่มคู่ () | สุ่มสองครั้ง |
randomLocale () | สถานที่สุ่ม |
randomTimeZone () | โซนเวลาแบบสุ่ม |
สุ่มจาก () | องค์ประกอบสุ่มจากอาร์เรย์ |
การยืนยัน
คลาส ElasticsearchAssertions และ ElasticsearchGeoAssertions มีการยืนยันซึ่งใช้สำหรับการตรวจสอบทั่วไปในขณะที่ทำการทดสอบ ตัวอย่างเช่นสังเกตรหัสที่ระบุที่นี่ -
SearchResponse seearchResponse = client().prepareSearch();
assertHitCount(searchResponse, 6);
assertFirstHit(searchResponse, hasId("6"));
assertSearchHits(searchResponse, "1", "2", "3", "4",”5”,”6”);