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 2013/12/18 22:34:21 UTC

svn commit: r1552113 - in /jena/branches/jena-fuseki-new-ui/src: main/java/org/apache/jena/fuseki/ main/java/org/apache/jena/fuseki/mgt/ main/java/org/apache/jena/fuseki/server/ test/java/org/apache/jena/fuseki/

Author: andy
Date: Wed Dec 18 21:34:21 2013
New Revision: 1552113

URL: http://svn.apache.org/r1552113
Log:
More testing.

Modified:
    jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/X_Config.java
    jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/ActionDatasets.java
    jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/SPARQLServer.java
    jena/branches/jena-fuseki-new-ui/src/test/java/org/apache/jena/fuseki/ServerTest.java
    jena/branches/jena-fuseki-new-ui/src/test/java/org/apache/jena/fuseki/TestAdmin.java

Modified: jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/X_Config.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/X_Config.java?rev=1552113&r1=1552112&r2=1552113&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/X_Config.java (original)
+++ jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/X_Config.java Wed Dec 18 21:34:21 2013
@@ -51,9 +51,10 @@ public class X_Config {
             throw new FusekiConfigException("Already registered: key = "+datasetPath) ;
         DatasetRegistry.get().put(datasetPath, dsDesc) ;
         serverLog.info(format("Dataset path = %s", datasetPath)) ;
+        X_Config.addJMX(dsDesc) ;
     }
     
