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”);