English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

اختبار Elasticsearch

يقدم Elasticsearch ملف jar يمكن إضافته إلى أي IDE Java واستخدامه لاختبار الشيفرة المتعلقة ب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 لإنشاء عقد و索 걸، ويمكن استخدام الطريقة test لتنفيذ الاختبار. يتم استخدام ESTestCase و ESTokenStreamTestCase للاختبار.

اختبار التكامل

اختبار التكامل باستخدام عدة عقد في المجموعة. يتم استخدام ESIntegTestCase للاختبار. هناك عدة طرق لتبسيط عمل إعداد حالات الاختبار.

الترتيبالطريقة والشرح
1

refresh()

تحديث جميع索 걸 المجموعة

2

ensureGreen()

تأكد من حالة المجموعة الخضراء

3

ensureYellow()

تأكد من حالة المجموعة الصفراء

4

createIndex(name)

استخدام الاسم المقدم إلى هذا الطريقة لإنشاء索 걸

5

flush()

تحديث جميع索 걸 المجموعة
إيقاف العقدة التي ليست العقدة الرئيسية في الشبكة

flushAndRefresh()

flush() و refresh()

إنشاء عقدة جديدة

indexExists(name)

تحقق من وجود索引 المحدد

8

clusterService()

return ClusterService java class

9

cluster()

return ClusterClass

طريقة اختبار المجموعة

الترتيبالطريقة والشرح
1

ensureAtLeastNumNodes(n)

تأكد من أن عدد العقد الأدنى في المجموعة أكبر أو يساوي العدد المحدد

2

ensureAtMostNumNodes(n)

تأكد من أن عدد العقد الأكبر في المجموعة أقل أو يساوي العدد المحدد

3

stopRandomNode()

توقف العقد العشوائي في المجموعة

4

stopCurrentMasterNode()

توقف العقد الرئيسي

5

stopRandomNonMaster()

停止群集中不是主节点的随机节点

إيقاف العقدة التي ليست العقدة الرئيسية في الشبكة

6

buildNode()

إنشاء عقدة جديدة

startNode(settings)

إطلاق عقدة جديدة

8

nodeSettings()

اعمل على تعديل إعدادات العقدة

الوصول إلى العميل

يُستخدم العميل لاستكشاف العقد المختلفة في الشبكة وتنفيذ بعض العمليات. يتم استخدام طريقة ESIntegTestCase.client() للحصول على عميل عشوائي. توفر Elasticsearch أيضًا طرقًا أخرى للوصول إلى العميل، والتي يمكن استخدامها من خلال طريقة ESIntegTestCase.internalCluster().

الترتيبالطريقة والشرح
1

iterator()

يساعد هذا في الوصول إلى جميع العملاء المتاحين

2

masterClient()

سيقوم هذا بالعودة إلى عميل يتواصل مع العقدة الرئيسية

3

nonMasterClient()

سيقوم هذا بالعودة إلى عميل لا يتواصل مع العقدة الرئيسية

4

clientNodeClient()

سيقوم هذا بالعودة إلى العميل الحالي على العقدة العملاء

اختبار عشوائي

يُستخدم هذا الاختبار لاختبار الكود الخاص بالموارد مع جميع البيانات المحتملة، لضمان عدم فشل أي نوع من البيانات في المستقبل. البيانات العشوائية هي الخيار الأمثل للتنفيذ هذا الاختبار.

إنشاء بيانات عشوائية

في هذا الاختبار، يتم إنشاء فئة Random بواسطة مثال من RandomizedTest، وتقدم العديد من الطرق لاستخراج أنواع بيانات مختلفة.

الطريقةقيمة العودة
getRandom()مثال على فئة عشوائية
randomBoolean()boolean عشوائي
randomByte()عدد عشوائي من النوع byte
randomShort()عدد عشوائي من النوع short
randomInt()عدد عشوائي من النوع integer
randomLong()عدد عشوائي من النوع long
randomFloat()عدد عشوائي من النوع float
randomDouble()عدد عشوائي
randomLocale()منطقة لغوية عشوائية
randomTimeZone()منطقة زمنية عشوائية
randomFrom()عنصر عشوائي من المجموعة

استدلال

كلاسات ElasticsearchAssertions و ElasticsearchGeoAssertions تحتوي على استدلالات، تُستخدم هذه الاستدلالات لتنفيذ بعض الفحوصات العادية أثناء الاختبار. على سبيل المثال، شاهد الكود المقدم هنا-

SearchResponse seearchResponse = client().prepareSearch();
assertHitCount(searchResponse, 6);
assertFirstHit(searchResponse, hasId("6"));
assertSearchHits(searchResponse, "1", "2", "3", "4", "5", "6");