-    public static void addJMX() {
+    public static void XaddJMX() {
         DatasetRegistry registry = DatasetRegistry.get() ;
         for (String ds : registry.keys()) {
             DatasetRef dsRef = registry.get(ds) ;

Modified: jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/ActionDatasets.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/ActionDatasets.java?rev=1552113&r1=1552112&r2=1552113&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/ActionDatasets.java (original)
+++ jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/ActionDatasets.java Wed Dec 18 21:34:21 2013
@@ -110,11 +110,6 @@ public class ActionDatasets extends Acti
             execDelete(action) ;
         else
             ServletOps.error(HttpSC.METHOD_NOT_ALLOWED_405) ;
-        
-//      system.begin(ReadWrite.READ) ;
-//      try { RDFDataMgr.write(System.out, system, Lang.TRIG); }
-//      finally { system.end() ; }
-
     }
 
     protected void execGet(HttpAction action) {
@@ -131,8 +126,9 @@ public class ActionDatasets extends Acti
             JSON.write(out, v) ;
             out.println() ; 
             out.flush() ;
+            ServletOps.success(action);
         } catch (IOException ex) { ServletOps.errorOccurred(ex) ; }
-        ServletOps.success(action);
+        
     }
     
     // This does not consult the system database for dormant etc.
@@ -146,7 +142,7 @@ public class ActionDatasets extends Acti
     }
 
     private JsonValue execGetDataset(HttpAction action) {
-        action.log.info(format("[%d] GET ds=%s", action.id, action.dsRef.name)) ;
+        action.log.info(format("[%d] GET dataset %s", action.id, action.dsRef.name)) ;
         JsonBuilder builder = new JsonBuilder() ;
         String datasetPath = DatasetRef.canocialDatasetPath(action.dsRef.name) ;
         DatasetRef dsDesc = DatasetRegistry.get().get(datasetPath) ;
@@ -256,10 +252,15 @@ public class ActionDatasets extends Acti
                 action.log.warn(format("[%d] Service name '%s' is not a string", action.id, FmtUtils.stringForRDFNode(object)));
 
             String datasetName = object.getLexicalForm() ;
+            String datasetPath = DatasetRef.canocialDatasetPath(datasetName) ;
+            if ( DatasetRegistry.get().isRegistered(datasetPath) ) {
+                // And abort.
+                ServletOps.error(HttpSC.CONFLICT_409, "Name already registered "+datasetName) ;
+            }
+                
             model.removeAll(null, pStatus, null) ;
             model.add(subject, pStatus, FusekiVocab.stateActive) ;
             
-            String datasetPath = DatasetRef.canocialDatasetPath(datasetName) ;
             // Need to be in Resource space at this point.
             DatasetRef dsRef = FusekiConfig.processService(subject) ;
             X_Config.registerDataset(datasetPath, dsRef) ;

Modified: jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/SPARQLServer.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/SPARQLServer.java?rev=1552113&r1=1552112&r2=1552113&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/SPARQLServer.java (original)
+++ jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/SPARQLServer.java Wed Dec 18 21:34:21 2013
@@ -117,7 +117,6 @@ public class SPARQLServer {
             serverLog.error("SPARQLServer: Failed to start server: " + ex.getMessage(), ex) ;
             System.exit(1) ;
         }
-        X_Config.addJMX() ;
     }
 
     /**

Modified: jena/branches/jena-fuseki-new-ui/src/test/java/org/apache/jena/fuseki/ServerTest.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/test/java/org/apache/jena/fuseki/ServerTest.java?rev=1552113&r1=1552112&r2=1552113&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src/test/java/org/apache/jena/fuseki/ServerTest.java (original)
+++ jena/branches/jena-fuseki-new-ui/src/test/java/org/apache/jena/fuseki/ServerTest.java Wed Dec 18 21:34:21 2013
@@ -20,6 +20,7 @@ package org.apache.jena.fuseki;
 
 import java.util.Collection ;
 
+import org.apache.jena.atlas.iterator.Iter ;
 import org.apache.jena.fuseki.mgt.ManagementServer ;
 import org.apache.jena.fuseki.server.* ;
 import org.eclipse.jetty.servlet.ServletContextHandler ;
@@ -135,7 +136,7 @@ public class ServerTest
             server.stop() ;
         server = null ;
         // Clear out the registry.
-        Collection<String> keys = DatasetRegistry.get().keys() ;
+        Collection<String> keys = Iter.toList(DatasetRegistry.get().keys()) ;
         for ( String k : keys )
             DatasetRegistry.get().remove(k);
     }

Modified: jena/branches/jena-fuseki-new-ui/src/test/java/org/apache/jena/fuseki/TestAdmin.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/test/java/org/apache/jena/fuseki/TestAdmin.java?rev=1552113&r1=1552112&r2=1552113&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src/test/java/org/apache/jena/fuseki/TestAdmin.java (original)
+++ jena/branches/jena-fuseki-new-ui/src/test/java/org/apache/jena/fuseki/TestAdmin.java Wed Dec 18 21:34:21 2013
@@ -22,6 +22,7 @@ import static org.apache.jena.fuseki.Ser
 import static org.apache.jena.fuseki.ServerTest.urlRoot ;
 import static org.apache.jena.fuseki.mgt.MgtConst.opDatasets ;
 import static org.apache.jena.fuseki.mgt.MgtConst.opPing ;
+import static org.apache.jena.fuseki.mgt.MgtConst.opStats ;
 import static org.apache.jena.riot.web.HttpOp.execHttpDelete ;
 import static org.apache.jena.riot.web.HttpOp.execHttpGet ;
 import static org.apache.jena.riot.web.HttpOp.execHttpPost ;
@@ -83,34 +84,21 @@ public class TestAdmin extends BaseTest 
     
     @Test public void list_datasets_2() {
         TypedInputStream in = execHttpGet(urlRoot+"$/"+opDatasets) ;
-        assertEqualsIgnoreCase(WebContent.contentTypeJSON, in.getContentType()) ;
-        JsonValue v = JSON.parse(in) ;
-        assertNotNull(v.getAsObject().get("datasets")) ; 
-        JsonArray a = v.getAsObject().get("datasets").getAsArray() ;
-        
-        JsonObject obj = a.get(0).getAsObject() ;
-        checkOne(obj) ;
-        try { in.close() ; }
-        catch (IOException e) { IO.exception(e); }
+        try {
+            assertEqualsIgnoreCase(WebContent.contentTypeJSON, in.getContentType()) ;
+            JsonValue v = JSON.parse(in) ;
+            assertNotNull(v.getAsObject().get("datasets")) ; 
+            checkJsonDatasetsAll(v);
+        } finally { IO.close(in) ; }
     }
 
-    private void checkOne(JsonObject obj) {
-        assertNotNull(obj.get("ds.name")) ;
-        assertNotNull(obj.get("ds.services")) ;
-        assertTrue(obj.get("ds.services").isArray()) ;
-    }
-    
     // Specific dataset
     @Test public void list_datasets_5() {
-        TypedInputStream in = execHttpGet(urlRoot+"$/"+opDatasets+datasetPath) ;
-        try { in.close() ; }
-        catch (IOException e) { IO.exception(e); }
+        checkExists(datasetPath) ;
     }
     
     // Specific dataset
     @Test public void list_datasets_6() {
-        checkNotThere("does-not-exist") ;
-
         try {
             TypedInputStream in = execHttpGet(ServerTest.urlRoot+"$/"+opDatasets+"/does-not-exist") ;
         } catch (HttpException ex) {
@@ -120,30 +108,78 @@ public class TestAdmin extends BaseTest 
     
     // Specific dataset
     @Test public void list_datasets_7() {
-        TypedInputStream in = execHttpGet(urlRoot+"$/"+opDatasets+datasetPath) ;
-        JsonValue v = JSON.parse(in) ;
-        checkOne(v.getAsObject()) ;
-        try { in.close() ; }
-        catch (IOException e) { IO.exception(e); }
+        JsonValue v = execGetJSON(urlRoot+"$/"+opDatasets+datasetPath) ;
+        checkJsonDatasetsOne(v.getAsObject()) ;
     }
 
     // -- Add
     
     // Specific dataset
     @Test public void add_dataset_1() {
+        String dsTest = "test-ds2" ;
+        checkNotThere(dsTest) ;
+
         File f = new File("testing/config-ds-1.ttl") ;
         org.apache.http.entity.ContentType ct = org.apache.http.entity.ContentType.parse(WebContent.contentTypeTurtle+"; charset="+WebContent.charsetUTF8) ;
         HttpEntity e = new FileEntity(f, ct) ;
         execHttpPost(ServerTest.urlRoot+"$/"+opDatasets, e) ;
         
         // Check exists.
-        execHttpGet(urlRoot+"$/"+opDatasets+"/test-ds2") ;
+        checkExists(dsTest) ;
         
         // Remove it.
-        execHttpDelete(ServerTest.urlRoot+"$/"+opDatasets+"/test-ds2") ;
+        execHttpDelete(ServerTest.urlRoot+"$/"+opDatasets+"/"+dsTest) ;
         checkNotThere("test-ds") ;
     }
 
+    // Try to add twice
+    @Test public void add_dataset_2() {
+        String dsTest = "test-ds2" ;
+        checkNotThere(dsTest) ;
+
+        File f = new File("testing/config-ds-1.ttl") ;
+        { 
+            org.apache.http.entity.ContentType ct = org.apache.http.entity.ContentType.parse(WebContent.contentTypeTurtle+"; charset="+WebContent.charsetUTF8) ;
+            HttpEntity e = new FileEntity(f, ct) ;
+            execHttpPost(ServerTest.urlRoot+"$/"+opDatasets, e) ;
+        }
+        // Check exists.
+        checkExists(dsTest) ;
+        try {
+            org.apache.http.entity.ContentType ct = org.apache.http.entity.ContentType.parse(WebContent.contentTypeTurtle+"; charset="+WebContent.charsetUTF8) ;
+            HttpEntity e = new FileEntity(f, ct) ;
+            execHttpPost(ServerTest.urlRoot+"$/"+opDatasets, e) ;
+        } catch (HttpException ex) {
+            assertEquals(HttpSC.CONFLICT_409, ex.getResponseCode()) ;
+        }
+        // Check exists.
+        checkExists(dsTest) ;
+    }
+    
+    // ---- Active/dormant.
+    
+    // ---- Backup
+
+    // ---- Server
+    
+    // ---- Stats
+    
+    @Test public void stats_1() {
+        JsonValue v = execGetJSON(urlRoot+"$/"+opStats) ;
+        checkJsonStatsAll(v); 
+    }
+    
+    // Auxilary
+    
+    private static void checkExists(String name)  {
+        if ( name.startsWith("/") )
+            name = name.substring(1) ;
+        TypedInputStream in = execHttpGet(urlRoot+"$/"+opDatasets+"/"+name) ; 
+        IO.close(in) ;
+        in = execHttpGet(urlRoot+name+"/sparql?query=ASK%7B%7D") ;
+        IO.close(in) ;
+    }
+    
     private static void checkNotThere(String name) {
         if ( name.startsWith("/") )
             name = name.substring(1) ;
@@ -163,7 +199,50 @@ public class TestAdmin extends BaseTest 
         catch (HttpException ex) {
             assertEquals(HttpSC.NOT_FOUND_404, ex.getResponseCode()) ;
         }
-        
+    }
+
+    private static void checkJsonDatasetsAll(JsonValue v) {
+        assertNotNull(v.getAsObject().get("datasets")) ; 
+        JsonArray a = v.getAsObject().get("datasets").getAsArray() ;
+        for ( JsonValue v2 : a ) {
+            checkJsonDatasetsOne(v2) ;
+        }
+
+    }
+    
+    private static void checkJsonDatasetsOne(JsonValue v) {
+        assertTrue(v.isObject()) ;
+        JsonObject obj = v.getAsObject() ;
+        assertNotNull(obj.get("ds.name")) ;
+        assertNotNull(obj.get("ds.services")) ;
+        assertTrue(obj.get("ds.services").isArray()) ;
+    }
+    
+    private static void checkJsonStatsAll(JsonValue v) {
+        assertNotNull(v.getAsObject().get("datasets")) ; 
+        JsonObject a = v.getAsObject().get("datasets").getAsObject() ;
+        for ( String dsname : a.keys() ) {
+            JsonValue obj = a.get(dsname).getAsObject() ;
+            checkJsonStatsOne(obj);
+        }
+    }
+    
+    private static void checkJsonStatsOne(JsonValue v) {
+        JsonObject obj = v.getAsObject() ;
+        assertTrue(obj.hasKey("Requests")) ;
+        assertTrue(obj.hasKey("RequestsGood")) ;
+        assertTrue(obj.hasKey("RequestsBad")) ;
+        assertTrue(obj.hasKey("services")) ;
+        JsonObject obj2 = obj.get("services").getAsObject() ;
+        // More
+    }
+
+    private static JsonValue execGetJSON(String url) {
+        TypedInputStream in = execHttpGet(url) ;
+        try { 
+            assertEqualsIgnoreCase(WebContent.contentTypeJSON, in.getContentType()) ;
+            return JSON.parse(in) ; 
+        } finally { IO.close(in) ; }
     }
     
     /*