package io.searchbox.core;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import org.junit.Test;
import java.util.Map;
public class BulkResultTest {
static String indexFailedResult = "{\n" +
" \"took\": 10,\n" +
" \"errors\": true,\n" +
" \"items\": [\n" +
" {\n" +
" \"index\": {\n" +
" \"_index\": \"index-name\",\n" +
" \"_type\": \"type-name\",\n" +
" \"_id\": null,\n" +
" \"status\": 400,\n" +
" \"error\": \"MapperParsingException[mapping [type-name]]; nested: MapperParsingException[No type specified for property [field-name]]; \"\n" +
" }\n" +
" }\n" +
" ]\n" +
"}";
static String indexSuccessResult = "{\n" +
" \"took\": 36,\n" +
" \"errors\": false,\n" +
" \"items\": [\n" +
" {\n" +
" \"index\": {\n" +
" \"_index\": \"foo\",\n" +
" \"_type\": \"FooBar\",\n" +
" \"_id\": \"12345\",\n" +
" \"status\": 201,\n" +
" \"_version\": 3,\n" +
" \"_shards\": {\n" +
" \"total\": 1,\n" +
" \"successful\": 1,\n" +
" \"failed\": 0\n" +
" }\n" +
" }\n" +
" }\n" +
" ]\n" +
"}";
static String indexFailedResultObject = "{\n" +
" \"took\": 10,\n" +
" \"errors\": true,\n" +
" \"items\": [\n" +
" {\n" +
" \"index\": {\n" +
" \"_index\": \"index-name\",\n" +
" \"_type\": \"type-name\",\n" +
" \"_id\": null,\n" +
" \"status\": 400,\n" +
" \"error\": {\n" +
" \"type\": \"type_missing_exception\",\n" +
" \"reason\": \"Reason is missing type\",\n" +
" \"index\": \"foo\"\n" +
" }\n" +
" }\n" +
" }\n" +
" ]\n" +
"}";
@SuppressWarnings("unchecked")
@Test
public void bulkResultWithFailures() {
BulkResult bulkResult = new BulkResult(new GsonBuilder().serializeNulls().create());
bulkResult.setJsonString(indexFailedResult);
bulkResult.setJsonMap(new Gson().fromJson(indexFailedResult, Map.class));
bulkResult.setSucceeded(false);
assertEquals(1, bulkResult.getItems().size());
assertEquals(1, bulkResult.getFailedItems().size());
assertNull(bulkResult.getItems().get(0).version);
assertEquals(
"\"MapperParsingException[mapping [type-name]]; nested: MapperParsingException[No type specified for property [field-name]]; \"",
bulkResult.getItems().get(0).error);
assertNull(bulkResult.getItems().get(0).errorType);
assertNull(bulkResult.getItems().get(0).errorReason);
}
@SuppressWarnings("unchecked")
@Test
public void bulkResultWithSuccess() {
BulkResult bulkResult = new BulkResult(new GsonBuilder().serializeNulls().create());
bulkResult.setJsonString(indexSuccessResult);
bulkResult.setJsonMap(new Gson().fromJson(indexSuccessResult, Map.class));
bulkResult.setSucceeded(true);
assertEquals(1, bulkResult.getItems().size());
assertEquals(0, bulkResult.getFailedItems().size());
assertEquals(201, bulkResult.getItems().get(0).status);
assertEquals(Integer.valueOf(3), bulkResult.getItems().get(0).version);
}
@SuppressWarnings("unchecked")
@Test
public void bulkResultWithFailuresObject() {
BulkResult bulkResult = new BulkResult(new GsonBuilder().serializeNulls().create());
bulkResult.setJsonString(indexFailedResultObject);
bulkResult.setJsonMap(new Gson().fromJson(indexFailedResultObject, Map.class));
bulkResult.setSucceeded(false);
assertEquals(1, bulkResult.getItems().size());
assertEquals(1, bulkResult.getFailedItems().size());
assertNull(bulkResult.getItems().get(0).version);
assertEquals("type_missing_exception", bulkResult.getItems().get(0).errorType);
assertEquals("Reason is missing type", bulkResult.getItems().get(0).errorReason);
}
}