jena-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From a...@apache.org
Subject [1/9] jena git commit: Split ServerTest into ServerCtl and ServerTestData.
Date Tue, 18 Oct 2016 09:20:22 GMT
Repository: jena
Updated Branches:
  refs/heads/master b5d0c49d6 -> 0d5629478


Split ServerTest into ServerCtl and ServerTestData.



Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/6d63d21d
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/6d63d21d
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/6d63d21d

Branch: refs/heads/master
Commit: 6d63d21dbf6b2163a1e7ad79aee87b0bcb7c90f9
Parents: be13685
Author: Andy Seaborne <andy@apache.org>
Authored: Sat Oct 15 18:29:30 2016 +0100
Committer: Andy Seaborne <andy@apache.org>
Committed: Sat Oct 15 18:34:51 2016 +0100

----------------------------------------------------------------------
 .../java/org/apache/jena/fuseki/ServerCtl.java  | 167 +++++++++++++++++--
 .../java/org/apache/jena/fuseki/ServerTest.java | 130 ---------------
 .../org/apache/jena/fuseki/ServerTestData.java  |  45 +++++
 .../java/org/apache/jena/fuseki/TS_Fuseki.java  |   2 +-
 .../java/org/apache/jena/fuseki/TestAuth.java   |   3 +-
 .../java/org/apache/jena/fuseki/TestQuery.java  |  89 +++++-----
 .../apache/jena/fuseki/TestSPARQLProtocol.java  |  61 +++----
 .../fuseki/http/TestDatasetAccessorHTTP.java    | 133 +++++++--------
 .../http/TestDatasetGraphAccessorHTTP.java      |   6 +-
 .../org/apache/jena/fuseki/http/TestHttpOp.java |  18 +-
 10 files changed, 349 insertions(+), 305 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/6d63d21d/jena-fuseki1/src/test/java/org/apache/jena/fuseki/ServerCtl.java
----------------------------------------------------------------------
diff --git a/jena-fuseki1/src/test/java/org/apache/jena/fuseki/ServerCtl.java b/jena-fuseki1/src/test/java/org/apache/jena/fuseki/ServerCtl.java
index da957a4..2c91bd5 100644
--- a/jena-fuseki1/src/test/java/org/apache/jena/fuseki/ServerCtl.java
+++ b/jena-fuseki1/src/test/java/org/apache/jena/fuseki/ServerCtl.java
@@ -18,39 +18,113 @@
 
 package org.apache.jena.fuseki;
 
+import static org.apache.jena.fuseki.ServerCtl.ServerScope.CLASS ;
+import static org.apache.jena.fuseki.ServerCtl.ServerScope.SUITE ;
+import static org.apache.jena.fuseki.ServerCtl.ServerScope.TEST ;
+
+import java.io.IOException ;
+import java.net.ServerSocket ;
+import java.util.concurrent.atomic.AtomicInteger ;
+
 import org.apache.http.client.HttpClient ;
 import org.apache.http.impl.client.CloseableHttpClient ;
 import org.apache.jena.atlas.io.IO ;
+import org.apache.jena.fuseki.server.DatasetRegistry ;
 import org.apache.jena.riot.web.HttpOp ;
+import org.apache.jena.sparql.core.DatasetGraph ;
+import org.apache.jena.sparql.core.DatasetGraphFactory ;
+import org.apache.jena.sparql.modify.request.Target ;
+import org.apache.jena.sparql.modify.request.UpdateDrop ;
+import org.apache.jena.system.Txn ;
+import org.apache.jena.update.Update ;
+import org.apache.jena.update.UpdateExecutionFactory ;
+import org.apache.jena.update.UpdateProcessor ;
 
