You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by jp...@apache.org on 2016/12/02 19:08:33 UTC
nifi git commit: NIFI-3140: Restored optional type handling in
FetchElasticsearchHttp
Repository: nifi
Updated Branches:
refs/heads/master 7c5bd876b -> 316cae16d
NIFI-3140: Restored optional type handling in FetchElasticsearchHttp
This closes #1288
Signed-off-by: jpercivall <JP...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/nifi/repo
Commit: http://git-wip-us.apache.org/repos/asf/nifi/commit/316cae16
Tree: http://git-wip-us.apache.org/repos/asf/nifi/tree/316cae16
Diff: http://git-wip-us.apache.org/repos/asf/nifi/diff/316cae16
Branch: refs/heads/master
Commit: 316cae16d310f6131852e158f8ab274249f0ecc3
Parents: 7c5bd87
Author: Matt Burgess <ma...@apache.org>
Authored: Thu Dec 1 19:32:49 2016 -0500
Committer: jpercivall <JP...@apache.org>
Committed: Fri Dec 2 14:10:52 2016 -0500
----------------------------------------------------------------------
.../elasticsearch/FetchElasticsearchHttp.java | 9 ++--
.../TestFetchElasticsearchHttp.java | 43 ++++++++++++++++++++
2 files changed, 46 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/nifi/blob/316cae16/nifi-nar-bundles/nifi-elasticsearch-bundle/nifi-elasticsearch-processors/src/main/java/org/apache/nifi/processors/elasticsearch/FetchElasticsearchHttp.java
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-elasticsearch-bundle/nifi-elasticsearch-processors/src/main/java/org/apache/nifi/processors/elasticsearch/FetchElasticsearchHttp.java b/nifi-nar-bundles/nifi-elasticsearch-bundle/nifi-elasticsearch-processors/src/main/java/org/apache/nifi/processors/elasticsearch/FetchElasticsearchHttp.java
index 8fd30dc..06be4d5 100644
--- a/nifi-nar-bundles/nifi-elasticsearch-bundle/nifi-elasticsearch-processors/src/main/java/org/apache/nifi/processors/elasticsearch/FetchElasticsearchHttp.java
+++ b/nifi-nar-bundles/nifi-elasticsearch-bundle/nifi-elasticsearch-processors/src/main/java/org/apache/nifi/processors/elasticsearch/FetchElasticsearchHttp.java
@@ -104,8 +104,7 @@ public class FetchElasticsearchHttp extends AbstractElasticsearchHttpProcessor {
public static final PropertyDescriptor INDEX = new PropertyDescriptor.Builder()
.name("fetch-es-index")
.displayName("Index")
- .description("The name of the index to read from. If the property is set "
- + "to _all, the query will match across all indexes.")
+ .description("The name of the index to read from.")
.required(true)
.expressionLanguageSupported(true)
.addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
@@ -310,10 +309,8 @@ public class FetchElasticsearchHttp extends AbstractElasticsearchHttpProcessor {
throw new MalformedURLException("Base URL cannot be null");
}
HttpUrl.Builder builder = HttpUrl.parse(baseUrl).newBuilder();
- builder.addPathSegment((StringUtils.isEmpty(index)) ? "_all" : index);
- if (!StringUtils.isEmpty(type)) {
- builder.addPathSegment(type);
- }
+ builder.addPathSegment(index);
+ builder.addPathSegment((StringUtils.isEmpty(type)) ? "_all" : type);
builder.addPathSegment(docId);
if (!StringUtils.isEmpty(fields)) {
String trimmedFields = Stream.of(fields.split(",")).map(String::trim).collect(Collectors.joining(","));
http://git-wip-us.apache.org/repos/asf/nifi/blob/316cae16/nifi-nar-bundles/nifi-elasticsearch-bundle/nifi-elasticsearch-processors/src/test/java/org/apache/nifi/processors/elasticsearch/TestFetchElasticsearchHttp.java
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-elasticsearch-bundle/nifi-elasticsearch-processors/src/test/java/org/apache/nifi/processors/elasticsearch/TestFetchElasticsearchHttp.java b/nifi-nar-bundles/nifi-elasticsearch-bundle/nifi-elasticsearch-processors/src/test/java/org/apache/nifi/processors/elasticsearch/TestFetchElasticsearchHttp.java
index 28bc060..346ead4 100644
--- a/nifi-nar-bundles/nifi-elasticsearch-bundle/nifi-elasticsearch-processors/src/test/java/org/apache/nifi/processors/elasticsearch/TestFetchElasticsearchHttp.java
+++ b/nifi-nar-bundles/nifi-elasticsearch-bundle/nifi-elasticsearch-processors/src/test/java/org/apache/nifi/processors/elasticsearch/TestFetchElasticsearchHttp.java
@@ -21,6 +21,7 @@ import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Protocol;
import okhttp3.Request;
+import okhttp3.RequestBody;
import okhttp3.Response;
import okhttp3.ResponseBody;
import org.apache.nifi.processor.ProcessContext;
@@ -38,8 +39,10 @@ import org.mockito.stubbing.Answer;
import java.io.IOException;
import java.io.InputStream;
+import java.net.URL;
import java.util.HashMap;
+import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.mock;
@@ -115,6 +118,34 @@ public class TestFetchElasticsearchHttp {
}
@Test
+ public void testFetchElasticsearchOnTriggerNoType() throws IOException {
+ final String ES_URL = "http://127.0.0.1:9200";
+ final String DOC_ID = "28039652140";
+ FetchElasticsearchHttpTestProcessor processor = new FetchElasticsearchHttpTestProcessor(true);
+ runner = TestRunners.newTestRunner(processor); // all docs are found
+ runner.setValidateExpressionUsage(true);
+ runner.setProperty(AbstractElasticsearchHttpProcessor.ES_URL, ES_URL);
+
+ runner.setProperty(FetchElasticsearchHttp.INDEX, "doc");
+ runner.assertNotValid();
+ runner.setProperty(FetchElasticsearchHttp.DOC_ID, "${doc_id}");
+ runner.assertValid();
+
+ runner.enqueue(docExample, new HashMap<String, String>() {{
+ put("doc_id", DOC_ID);
+ }});
+ runner.run(1, true, true);
+
+ runner.assertAllFlowFilesTransferred(FetchElasticsearchHttp.REL_SUCCESS, 1);
+ final MockFlowFile out = runner.getFlowFilesForRelationship(FetchElasticsearchHttp.REL_SUCCESS).get(0);
+ assertNotNull(out);
+ out.assertAttributeEquals("doc_id", DOC_ID);
+ assertEquals("URL doesn't match expected value when type is not supplied",
+ "http://127.0.0.1:9200" + "/doc/_all/" + DOC_ID,
+ processor.getURL().toString());
+ }
+
+ @Test
public void testFetchElasticsearchOnTriggerWithFields() throws IOException {
runner = TestRunners.newTestRunner(new FetchElasticsearchHttpTestProcessor(true)); // all docs are found
runner.setValidateExpressionUsage(true);
@@ -272,6 +303,8 @@ public class TestFetchElasticsearchHttp {
int statusCode = 200;
String statusMessage = "OK";
+ URL url = null;
+
FetchElasticsearchHttpTestProcessor(boolean documentExists) {
this.documentExists = documentExists;
}
@@ -315,6 +348,16 @@ public class TestFetchElasticsearchHttp {
});
}
+ @Override
+ protected Response sendRequestToElasticsearch(OkHttpClient client, URL url, String username, String password, String verb, RequestBody body) throws IOException {
+ this.url = url;
+ return super.sendRequestToElasticsearch(client, url, username, password, verb, body);
+ }
+
+ public URL getURL() {
+ return url;
+ }
+
protected OkHttpClient getClient() {
return client;
}