@Before
 public void setUp() {
   es.truncateIndices();
   db.truncateTables();
   underTest = new TestIndexer(new DbClient(db.database(), db.myBatis()), es.client());
   underTest.setEnabled(true);
 }
  @Test
  public void index_tests_from_project() throws Exception {
    db.prepareDbUnit(getClass(), "db.xml");

    TestTesting.updateDataColumn(db.getSession(), "FILE_UUID", TestTesting.newRandomTests(3));

    underTest.index("PROJECT_UUID");
    assertThat(countDocuments()).isEqualTo(3);
  }
  @Test
  public void index_nothing_from_unknown_project() throws Exception {
    db.prepareDbUnit(getClass(), "db.xml");

    TestTesting.updateDataColumn(db.getSession(), "FILE_UUID", TestTesting.newRandomTests(3));

    underTest.index("UNKNOWN");
    assertThat(countDocuments()).isZero();
  }
  @Test
  public void delete_file_uuid() throws Exception {
    indexTest("P1", "F1", "T1", "U111");
    indexTest("P1", "F1", "T2", "U112");
    indexTest("P1", "F2", "T1", "U121");

    underTest.deleteByFile("F1");

    List<SearchHit> hits = getDocuments();
    Map<String, Object> document = hits.get(0).getSource();
    assertThat(hits).hasSize(1);
    assertThat(document.get(FIELD_NAME)).isEqualTo("NAME_1");
    assertThat(document.get(FIELD_FILE_UUID)).isEqualTo("F2");
  }
  @Test
  public void delete_by_project_uuid() throws Exception {
    indexTest("P1", "F1", "T1", "U111");
    indexTest("P1", "F1", "T2", "U112");
    indexTest("P1", "F2", "T1", "U121");
    indexTest("P2", "F3", "T1", "U231");

    underTest.deleteByProject("P1");

    List<SearchHit> hits = getDocuments();
    assertThat(hits).hasSize(1);
    Map<String, Object> document = hits.get(0).getSource();
    assertThat(hits).hasSize(1);
    assertThat(document.get(FIELD_PROJECT_UUID)).isEqualTo("P2");
  }
Exemple #6
0
  public void execute() {
    if (!settings.getBoolean("sonar.internal.es.disableIndexes")) {
      LOG.info("Index activities");
      activityIndexer.setEnabled(true).index();

      LOG.info("Index issues");
      issueAuthorizationIndexer.setEnabled(true).index();
      issueIndexer.setEnabled(true).index();

      LOG.info("Index tests");
      testIndexer.setEnabled(true).index();

      LOG.info("Index users");
      userIndexer.setEnabled(true).index();

      LOG.info("Index views");
      viewIndexer.setEnabled(true).index();
    }
  }
  /**
   * File F1 in project P1 has one test -> to be updated File F2 in project P1 has one test ->
   * untouched
   */
  @Test
  public void update_already_indexed_test() throws Exception {
    indexTest("P1", "F1", "T1", "U111");
    indexTest("P1", "F2", "T1", "U121");

    FileSourcesUpdaterHelper.Row dbRow =
        TestResultSetIterator.toRow(
            "P1",
            "F1",
            new Date(),
            Arrays.asList(
                DbFileSources.Test.newBuilder()
                    .setUuid("U111")
                    .setName("NAME_1")
                    .setStatus(DbFileSources.Test.TestStatus.FAILURE)
                    .setMsg("NEW_MESSAGE_1")
                    .setStacktrace("NEW_STACKTRACE_1")
                    .setExecutionTimeMs(123_456L)
                    .addCoveredFile(
                        DbFileSources.Test.CoveredFile.newBuilder()
                            .setFileUuid("MAIN_UUID_1")
                            .addCoveredLine(42))
                    .build()));
    underTest.index(Iterators.singletonIterator(dbRow));

    assertThat(countDocuments()).isEqualTo(2L);

    SearchResponse fileSearch =
        prepareSearch().setQuery(QueryBuilders.termQuery(FIELD_FILE_UUID, "F1")).get();
    assertThat(fileSearch.getHits().getTotalHits()).isEqualTo(1L);
    Map<String, Object> fields = fileSearch.getHits().getHits()[0].sourceAsMap();
    assertThat(fields)
        .contains(
            entry(FIELD_PROJECT_UUID, "P1"),
            entry(FIELD_FILE_UUID, "F1"),
            entry(FIELD_TEST_UUID, "U111"),
            entry(FIELD_NAME, "NAME_1"),
            entry(FIELD_STATUS, "FAILURE"),
            entry(FIELD_MESSAGE, "NEW_MESSAGE_1"),
            entry(FIELD_STACKTRACE, "NEW_STACKTRACE_1"),
            entry(FIELD_DURATION_IN_MS, 123_456));
  }
 @Override
 protected ComputationStep step() {
   TestIndexer testIndexer = new TestIndexer(dbClient, esTester.client());
   testIndexer.setEnabled(true);
   return new IndexTestsStep(testIndexer, treeRootHolder);
 }