我想使用elasticsearch做一個集成測試,同時試圖做測試,看看對象是否成功保存和刪除我注意到ES沒有立即索引文件,但不得不等待一點點(如1秒),有沒有辦法告訴我的保存方法來索引?elasticsearch IT保存等待
這裏是我的測試:
@Test
public void SurveySaveDelete(){
Object lock = new Object();
synchronized (lock) {
Survey survey = new Survey();
survey.setEvaluated("evaluated");
survey.setEvaluator("evaluator");
survey.setTimestamp("2017-1-30");
Survey returnedSaveSurvey = new Survey();
Survey foundSurvey = new Survey();
returnedSaveSurvey = elasticsearchSurveyRepository.saveSurvey(survey);
try {
lock.wait(1500);
} catch (InterruptedException e) {
e.printStackTrace();
}
foundSurvey = elasticsearchSurveyRepository.findSurvey("evaluator", "evaluated", "2017-1-30");
assertEquals("evaluated", foundSurvey.getEvaluated());
assertEquals("evaluator", foundSurvey.getEvaluator());
assertEquals("2017-1-30", foundSurvey.getTimestamp());
assertEquals("evaluated", returnedSaveSurvey.getEvaluated());
assertEquals("evaluator", returnedSaveSurvey.getEvaluator());
assertEquals("2017-1-30", returnedSaveSurvey.getTimestamp());
boolean wasDeleted;
wasDeleted = elasticsearchSurveyRepository.deleteSurvey("evaluator", "evaluated", "2017-1-30");
assertEquals(true, wasDeleted);
}
}
,你可以看到我用的鎖定對象,使我的測試等待了一點,但我不能確定是否有另一種方式來做到這一點 (我「M學習如何編寫耐心請與我XD)
,這裏是我的方法保存:
@Override
public Survey saveSurvey(Survey survey) {
Index index = new Index.Builder(survey).index(surveyIndexName).type(surveyTypeName).build();
try {
client.execute(index);
return survey;
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
喔不錯力刷新,這就是我一直在尋找,但我要如何做到這一點在Java中? –