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 2014/06/20 17:48:12 UTC

svn commit: r1604193 - in /jena/Experimental/jena-fuseki2/src: main/java/org/apache/jena/fuseki/ main/java/org/apache/jena/fuseki/mgt/ test/java/org/apache/jena/fuseki/

Author: andy
Date: Fri Jun 20 15:48:12 2014
New Revision: 1604193

URL: http://svn.apache.org/r1604193
Log:
JENA-719 : Server uptime

Modified:
    jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/Fuseki.java
    jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/mgt/ActionServerStatus.java
    jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/mgt/JsonConst.java
    jena/Experimental/jena-fuseki2/src/test/java/org/apache/jena/fuseki/TestAdmin.java

Modified: jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/Fuseki.java
URL: http://svn.apache.org/viewvc/jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/Fuseki.java?rev=1604193&r1=1604192&r2=1604193&view=diff
==============================================================================
--- jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/Fuseki.java (original)
+++ jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/Fuseki.java Fri Jun 20 15:48:12 2014
@@ -18,6 +18,11 @@
 
 package org.apache.jena.fuseki ;
 
+import java.util.Calendar ;
+import java.util.GregorianCalendar ;
+import java.util.TimeZone ;
+import java.util.concurrent.TimeUnit ;
+
 import org.apache.jena.riot.RIOT ;
 import org.apache.jena.riot.stream.LocatorFTP ;
 import org.apache.jena.riot.stream.LocatorHTTP ;
@@ -31,6 +36,7 @@ import com.hp.hpl.jena.sparql.lib.Metada
 import com.hp.hpl.jena.sparql.mgt.SystemInfo ;
 import com.hp.hpl.jena.sparql.util.Context ;
 import com.hp.hpl.jena.sparql.util.MappingRegistry ;
+import com.hp.hpl.jena.sparql.util.Utils ;
 import com.hp.hpl.jena.tdb.TDB ;
 import com.hp.hpl.jena.tdb.transaction.TransactionManager ;
 
@@ -158,6 +164,31 @@ public class Fuseki {
     public static String DFT_FUSEKI_BASE = "." ;
     
     private static boolean            initialized       = false ;
+    
+    // Serevr start time and uptime.
+    private static final long startMillis = System.currentTimeMillis() ;
+    // Hide server locale
+    private static final Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("00:00")) ; 
+    static { cal.setTimeInMillis(startMillis) ; }  // Exactly the same start point!
+    
+    private static final String startDateTime = Utils.calendarToXSDDateTimeString(cal) ; 
+    
+    /** Return the number of milliseconds since the server started */  
+    public static long serverUptimeMillis() {
+        return System.currentTimeMillis() - startMillis ;
+    }
+    
+    /** Server uptime in seconds */ 
+    public static long serverUptimeSeconds() {
+        long x = System.currentTimeMillis() - startMillis ;
+        return TimeUnit.MILLISECONDS.toSeconds(x) ;
+    }
+    
+    /** XSD DateTime for when the server started */
+    public static String serverStartedAt() {
+        return startDateTime ;
+    }
+
 
     /**
      * Initialize an instance of the Fuseki server stack.

Modified: jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/mgt/ActionServerStatus.java
URL: http://svn.apache.org/viewvc/jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/mgt/ActionServerStatus.java?rev=1604193&r1=1604192&r2=1604193&view=diff
==============================================================================
--- jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/mgt/ActionServerStatus.java (original)
+++ jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/mgt/ActionServerStatus.java Fri Jun 20 15:48:12 2014
@@ -98,7 +98,11 @@ public class ActionServerStatus extends 
 
         builder
             .key(JsonConst.version).value(versionStr)
-            .key(JsonConst.built).value(builtDateStr) ;
+            .key(JsonConst.built).value(builtDateStr)
+            .key(JsonConst.startDT).value(Fuseki.serverStartedAt())
+            .key(JsonConst.uptime).value(Fuseki.serverUptimeSeconds())
+            ;
+            
     }
 
     private void describeDataset(JsonBuilder builder) {

Modified: jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/mgt/JsonConst.java
URL: http://svn.apache.org/viewvc/jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/mgt/JsonConst.java?rev=1604193&r1=1604192&r2=1604193&view=diff
==============================================================================
--- jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/mgt/JsonConst.java (original)
+++ jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/mgt/JsonConst.java Fri Jun 20 15:48:12 2014
@@ -27,6 +27,8 @@ public class JsonConst
     public static final String finished     = "finished" ;
     public static final String started      = "started" ;
 
+    public static final String uptime       = "uptime" ;
+    public static final String startDT      = "startDateTime" ;
     public static final String server       = "server" ;
     public static final String port         = "port" ;
     public static final String hostname     = "hostname" ;

Modified: jena/Experimental/jena-fuseki2/src/test/java/org/apache/jena/fuseki/TestAdmin.java
URL: http://svn.apache.org/viewvc/jena/Experimental/jena-fuseki2/src/test/java/org/apache/jena/fuseki/TestAdmin.java?rev=1604193&r1=1604192&r2=1604193&view=diff
==============================================================================
--- jena/Experimental/jena-fuseki2/src/test/java/org/apache/jena/fuseki/TestAdmin.java (original)
+++ jena/Experimental/jena-fuseki2/src/test/java/org/apache/jena/fuseki/TestAdmin.java Fri Jun 20 15:48:12 2014
@@ -21,8 +21,6 @@ package org.apache.jena.fuseki;
 import static org.apache.jena.fuseki.ServerTest.datasetPath ;
 import static org.apache.jena.fuseki.ServerTest.urlRoot ;
 import static org.apache.jena.fuseki.mgt.MgtConst.* ;
-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 ;
@@ -48,6 +46,7 @@ import org.apache.jena.atlas.junit.BaseT
 import org.apache.jena.atlas.lib.Lib ;
 import org.apache.jena.atlas.web.HttpException ;
 import org.apache.jena.atlas.web.TypedInputStream ;
+import org.apache.jena.fuseki.mgt.JsonConst ;
 import org.apache.jena.riot.WebContent ;
 import org.apache.jena.riot.web.HttpOp ;
 import org.apache.jena.riot.web.HttpResponseHandler ;
@@ -91,13 +90,18 @@ public class TestAdmin extends BaseTest 
     // --- Server status 
     
     @Test public void server_1() {
-        execHttpGet(ServerTest.urlRoot+"$/"+opServer) ;
+        JsonValue jv = httpGetJson(ServerTest.urlRoot+"$/"+opServer) ;
+        JsonObject obj = jv.getAsObject() ;
+        assertTrue(obj.hasKey(JsonConst.admin)) ;
+        assertTrue(obj.hasKey(JsonConst.datasets)) ;
+        assertTrue(obj.hasKey(JsonConst.uptime)) ;
+        assertTrue(obj.hasKey(JsonConst.startDT)) ;
     }
 
     @Test public void server_2() {
         execHttpPost(ServerTest.urlRoot+"$/"+opServer, null) ;
     }
-
+    
     // --- List all datasets
     
     @Test public void list_datasets_1() {