From 562600f3861e3ea3169b53e54c6fc0e92118f09d Mon Sep 17 00:00:00 2001 From: ETj Date: Wed, 19 Oct 2011 18:28:19 +0200 Subject: [PATCH] Fixed configureLayer Improved base test. WIP --- .../rest/GeoServerRESTPublisher.java | 18 ++++---- .../rest/GeoserverRESTPublisherTest.java | 13 +++--- .../geoserver/rest/GeoserverRESTTest.java | 44 ++++++++++++++----- 3 files changed, 48 insertions(+), 27 deletions(-) diff --git a/src/main/java/it/geosolutions/geoserver/rest/GeoServerRESTPublisher.java b/src/main/java/it/geosolutions/geoserver/rest/GeoServerRESTPublisher.java index fe1d8e7..d5c0fed 100644 --- a/src/main/java/it/geosolutions/geoserver/rest/GeoServerRESTPublisher.java +++ b/src/main/java/it/geosolutions/geoserver/rest/GeoServerRESTPublisher.java @@ -220,7 +220,7 @@ public class GeoServerRESTPublisher { try { GSLayerEncoder layerEncoder = new GSLayerEncoder(); layerEncoder.addDefaultStyle(defaultStyle); - configureLayer(layerEncoder, layerName); + configureLayer(workspace, layerName, layerEncoder); } catch (Exception e) { LOGGER.warn("Error in publishing shapefile " + e.getMessage(), e); sent = false; @@ -326,7 +326,7 @@ public class GeoServerRESTPublisher { GSLayerEncoder layerEncoder = new GSLayerEncoder(); layerEncoder.addDefaultStyle(defaultStyle); - configured = configureLayer(layerEncoder, layername); + configured = configureLayer(workspace, layername, layerEncoder); if (!configured) { LOGGER.warn("Error in configuring (" + configuredResult + ") " @@ -399,7 +399,7 @@ public class GeoServerRESTPublisher { // config layer props (style, ...) GSLayerEncoder layerEncoder = new GSLayerEncoder(); layerEncoder.addDefaultStyle(defaultStyle); - configureLayer(layerEncoder, coverageName); + configureLayer(workspace, coverageName, layerEncoder); } catch (Exception e) { LOGGER.warn("Could not configure external GEOTiff:" + storeName, e); @@ -510,7 +510,7 @@ public class GeoServerRESTPublisher { String coverageName = covList.get(0).getName(); configureCoverage(coverageEncoder, store.getWorkspaceName(), storeName, coverageName); - configureLayer(layerEncoder, storeName); + configureLayer(workspace, storeName, layerEncoder); } catch (Exception e) { LOGGER.warn("Could not configure external mosaic:" + storeName, e); @@ -730,22 +730,24 @@ public class GeoServerRESTPublisher { * Allows to configure some layer attributes such as WmsPath and DefaultStyle * */ - public boolean configureLayer(final GSLayerEncoder layer, final String layerName) { + public boolean configureLayer(final String workspace, final String layerName, final GSLayerEncoder layer) { if (layer.isEmpty()) { return true; } - final String url = restURL + "/rest/layers/" + layerName; + String fqLayerName = workspace + ":" + layerName; + + final String url = restURL + "/rest/layers/" + fqLayerName; String layerXml = layer.toString(); String sendResult = HTTPUtils.putXml(url, layerXml, gsuser, gspass); if (sendResult != null) { if (LOGGER.isInfoEnabled()) { - LOGGER.info("Layer successfully configured: " + layerName); + LOGGER.info("Layer successfully configured: " + fqLayerName); } } else { - LOGGER.warn("Error configuring layer " + layerName + " (" + sendResult + ")"); + LOGGER.warn("Error configuring layer " + fqLayerName + " (" + sendResult + ")"); } return sendResult != null; diff --git a/src/test/java/it/geosolutions/geoserver/rest/GeoserverRESTPublisherTest.java b/src/test/java/it/geosolutions/geoserver/rest/GeoserverRESTPublisherTest.java index c712f1e..ce70bbd 100644 --- a/src/test/java/it/geosolutions/geoserver/rest/GeoserverRESTPublisherTest.java +++ b/src/test/java/it/geosolutions/geoserver/rest/GeoserverRESTPublisherTest.java @@ -344,11 +344,10 @@ public class GeoserverRESTPublisherTest extends GeoserverRESTTest { return; } - String ns = "it.geosolutions"; + String ws = "it.geosolutions"; String storeName = "resttestshp"; String layerName = "cities"; - final String styleName = "restteststyle"; { File sldFile = new ClassPathResource("testdata/restteststyle.sld").getFile(); @@ -371,10 +370,10 @@ public class GeoserverRESTPublisherTest extends GeoserverRESTTest { File zipFile = new ClassPathResource("testdata/resttestshp.zip").getFile(); // known state? - cleanupTestFT(layerName, ns, storeName); + cleanupTestFT(layerName, ws, storeName); // test insert - boolean published = publisher.publishShp(ns, storeName, layerName, zipFile, "EPSG:4326", styleName); + boolean published = publisher.publishShp(ws, storeName, layerName, zipFile, "EPSG:4326", styleName); assertTrue("publish() failed", published); assertTrue(existsLayer(layerName)); @@ -386,7 +385,7 @@ public class GeoserverRESTPublisherTest extends GeoserverRESTTest { GSLayerEncoder le = new GSLayerEncoder(); le.addDefaultStyle(styleName2); - publisher.configureLayer(le, layerName); + publisher.configureLayer(ws, layerName, le); { RESTLayer layer = reader.getLayer(layerName); @@ -396,9 +395,9 @@ public class GeoserverRESTPublisherTest extends GeoserverRESTTest { // remove layer and datastore - boolean ok = publisher.unpublishFeatureType(ns, storeName, layerName); + boolean ok = publisher.unpublishFeatureType(ws, storeName, layerName); assertFalse(existsLayer(layerName)); - boolean dsRemoved = publisher.removeDatastore(ns, storeName); + boolean dsRemoved = publisher.removeDatastore(ws, storeName); assertTrue("removeDatastore() failed", dsRemoved); } diff --git a/src/test/java/it/geosolutions/geoserver/rest/GeoserverRESTTest.java b/src/test/java/it/geosolutions/geoserver/rest/GeoserverRESTTest.java index 142ba6c..a7cb1b4 100644 --- a/src/test/java/it/geosolutions/geoserver/rest/GeoserverRESTTest.java +++ b/src/test/java/it/geosolutions/geoserver/rest/GeoserverRESTTest.java @@ -65,14 +65,22 @@ public abstract class GeoserverRESTTest extends TestCase { public static final GeoServerRESTPublisher publisher; private static boolean enabled = false; + private static Boolean existgs = null; static { - RESTURL = System.getProperty("resturl", "http://localhost:8080/geoserver"); - RESTUSER = System.getProperty("restuser", "admin"); - RESTPW = System.getProperty("restpw", "geoserver"); +// for (String propName : System.getProperties().stringPropertyNames()) { +// System.out.println("PROP " + propName); +// } + for (String envName : System.getenv().keySet()) { + System.out.println("ENVVAR " + envName + " = \""+System.getenv(envName)+"\""); + } + + RESTURL = getenv("gsmgr_resturl", "http://localhost:8080/geoserver"); + RESTUSER = getenv("gsmgr_restuser", "admin"); + RESTPW = getenv("gsmgr_restpw", "geoserver"); // These tests will destroy data, so let's make sure we do want to run them - enabled = System.getProperty("resttest", "false").equalsIgnoreCase("true"); + enabled = getenv("gsmgr_resttest", "false").equalsIgnoreCase("true"); if( ! enabled ) LOGGER.warn("Tests are disabled. Please read the documentation to enable them."); @@ -87,6 +95,13 @@ public abstract class GeoserverRESTTest extends TestCase { publisher = new GeoServerRESTPublisher(RESTURL, RESTUSER, RESTPW); } + private static String getenv(String envName, String envDefault) { + String env = System.getenv(envName); + String ret = System.getProperty(envName, env); + LOGGER.debug("env var " + envName + " is " + ret); + return ret != null? ret : envDefault; + } + public GeoserverRESTTest(String testName) { super(testName); } @@ -97,18 +112,23 @@ public abstract class GeoserverRESTTest extends TestCase { super.setUp(); if(enabled) { - if( ! reader.existGeoserver()) { - System.out.println(getClass().getSimpleName() + ": TESTS WILL BE SKIPPED SINCE NO GEOSERVER WAS FOUND AT " + RESTURL + " ("+ RESTUSER+":"+RESTPW+")"); - enabled = false; - } else { - System.out.println(getClass().getSimpleName() + ": using geoserver instance " + RESTUSER+":"+RESTPW+ " @ " + RESTURL); + if(existgs == null) { + existgs = reader.existGeoserver(); + if ( ! existgs ) { + LOGGER.error("TESTS WILL FAIL BECAUSE NO GEOSERVER WAS FOUND AT " + RESTURL + " ("+ RESTUSER+":"+RESTPW+")"); + } else { + LOGGER.info("Using geoserver instance " + RESTUSER+":"+RESTPW+ " @ " + RESTURL); + } } - } - if(enabled) + if ( ! existgs ) { + System.out.println("Failing test " + this.getClass().getSimpleName() + "::" + this.getName() + " : geoserver not found"); + fail("GeoServer not found"); + } System.out.println("\n-------------------> RUNNING TEST " + this.getName()); - else + } else { System.out.println("Skipping test " + this.getClass().getSimpleName() + "::" + this.getName()); + } } protected boolean enabled() {