package com.github.obourgain.elasticsearch.http.handler.document.bulk;
import static org.assertj.core.api.Assertions.assertThat;
import org.elasticsearch.common.xcontent.XContentHelper;
import org.elasticsearch.common.xcontent.XContentParser;
import org.junit.Test;
import com.github.obourgain.elasticsearch.http.TestFilesUtils;
public class BulkItemTest {
/*
samples taken from ES documentation
curl -s -XPOST localhost:9200/_bulk --data-binary @requests; echo
with requests :
{ "index" : { "_index" : "test", "_type" : "type1", "_id" : "1" } }
{ "field1" : "value1" }
{ "delete" : { "_index" : "test", "_type" : "type1", "_id" : "2" } }
{ "create" : { "_index" : "test", "_type" : "type1", "_id" : "3" } }
{ "field1" : "value3" }
{ "update" : {"_id" : "1", "_type" : "type1", "_index" : "index1"} }
{ "doc" : {"field2" : "value2"} }
*/
@Test
public void should_parse_index() throws Exception {
String json = TestFilesUtils.readFromClasspath("com/github/obourgain/elasticsearch/http/handler/document/bulk/bulk_item_index.json");
XContentParser parser = XContentHelper.createParser(json.getBytes(), 0, json.length());
parser.nextToken();
BulkItem bulkItem = new BulkItem().parse(parser);
assertIndex(bulkItem);
}
@Test
public void should_parse_create() throws Exception {
String json = TestFilesUtils.readFromClasspath("com/github/obourgain/elasticsearch/http/handler/document/bulk/bulk_item_create.json");
XContentParser parser = XContentHelper.createParser(json.getBytes(), 0, json.length());
parser.nextToken();
BulkItem bulkItem = new BulkItem().parse(parser);
assertCreate(bulkItem);
}
@Test
public void should_parse_update() throws Exception {
String json = TestFilesUtils.readFromClasspath("com/github/obourgain/elasticsearch/http/handler/document/bulk/bulk_item_update.json");
XContentParser parser = XContentHelper.createParser(json.getBytes(), 0, json.length());
parser.nextToken();
BulkItem bulkItem = new BulkItem().parse(parser);
assertUpdate(bulkItem);
}
@Test
public void should_parse_delete() throws Exception {
String json = TestFilesUtils.readFromClasspath("com/github/obourgain/elasticsearch/http/handler/document/bulk/bulk_item_delete.json");
XContentParser parser = XContentHelper.createParser(json.getBytes(), 0, json.length());
parser.nextToken();
BulkItem bulkItem = new BulkItem().parse(parser);
assertDelete(bulkItem);
}
protected static void assertUpdate(BulkItem bulkItem) {
assertThat(bulkItem.getOpType()).isEqualTo("update");
assertThat(bulkItem.getIndex()).isEqualTo("index1");
assertThat(bulkItem.getType()).isEqualTo("type1");
assertThat(bulkItem.getId()).isEqualTo("1");
assertThat(bulkItem.getStatus()).isEqualTo(404);
assertThat(bulkItem.getError()).isEqualTo("DocumentMissingException[[index1][-1] [type1][1]: document missing]");
assertThat(bulkItem.getFound()).isNull();
}
protected static void assertDelete(BulkItem bulkItem) {
assertThat(bulkItem.getOpType()).isEqualTo("delete");
assertThat(bulkItem.getIndex()).isEqualTo("test");
assertThat(bulkItem.getType()).isEqualTo("type1");
assertThat(bulkItem.getId()).isEqualTo("2");
assertThat(bulkItem.getVersion()).isEqualTo(3);
assertThat(bulkItem.getStatus()).isEqualTo(404);
assertThat(bulkItem.getError()).isNull();
assertThat(bulkItem.getFound()).isFalse();
}
protected static void assertCreate(BulkItem bulkItem) {
assertThat(bulkItem.getOpType()).isEqualTo("create");
assertThat(bulkItem.getIndex()).isEqualTo("test");
assertThat(bulkItem.getType()).isEqualTo("type1");
assertThat(bulkItem.getId()).isEqualTo("3");
assertThat(bulkItem.getStatus()).isEqualTo(409);
assertThat(bulkItem.getError()).isEqualTo("DocumentAlreadyExistsException[[test][4] [type1][3]: document already exists]");
assertThat(bulkItem.getFound()).isNull();
}
protected static void assertIndex(BulkItem bulkItem) {
assertThat(bulkItem.getOpType()).isEqualTo("index");
assertThat(bulkItem.getIndex()).isEqualTo("test");
assertThat(bulkItem.getType()).isEqualTo("type1");
assertThat(bulkItem.getId()).isEqualTo("1");
assertThat(bulkItem.getVersion()).isEqualTo(3);
assertThat(bulkItem.getStatus()).isEqualTo(200);
assertThat(bulkItem.getError()).isNull();
assertThat(bulkItem.getFound()).isNull();
}
}