You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2016/08/10 12:59:13 UTC
[07/12] jena git commit: JENA-1221: More tests
JENA-1221: More tests
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/176fb133
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/176fb133
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/176fb133
Branch: refs/heads/master
Commit: 176fb1331cb3c32725de7aefb708348c79c8bfa4
Parents: cd7f442
Author: Andy Seaborne <an...@apache.org>
Authored: Sun Aug 7 14:19:19 2016 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Sun Aug 7 14:19:19 2016 +0100
----------------------------------------------------------------------
.../jena/fuseki/embedded/TS_EmbeddedFuseki.java | 3 +-
.../fuseki/embedded/TestEmbeddedFuseki.java | 182 ++++++++++++++-----
.../testing/FusekiEmbedded/config.ttl | 18 ++
3 files changed, 156 insertions(+), 47 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/176fb133/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/TS_EmbeddedFuseki.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/TS_EmbeddedFuseki.java b/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/TS_EmbeddedFuseki.java
index c0e06d2..c66149d 100644
--- a/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/TS_EmbeddedFuseki.java
+++ b/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/TS_EmbeddedFuseki.java
@@ -36,12 +36,13 @@ public class TS_EmbeddedFuseki {
LogCtl.setLevel(Fuseki.serverLogName, "WARN");
LogCtl.setLevel(Fuseki.actionLogName, "WARN");
LogCtl.setLevel(Fuseki.requestLogName, "WARN");
+ LogCtl.setLevel(Fuseki.adminLogName, "WARN");
LogCtl.setLevel("org.eclipse.jetty", "WARN");
// Shouldn't see these in the embedded server.
// LogCtl.setLevel("org.apache.shiro", "WARN") ;
// LogCtl.setLevel(Fuseki.configLogName, "WARN");
-// LogCtl.setLevel(Fuseki.adminLogName, "WARN");
+
// LogCtl.setLevel(Fuseki.builderLogName, "WARN");
// LogCtl.setLevel(Fuseki.servletRequestLogName,"WARN");
}
http://git-wip-us.apache.org/repos/asf/jena/blob/176fb133/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/TestEmbeddedFuseki.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/TestEmbeddedFuseki.java b/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/TestEmbeddedFuseki.java
index 2e2ff7b..d96faa0 100644
--- a/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/TestEmbeddedFuseki.java
+++ b/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/TestEmbeddedFuseki.java
@@ -20,14 +20,18 @@ package org.apache.jena.fuseki.embedded;
import static org.junit.Assert.assertEquals ;
import static org.junit.Assert.assertFalse ;
+import static org.junit.Assert.assertNotNull ;
+import static org.junit.Assert.assertNull ;
import static org.junit.Assert.assertTrue ;
import java.io.OutputStream ;
+import java.util.function.Consumer ;
import org.apache.http.HttpEntity ;
import org.apache.http.entity.ContentProducer ;
import org.apache.http.entity.EntityTemplate ;
import org.apache.jena.atlas.web.ContentType ;
+import org.apache.jena.atlas.web.HttpException ;
import org.apache.jena.atlas.web.TypedInputStream ;
import org.apache.jena.fuseki.server.DataAccessPointRegistry ;
import org.apache.jena.fuseki.server.DataService ;
@@ -50,32 +54,35 @@ import org.apache.jena.system.Txn ;
import org.apache.jena.update.UpdateExecutionFactory ;
import org.apache.jena.update.UpdateFactory ;
import org.apache.jena.update.UpdateRequest ;
+import org.apache.jena.web.HttpSC ;
import org.junit.Test ;
public class TestEmbeddedFuseki {
+ private static final String DIR = "testing/FusekiEmbedded/" ;
+
@Test public void embedded_01() {
DatasetGraph dsg = dataset() ;
FusekiEmbeddedServer server = FusekiEmbeddedServer.make(3330, "/ds", dsg) ;
assertTrue(DataAccessPointRegistry.get().isRegistered("/ds")) ;
server.start() ;
- try (QueryExecution qExec = QueryExecutionFactory.sparqlService("http://localhost:3330/ds/query", "SELECT * { ?s ?p ?o}") ) {
+ query("http://localhost:3330/ds/query", "SELECT * { ?s ?p ?o}", qExec-> {
ResultSet rs = qExec.execSelect() ;
assertFalse(rs.hasNext()) ;
- }
+ }) ;
server.stop() ;
}
-
+
@Test public void embedded_02() {
- // test order !!!!
DatasetGraph dsg = dataset() ;
FusekiEmbeddedServer server = FusekiEmbeddedServer.make(3330, "/ds2", dsg) ;
// But no /ds
assertEquals(1, DataAccessPointRegistry.get().size()) ;
assertTrue(DataAccessPointRegistry.get().isRegistered("/ds2")) ;
assertFalse(DataAccessPointRegistry.get().isRegistered("/ds")) ;
- server.start() ;
- server.stop() ;
+ try {
+ server.start() ;
+ } finally { server.stop() ; }
}
@Test public void embedded_03() {
@@ -85,17 +92,18 @@ public class TestEmbeddedFuseki {
.add("/ds1", dsg)
.build() ;
server.start() ;
- // Add while live.
- Txn.execWrite(dsg, ()->{
- Quad q = SSE.parseQuad("(_ :s :p _:b)") ;
- dsg.add(q);
- }) ;
- try (QueryExecution qExec = QueryExecutionFactory.sparqlService("http://localhost:3331/ds1/query", "SELECT * { ?s ?p ?o}") ) {
- ResultSet rs = qExec.execSelect() ;
- int x = ResultSetFormatter.consume(rs) ;
- assertEquals(1, x) ;
- }
- server.stop() ;
+ try {
+ // Add while live.
+ Txn.execWrite(dsg, ()->{
+ Quad q = SSE.parseQuad("(_ :s :p _:b)") ;
+ dsg.add(q);
+ }) ;
+ query("http://localhost:3331/ds1/query", "SELECT * { ?s ?p ?o}", qExec->{
+ ResultSet rs = qExec.execSelect() ;
+ int x = ResultSetFormatter.consume(rs) ;
+ assertEquals(1, x) ;
+ }) ;
+ } finally { server.stop() ; }
}
@@ -118,37 +126,113 @@ public class TestEmbeddedFuseki {
.add("/data", dataService)
.build() ;
server.start() ;
-
- // Put data in.
- String data = "(graph (:s :p 1) (:s :p 2) (:s :p 3))" ;
- Graph g = SSE.parseGraph(data) ;
- HttpEntity e = graphToHttpEntity(g) ;
- HttpOp.execHttpPut("http://localhost:3332/data", e) ;
-
- // Get data out.
- try ( TypedInputStream in = HttpOp.execHttpGet("http://localhost:3332/data") ) {
- Graph g2 = GraphFactory.createDefaultGraph() ;
- RDFDataMgr.read(g2, in, RDFLanguages.contentTypeToLang(in.getContentType())) ;
- assertTrue(g.isIsomorphicWith(g2)) ;
- }
- // Query.
- try (QueryExecution qExec = QueryExecutionFactory.sparqlService("http://localhost:3332/data", "SELECT * { ?s ?p ?o}") ) {
- ResultSet rs = qExec.execSelect() ;
- int x = ResultSetFormatter.consume(rs) ;
- assertEquals(3, x) ;
- }
- // Update
- UpdateRequest req = UpdateFactory.create("CLEAR DEFAULT") ;
- UpdateExecutionFactory.createRemote(req, "http://localhost:3332/data").execute();
- // Query again.
- try (QueryExecution qExec = QueryExecutionFactory.sparqlService("http://localhost:3332/data", "SELECT * { ?s ?p ?o}") ) {
- ResultSet rs = qExec.execSelect() ;
- int x = ResultSetFormatter.consume(rs) ;
- assertEquals(0, x) ;
- }
+ try {
+ // Put data in.
+ String data = "(graph (:s :p 1) (:s :p 2) (:s :p 3))" ;
+ Graph g = SSE.parseGraph(data) ;
+ HttpEntity e = graphToHttpEntity(g) ;
+ HttpOp.execHttpPut("http://localhost:3332/data", e) ;
+
+ // Get data out.
+ try ( TypedInputStream in = HttpOp.execHttpGet("http://localhost:3332/data") ) {
+ Graph g2 = GraphFactory.createDefaultGraph() ;
+ RDFDataMgr.read(g2, in, RDFLanguages.contentTypeToLang(in.getContentType())) ;
+ assertTrue(g.isIsomorphicWith(g2)) ;
+ }
+ // Query.
+ query("http://localhost:3332/data", "SELECT * { ?s ?p ?o}", qExec->{
+ ResultSet rs = qExec.execSelect() ;
+ int x = ResultSetFormatter.consume(rs) ;
+ assertEquals(3, x) ;
+ }) ;
+ // Update
+ UpdateRequest req = UpdateFactory.create("CLEAR DEFAULT") ;
+ UpdateExecutionFactory.createRemote(req, "http://localhost:3332/data").execute();
+ // Query again.
+ query("http://localhost:3332/data", "SELECT * { ?s ?p ?o}", qExec-> {
+ ResultSet rs = qExec.execSelect() ;
+ int x = ResultSetFormatter.consume(rs) ;
+ assertEquals(0, x) ;
+ }) ;
+ } finally { server.stop() ; }
+ }
+
+ @Test public void embedded_05() {
+ DatasetGraph dsg = dataset() ;
+ FusekiEmbeddedServer server = FusekiEmbeddedServer.create()
+ .setPort(3330)
+ .add("/ds0", dsg)
+ .build() ;
+ server.start() ;
+ try {
+ // No stats
+ String x = HttpOp.execHttpGetString("http://localhost:3330/$/stats") ;
+ assertNull(x) ;
+ } finally { server.stop() ; }
+ }
+
+ @Test public void embedded_06() {
+ DatasetGraph dsg = dataset() ;
+ FusekiEmbeddedServer server = FusekiEmbeddedServer.create()
+ .setPort(3330)
+ .add("/ds0", dsg)
+ .enableStats(true)
+ .build() ;
+ server.start() ;
+ // No stats
+ String x = HttpOp.execHttpGetString("http://localhost:3330/$/stats") ;
+ assertNotNull(x) ;
server.stop() ;
}
-
+
+ // Context path.
+ @Test public void embedded_07() {
+ DatasetGraph dsg = dataset() ;
+ FusekiEmbeddedServer server = FusekiEmbeddedServer.create()
+ .setPort(3330)
+ .setContextPath("/ABC")
+ .add("/ds", dsg)
+ .build() ;
+ server.start() ;
+ try {
+ String x1 = HttpOp.execHttpGetString("http://localhost:3330/ds") ;
+ assertNull(x1) ;
+ String x2 = HttpOp.execHttpGetString("http://localhost:3330/ABC/ds") ;
+ assertNotNull(x2) ;
+ } finally { server.stop() ; }
+ }
+
+ @Test public void embedded_08() {
+ DatasetGraph dsg = dataset() ;
+ FusekiEmbeddedServer server = FusekiEmbeddedServer.create()
+ .setPort(3330)
+ .parseConfigFile(DIR+"config.ttl")
+ .build() ;
+ server.start() ;
+ try {
+ query("http://localhost:3330/FuTest", "SELECT * {}", x->{}) ;
+ } finally { server.stop() ; }
+ }
+
+ @Test public void embedded_09() {
+ DatasetGraph dsg = dataset() ;
+ FusekiEmbeddedServer server = FusekiEmbeddedServer.create()
+ .setPort(3330)
+ .setContextPath("/ABC")
+ .parseConfigFile(DIR+"config.ttl")
+ .build() ;
+ server.start() ;
+ try {
+ try {
+ query("http://localhost:3330/FuTest", "ASK{}", x->{}) ;
+ } catch (HttpException ex) {
+ assertEquals(HttpSC.METHOD_NOT_ALLOWED_405, ex.getResponseCode()) ;
+ }
+
+ query("http://localhost:3330/ABC/FuTest","ASK{}",x->{}) ;
+ } finally { server.stop() ; }
+ }
+
/** Create an HttpEntity for the graph */
protected static HttpEntity graphToHttpEntity(final Graph graph) {
final RDFFormat syntax = RDFFormat.TURTLE_BLOCKS ;
@@ -167,4 +251,10 @@ public class TestEmbeddedFuseki {
private DatasetGraph dataset() {
return DatasetGraphFactory.createTxnMem() ;
}
+
+ private static void query(String URL, String query, Consumer<QueryExecution> body) {
+ try (QueryExecution qExec = QueryExecutionFactory.sparqlService(URL, query) ) {
+ body.accept(qExec);
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/jena/blob/176fb133/jena-fuseki2/jena-fuseki-embedded/testing/FusekiEmbedded/config.ttl
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-embedded/testing/FusekiEmbedded/config.ttl b/jena-fuseki2/jena-fuseki-embedded/testing/FusekiEmbedded/config.ttl
new file mode 100644
index 0000000..5a7f84a
--- /dev/null
+++ b/jena-fuseki2/jena-fuseki-embedded/testing/FusekiEmbedded/config.ttl
@@ -0,0 +1,18 @@
+@prefix : <#> .
+@prefix fuseki: <http://jena.apache.org/fuseki#> .
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix ja: <http://jena.hpl.hp.com/2005/11/Assembler#> .
+@prefix tdb: <http://jena.hpl.hp.com/2008/tdb#> .
+
+<#serviceInMemory> rdf:type fuseki:Service;
+ rdfs:label "test";
+ fuseki:name "FuTest";
+ fuseki:serviceQuery "query";
+ fuseki:serviceUpdate "update";
+ fuseki:serviceUpload "upload" ;
+ fuseki:dataset <#dataset> ;
+.
+
+<#dataset> rdf:type ja:RDFDataset;
+.