+/**
+ * Manage a single server for use wth tests. It supports three modes:
+ * <ul>
+ * <li>One server for a whole test suite
+ * <li>One server per test class
+ * <li>One server per individual test
+ * </ul>
+ * One server per individual test can be troublesome due to connections not closing down
+ * fast enough (left in TCP state {@code TIME_WAIT} which is 2 minutes) and also can be slow.
+ * One server per test class is a good compromise. 
+ * <p> The data in the server is always reseet between tests.
+ * <p>
+ * Using a connection pooling HttpClient (see {@link HttpOp#createPoolingHttpClient()}) is
important,
+ * both for test performance and for reducing the TCP connection load on the operarting system.
 
+ * <p>
+ * Usage:
+ * </p>
+ * <p>
+ * In the test suite, put:
+ * 
+ * <pre>
+ *  {@literal @BeforeClass} static public void beforeSuiteClass() { ServerCtl.ctlBeforeTestSuite();
} 
+ *  {@literal @AfterClass}  static public void afterSuiteClass()  { ServerCtl.ctlAfterTestSuite();
}
+ * </pre>
+ * <p>
+ * In the test class, put:
+ * <pre>
+ * {@literal @BeforeClass} public static void ctlBeforeClass() { ServerCtl.ctlBeforeClass();
}
+ * {@literal @AfterClass}  public static void ctlAfterClass()  { ServerCtl.ctlAfterClass();
}
+ * {@literal @Before}      public void ctlBeforeTest()         { ServerCtl.ctlBeforeTest();
}
+ * {@literal @After}       public void ctlAfterTest()          { ServerCtl.ctlAfterTest();
}
+ * </pre>
+ */
 public class ServerCtl {
     static { Fuseki.init(); }
-    
-    /* Put this in each test class using the Fuseki server:
+
+    /* Cut&Paste versions:
+
+    Test suite (TS_*)
+    @BeforeClass static public void beforeSuiteClass() { ServerCtl.ctlBeforeTestSuite();
} 
+    @AfterClass  static public void afterSuiteClass()  { ServerCtl.ctlAfterTestSuite(); }
+
+    Test class (Test*)
     @BeforeClass public static void ctlBeforeClass() { ServerCtl.ctlBeforeClass(); }
     @AfterClass  public static void ctlAfterClass()  { ServerCtl.ctlAfterClass(); }
     @Before      public void ctlBeforeTest()         { ServerCtl.ctlBeforeTest(); }
-    @After       public void ctlAfterTest()          { ServerCtl.ctlAfterTest(); } 
+    @After       public void ctlAfterTest()          { ServerCtl.ctlAfterTest(); }
+     
     */
     
     static HttpClient defaultHttpClient = HttpOp.getDefaultHttpClient();
 
-    // 2 choices: server over whole test suite or server over each test class.
-    // Preferred "true" - stop-start server between test classes.
     // Note: it is import to cleanly close a PoolingHttpClient across server restarts
-    // otherwise the pooled connections remian for the old server. 
+    // otherwise the pooled connections remain for the old server. 
+    
+    /*package : for import static */ enum ServerScope { SUITE, CLASS, TEST }
+    private static ServerScope serverScope = ServerScope.CLASS ;
+    private static int currentPort = choosePort() ;
+    
+    public static int port() {
+        return currentPort ;
+    }
+
+    // Whether to use a transaction on the dataset or to use SPARQL Update. 
+    static boolean CLEAR_DSG_DIRECTLY = true ;
+    static private DatasetGraph dsgTesting ;
+    
+    // Abstraction that runs a SPARQL server for tests.
+    public static final String urlRoot()        { return "http://localhost:"+port()+"/" ;
}
+    public static final String datasetPath()    { return "/dataset" ; }
+    public static final String serviceUpdate()  { return "http://localhost:"+port()+datasetPath()+"/update"
; } 
+    public static final String serviceQuery()   { return "http://localhost:"+port()+datasetPath()+"/query"
; }
+    public static final String serviceREST()    { return "http://localhost:"+port()+datasetPath()+"/data"
; }
+    
     
-    static final boolean SERVER_PER_CLASS = true ;  
     public static void ctlBeforeTestSuite() {
-        if ( ! SERVER_PER_CLASS ) {
+        if ( serverScope == SUITE  ) {
             setPoolingHttpClient() ;
-            ServerTest.allocServer();
+            allocServer();
         }
     }
     
     public static void ctlAfterTestSuite()  {
-        if ( ! SERVER_PER_CLASS ) {
-            ServerTest.freeServer();
+        if ( serverScope == SUITE  ) {
+            freeServer();
             resetDefaultHttpClient() ;
         }
     }
@@ -59,9 +133,9 @@ public class ServerCtl {
      * Setup for the tests by allocating a Fuseki instance to work with
      */
     public static void ctlBeforeClass() {
-        if ( SERVER_PER_CLASS ) {
+        if ( serverScope == CLASS  ) {
             setPoolingHttpClient() ;
-            ServerTest.allocServer();
+            allocServer();
         }
     }
     
@@ -69,8 +143,8 @@ public class ServerCtl {
      * Clean up after tests by de-allocating the Fuseki instance
      */
     public static void ctlAfterClass() {
-        if ( SERVER_PER_CLASS ) {
-            ServerTest.freeServer();
+        if ( serverScope == CLASS  ) {
+            freeServer();
             resetDefaultHttpClient() ;
         }
     }
@@ -79,13 +153,21 @@ public class ServerCtl {
      * Placeholder.
      */
     public static void ctlBeforeTest() {
+        if ( serverScope == TEST  ) {
+            setPoolingHttpClient() ;
+            allocServer();
+        }
     }
 
     /**
      * Clean up after each test by resetting the Fuseki dataset
      */
     public static void ctlAfterTest() {
-        ServerTest.resetServer();
+        if ( serverScope == TEST  ) {
+            freeServer();
+            resetDefaultHttpClient() ;
+        } else
+            resetServer();
     }
 
     /** Set a PoolingHttpClient */
@@ -105,4 +187,57 @@ public class ServerCtl {
             IO.close((CloseableHttpClient)hc) ;
         HttpOp.setDefaultHttpClient(newHttpClient) ;
     }
+    
+    @SuppressWarnings("deprecation")
+    private static EmbeddedFusekiServer1 server = null ;
+    
+    // reference count of start/stop server
+    private static AtomicInteger countServer = new AtomicInteger() ; 
+    
+    /*package*/ static void allocServer() {
+        if ( countServer.getAndIncrement() == 0 )
+            setupServer() ;
+    }
+    
+    /*package*/ static void freeServer() {
+        if ( countServer.decrementAndGet() == 0 )
+            teardownServer() ;
+    }
+    
+    @SuppressWarnings("deprecation")
+    protected static void setupServer() {
+        dsgTesting = DatasetGraphFactory.createTxnMem() ;
+        server = EmbeddedFusekiServer1.create(currentPort, dsgTesting, datasetPath()) ;
+        server.start() ;
+    }
+    
+    @SuppressWarnings("deprecation")
+    protected static void teardownServer() {
+        DatasetRegistry.get().clear() ;
+        if ( server != null )
+            server.stop() ;
+        server = null ;
+    }
+
+    /*package*/ static void resetServer() {
+        if (countServer.get() == 0)  
+            throw new RuntimeException("No server started!");
+        if ( CLEAR_DSG_DIRECTLY ) {
+            Txn.executeWrite(dsgTesting, ()->dsgTesting.clear()) ;   
+        } else {
+            Update clearRequest = new UpdateDrop(Target.ALL) ;
+            UpdateProcessor proc = UpdateExecutionFactory.createRemote(clearRequest, serviceUpdate())
;
+            try {proc.execute() ; }
+            catch (Throwable e) {e.printStackTrace(); throw e;}
+        }
+    }
+    
+    /** Choose an unused port for a server to listen on */
+    public static int choosePort() {
+        try (ServerSocket s = new ServerSocket(0)) {
+            return s.getLocalPort();
+        } catch (IOException ex) {
+            throw new FusekiException("Failed to find a port for tests!");
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/6d63d21d/jena-fuseki1/src/test/java/org/apache/jena/fuseki/ServerTest.java
----------------------------------------------------------------------
diff --git a/jena-fuseki1/src/test/java/org/apache/jena/fuseki/ServerTest.java b/jena-fuseki1/src/test/java/org/apache/jena/fuseki/ServerTest.java
deleted file mode 100644
index 38b51bb..0000000
--- a/jena-fuseki1/src/test/java/org/apache/jena/fuseki/ServerTest.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.fuseki;
-
-import java.io.IOException ;
-import java.net.ServerSocket ;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import org.apache.jena.fuseki.server.DatasetRegistry ;
-import org.apache.jena.graph.Graph ;
-import org.apache.jena.graph.Node ;
-import org.apache.jena.graph.NodeFactory ;
-import org.apache.jena.rdf.model.Model ;
-import org.apache.jena.rdf.model.ModelFactory ;
-import org.apache.jena.sparql.core.DatasetGraph ;
-import org.apache.jena.sparql.core.DatasetGraphFactory ;
-import org.apache.jena.sparql.modify.request.Target ;
-import org.apache.jena.sparql.modify.request.UpdateDrop ;
-import org.apache.jena.sparql.sse.SSE ;
-import org.apache.jena.system.Txn ;
-import org.apache.jena.update.Update ;
-import org.apache.jena.update.UpdateExecutionFactory ;
-import org.apache.jena.update.UpdateProcessor ;
-
-/** Manage a server for testing.
- * Example for one server per test suite: 
- * <pre>
-    \@BeforeClass public static void beforeClass() { ServerTest.allocServer() ; }
-    \@AfterClass  public static void afterClass()  { ServerTest.freeServer() ; }
-    \@After       public void after()              { ServerTest.resetServer() ; }
-    </pre>
- */
-public class ServerTest
-{
-    static { Fuseki.init(); }
-    
-    // Abstraction that runs a SPARQL server for tests.
-    public static final int port             = choosePort() ;   // Different to the Fuseki2
test ports.
-    public static final String urlRoot       = "http://localhost:"+port+"/" ;
-    public static final String datasetPath   = "/dataset" ;
-    public static final String serviceUpdate = "http://localhost:"+port+datasetPath+"/update"
; 
-    public static final String serviceQuery  = "http://localhost:"+port+datasetPath+"/query"
; 
-    public static final String serviceREST   = "http://localhost:"+port+datasetPath+"/data"
; 
-    
-    public static final String gn1       = "http://graph/1" ;
-    public static final String gn2       = "http://graph/2" ;
-    public static final String gn99      = "http://graph/99" ;
-    
-    public static final Node n1          = NodeFactory.createURI("http://graph/1") ;
-    public static final Node n2          = NodeFactory.createURI("http://graph/2") ;
-    public static final Node n99         = NodeFactory.createURI("http://graph/99") ;
-    
-    public static final Graph graph1     = SSE.parseGraph("(base <http://example/>
(graph (<x> <p> 1)))") ;
-    public static final Graph graph2     = SSE.parseGraph("(base <http://example/>
(graph (<x> <p> 2)))") ;
-    
-    public static final Model model1     = ModelFactory.createModelForGraph(graph1) ;
-    public static final Model model2     = ModelFactory.createModelForGraph(graph2) ;
-    
-    @SuppressWarnings("deprecation")
-    private static EmbeddedFusekiServer1 server = null ;
-    
-    // reference count of start/stop server
-    private static AtomicInteger countServer = new AtomicInteger() ; 
-    
-    /*package*/ static void allocServer() {
-        if ( countServer.getAndIncrement() == 0 )
-            setupServer() ;
-    }
-    
-    /*package*/ static void freeServer() {
-        if ( countServer.decrementAndGet() == 0 )
-            teardownServer() ;
-    }
-    
-    // Whether to use a transaction on the dataset or to use SPARQL Update. 
-    static boolean CLEAR_DSG_DIRECTLY = true ;
-    static private DatasetGraph dsgTesting ;
-    
-    @SuppressWarnings("deprecation")
-    protected static void setupServer() {
-        dsgTesting = DatasetGraphFactory.createTxnMem() ;
-        server = EmbeddedFusekiServer1.create(port, dsgTesting, datasetPath) ;
-        server.start() ;
-    }
-    
-    @SuppressWarnings("deprecation")
-    protected static void teardownServer() {
-        DatasetRegistry.get().clear() ;
-        if ( server != null )
-            server.stop() ;
-        server = null ;
-    }
-
-    /*package*/ static void resetServer() {
-        if (countServer.get() == 0)  
-            throw new RuntimeException("No server started!");
-        if ( CLEAR_DSG_DIRECTLY ) {
-            Txn.executeWrite(dsgTesting, ()->dsgTesting.clear()) ;   
-        } else {
-            Update clearRequest = new UpdateDrop(Target.ALL) ;
-            UpdateProcessor proc = UpdateExecutionFactory.createRemote(clearRequest, ServerTest.serviceUpdate)
;
-            try {proc.execute() ; }
-            catch (Throwable e) {e.printStackTrace(); throw e;}
-        }
-    }
-    
-    static int choosePort() {
-        try (ServerSocket s = new ServerSocket(0)) {
-            return s.getLocalPort();
-        } catch (IOException ex) {
-            throw new FusekiException("Failed to find a port for tests!");
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jena/blob/6d63d21d/jena-fuseki1/src/test/java/org/apache/jena/fuseki/ServerTestData.java
----------------------------------------------------------------------
diff --git a/jena-fuseki1/src/test/java/org/apache/jena/fuseki/ServerTestData.java b/jena-fuseki1/src/test/java/org/apache/jena/fuseki/ServerTestData.java
new file mode 100644
index 0000000..ad4c937
--- /dev/null
+++ b/jena-fuseki1/src/test/java/org/apache/jena/fuseki/ServerTestData.java
@@ -0,0 +1,45 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.fuseki;
+
+import org.apache.jena.graph.Graph ;
+import org.apache.jena.graph.Node ;
+import org.apache.jena.graph.NodeFactory ;
+import org.apache.jena.rdf.model.Model ;
+import org.apache.jena.rdf.model.ModelFactory ;
+import org.apache.jena.sparql.sse.SSE ;
+
+/** Data for testing */
+public class ServerTestData
+{
+    public static final String gn1       = "http://graph/1" ;
+    public static final String gn2       = "http://graph/2" ;
+    public static final String gn99      = "http://graph/99" ;
+    
+    public static final Node n1          = NodeFactory.createURI("http://graph/1") ;
+    public static final Node n2          = NodeFactory.createURI("http://graph/2") ;
+    public static final Node n99         = NodeFactory.createURI("http://graph/99") ;
+    
+    public static final Graph graph1     = SSE.parseGraph("(base <http://example/>
(graph (<x> <p> 1)))") ;
+    public static final Graph graph2     = SSE.parseGraph("(base <http://example/>
(graph (<x> <p> 2)))") ;
+    
+    public static final Model model1     = ModelFactory.createModelForGraph(graph1) ;
+    public static final Model model2     = ModelFactory.createModelForGraph(graph2) ;
+}
+    

http://git-wip-us.apache.org/repos/asf/jena/blob/6d63d21d/jena-fuseki1/src/test/java/org/apache/jena/fuseki/TS_Fuseki.java
----------------------------------------------------------------------
diff --git a/jena-fuseki1/src/test/java/org/apache/jena/fuseki/TS_Fuseki.java b/jena-fuseki1/src/test/java/org/apache/jena/fuseki/TS_Fuseki.java
index 8cfe649..10ef87a 100644
--- a/jena-fuseki1/src/test/java/org/apache/jena/fuseki/TS_Fuseki.java
+++ b/jena-fuseki1/src/test/java/org/apache/jena/fuseki/TS_Fuseki.java
@@ -36,7 +36,7 @@ import org.junit.runners.Suite ;
     , TestAuth.class
 })
 
-public class TS_Fuseki extends ServerTest
+public class TS_Fuseki extends ServerTestData
 {
     @BeforeClass
     static public void beforeClass() {

http://git-wip-us.apache.org/repos/asf/jena/blob/6d63d21d/jena-fuseki1/src/test/java/org/apache/jena/fuseki/TestAuth.java
----------------------------------------------------------------------
diff --git a/jena-fuseki1/src/test/java/org/apache/jena/fuseki/TestAuth.java b/jena-fuseki1/src/test/java/org/apache/jena/fuseki/TestAuth.java
index a2e9928..27cb936 100644
--- a/jena-fuseki1/src/test/java/org/apache/jena/fuseki/TestAuth.java
+++ b/jena-fuseki1/src/test/java/org/apache/jena/fuseki/TestAuth.java
@@ -68,7 +68,7 @@ import org.junit.Test ;
 public class TestAuth {
     // Use different port etc because sometimes the previous testing servers
     // don't release ports fast enough (OS issue / Linux)
-    public static final int authPort             = ServerTest.choosePort() ;
+    public static final int authPort             = ServerCtl.choosePort() ;
     public static final String authUrlRoot       = "http://localhost:"+authPort+"/" ;
     public static final String authDatasetPath   = "/authDataset" ;
     public static final String authServiceUpdate = "http://localhost:"+authPort+authDatasetPath+"/update"
; 
@@ -98,7 +98,6 @@ public class TestAuth {
         LogCtl.setLevel("org.eclipse.jetty", "WARN");
 
         DatasetGraph dsg = DatasetGraphFactory.create();
-        // This must agree with ServerTest
         ServerConfig conf = FusekiConfig.defaultConfiguration(authDatasetPath, dsg, true,
true);
         conf.port = authPort ;
         conf.pagesPort = authPort ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6d63d21d/jena-fuseki1/src/test/java/org/apache/jena/fuseki/TestQuery.java
----------------------------------------------------------------------
diff --git a/jena-fuseki1/src/test/java/org/apache/jena/fuseki/TestQuery.java b/jena-fuseki1/src/test/java/org/apache/jena/fuseki/TestQuery.java
index 7124592..894f3bc 100644
--- a/jena-fuseki1/src/test/java/org/apache/jena/fuseki/TestQuery.java
+++ b/jena-fuseki1/src/test/java/org/apache/jena/fuseki/TestQuery.java
@@ -18,83 +18,74 @@
 
 package org.apache.jena.fuseki;
 
+import static org.apache.jena.fuseki.ServerCtl.serviceQuery ;
+import static org.apache.jena.fuseki.ServerTestData.gn1 ;
+import static org.apache.jena.fuseki.ServerTestData.model1 ;
+import static org.apache.jena.fuseki.ServerTestData.model2 ;
+
 import java.io.IOException ;
 import java.net.HttpURLConnection ;
 import java.net.URL ;
 
-import static org.apache.jena.fuseki.ServerTest.* ;
-import org.junit.AfterClass ;
-import org.junit.Assert ;
-import org.junit.BeforeClass ;
-import org.junit.Test ;
 import org.apache.jena.atlas.junit.BaseTest ;
 import org.apache.jena.query.* ;
 import org.apache.jena.sparql.core.Var ;
 import org.apache.jena.sparql.engine.binding.Binding ;
-import org.apache.jena.sparql.sse.Item ;
-import org.apache.jena.sparql.sse.SSE ;
-import org.apache.jena.sparql.sse.builders.BuilderResultSet ;
 import org.apache.jena.sparql.util.Convert ;
+import org.junit.* ;
+import org.junit.Test ;
 
 public class TestQuery extends BaseTest 
 {
-    protected static ResultSet rs1 = null ; 
-    static {
-        Item item = SSE.parseItem("(resultset (?s ?p ?o) (row (?s <x>)(?p <p>)(?o
1)))") ;
-        rs1 = BuilderResultSet.build(item) ;
-    }
+    @BeforeClass public static void ctlBeforeClass() { ServerCtl.ctlBeforeClass(); }
+    @AfterClass  public static void ctlAfterClass()  { ServerCtl.ctlAfterClass(); }
+    @Before      public void ctlBeforeTest()         { ServerCtl.ctlBeforeTest(); }
+    @After       public void ctlAfterTest()          { ServerCtl.ctlAfterTest(); }
     
-    // DRY - test protocol?
-    @BeforeClass public static void beforeClass() {
-        ServerTest.allocServer() ;
-        DatasetAccessor du = DatasetAccessorFactory.createHTTP(serviceREST) ;
+    @Before public void beforeClass() {
+        DatasetAccessor du = DatasetAccessorFactory.createHTTP(ServerCtl.serviceREST()) ;
         du.putModel(model1) ;
         du.putModel(gn1, model2) ;
     }
     
-    @AfterClass public static void afterClass() {
-        ServerTest.freeServer() ;
-    }
-    
-    @Test public void query_01()
-    {
+    @Test
+    public void query_01() {
         execQuery("SELECT * {?s ?p ?o}", 1) ;
     }
-    
-    @Test public void query_recursive_01()
-    {
-        String query = "SELECT * WHERE { SERVICE <" + serviceQuery + "> { ?s ?p ?o
. BIND(?o AS ?x) } }";
-        try(QueryExecution qExec = QueryExecutionFactory.sparqlService(serviceQuery, query))
{
-            ResultSet rs = qExec.execSelect();
-            
-            Var x = Var.alloc("x");
+
+    @Test
+    public void query_recursive_01() {
+        String query = "SELECT * WHERE { SERVICE <" + serviceQuery() + "> { ?s ?p ?o
. BIND(?o AS ?x) } }" ;
+        try (QueryExecution qExec = QueryExecutionFactory.sparqlService(serviceQuery(), query))
{
+            ResultSet rs = qExec.execSelect() ;
+
+            Var x = Var.alloc("x") ;
             while (rs.hasNext()) {
-                Binding b = rs.nextBinding();
-                Assert.assertNotNull(b.get(x));
+                Binding b = rs.nextBinding() ;
+                Assert.assertNotNull(b.get(x)) ;
             }
         }
     }
-    
-    @Test public void query_with_params_01()
-    {
-        String query = "ASK { }";
-        try(QueryExecution qExec = QueryExecutionFactory.sparqlService(serviceQuery + "?output=json",
query)) {
-            boolean result = qExec.execAsk();
-            Assert.assertTrue(result);
+
+    @Test
+    public void query_with_params_01() {
+        String query = "ASK { }" ;
+        try (QueryExecution qExec = QueryExecutionFactory.sparqlService(serviceQuery() +
"?output=json", query)) {
+            boolean result = qExec.execAsk() ;
+            Assert.assertTrue(result) ;
         }
     }
-    
-    @Test public void request_id_header_01() throws IOException
-    {
+
+    @Test
+    public void request_id_header_01() throws IOException {
         String qs = Convert.encWWWForm("ASK{}") ;
-        URL u = new URL(serviceQuery+"?query="+qs);
-        HttpURLConnection conn = (HttpURLConnection) u.openConnection();
-        Assert.assertTrue(conn.getHeaderField("Fuseki-Request-ID") != null);
+        URL u = new URL(serviceQuery() + "?query=" + qs) ;
+        HttpURLConnection conn = (HttpURLConnection)u.openConnection() ;
+        Assert.assertTrue(conn.getHeaderField("Fuseki-Request-ID") != null) ;
     }
 
-    private void execQuery(String queryString, int exceptedRowCount)
-    {
-        QueryExecution qExec = QueryExecutionFactory.sparqlService(serviceQuery, queryString)
;
+    private void execQuery(String queryString, int exceptedRowCount) {
+        QueryExecution qExec = QueryExecutionFactory.sparqlService(serviceQuery(), queryString)
;
         ResultSet rs = qExec.execSelect() ;
         int x = ResultSetFormatter.consume(rs) ;
         assertEquals(exceptedRowCount, x) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/6d63d21d/jena-fuseki1/src/test/java/org/apache/jena/fuseki/TestSPARQLProtocol.java
----------------------------------------------------------------------
diff --git a/jena-fuseki1/src/test/java/org/apache/jena/fuseki/TestSPARQLProtocol.java b/jena-fuseki1/src/test/java/org/apache/jena/fuseki/TestSPARQLProtocol.java
index b58d8db..e377be8 100644
--- a/jena-fuseki1/src/test/java/org/apache/jena/fuseki/TestSPARQLProtocol.java
+++ b/jena-fuseki1/src/test/java/org/apache/jena/fuseki/TestSPARQLProtocol.java
@@ -18,7 +18,7 @@
 
 package org.apache.jena.fuseki;
 
-import static org.apache.jena.fuseki.ServerTest.* ;
+import static org.apache.jena.fuseki.ServerTestData.* ;
 import org.apache.jena.atlas.junit.BaseTest ;
 import org.apache.jena.query.* ;
 import org.apache.jena.riot.WebContent ;
@@ -28,61 +28,62 @@ import org.apache.jena.update.UpdateExecutionFactory ;
 import org.apache.jena.update.UpdateFactory ;
 import org.apache.jena.update.UpdateProcessor ;
 import org.apache.jena.update.UpdateRequest ;
+import org.junit.After ;
 import org.junit.AfterClass ;
+import org.junit.Before ;
 import org.junit.BeforeClass ;
 import org.junit.Test ;
+import static org.apache.jena.fuseki.ServerCtl.* ;
 
 public class TestSPARQLProtocol extends BaseTest
 {
-    @BeforeClass public static void beforeClass()
-    {
-        ServerTest.allocServer() ;
+    @BeforeClass public static void ctlBeforeClass() { ServerCtl.ctlBeforeClass(); }
+    @AfterClass  public static void ctlAfterClass()  { ServerCtl.ctlAfterClass(); }
+    @Before      public void ctlBeforeTest()         { ServerCtl.ctlBeforeTest(); }
+    @After       public void ctlAfterTest()          { ServerCtl.ctlAfterTest(); }
+    
+    @Before
+    public void before() {
         // Load some data.
-        DatasetAccessor du = DatasetAccessorFactory.createHTTP(serviceREST) ;
+        DatasetAccessor du = DatasetAccessorFactory.createHTTP(serviceREST()) ;
         du.putModel(model1) ;
         du.putModel(gn1, model2) ;
     }
-    
-    @AfterClass public static void afterClass()
-    {
-        ServerTest.freeServer() ;
-    }
-    
-    static String query(String base, String queryString)
-    {
-        return base+"?query="+Convert.encWWWForm(queryString) ;
+
+    static String query(String base, String queryString) {
+        return base + "?query=" + Convert.encWWWForm(queryString) ;
     }
-    
-    @Test public void query_01()
-    {
+
+    @Test
+    public void query_01() {
         Query query = QueryFactory.create("SELECT * { ?s ?p ?o }") ;
-        QueryExecution qexec = QueryExecutionFactory.sparqlService(serviceQuery, query) ;
+        QueryExecution qexec = QueryExecutionFactory.sparqlService(serviceQuery(), query)
;
         ResultSet rs = qexec.execSelect() ;
         int x = ResultSetFormatter.consume(rs) ;
-        assertTrue( x != 0 ) ;
+        assertTrue(x != 0) ;
     }
 
-    @Test public void query_02()
-    {
+    @Test
+    public void query_02() {
         Query query = QueryFactory.create("SELECT * { ?s ?p ?o }") ;
-        QueryEngineHTTP engine = QueryExecutionFactory.createServiceRequest(serviceQuery,
query) ;
+        QueryEngineHTTP engine = QueryExecutionFactory.createServiceRequest(serviceQuery(),
query) ;
         engine.setSelectContentType(WebContent.contentTypeResultsJSON) ;
         ResultSet rs = engine.execSelect() ;
         int x = ResultSetFormatter.consume(rs) ;
-        assertTrue( x != 0 ) ;
+        assertTrue(x != 0) ;
     }
 
-    @Test public void update_01()
-    {
+    @Test
+    public void update_01() {
         UpdateRequest update = UpdateFactory.create("INSERT DATA {}") ;
-        UpdateProcessor proc = UpdateExecutionFactory.createRemote(update, serviceUpdate)
;
+        UpdateProcessor proc = UpdateExecutionFactory.createRemote(update, serviceUpdate())
;
         proc.execute() ;
     }
-    
-    @Test public void update_02()
-    {
+
+    @Test
+    public void update_02() {
         UpdateRequest update = UpdateFactory.create("INSERT DATA {}") ;
-        UpdateProcessor proc = UpdateExecutionFactory.createRemoteForm(update, serviceUpdate)
;
+        UpdateProcessor proc = UpdateExecutionFactory.createRemoteForm(update, serviceUpdate())
;
         proc.execute() ;
     }
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/6d63d21d/jena-fuseki1/src/test/java/org/apache/jena/fuseki/http/TestDatasetAccessorHTTP.java
----------------------------------------------------------------------
diff --git a/jena-fuseki1/src/test/java/org/apache/jena/fuseki/http/TestDatasetAccessorHTTP.java
b/jena-fuseki1/src/test/java/org/apache/jena/fuseki/http/TestDatasetAccessorHTTP.java
index 7b2e168..675eec5 100644
--- a/jena-fuseki1/src/test/java/org/apache/jena/fuseki/http/TestDatasetAccessorHTTP.java
+++ b/jena-fuseki1/src/test/java/org/apache/jena/fuseki/http/TestDatasetAccessorHTTP.java
@@ -18,12 +18,18 @@
 
 package org.apache.jena.fuseki.http;
 
-import static org.apache.jena.fuseki.ServerTest.* ;
+import static org.apache.jena.fuseki.ServerCtl.datasetPath ;
+import static org.apache.jena.fuseki.ServerCtl.port ;
+import static org.apache.jena.fuseki.ServerCtl.serviceREST ;
+import static org.apache.jena.fuseki.ServerTestData.gn1 ;
+import static org.apache.jena.fuseki.ServerTestData.gn2 ;
+import static org.apache.jena.fuseki.ServerTestData.gn99 ;
+import static org.apache.jena.fuseki.ServerTestData.model1 ;
+import static org.apache.jena.fuseki.ServerTestData.model2 ;
 
 import org.apache.jena.atlas.junit.BaseTest ;
 import org.apache.jena.atlas.web.HttpException ;
 import org.apache.jena.fuseki.ServerCtl ;
-import org.apache.jena.fuseki.ServerTest ;
 import org.apache.jena.query.DatasetAccessor ;
 import org.apache.jena.query.DatasetAccessorFactory ;
 import org.apache.jena.rdf.model.Model ;
@@ -32,87 +38,83 @@ import org.apache.jena.riot.web.HttpOp ;
 import org.apache.jena.web.HttpSC ;
 import org.junit.* ;
 
-
 public class TestDatasetAccessorHTTP extends BaseTest 
 {
-    static final String datasetURI_not_1    = "http://localhost:"+port+"/junk" ;
-    static final String datasetURI_not_2    = serviceREST+"/not" ;
-    static final String datasetURI_not_3    = "http://localhost:"+port+datasetPath+"/not/data"
;
-    
     @BeforeClass public static void ctlBeforeClass() { ServerCtl.ctlBeforeClass(); }
     @AfterClass  public static void ctlAfterClass()  { ServerCtl.ctlAfterClass(); }
     @Before      public void ctlBeforeTest()         { ServerCtl.ctlBeforeTest(); }
     @After       public void ctlAfterTest()          { ServerCtl.ctlAfterTest(); } 
     
-    @Test(expected=HttpException.class)
-    public void test_ds_1()
-    {
+    final String datasetURI_not_1    = "http://localhost:"+port()+"/junk" ;
+    final String datasetURI_not_2    = serviceREST()+"/not" ;
+    final String datasetURI_not_3    = "http://localhost:"+port()+datasetPath()+"/not/data"
;
+    
+    @Test(expected = HttpException.class)
+    public void test_ds_1() {
         // Can't GET the dataset service.
         try {
-            HttpOp.execHttpGet(serviceREST) ;
-        } catch (HttpException ex) {
+            HttpOp.execHttpGet(serviceREST()) ;
+        }
+        catch (HttpException ex) {
             assertTrue(HttpSC.isClientError(ex.getResponseCode())) ;
             throw ex ;
         }
     }
-    
-    @Test(expected=HttpException.class)
-    public void test_ds_2()
-    {
+
+    @Test(expected = HttpException.class)
+    public void test_ds_2() {
         try {
             HttpOp.execHttpGet(datasetURI_not_1) ;
-        } catch (HttpException ex) {
+        }
+        catch (HttpException ex) {
             assertEquals(HttpSC.NOT_FOUND_404, ex.getResponseCode()) ;
             throw ex ;
         }
     }
 
-    @Test(expected=HttpException.class)
-    public void test_ds_3()
-    {
+    @Test(expected = HttpException.class)
+    public void test_ds_3() {
         try {
             HttpOp.execHttpGet(datasetURI_not_2) ;
-        } catch (HttpException ex) {
+        }
+        catch (HttpException ex) {
             assertEquals(HttpSC.NOT_FOUND_404, ex.getResponseCode()) ;
             throw ex ;
         }
     }
 
     @Test
-    public void test_404_1()
-    {
+    public void test_404_1() {
         // Not the right service.
         DatasetAccessor du = DatasetAccessorFactory.createHTTP(datasetURI_not_1) ;
         Model graph = du.getModel(gn99) ;
-        assertNull(graph) ; 
+        assertNull(graph) ;
     }
 
     @Test
-    public void test_404_2()
-    {
+    public void test_404_2() {
         DatasetAccessor du = DatasetAccessorFactory.createHTTP(datasetURI_not_2) ;
         Model graph = du.getModel(gn99) ;
         assertNull(graph) ;
     }
 
     @Test
-    public void test_404_3()
-    {
+    public void test_404_3() {
         // Right service, wrong graph
-        DatasetAccessor du = DatasetAccessorFactory.createHTTP(serviceREST) ;
+        DatasetAccessor du = DatasetAccessorFactory.createHTTP(serviceREST()) ;
         Model graph = du.getModel(gn99) ;
         assertNull(graph) ;
     }
 
-    @Test public void head_01()
-    {
+    @Test
+    public void head_01() {
         DatasetAccessor du = create() ;
         boolean b = du.containsModel(gn1) ;
         assertFalse("Blank remote dataset as a named graph", b) ;
     }
 
-    @Test public void head_02()
-    {
+    @Test
+    public void head_02() {
         DatasetAccessor du = create() ;
         du.putModel(gn1, model1) ;
         boolean exists = du.containsModel(gn1) ;
@@ -126,36 +128,36 @@ public class TestDatasetAccessorHTTP extends BaseTest
         du.deleteModel(gn1) ;
     }
 
-    @Test public void get_01()
-    {
+    @Test
+    public void get_01() {
         DatasetAccessor du = create() ;
         Model graph = du.getModel() ;
         assertTrue(graph.isEmpty()) ;
     }
-    
-    @Test public void get_02()
-    {
+
+    @Test
+    public void get_02() {
         DatasetAccessor du = create() ;
         Model graph = du.getModel(gn1) ;
         assertNull(graph) ;
     }
 
-    @Test public void delete_01()
-    {
+    @Test
+    public void delete_01() {
         DatasetAccessor du = create() ;
         du.deleteDefault() ;
     }
 
-    @Test public void delete_02()
-    {
+    @Test
+    public void delete_02() {
         DatasetAccessor du = create() ;
         du.deleteModel(gn1) ;
         boolean exists = du.containsModel(gn1) ;
         assertFalse("Expected gn1 not to exist", exists) ;
     }
 
-    @Test public void put_01()
-    {
+    @Test
+    public void put_01() {
         DatasetAccessor du = create() ;
         du.putModel(model1) ;
         Model graph = du.getModel() ;
@@ -165,31 +167,31 @@ public class TestDatasetAccessorHTTP extends BaseTest
         graph = du.getModel() ;
         assertTrue(graph.isEmpty()) ;
     }
-    
-    @Test public void put_02()
-    {
+
+    @Test
+    public void put_02() {
         DatasetAccessor du = create() ;
         du.putModel(gn1, model1) ;
         boolean exists = du.containsModel(gn1) ;
         assertTrue(exists) ;
         exists = du.containsModel(gn2) ;
         assertFalse("Expected gn2 not to exist", exists) ;
-        
+
         Model graph = du.getModel() ;
         assertTrue(graph.isEmpty()) ;
         graph = du.getModel(gn1) ;
         assertTrue(graph.isIsomorphicWith(model1)) ;
-        
+
         du.deleteModel(gn1) ;
         exists = du.containsModel(gn1) ;
         assertFalse("Expected gn1 not to exist", exists) ;
-        
+
         graph = du.getModel(gn1) ;
         assertNull(graph) ;
     }
 
-    @Test public void put_03()
-    {
+    @Test
+    public void put_03() {
         DatasetAccessor du = create() ;
         du.putModel(model1) ;
         du.putModel(model2) ;  // PUT overwrites
@@ -202,17 +204,17 @@ public class TestDatasetAccessorHTTP extends BaseTest
         assertTrue(graph.isEmpty()) ;
     }
 
-    @Test public void post_01()
-    {
+    @Test
+    public void post_01() {
         DatasetAccessor du = create() ;
         du.putModel(model1) ;
         du.add(model2) ;  // POST appends
         Model graph = du.getModel() ;
-        
+
         Model graph3 = ModelFactory.createDefaultModel() ;
         graph3.add(model1) ;
         graph3.add(model2) ;
-        
+
         assertFalse(graph.isIsomorphicWith(model1)) ;
         assertFalse(graph.isIsomorphicWith(model2)) ;
         assertTrue(graph.isIsomorphicWith(graph3)) ;
@@ -222,17 +224,17 @@ public class TestDatasetAccessorHTTP extends BaseTest
         assertTrue(graph.isEmpty()) ;
     }
 
-    @Test public void post_02()
-    {
+    @Test
+    public void post_02() {
         DatasetAccessor du = create() ;
         du.add(model1) ;
         du.add(model2) ;
         Model graph = du.getModel() ;
-        
+
         Model graph3 = ModelFactory.createDefaultModel() ;
         graph3.add(model1) ;
         graph3.add(model2) ;
-        
+
         assertFalse(graph.isIsomorphicWith(model1)) ;
         assertFalse(graph.isIsomorphicWith(model2)) ;
         assertTrue(graph.isIsomorphicWith(graph3)) ;
@@ -241,9 +243,9 @@ public class TestDatasetAccessorHTTP extends BaseTest
         graph = du.getModel() ;
         assertTrue(graph.isEmpty()) ;
     }
-    
-    @Test public void clearup_1()
-    {
+
+    @Test
+    public void clearup_1() {
         DatasetAccessor du = create() ;
         du.deleteDefault() ;
         du.deleteModel(gn1) ;
@@ -251,8 +253,7 @@ public class TestDatasetAccessorHTTP extends BaseTest
         du.deleteModel(gn99) ;
     }
 
-    static DatasetAccessor create()
-    {
-        return DatasetAccessorFactory.createHTTP(ServerTest.serviceREST) ;
+    static DatasetAccessor create() {
+        return DatasetAccessorFactory.createHTTP(serviceREST()) ;
     }
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/6d63d21d/jena-fuseki1/src/test/java/org/apache/jena/fuseki/http/TestDatasetGraphAccessorHTTP.java
----------------------------------------------------------------------
diff --git a/jena-fuseki1/src/test/java/org/apache/jena/fuseki/http/TestDatasetGraphAccessorHTTP.java
b/jena-fuseki1/src/test/java/org/apache/jena/fuseki/http/TestDatasetGraphAccessorHTTP.java
index ef548d6..328c9e4 100644
--- a/jena-fuseki1/src/test/java/org/apache/jena/fuseki/http/TestDatasetGraphAccessorHTTP.java
+++ b/jena-fuseki1/src/test/java/org/apache/jena/fuseki/http/TestDatasetGraphAccessorHTTP.java
@@ -19,7 +19,6 @@
 package org.apache.jena.fuseki.http;
 
 import org.apache.jena.fuseki.ServerCtl ;
-import org.apache.jena.fuseki.ServerTest ;
 import org.apache.jena.web.AbstractTestDatasetGraphAccessor ;
 import org.apache.jena.web.DatasetGraphAccessor ;
 import org.apache.jena.web.DatasetGraphAccessorHTTP ;
@@ -36,8 +35,7 @@ public class TestDatasetGraphAccessorHTTP extends AbstractTestDatasetGraphAccess
     @After       public void ctlAfterTest()          { ServerCtl.ctlAfterTest(); } 
     
     @Override
-    protected DatasetGraphAccessor getDatasetUpdater()
-    {
-        return new DatasetGraphAccessorHTTP(ServerTest.serviceREST) ;
+    protected DatasetGraphAccessor getDatasetUpdater() {
+        return new DatasetGraphAccessorHTTP(ServerCtl.serviceREST()) ;
     }
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/6d63d21d/jena-fuseki1/src/test/java/org/apache/jena/fuseki/http/TestHttpOp.java
----------------------------------------------------------------------
diff --git a/jena-fuseki1/src/test/java/org/apache/jena/fuseki/http/TestHttpOp.java b/jena-fuseki1/src/test/java/org/apache/jena/fuseki/http/TestHttpOp.java
index ad3acc9..48b9b67 100644
--- a/jena-fuseki1/src/test/java/org/apache/jena/fuseki/http/TestHttpOp.java
+++ b/jena-fuseki1/src/test/java/org/apache/jena/fuseki/http/TestHttpOp.java
@@ -18,6 +18,11 @@
 
 package org.apache.jena.fuseki.http;
 
+import static org.apache.jena.fuseki.ServerCtl.serviceQuery ;
+import static org.apache.jena.fuseki.ServerCtl.serviceREST ;
+import static org.apache.jena.fuseki.ServerCtl.serviceUpdate ;
+import static org.apache.jena.fuseki.ServerCtl.urlRoot ;
+
 import java.io.IOException ;
 
 import org.apache.jena.atlas.io.IO ;
@@ -26,7 +31,6 @@ 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.ServerCtl ;
-import org.apache.jena.fuseki.ServerTest ;
 import org.apache.jena.riot.WebContent ;
 import org.apache.jena.riot.web.HttpOp ;
 import org.apache.jena.sparql.engine.http.Params ;
@@ -43,10 +47,10 @@ public class TestHttpOp extends BaseTest {
     @Before      public void ctlBeforeTest()         { ServerCtl.ctlBeforeTest(); }
     @After       public void ctlAfterTest()          { ServerCtl.ctlAfterTest(); } 
     
-    static String pingURL     = ServerTest.urlRoot + "ping.txt" ;
-    static String graphURL    = ServerTest.serviceREST + "?default" ;
-    static String queryURL    = ServerTest.serviceQuery ;
-    static String updateURL   = ServerTest.serviceUpdate ;
+    static String pingURL     = urlRoot() + "ping.txt" ;
+    static String graphURL    = serviceREST() + "?default" ;
+    static String queryURL    = serviceQuery() ;
+    static String updateURL   = serviceUpdate() ;
     static String simpleQuery = queryURL+"?query="+IRILib.encodeUriComponent("ASK{}") ;
     
     // Basic operations
@@ -59,7 +63,7 @@ public class TestHttpOp extends BaseTest {
     @Test(expected=HttpException.class) 
     public void httpGet_02() {
         try {
-            TypedInputStream in = HttpOp.execHttpGet(ServerTest.urlRoot+"does-not-exist")
;
+            TypedInputStream in = HttpOp.execHttpGet(urlRoot()+"does-not-exist") ;
             IO.close(in) ;
         } catch(HttpException ex) {
             assertEquals(HttpSC.NOT_FOUND_404, ex.getResponseCode()) ;
@@ -74,7 +78,7 @@ public class TestHttpOp extends BaseTest {
     }   
     
     @Test public void httpGet_04() {
-        String x = HttpOp.execHttpGetString(ServerTest.urlRoot+"does-not-exist") ;
+        String x = HttpOp.execHttpGetString(urlRoot()+"does-not-exist") ;
         assertNull(x) ;
     }
     


Mime
View raw message