Repository: jena Updated Branches: refs/heads/master 1fd19edf4 -> be13685c1
Cleaning up and shortening test code for HTTP operations Project: http://git-wip-us.apache.org/repos/asf/jena/repo Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/1911547a Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/1911547a Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/1911547a Branch: refs/heads/master Commit: 1911547a0ad5ac132362298f28994edc88968699 Parents: b2c4e61 Author: ajs6f <aj...@virginia.edu> Authored: Wed Jul 27 14:29:52 2016 -0400 Committer: ajs6f <aj...@virginia.edu> Committed: Thu Oct 13 16:07:46 2016 -0400 ---------------------------------------------------------------------- .../java/org/apache/jena/riot/web/HttpOp.java | 19 +---- .../apache/jena/sparql/engine/http/Params.java | 49 +++---------- .../java/org/apache/jena/fuseki/FusekiTest.java | 13 +--- .../java/org/apache/jena/fuseki/ServerTest.java | 5 +- .../apache/jena/fuseki/TestHttpOperations.java | 28 ++----- .../org/apache/jena/fuseki/http/TestHttpOp.java | 77 ++++++-------------- 6 files changed, 45 insertions(+), 146 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jena/blob/1911547a/jena-arq/src/main/java/org/apache/jena/riot/web/HttpOp.java ---------------------------------------------------------------------- diff --git a/jena-arq/src/main/java/org/apache/jena/riot/web/HttpOp.java b/jena-arq/src/main/java/org/apache/jena/riot/web/HttpOp.java index 9f93160..3bd97c7 100644 --- a/jena-arq/src/main/java/org/apache/jena/riot/web/HttpOp.java +++ b/jena-arq/src/main/java/org/apache/jena/riot/web/HttpOp.java @@ -38,7 +38,6 @@ import org.apache.http.impl.client.HttpClientBuilder ; import org.apache.http.impl.client.HttpClients; import org.apache.http.impl.client.cache.CachingHttpClientBuilder; import org.apache.http.message.BasicNameValuePair ; -import org.apache.http.protocol.BasicHttpContext ; import org.apache.http.protocol.HttpContext ; import org.apache.http.util.EntityUtils ; import org.apache.jena.atlas.io.IO ; @@ -1026,7 +1025,6 @@ public class HttpOp { // ---- Perform the operation! private static void exec(String url, HttpUriRequest request, String acceptHeader, HttpResponseHandler handler, HttpClient httpClient, HttpContext httpContext) { httpClient = ensureClient(httpClient); - httpContext = ensureContext(httpContext); try { if (handler == null) // This cleans up. @@ -1063,10 +1061,7 @@ public class HttpOp { } public static String readPayload(HttpEntity entity) throws IOException { - if (entity == null) { - return null; - } - return EntityUtils.toString(entity, ContentType.getOrDefault(entity).getCharset()); + return entity == null ? null : EntityUtils.toString(entity, ContentType.getOrDefault(entity).getCharset()); } /** @@ -1091,18 +1086,6 @@ public class HttpOp { } /** - * Ensures that a context is non-null, uses a new {@link BasicHttpContext} - * if none is provided - * - * @param context - * HTTP Context - * @return Non-null HTTP Context - */ - private static HttpContext ensureContext(HttpContext context) { - return context != null ? context : new BasicHttpContext(); - } - - /** * Applies the configured User-Agent string to the HTTP request * * @param message http://git-wip-us.apache.org/repos/asf/jena/blob/1911547a/jena-arq/src/main/java/org/apache/jena/sparql/engine/http/Params.java ---------------------------------------------------------------------- diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/engine/http/Params.java b/jena-arq/src/main/java/org/apache/jena/sparql/engine/http/Params.java index ab25b9a..dce789a 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/engine/http/Params.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/engine/http/Params.java @@ -18,9 +18,10 @@ package org.apache.jena.sparql.engine.http; +import static java.util.stream.Collectors.toList; + import java.nio.charset.StandardCharsets ; import java.util.* ; - import org.apache.http.NameValuePair ; import org.apache.http.client.utils.URLEncodedUtils ; @@ -60,19 +61,14 @@ public class Params /** Add a parameter. * @param name Name of the parameter * @param value Value - May be null to indicate none - the name still goes. + * @return this Params for continued operation */ - - public void addParam(String name, String value) + public Params addParam(String name, String value) { Pair p = new Pair(name, value) ; paramList.add(p) ; - List<String> x = params.get(name) ; - if ( x == null ) - { - x = new ArrayList<>() ; - params.put(name, x) ; - } - x.add(value) ; + params.computeIfAbsent(name, n -> new ArrayList<>()).add(value); + return this; } /** Valueless parameter */ @@ -98,12 +94,7 @@ public class Params public void remove(String name) { // Absolute record - for ( Iterator<Pair> iter = paramList.iterator() ; iter.hasNext() ; ) - { - Pair p = iter.next() ; - if ( p.getName().equals(name) ) - iter.remove() ; - } + paramList.removeIf(p -> p.getName().equals(name)); // Map params.remove(name) ; } @@ -119,15 +110,7 @@ public class Params /** Get the names of parameters - one ocurrence */ public List<String> names() { - List<String> names = new ArrayList<>() ; - for (Pair pair : paramList) - { - String s = pair.getName() ; - if ( names.contains(s) ) - continue ; - names.add(s) ; - } - return names ; + return paramList.stream().map(Pair::getName).distinct().collect(toList()); } /** Query string, without leading "?" */ @@ -145,19 +128,11 @@ public class Params MultiValueException(String msg) { super(msg) ; } } - public static class Pair implements NameValuePair - { - String name ; - String value ; - - Pair(String name, String value) { setName(name) ; setValue(value) ; } + public static class Pair extends org.apache.jena.atlas.lib.Pair<String, String> implements NameValuePair { + public Pair(String name, String value) { super(name, value); } @Override - public String getName() { return name ; } + public String getName() { return getLeft() ; } @Override - public String getValue() { return value ; } - - void setName(String name) { this.name = name ; } - void setValue(String value) { this.value = value ; } - + public String getValue() { return getRight() ; } } } http://git-wip-us.apache.org/repos/asf/jena/blob/1911547a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/FusekiTest.java ---------------------------------------------------------------------- diff --git a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/FusekiTest.java b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/FusekiTest.java index d963296..3cd38da 100644 --- a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/FusekiTest.java +++ b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/FusekiTest.java @@ -26,12 +26,11 @@ import org.apache.http.StatusLine ; import org.apache.http.client.methods.HttpOptions ; import org.apache.http.client.methods.HttpUriRequest ; import org.apache.http.impl.client.CloseableHttpClient ; -import org.apache.http.impl.client.HttpClientBuilder ; +import org.apache.http.impl.client.HttpClients; import org.apache.http.protocol.HttpContext ; import org.apache.http.util.EntityUtils ; import org.apache.jena.atlas.web.HttpException ; import org.apache.jena.riot.web.HttpNames ; -import org.apache.jena.riot.web.HttpResponseHandler ; import org.apache.jena.riot.web.HttpResponseLib ; import org.apache.jena.web.HttpSC ; import org.junit.Assert ; @@ -42,7 +41,6 @@ public class FusekiTest { public static void assertStringList(String str, String... expected) { str = str.replace(" ", "") ; String[] x = str.split(",") ; - int count = 0 ; for ( String ex : expected ) { Assert.assertTrue("Got: "+str+" - Does not contain "+ex, containsStr(ex, x)) ; } @@ -63,9 +61,7 @@ public class FusekiTest { /** Do an HTTP Options. */ public static String execOptions(String url) { // Prepare and execute - HttpResponseHandler handler = HttpResponseLib.nullResponse ; - - try ( CloseableHttpClient httpClient = HttpClientBuilder.create().build() ) { + try ( CloseableHttpClient httpClient = HttpClients.createDefault() ) { HttpUriRequest request = new HttpOptions(url) ; HttpResponse response = httpClient.execute(request, (HttpContext)null); @@ -77,10 +73,9 @@ public class FusekiTest { String contentPayload = "" ; if ( response.getEntity() != null ) contentPayload = EntityUtils.toString(response.getEntity()) ; - throw new HttpException(statusLine.getStatusCode(), statusLine.getReasonPhrase(), contentPayload); + throw new HttpException(statusCode, statusLine.getReasonPhrase(), contentPayload); } - if (handler != null) - handler.handle(url, response); + HttpResponseLib.nullResponse.handle(url, response); return response.getFirstHeader(HttpNames.hAllow).getValue() ; } catch (IOException ex) { throw new HttpException(ex); http://git-wip-us.apache.org/repos/asf/jena/blob/1911547a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/ServerTest.java ---------------------------------------------------------------------- diff --git a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/ServerTest.java b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/ServerTest.java index 39591f0..d36f104 100644 --- a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/ServerTest.java +++ b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/ServerTest.java @@ -167,13 +167,10 @@ public class ServerTest { private static int choosePort(int... ports) { for (int port : ports) { try { - @SuppressWarnings("resource") ServerSocket s = new ServerSocket(port) ; s.close(); return s.getLocalPort() ; // OK to call after close. - } catch (IOException ex) { - continue; - } + } catch (IOException ex) { } } throw new FusekiException("Failed to find a port in :"+Arrays.asList(ports)) ; } http://git-wip-us.apache.org/repos/asf/jena/blob/1911547a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestHttpOperations.java ---------------------------------------------------------------------- diff --git a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestHttpOperations.java b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestHttpOperations.java index 5042576..2f5b751 100644 --- a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestHttpOperations.java +++ b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestHttpOperations.java @@ -21,29 +21,17 @@ package org.apache.jena.fuseki ; import static org.apache.jena.fuseki.ServerTest.* ; import static org.apache.jena.fuseki.ServerTest.serviceUpdate ; -import org.apache.jena.atlas.junit.BaseTest ; import org.apache.jena.atlas.web.HttpException ; import org.apache.jena.atlas.web.TypedInputStream ; import org.apache.jena.riot.WebContent ; import org.apache.jena.riot.web.HttpOp ; import org.apache.jena.sparql.engine.http.Params ; import org.apache.jena.sparql.util.Convert ; -import org.junit.AfterClass ; import org.junit.Assert ; -import org.junit.BeforeClass ; import org.junit.Test ; /** Operation by HTTP - test dispatch - lower level than TestSPARQLProtocol */ -public class TestHttpOperations extends BaseTest { - @BeforeClass - public static void beforeClass() { - ServerTest.allocServer() ; - } - - @AfterClass - public static void afterClass() { - ServerTest.freeServer() ; - } +public class TestHttpOperations extends AbstractFusekiTest { // XXX and directly on dataset @@ -75,10 +63,8 @@ public class TestHttpOperations extends BaseTest { @Test public void query_by_form_1() { - String qs = Convert.encWWWForm("ASK{}") ; String u = serviceQuery ; - Params params = new Params(); - params.addParam("query", "ASK{}") ; + Params params = new Params().addParam("query", "ASK{}") ; try (TypedInputStream in = HttpOp.execHttpPostFormStream(u, params, "*") ) { Assert.assertNotNull(in); } @@ -87,8 +73,7 @@ public class TestHttpOperations extends BaseTest { @Test(expected=HttpException.class) public void query_by_form_2() { String u = serviceQuery ; - Params params = new Params(); - params.addParam("foobar", "ASK{}") ; // Wrong. + Params params = new Params().addParam("foobar", "ASK{}") ; // Wrong. try (TypedInputStream in = HttpOp.execHttpPostFormStream(u, params, "*") ) { Assert.assertNotNull(in); } @@ -113,8 +98,7 @@ public class TestHttpOperations extends BaseTest { @Test public void update_by_form_1() { String u = serviceUpdate ; - Params params = new Params(); - params.addParam("update", "INSERT DATA{}") ; + Params params = new Params().addParam("update", "INSERT DATA{}") ; try (TypedInputStream in = HttpOp.execHttpPostFormStream(u, params, "*") ) { Assert.assertNotNull(in); } @@ -123,8 +107,7 @@ public class TestHttpOperations extends BaseTest { @Test(expected=HttpException.class) public void update_by_form_2() { String u = serviceUpdate ; - Params params = new Params(); - params.addParam("query", "INSERT DATA{}") ; // Wrong paramater + Params params = new Params().addParam("query", "INSERT DATA{}") ; // Wrong paramater try (TypedInputStream in = HttpOp.execHttpPostFormStream(u, params, "*") ) { Assert.assertNotNull(in); } @@ -134,7 +117,6 @@ public class TestHttpOperations extends BaseTest { @Test public void ds_query_by_get_1() { - String qs = Convert.encWWWForm("ASK{}") ; String u = urlDataset ; try (TypedInputStream in = HttpOp.execHttpGet(u)) { Assert.assertNotNull(in); http://git-wip-us.apache.org/repos/asf/jena/blob/1911547a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/http/TestHttpOp.java ---------------------------------------------------------------------- diff --git a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/http/TestHttpOp.java b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/http/TestHttpOp.java index 488c517..062f9ef 100644 --- a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/http/TestHttpOp.java +++ b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/http/TestHttpOp.java @@ -18,11 +18,12 @@ package org.apache.jena.fuseki.http; +import static org.apache.jena.fuseki.FusekiTest.exec404; +import static org.apache.jena.fuseki.FusekiTest.execWithHttpException; + import org.apache.jena.atlas.lib.IRILib ; -import org.apache.jena.atlas.web.HttpException ; import org.apache.jena.atlas.web.TypedInputStream ; import org.apache.jena.fuseki.AbstractFusekiTest ; -import org.apache.jena.fuseki.FusekiTest ; import org.apache.jena.fuseki.ServerTest ; import org.apache.jena.riot.WebContent ; import org.apache.jena.riot.web.HttpOp ; @@ -46,18 +47,16 @@ public class TestHttpOp extends AbstractFusekiTest { // Basic operations @Test public void httpGet_01() { - try ( TypedInputStream in = HttpOp.execHttpGet(pingURL) ) {} + assertNotNull(HttpOp.execHttpGetString(pingURL)); } @Test public void httpGet_02() { - FusekiTest.exec404(() -> { - try (TypedInputStream in = HttpOp.execHttpGet(ServerTest.urlRoot + "does-not-exist")) {} - }); + exec404(() -> HttpOp.execHttpGet(ServerTest.urlRoot + "does-not-exist")); } @Test public void httpGet_03() { - String x = HttpOp.execHttpGetString(pingURL) ; + assertNotNull(HttpOp.execHttpGetString(pingURL)); } @Test public void httpGet_04() { @@ -66,76 +65,49 @@ public class TestHttpOp extends AbstractFusekiTest { } @Test public void httpGet_05() { - try ( TypedInputStream in = HttpOp.execHttpGet(simpleQuery) ) {} + assertNotNull(HttpOp.execHttpGetString(simpleQuery)); } // SPARQL Query @Test public void queryGet_01() { - try ( TypedInputStream in = HttpOp.execHttpGet(simpleQuery) ) {} + assertNotNull(HttpOp.execHttpGetString(simpleQuery)); } - @Test(expected=HttpException.class) public void queryGet_02() { // No query. - try ( TypedInputStream in = HttpOp.execHttpGet(queryURL+"?query=") ) {} - catch (HttpException ex) { - assertEquals(ex.getResponseCode(), HttpSC.BAD_REQUEST_400) ; - throw ex ; - } + execWithHttpException(HttpSC.BAD_REQUEST_400, () -> HttpOp.execHttpGetString(queryURL + "?query=")); } - @Test(expected=HttpException.class) public void httpPost_01() { - try { - HttpOp.execHttpPost(queryURL, "ASK{}", "text/plain") ; - } catch (HttpException ex) { - assertEquals(ex.getResponseCode(), HttpSC.UNSUPPORTED_MEDIA_TYPE_415) ; - throw ex ; - } + execWithHttpException(HttpSC.UNSUPPORTED_MEDIA_TYPE_415, + () -> HttpOp.execHttpPost(queryURL, "ASK{}", "text/plain")); } - @Test(expected=HttpException.class) public void httpPost_02() { - try { - HttpOp.execHttpPost(queryURL, "ASK{}", WebContent.contentTypeSPARQLQuery) ; - } catch (HttpException ex) { - assertEquals(ex.getResponseCode(), HttpSC.UNSUPPORTED_MEDIA_TYPE_415) ; - throw ex ; - } + execWithHttpException(HttpSC.UNSUPPORTED_MEDIA_TYPE_415, + () -> HttpOp.execHttpPost(queryURL, "ASK{}", WebContent.contentTypeSPARQLQuery)); } - @Test(expected=HttpException.class) public void httpPost_03() { - try { - HttpOp.execHttpPost(queryURL, "ASK{}", WebContent.contentTypeOctets) ; - } catch (HttpException ex) { - assertEquals(ex.getResponseCode(), HttpSC.UNSUPPORTED_MEDIA_TYPE_415) ; - throw ex ; - } + execWithHttpException(HttpSC.UNSUPPORTED_MEDIA_TYPE_415, + () -> HttpOp.execHttpPost(queryURL, "ASK{}", WebContent.contentTypeOctets)); } @Test public void httpPost_04() { - Params params = new Params() ; - params.addParam("query", "ASK{}") ; + Params params = new Params().addParam("query", "ASK{}") ; try ( TypedInputStream in = HttpOp.execHttpPostFormStream(queryURL, params, WebContent.contentTypeResultsJSON) ) {} } - @Test(expected=HttpException.class) public void httpPost_05() { - Params params = new Params() ; - params.addParam("query", "ASK{}") ; + Params params = new Params().addParam("query", "ASK{}") ; // Query to Update - try ( TypedInputStream in = HttpOp.execHttpPostFormStream(updateURL, params, WebContent.contentTypeResultsJSON) ) { } - catch (HttpException ex) { - assertEquals(ex.getResponseCode(), HttpSC.BAD_REQUEST_400) ; - throw ex ; - } + execWithHttpException(HttpSC.BAD_REQUEST_400, + () -> HttpOp.execHttpPostFormStream(updateURL, params, WebContent.contentTypeResultsJSON)); } @Test public void httpPost_06() { - Params params = new Params() ; - params.addParam("request", "CLEAR ALL") ; + Params params = new Params().addParam("request", "CLEAR ALL") ; HttpOp.execHttpPostForm(updateURL, params) ; } @@ -190,18 +162,13 @@ public class TestHttpOp extends AbstractFusekiTest { String s3 = HttpOp.execHttpGetString(defaultGraphURL, WebContent.contentTypeNTriples) ; assertTrue(s3.isEmpty()) ; - FusekiTest.exec404(()->HttpOp.execHttpDelete(namedGraphURL)) ; + exec404(()->HttpOp.execHttpDelete(namedGraphURL)) ; } // Extended GSP - no ?default, no ?graph acts on the datasets as a whole. @Test public void gsp_10() { - try { - HttpOp.execHttpDelete(gspServiceURL) ; - fail("Expected 405") ; - } catch (HttpException ex) { - assertEquals(ex.getResponseCode(), HttpSC.METHOD_NOT_ALLOWED_405) ; - } + execWithHttpException(HttpSC.METHOD_NOT_ALLOWED_405, () -> HttpOp.execHttpDelete(gspServiceURL)); } @Test public void gsp_11() {