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