Elasticsearch - Thử nghiệm

Elasticsearch cung cấp một tệp jar, có thể được thêm vào bất kỳ IDE java nào và có thể được sử dụng để kiểm tra mã có liên quan đến Elasticsearch. Một loạt các thử nghiệm có thể được thực hiện bằng cách sử dụng khung do Elasticsearch cung cấp. Trong chương này, chúng ta sẽ thảo luận chi tiết về các bài kiểm tra này -

  • Kiểm tra đơn vị
  • Thử nghiệm hội nhập
  • Thử nghiệm ngẫu nhiên

Điều kiện tiên quyết

Để bắt đầu thử nghiệm, bạn cần thêm phụ thuộc thử nghiệm Elasticsearch vào chương trình của mình. Bạn có thể sử dụng maven cho mục đích này và có thể thêm phần sau trong pom.xml.

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

EsSetup đã được khởi tạo để bắt đầu và dừng nút Elasticsearch và cũng để tạo các chỉ mục.

EsSetup esSetup = new EsSetup();

Hàm esSetup.execute () với createIndex sẽ tạo các chỉ số, bạn cần chỉ định cài đặt, loại và dữ liệu.

Kiểm tra đơn vị

Bài kiểm tra đơn vị được thực hiện bằng cách sử dụng khung kiểm tra JUnit và Elasticsearch. Nút và chỉ mục có thể được tạo bằng cách sử dụng các lớp Elasticsearch và trong phương pháp thử nghiệm có thể được sử dụng để thực hiện thử nghiệm. Các lớp ESTestCase và ESTokenStreamTestCase được sử dụng cho thử nghiệm này.

Thử nghiệm hội nhập

Kiểm tra tích hợp sử dụng nhiều nút trong một cụm. Lớp ESIntegTestCase được sử dụng cho thử nghiệm này. Có nhiều phương pháp khác nhau giúp công việc chuẩn bị test case dễ dàng hơn.

S. không Phương pháp & Mô tả
1

refresh()

Tất cả các chỉ số trong một cụm được làm mới

2

ensureGreen()

Đảm bảo trạng thái cụm sức khỏe xanh

3

ensureYellow()

Đảm bảo trạng thái cụm sức khỏe màu vàng

4

createIndex(name)

Tạo chỉ mục với tên được truyền cho phương thức này

5

flush()

Tất cả các chỉ số trong cụm được xóa

6

flushAndRefresh()

flush () và refresh ()

7

indexExists(name)

Xác minh sự tồn tại của chỉ mục được chỉ định

số 8

clusterService()

Trả về lớp java dịch vụ cụm

9

cluster()

Trả về lớp cụm kiểm tra

Phương pháp cụm kiểm tra

S. không Phương pháp & Mô tả
1

ensureAtLeastNumNodes(n)

Đảm bảo số lượng nút tối thiểu trong một cụm nhiều hơn hoặc bằng số lượng đã chỉ định.

2

ensureAtMostNumNodes(n)

Đảm bảo số lượng nút tối đa trong một cụm nhỏ hơn hoặc bằng số lượng đã chỉ định.

3

stopRandomNode()

Để dừng một nút ngẫu nhiên trong một cụm

4

stopCurrentMasterNode()

Để dừng nút chính

5

stopRandomNonMaster()

Để dừng một nút ngẫu nhiên trong một cụm không phải là nút chính.

6

buildNode()

Tạo một nút mới

7

startNode(settings)

Bắt đầu một nút mới

số 8

nodeSettings()

Ghi đè phương pháp này để thay đổi cài đặt nút.

Tiếp cận khách hàng

Máy khách được sử dụng để truy cập các nút khác nhau trong một cụm và thực hiện một số hành động. Phương thức ESIntegTestCase.client () được sử dụng để lấy một máy khách ngẫu nhiên. Elasticsearch cũng cung cấp các phương thức khác để truy cập máy khách và những phương thức đó có thể được truy cập bằng phương thức ESIntegTestCase.internalCluster ().

S. không Phương pháp & Mô tả
1

iterator()

Điều này giúp bạn tiếp cận tất cả các khách hàng hiện có.

2

masterClient()

Điều này trả về một máy khách đang giao tiếp với nút chính.

3

nonMasterClient()

Điều này trả về một ứng dụng khách không giao tiếp với nút chính.

4

clientNodeClient()

Điều này trả về một máy khách hiện đang ở trên nút máy khách.

Thử nghiệm ngẫu nhiên

Thử nghiệm này được sử dụng để kiểm tra mã của người dùng với mọi dữ liệu có thể, để không xảy ra lỗi trong tương lai với bất kỳ loại dữ liệu nào. Dữ liệu ngẫu nhiên là lựa chọn tốt nhất để thực hiện thử nghiệm này.

Tạo dữ liệu ngẫu nhiên

Trong thử nghiệm này, lớp Random được khởi tạo bởi phiên bản do RandomizedTest cung cấp và cung cấp nhiều phương pháp để lấy các loại dữ liệu khác nhau.

phương pháp Giá trị trả lại
getRandom () Phiên bản của lớp ngẫu nhiên
randomBoolean () Boolean ngẫu nhiên
randomByte () Byte ngẫu nhiên
randomShort () Ngắn ngẫu nhiên
randomInt () Số nguyên ngẫu nhiên
randomLong () Ngẫu nhiên dài
randomFloat () Phao ngẫu nhiên
randomDouble () Đôi ngẫu nhiên
randomLocale () Ngôn ngữ ngẫu nhiên
randomTimeZone () Múi giờ ngẫu nhiên
randomFrom () Phần tử ngẫu nhiên từ mảng

Khẳng định

Các lớp ElasticsearchAssertions và ElasticsearchGeoAssertions chứa các xác nhận, được sử dụng để thực hiện một số kiểm tra phổ biến tại thời điểm kiểm tra. Ví dụ, hãy quan sát đoạn mã được đưa ra ở đây -

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