Elasticsearch - Pengujian
Elasticsearch menyediakan file jar, yang dapat ditambahkan ke setiap IDE java dan dapat digunakan untuk menguji kode yang terkait dengan Elasticsearch. Berbagai pengujian dapat dilakukan dengan menggunakan kerangka kerja yang disediakan oleh Elasticsearch. Dalam bab ini, kita akan membahas tes ini secara rinci -
- Pengujian unit
- Tes integrasi
- Pengujian acak
Prasyarat
Untuk memulai pengujian, Anda perlu menambahkan dependensi pengujian Elasticsearch ke program Anda. Anda dapat menggunakan maven untuk tujuan ini dan dapat menambahkan yang berikut ini di pom.xml.
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>2.1.0</version>
</dependency>
EsSetup telah diinisialisasi untuk memulai dan menghentikan node Elasticsearch dan juga untuk membuat indeks.
EsSetup esSetup = new EsSetup();
esSetup.execute () fungsi dengan createIndex akan membuat indeks, Anda perlu menentukan pengaturan, jenis dan datanya.
Pengujian Unit
Uji unit dilakukan dengan menggunakan framework uji JUnit dan Elasticsearch. Node dan indeks dapat dibuat dengan menggunakan kelas Elasticsearch dan metode pengujian dapat digunakan untuk melakukan pengujian. Kelas ESTestCase dan ESTokenStreamTestCase digunakan untuk pengujian ini.
Tes integrasi
Pengujian integrasi menggunakan banyak node dalam satu cluster. Kelas ESIntegTestCase digunakan untuk pengujian ini. Ada berbagai metode yang mempermudah pekerjaan mempersiapkan kasus uji.
S.No | Metode & Deskripsi |
---|---|
1 | refresh() Semua indeks dalam cluster di-refresh |
2 | ensureGreen() Memastikan status cluster kesehatan hijau |
3 | ensureYellow() Memastikan status cluster kesehatan kuning |
4 | createIndex(name) Buat indeks dengan nama yang diteruskan ke metode ini |
5 | flush() Semua indeks dalam cluster di-flush |
6 | flushAndRefresh() flush () dan refresh () |
7 | indexExists(name) Memverifikasi keberadaan indeks tertentu |
8 | clusterService() Mengembalikan kelas java layanan cluster |
9 | cluster() Mengembalikan kelas cluster pengujian |
Metode Uji Cluster
S.No | Metode & Deskripsi |
---|---|
1 | ensureAtLeastNumNodes(n) Memastikan jumlah minimum node di cluster lebih dari atau sama dengan jumlah yang ditentukan. |
2 | ensureAtMostNumNodes(n) Memastikan jumlah maksimum node di cluster kurang dari atau sama dengan jumlah yang ditentukan. |
3 | stopRandomNode() Untuk menghentikan node acak dalam sebuah cluster |
4 | stopCurrentMasterNode() Untuk menghentikan node master |
5 | stopRandomNonMaster() Untuk menghentikan node acak di cluster, yang bukan node master. |
6 | buildNode() Buat node baru |
7 | startNode(settings) Mulai node baru |
8 | nodeSettings() Ganti metode ini untuk mengubah pengaturan node. |
Mengakses Klien
Klien digunakan untuk mengakses node yang berbeda dalam sebuah cluster dan melakukan beberapa tindakan. Metode ESIntegTestCase.client () digunakan untuk mendapatkan klien acak. Elasticsearch juga menawarkan metode lain untuk mengakses klien dan metode tersebut dapat diakses menggunakan metode ESIntegTestCase.internalCluster ().
S.No | Metode & Deskripsi |
---|---|
1 | iterator() Ini membantu Anda mengakses semua klien yang tersedia. |
2 | masterClient() Ini mengembalikan klien, yang berkomunikasi dengan node master. |
3 | nonMasterClient() Ini mengembalikan klien, yang tidak berkomunikasi dengan node master. |
4 | clientNodeClient() Ini mengembalikan klien saat ini di node klien. |
Pengujian Acak
Pengujian ini digunakan untuk menguji kode pengguna dengan setiap data yang memungkinkan, sehingga tidak akan ada kegagalan di masa mendatang dengan semua jenis data. Data acak adalah pilihan terbaik untuk melakukan pengujian ini.
Menghasilkan Data Acak
Dalam pengujian ini, kelas Random dibuat instance-nya oleh instance yang disediakan oleh RandomizedTest dan menawarkan banyak metode untuk mendapatkan berbagai jenis data.
metode | Nilai kembali |
---|---|
getRandom () | Contoh kelas acak |
randomBoolean () | Boolean acak |
randomByte () | Byte acak |
randomShort () | Pendek acak |
randomInt () | Bilangan bulat acak |
randomLong () | Panjang acak |
randomFloat () | Float acak |
randomDouble () | Ganda acak |
randomLocale () | Lokal acak |
randomTimeZone () | Zona waktu acak |
randomFrom () | Elemen acak dari array |
Pernyataan
Kelas ElasticsearchAssertions dan ElasticsearchGeoAssertions berisi pernyataan, yang digunakan untuk melakukan beberapa pemeriksaan umum pada saat pengujian. Misalnya, perhatikan kode yang diberikan di sini -
SearchResponse seearchResponse = client().prepareSearch();
assertHitCount(searchResponse, 6);
assertFirstHit(searchResponse, hasId("6"));
assertSearchHits(searchResponse, "1", "2", "3", "4",”5”,”6”);