summaryrefslogtreecommitdiffstats
path: root/vespa-http-client
diff options
context:
space:
mode:
authorKristian Aune <kristian@ymail.com>2019-05-10 15:05:59 +0200
committerKristian Aune <kristian@ymail.com>2019-05-10 15:05:59 +0200
commit2493c712767aaef001cd352e36daeaf3efa2b20f (patch)
tree9fd2ec9f781aa053330a2b255cc9d76afb3e9ec6 /vespa-http-client
parentac6d02a037eef115b545e98187f00486e01bd189 (diff)
Add endpoint parameter
- and allow building an endpoint from URL
Diffstat (limited to 'vespa-http-client')
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/config/Endpoint.java5
-rw-r--r--vespa-http-client/src/main/java/com/yahoo/vespa/http/client/runner/CommandLineArguments.java48
-rw-r--r--vespa-http-client/src/test/java/com/yahoo/vespa/http/client/runner/CommandLineArgumentsTest.java32
3 files changed, 73 insertions, 12 deletions
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/config/Endpoint.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/config/Endpoint.java
index 7ba6dd04a80..b7d8cab5a4f 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/config/Endpoint.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/config/Endpoint.java
@@ -2,6 +2,7 @@
package com.yahoo.vespa.http.client.config;
import java.io.Serializable;
+import java.net.URL;
/**
* Represents an endpoint, in most cases a JDisc container
@@ -34,6 +35,10 @@ public final class Endpoint implements Serializable {
return new Endpoint(hostname, port, useSsl);
}
+ public static Endpoint create(URL url) {
+ return new Endpoint(url.getHost(), url.getPort(), "https".equals(url.getProtocol()));
+ }
+
private static final long serialVersionUID = 4545345L;
private final String hostname;
private final int port;
diff --git a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/runner/CommandLineArguments.java b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/runner/CommandLineArguments.java
index b9219d8f267..dff5e0f4ef3 100644
--- a/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/runner/CommandLineArguments.java
+++ b/vespa-http-client/src/main/java/com/yahoo/vespa/http/client/runner/CommandLineArguments.java
@@ -18,6 +18,8 @@ import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.message.BasicLineParser;
import javax.inject.Inject;
+import java.net.MalformedURLException;
+import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
@@ -49,10 +51,18 @@ public class CommandLineArguments {
if (cmdArgs.helpOption.showHelpIfRequested()) {
return null;
}
-
- if (cmdArgs.hostArg == null) {
- System.err.println("'--host' not set.");
- return null;
+ if (cmdArgs.endpointArg != null) {
+ try {
+ URL url = new URL(cmdArgs.endpointArg);
+ } catch (MalformedURLException e) {
+ e.printStackTrace(System.err);
+ return null;
+ }
+ } else {
+ if (cmdArgs.hostArg == null) {
+ System.err.println("'--host' or '--endpoint' not set.");
+ return null;
+ }
}
if (cmdArgs.priorityArg != null && ! checkPriorityFlag(cmdArgs.priorityArg)) {
return null;
@@ -114,8 +124,12 @@ public class CommandLineArguments {
description = "(=default)The route to send the data to.")
private String routeArg = "default";
+ @Option(name = {"--endpoint"},
+ description = "Vespa endpoint.")
+ private String endpointArg;
+
@Option(name = {"--host"},
- description = "The host(s) for the gateway. If using several, use comma to sepparate them.")
+ description = "The host(s) for the gateway. If using several, use comma to separate them.")
private String hostArg;
@Option(name = {"--port"},
@@ -141,7 +155,7 @@ public class CommandLineArguments {
@Option(name = {"-v", "--verbose"},
description = "Enable verbose output of progress.")
- private boolean verboaseArg = false;
+ private boolean verboseArg = false;
@Option(name = {"--noretry"},
description = "Turns off retries of recoverable failures..")
@@ -199,7 +213,7 @@ public class CommandLineArguments {
public String getFile() { return fileArg; };
- public boolean getVerbose() { return verboaseArg; }
+ public boolean getVerbose() { return verboseArg; }
public boolean getAddRootElementToXml() { return addRootElementToXml; }
@@ -239,11 +253,21 @@ public class CommandLineArguments {
// Enable dynamic throttling.
.setThrottlerMinSize(minThrottleValue)
.setClientQueueSize(maxPendingOperationCountArg);
- Iterable<String> hosts = Splitter.on(',').trimResults().split(hostArg);
- for (String host : hosts) {
- builder.addCluster(new Cluster.Builder()
- .addEndpoint(Endpoint.create(host, portArg, useTls))
- .build());
+ if (endpointArg != null) {
+ try {
+ builder.addCluster(new Cluster.Builder()
+ .addEndpoint(Endpoint.create(new URL(endpointArg)))
+ .build());
+ }
+ catch (MalformedURLException e) {} // already checked when parsing arguments
+ }
+ else {
+ Iterable<String> hosts = Splitter.on(',').trimResults().split(hostArg);
+ for (String host : hosts) {
+ builder.addCluster(new Cluster.Builder()
+ .addEndpoint(Endpoint.create(host, portArg, useTls))
+ .build());
+ }
}
return builder.build();
}
diff --git a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/runner/CommandLineArgumentsTest.java b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/runner/CommandLineArgumentsTest.java
index 02509626176..6dd0c54e150 100644
--- a/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/runner/CommandLineArgumentsTest.java
+++ b/vespa-http-client/src/test/java/com/yahoo/vespa/http/client/runner/CommandLineArgumentsTest.java
@@ -180,4 +180,36 @@ public class CommandLineArgumentsTest {
CommandLineArguments arguments = CommandLineArguments.build(asArray());
SessionParams params = arguments.createSessionParams(true /* use json */);
}
+
+ @Test
+ public void testEndpointAndHost() {
+ args.clear();
+ add("endpoint", "http://myendpoint:1234");
+ CommandLineArguments arguments = CommandLineArguments.build(asArray());
+ SessionParams params = arguments.createSessionParams(true);
+
+ assertThat(params.getClusters().get(0).getEndpoints().get(0).getHostname(), is("myendpoint"));
+ assertThat(params.getClusters().get(0).getEndpoints().get(0).getPort(), is(1234));
+ assertThat(params.getClusters().get(0).getEndpoints().get(0).isUseSsl(), is(false));
+
+ add("host", "myhost"); // endpoint dominates host and port
+ add("port", "2345");
+ arguments = CommandLineArguments.build(asArray());
+ params = arguments.createSessionParams(true);
+ assertThat(params.getClusters().get(0).getEndpoints().get(0).getHostname(), is("myendpoint"));
+ assertThat(params.getClusters().get(0).getEndpoints().get(0).getPort(), is(1234));
+
+ args.clear();
+ add("endpoint", "https://myendpoint:1234");
+ arguments = CommandLineArguments.build(asArray());
+ params = arguments.createSessionParams(true);
+ assertThat(params.getClusters().get(0).getEndpoints().get(0).isUseSsl(), is(true));
+
+ args.clear();
+ add("endpoint", "https://myendpoint::1234");
+ arguments = CommandLineArguments.build(asArray());
+ params = arguments.createSessionParams(true);
+ assertThat(params.getClusters().get(0).getEndpoints().get(0).isUseSsl(), is(true));
+
+ }
}