/* * GeoServer-Manager - Simple Manager Library for GeoServer * * Copyright (C) 2007,2011 GeoSolutions S.A.S. * http://www.geo-solutions.it * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ package it.geosolutions.geoserver.rest.publisher; import it.geosolutions.geoserver.rest.GeoServerRESTPublisher.ParameterConfigure; import it.geosolutions.geoserver.rest.GeoserverRESTTest; import it.geosolutions.geoserver.rest.decoder.RESTCoverageStore; import it.geosolutions.geoserver.rest.encoder.GSLayerEncoder; import it.geosolutions.geoserver.rest.encoder.GSResourceEncoder.ProjectionPolicy; import it.geosolutions.geoserver.rest.encoder.coverage.GSImageMosaicEncoder; import it.geosolutions.geoserver.rest.encoder.metadata.GSDimensionInfoEncoder; import it.geosolutions.geoserver.rest.encoder.metadata.GSDimensionInfoEncoder.Presentation; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import org.apache.commons.httpclient.NameValuePair; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.core.io.ClassPathResource; /** * Testcase for creating postgis-based resources on geoserver. *

* Since these tests require a running postgis instance, this is more like integration tests.
* You may skip them by defining

 *        -DpgIgnore=true 
* When pgIgnore is defined that way, failing tests will not break * the build: they will be logged as errors instead. * *

* The target postgis instance can be customized by defining the following env vars:

* * @author Carlo Cancellieri - carlo.cancellieri@geo-solutions.it * * @see GeoserverRESTTest */ public class GeoserverRESTImageMosaicTest extends GeoserverRESTTest { private final static Logger LOGGER = LoggerFactory.getLogger(GeoserverRESTImageMosaicTest.class); public GeoserverRESTImageMosaicTest(String testName) { super(testName); } public void testCreateDeleteImageMosaicDatastore() { if (!enabled()) { return; } deleteAll(); final String wsName = "geosolutions"; final String coverageStoreName = "resttestImageMosaic"; final GSImageMosaicEncoder coverageEncoder = new GSImageMosaicEncoder(); /* * unused in mosaic creation * this is only useful if you want to modify an existing coverage: * publisher.configureCoverage(ce, wsname, csname); * or create a new one from an existing store: * publisher.createCoverage(ce, wsname, csname); */ coverageEncoder.setName("CoverageName"); coverageEncoder.setAllowMultithreading(true); coverageEncoder.setBackgroundValues(""); coverageEncoder.setFilter(""); coverageEncoder.setInputTransparentColor(""); coverageEncoder.setLatLonBoundingBox(-180, -90, 180, 90, "EPSG:4326"); coverageEncoder.setMaxAllowedTiles(6000); coverageEncoder.setNativeBoundingBox(-180, -90, 180, 90, "EPSG:4326"); coverageEncoder.setOutputTransparentColor(""); coverageEncoder.setProjectionPolicy(ProjectionPolicy.REPROJECT_TO_DECLARED); coverageEncoder.setSRS("EPSG:4326"); coverageEncoder.setSUGGESTED_TILE_SIZE("256,256"); coverageEncoder.setUSE_JAI_IMAGEREAD(true); // activate time final GSDimensionInfoEncoder time=new GSDimensionInfoEncoder(true); time.setPresentation(Presentation.LIST); // set time metadata coverageEncoder.setMetadata("time", time); // not active elevation coverageEncoder.setMetadata("elevation", new GSDimensionInfoEncoder()); assertTrue(publisher.createWorkspace(wsName)); LOGGER.info(coverageEncoder.toString()); final String styleName = "raster"; File sldFile; try { sldFile = new ClassPathResource("testdata/raster.sld").getFile(); // insert style assertTrue(publisher.publishStyle(sldFile)); } catch (IOException e1) { assertFalse(e1.getLocalizedMessage(),Boolean.FALSE); e1.printStackTrace(); } GSLayerEncoder layerEncoder=new GSLayerEncoder(); layerEncoder.setDefaultStyle(styleName); LOGGER.info(layerEncoder.toString()); // creation test RESTCoverageStore coverageStore =null; try { final File mosaicFile = new ClassPathResource("testdata/time_geotiff/").getFile(); if (!publisher.publishExternalMosaic(wsName,coverageStoreName,mosaicFile,coverageEncoder,layerEncoder)){ fail(); } coverageStore = reader.getCoverageStore(wsName,coverageStoreName); if (coverageStore==null){ LOGGER.error("*** coveragestore " + coverageStoreName + " has not been created."); fail("*** coveragestore " + coverageStoreName + " has not been created."); } } catch (FileNotFoundException e) { e.printStackTrace(); fail(e.getLocalizedMessage()); } catch (IOException e) { e.printStackTrace(); fail(e.getLocalizedMessage()); } // removing recursively coveragestore boolean removed = publisher.removeCoverageStore(coverageStore.getWorkspaceName(), coverageStore.getName(), true); if( ! removed ){ LOGGER.error("*** CoverageStore " + coverageStoreName + " has not been removed."); fail("*** CoverageStore " + coverageStoreName + " has not been removed."); } assertTrue(publisher.removeStyle(styleName)); assertTrue(publisher.removeWorkspace(wsName)); } public void testPublishImageMosaic() throws IOException { if (!enabled()) { return; } deleteAll(); String storeName = "testImageMosaic"; assertTrue(reader.getWorkspaces().isEmpty()); assertTrue(publisher.createWorkspace(DEFAULT_WS)); File imageMosaicFile = new ClassPathResource( "testdata/mosaic_geotiff.zip").getFile(); // test publish boolean wp = publisher.publishImageMosaic(DEFAULT_WS, storeName, imageMosaicFile, ParameterConfigure.NONE, (NameValuePair) null); assertTrue("Publish imagemosaic with no layer configured, failed.", wp); assertTrue("Unpublish() failed", publisher.removeCoverageStore(DEFAULT_WS, storeName, true)); // create default style File sldFile = new ClassPathResource("testdata/restteststyle.sld") .getFile(); assertTrue(publisher.publishStyle(sldFile, "raster")); wp = publisher.publishImageMosaic(DEFAULT_WS, storeName, imageMosaicFile, ParameterConfigure.FIRST, new NameValuePair("coverageName", "imageMosaic_test")); assertTrue("Publish imagemosaic configuring layer name, failed.", wp); assertTrue("Unpublish() failed", publisher.removeCoverageStore(DEFAULT_WS, storeName, true)); wp = publisher.publishImageMosaic(DEFAULT_WS, storeName, imageMosaicFile, ParameterConfigure.ALL, (NameValuePair) null); assertTrue( "Publish imagemosaic configuring all available layers, failed.", wp); assertTrue("Unpublish() failed", publisher.removeCoverageStore(DEFAULT_WS, storeName, true)); } }