[
https://issues.apache.org/jira/browse/NIFI-3266?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15787793#comment-15787793
]
ASF GitHub Bot commented on NIFI-3266:
--------------------------------------
Github user pvillard31 commented on a diff in the pull request:
https://github.com/apache/nifi/pull/1373#discussion_r94231446
--- Diff:
nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestListenHTTP.java
---
@@ -0,0 +1,175 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.nifi.processors.standard;
+
+import org.apache.nifi.processor.ProcessContext;
+import org.apache.nifi.processor.ProcessSessionFactory;
+import org.apache.nifi.reporting.InitializationException;
+import org.apache.nifi.ssl.SSLContextService;
+import org.apache.nifi.ssl.StandardSSLContextService;
+import org.apache.nifi.util.MockFlowFile;
+import org.apache.nifi.util.TestRunner;
+import org.apache.nifi.util.TestRunners;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.net.HttpURLConnection;
+import java.net.ServerSocket;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+
+import static
org.apache.nifi.processors.standard.ListenHTTP.RELATIONSHIP_SUCCESS;
+import static org.junit.Assert.fail;
+
+public class TestListenHTTP {
+
+ private static final String HTTP_POST_METHOD = "POST";
+ private static final String HTTP_BASE_PATH = "basePath";
+
+ private final static String PORT_VARIABLE = "HTTP_PORT";
+ private final static String HTTP_SERVER_PORT_EL = "${" + PORT_VARIABLE
+ "}";
+
+ private final static String BASEPATH_VARIABLE = "HTTP_BASEPATH";
+ private final static String HTTP_SERVER_BASEPATH_EL = "${" +
BASEPATH_VARIABLE + "}";
+
+ private ListenHTTP proc;
+ private TestRunner runner;
+
+ private int availablePort;
+
+ @Before
+ public void setup() throws IOException {
+ proc = new ListenHTTP();
+ runner = TestRunners.newTestRunner(proc);
+ availablePort = findAvailablePort();
+ runner.setVariable(PORT_VARIABLE, Integer.toString(availablePort));
+ runner.setVariable(BASEPATH_VARIABLE,HTTP_BASE_PATH);
+
+ }
+
+ @Test
+ public void testPOSTRequestsReceivedWithoutEL() throws Exception {
+
+ runner.setProperty(ListenHTTP.PORT,
Integer.toString(availablePort));
+ runner.setProperty(ListenHTTP.BASE_PATH, HTTP_BASE_PATH);
+
+ testPOSTRequestsReceived();
+ }
+
+ @Test
+ public void testPOSTRequestsReceivedWithEL() throws Exception {
+
+ runner.setProperty(ListenHTTP.PORT, HTTP_SERVER_PORT_EL);
+ runner.setProperty(ListenHTTP.BASE_PATH, HTTP_SERVER_BASEPATH_EL);
+
+ testPOSTRequestsReceived();
+ }
+
+ private int executePOST(String message) throws Exception {
+
+ URL url= new URL("http://localhost:" + availablePort + "/" +
HTTP_BASE_PATH);
+ HttpURLConnection con = (HttpURLConnection) url.openConnection();
+
+ con.setRequestMethod(HTTP_POST_METHOD);
+ con.setDoOutput(true);
+ DataOutputStream wr = new DataOutputStream(con.getOutputStream());
+ if (message!=null) {
+ wr.writeBytes(message);
+ }
+ wr.flush();
+ wr.close();
+
+ return con.getResponseCode();
+
+ }
+ private void testPOSTRequestsReceived() throws Exception {
+ final List<String> messages = new ArrayList<>();
+ messages.add("payload 1");
+ messages.add("");
+ messages.add(null);
+ messages.add("payload 2");
+
+ startWebServerAndSendMessages(messages);
+
+ List<MockFlowFile> mockFlowFiles =
runner.getFlowFilesForRelationship(RELATIONSHIP_SUCCESS);
+
+ runner.assertTransferCount(RELATIONSHIP_SUCCESS,4);
+ mockFlowFiles.get(0).assertContentEquals("payload 1");
+ mockFlowFiles.get(1).assertContentEquals("");
+ mockFlowFiles.get(2).assertContentEquals("");
+ mockFlowFiles.get(3).assertContentEquals("payload 2");
+ }
+
+ private void startWebServerAndSendMessages(final List<String> messages)
+ throws Exception {
+
+ final ProcessSessionFactory processSessionFactory =
runner.getProcessSessionFactory();
+ final ProcessContext context = runner.getProcessContext();
+ proc.createHttpServer(context);
+
+ Runnable sendMessagestoWebServer = () -> {
+ try {
+ for (final String message : messages) {
+ if (executePOST(message)!=200) fail("HTTP POST
failed.");
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ fail("Not expecting error here.");
+ }
+ };
+ new Thread(sendMessagestoWebServer).start();
+
+ long responseTimeout = 10000;
+
+ int numTransferred = 0;
+ long startTime = System.currentTimeMillis();
+ while (numTransferred < messages.size() &&
(System.currentTimeMillis() - startTime < responseTimeout)) {
+ proc.onTrigger(context, processSessionFactory);
+ numTransferred =
runner.getFlowFilesForRelationship(RELATIONSHIP_SUCCESS).size();
+ Thread.sleep(100);
+ }
+
+ runner.assertTransferCount(ListenTCP.REL_SUCCESS,
messages.size());
--- End diff --
ListenTCP?
> ListenHTTP Processor should support EL for basePath and port
> ------------------------------------------------------------
>
> Key: NIFI-3266
> URL: https://issues.apache.org/jira/browse/NIFI-3266
> Project: Apache NiFi
> Issue Type: Improvement
> Components: Configuration Management
> Affects Versions: 1.0.0, 1.1.0, 1.1.1
> Reporter: Davy De Waele
>
> ListenHTTP should support expression language (without a flow file) for
> basePath and port in order to make use of the variable registry and reference
> different paths and ports per environment.
> Relevant code :
> https://github.com/apache/nifi/blob/master/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ListenHTTP.java#L80#L93
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)