Elasticsearch - Test

Elasticsearch, herhangi bir java IDE'ye eklenebilen ve Elasticsearch ile ilgili kodu test etmek için kullanılabilen bir jar dosyası sağlar. Elasticsearch tarafından sağlanan çerçeve kullanılarak bir dizi test gerçekleştirilebilir. Bu bölümde, bu testleri ayrıntılı olarak tartışacağız -

  • Birim testi
  • Entegrasyon testi
  • Rastgele test

Önkoşullar

Teste başlamak için, Elasticsearch test bağımlılığını programınıza eklemeniz gerekir. Bu amaçla maven'i kullanabilir ve aşağıdakileri pom.xml'ye ekleyebilirsiniz.

<dependency>
   <groupId>org.elasticsearch</groupId>
   <artifactId>elasticsearch</artifactId>
   <version>2.1.0</version>
</dependency>

EsSetup, Elasticsearch düğümünü başlatmak ve durdurmak ve ayrıca indeksler oluşturmak için başlatıldı.

EsSetup esSetup = new EsSetup();

createIndex ile esSetup.execute () işlevi endeksleri oluşturacaktır, ayarları, türü ve verileri belirtmeniz gerekir.

Birim Testi

Birim testi, JUnit ve Elasticsearch test çerçevesi kullanılarak gerçekleştirilir. Düğüm ve indeksler Elasticsearch sınıfları kullanılarak oluşturulabilir ve test yönteminde testi gerçekleştirmek için kullanılabilir. Bu test için ESTestCase ve ESTokenStreamTestCase sınıfları kullanılır.

Entegrasyon Testi

Entegrasyon testi, bir kümede birden çok düğüm kullanır. Bu test için ESIntegTestCase sınıfı kullanılır. Bir test senaryosu hazırlama işini kolaylaştıran çeşitli yöntemler vardır.

S.No Yöntem ve Açıklama
1

refresh()

Bir kümedeki tüm endeksler yenilenir

2

ensureGreen()

Yeşil bir sağlık kümesi durumu sağlar

3

ensureYellow()

Sarı bir sağlık kümesi durumu sağlar

4

createIndex(name)

Bu yönteme aktarılan adla dizin oluşturun

5

flush()

Kümedeki tüm endeksler temizlendi

6

flushAndRefresh()

flush () ve refresh ()

7

indexExists(name)

Belirtilen dizinin varlığını doğrular

8

clusterService()

Küme hizmeti java sınıfını döndürür

9

cluster()

Test kümesi sınıfını döndürür

Test Küme Yöntemleri

S.No Yöntem ve Açıklama
1

ensureAtLeastNumNodes(n)

Bir kümedeki minimum düğüm sayısının belirtilen sayıdan fazla veya ona eşit olmasını sağlar.

2

ensureAtMostNumNodes(n)

Bir kümedeki maksimum düğüm sayısının belirtilen sayıdan küçük veya ona eşit olmasını sağlar.

3

stopRandomNode()

Bir kümedeki rastgele bir düğümü durdurmak için

4

stopCurrentMasterNode()

Ana düğümü durdurmak için

5

stopRandomNonMaster()

Ana düğüm olmayan bir kümedeki rastgele bir düğümü durdurmak için.

6

buildNode()

Yeni bir düğüm oluşturun

7

startNode(settings)

Yeni bir düğüm başlatın

8

nodeSettings()

Düğüm ayarlarını değiştirmek için bu yöntemi geçersiz kılın.

Müşterilere Erişim

İstemci, bir kümedeki farklı düğümlere erişmek ve bazı eylemleri gerçekleştirmek için kullanılır. Rastgele bir istemci almak için ESIntegTestCase.client () yöntemi kullanılır. Elasticsearch, istemciye erişmek için başka yöntemler de sunar ve bu yöntemlere ESIntegTestCase.internalCluster () yöntemi kullanılarak erişilebilir.

S.No Yöntem ve Açıklama
1

iterator()

Bu, mevcut tüm istemcilere erişmenize yardımcı olur.

2

masterClient()

Bu, ana düğüm ile iletişim kuran bir istemci döndürür.

3

nonMasterClient()

Bu, ana düğüm ile iletişim kurmayan bir istemci döndürür.

4

clientNodeClient()

Bu, şu anda istemci düğümünde olan bir istemciyi döndürür.

Rastgele Test

Bu test, kullanıcının kodunu olası her veriyle test etmek için kullanılır, böylece gelecekte herhangi bir veri türünde herhangi bir arıza olmayacaktır. Bu testi gerçekleştirmek için en iyi seçenek rastgele verilerdir.

Rastgele Veri Oluşturma

Bu testte, Random sınıfı, RandomizedTest tarafından sağlanan örnek tarafından başlatılır ve farklı veri türlerini almak için birçok yöntem sunar.

Yöntem Geri dönüş değeri
getRandom () Rastgele sınıf örneği
randomBoolean () Rastgele boole
randomByte () Rastgele bayt
randomShort () Rastgele kısa
randomInt () Rastgele tam sayı
randomLong () Rastgele uzun
randomFloat () Rastgele kayan
randomDouble () Rastgele çift
randomLocale () Rastgele yerel ayar
randomTimeZone () Rastgele saat dilimi
randomFrom () Diziden rastgele öğe

İddialar

ElasticsearchAssertions ve ElasticsearchGeoAssertions sınıfları, test sırasında bazı genel kontrolleri gerçekleştirmek için kullanılan iddiaları içerir. Örneğin, burada verilen kodu inceleyin -

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