@Test public void test_empty() { assertThat(underTest.getFailures()).isEqualTo(0); assertThat(underTest.getSuccess()).isEqualTo(0); assertThat(underTest.getTotal()).isEqualTo(0); assertThat(underTest.getSuccessRatio()).isEqualTo(1.0, DOUBLE_OFFSET); assertThat(underTest.isSuccess()).isTrue(); }
@Test public void index_is_updated_when_deleting_project() { addIssueToIndex("P1", "I1"); assertThatIndexHasSize(1); IndexingResult result = indexProject("P1", ProjectIndexer.Cause.PROJECT_DELETION); assertThat(result.getTotal()).isEqualTo(1L); assertThat(result.getSuccess()).isEqualTo(1L); assertThatIndexHasSize(0); }
@Test public void correctness_even_with_no_data() { assertThat(underTest.getFailures()).isEqualTo(0); assertThat(underTest.getSuccess()).isEqualTo(0); assertThat(underTest.getTotal()).isEqualTo(0); assertThat(underTest.getSuccessRatio()).isEqualTo(1.0); assertThat(underTest.isSuccess()).isTrue(); } }
@Test public void update_index_when_project_key_is_updated() { ComponentDto project = db.components().insertPrivateProject(); IndexingResult result = indexProject(project, PROJECT_KEY_UPDATE); assertThatIndexContainsOnly(project); assertThat(result.getTotal()).isEqualTo(1L); assertThat(result.getSuccess()).isEqualTo(1L); }
@Test public void test_failure() { underTest.incrementRequests(); underTest.incrementRequests(); assertThat(underTest.getFailures()).isEqualTo(2); assertThat(underTest.getSuccess()).isEqualTo(0); assertThat(underTest.getTotal()).isEqualTo(2); assertThat(underTest.getSuccessRatio()).isEqualTo(0.0, DOUBLE_OFFSET); assertThat(underTest.isSuccess()).isFalse(); }
@Test public void update_index_when_project_is_created() { ComponentDto project = db.components().insertPrivateProject(); IndexingResult result = indexProject(project, PROJECT_CREATION); assertThatIndexContainsOnly(project); assertThat(result.getTotal()).isEqualTo(1L); assertThat(result.getSuccess()).isEqualTo(1L); }
@Test public void test_success() { underTest.incrementRequests(); underTest.incrementRequests(); underTest.incrementSuccess(); underTest.incrementSuccess(); assertThat(underTest.getFailures()).isEqualTo(0); assertThat(underTest.getSuccess()).isEqualTo(2); assertThat(underTest.getTotal()).isEqualTo(2); assertThat(underTest.getSuccessRatio()).isEqualTo(1.0, DOUBLE_OFFSET); assertThat(underTest.isSuccess()).isTrue(); }
@Test public void large_indexing() { // index has one replica assertThat(replicas()).isEqualTo(1); BulkIndexer indexer = new BulkIndexer(es.client(), INDEX_TYPE_FAKE, Size.LARGE); indexer.start(); // replicas are temporarily disabled assertThat(replicas()).isEqualTo(0); for (int i = 0; i < 10; i++) { indexer.add(newIndexRequest(i)); } IndexingResult result = indexer.stop(); assertThat(result.isSuccess()).isTrue(); assertThat(result.getSuccess()).isEqualTo(10); assertThat(result.getFailures()).isEqualTo(0); assertThat(result.getTotal()).isEqualTo(10); assertThat(count()).isEqualTo(10); // replicas are re-enabled assertThat(replicas()).isEqualTo(1); }
@Test public void test_partial_failure() { underTest.incrementRequests(); underTest.incrementRequests(); underTest.incrementRequests(); underTest.incrementRequests(); underTest.incrementSuccess(); assertThat(underTest.getFailures()).isEqualTo(3); assertThat(underTest.getSuccess()).isEqualTo(1); assertThat(underTest.getTotal()).isEqualTo(4); assertThat(underTest.getSuccessRatio()).isEqualTo(0.25, DOUBLE_OFFSET); assertThat(underTest.isSuccess()).isFalse(); }
@Test public void listener_is_called_on_successful_requests() { FakeListener listener = new FakeListener(); BulkIndexer indexer = new BulkIndexer(es.client(), INDEX_TYPE_FAKE, Size.REGULAR, listener); indexer.start(); indexer.addDeletion(INDEX_TYPE_FAKE, "foo"); indexer.stop(); assertThat(listener.calledDocIds) .containsExactlyInAnyOrder(new DocId(INDEX_TYPE_FAKE, "foo")); assertThat(listener.calledResult.getSuccess()).isEqualTo(1); assertThat(listener.calledResult.getTotal()).isEqualTo(1); }
@Test public void update_index_on_project_creation() { ComponentDto project = db.components().insertPrivateProject(); ComponentDto file = db.components().insertComponent(newFileDto(project)); IndexingResult result = indexProject(project, PROJECT_CREATION); assertThatIndexContainsOnly(project, file); // two requests (one per component) assertThat(result.getTotal()).isEqualTo(2L); assertThat(result.getSuccess()).isEqualTo(2L); }
@Test public void listener_is_not_called_with_errors() { FakeListener listener = new FakeListener(); BulkIndexer indexer = new BulkIndexer(es.client(), INDEX_TYPE_FAKE, Size.REGULAR, listener); indexer.start(); indexer.add(newIndexRequestWithDocId("foo")); indexer.add(new IndexRequest("index_does_not_exist", "index_does_not_exist", "bar").source(emptyMap())); indexer.stop(); assertThat(listener.calledDocIds).containsExactly(new DocId(INDEX_TYPE_FAKE, "foo")); assertThat(listener.calledResult.getSuccess()).isEqualTo(1); assertThat(listener.calledResult.getTotal()).isEqualTo(2); }
@Test public void delete_doc_from_index_when_project_is_deleted() { ComponentDto project = db.components().insertPrivateProject(); indexProject(project, PROJECT_CREATION); assertThatIndexContainsOnly(project); db.getDbClient().componentDao().delete(db.getSession(), project.getId()); IndexingResult result = indexProject(project, PROJECT_DELETION); assertThat(es.countDocuments(INDEX_TYPE_PROJECT_MEASURES)).isEqualTo(0); assertThat(result.getTotal()).isEqualTo(1L); assertThat(result.getSuccess()).isEqualTo(1L); }
@Test public void listener_is_called_even_if_deleting_a_doc_that_does_not_exist() { FakeListener listener = new FakeListener(); BulkIndexer indexer = new BulkIndexer(es.client(), INDEX_TYPE_FAKE, Size.REGULAR, listener); indexer.start(); indexer.add(newIndexRequestWithDocId("foo")); indexer.add(newIndexRequestWithDocId("bar")); indexer.stop(); assertThat(listener.calledDocIds) .containsExactlyInAnyOrder(new DocId(INDEX_TYPE_FAKE, "foo"), new DocId(INDEX_TYPE_FAKE, "bar")); assertThat(listener.calledResult.getSuccess()).isEqualTo(2); assertThat(listener.calledResult.getTotal()).isEqualTo(2); }
@Test public void update_index_when_project_tags_are_updated() { ComponentDto project = db.components().insertPrivateProject(p -> p.setTagsString("foo")); indexProject(project, PROJECT_CREATION); assertThatProjectHasTag(project, "foo"); project.setTagsString("bar"); db.getDbClient().componentDao().updateTags(db.getSession(), project); IndexingResult result = indexProject(project, PROJECT_TAGS_UPDATE); assertThatProjectHasTag(project, "bar"); assertThat(result.getTotal()).isEqualTo(1L); assertThat(result.getSuccess()).isEqualTo(1L); }
@Test public void do_not_delete_orphans_when_updating_project() { ComponentDto project = db.components().insertPrivateProject(); ComponentDto file = db.components().insertComponent(newFileDto(project)); indexProject(project, PROJECT_CREATION); assertThatIndexContainsOnly(project, file); db.getDbClient().componentDao().delete(db.getSession(), file.getId()); IndexingResult result = indexProject(project, ProjectIndexer.Cause.PROJECT_KEY_UPDATE); assertThatIndexContainsOnly(project, file); // single request for project, no request for file assertThat(result.getTotal()).isEqualTo(1); assertThat(result.getSuccess()).isEqualTo(1); }