diff --git a/deegree-core/deegree-core-commons/src/main/java/org/deegree/commons/utils/test/IntegrationTestUtils.java b/deegree-core/deegree-core-commons/src/main/java/org/deegree/commons/utils/test/IntegrationTestUtils.java index a7bdd0ac2a..83cdb18329 100644 --- a/deegree-core/deegree-core-commons/src/main/java/org/deegree/commons/utils/test/IntegrationTestUtils.java +++ b/deegree-core/deegree-core-commons/src/main/java/org/deegree/commons/utils/test/IntegrationTestUtils.java @@ -158,8 +158,8 @@ private static void toTempfile( RenderedImage expected, RenderedImage actual, St Files.write( tempDir.resolve( name + "_actual.png" ), toBytes( actual, "png" ) ); Files.write( tempDir.resolve( name + "_expected.png" ), toBytes( expected, "png" ) ); - System.out.println( "Result returned for " + name + " (base64 -di encoded.dat > failed-test.zip)" ); - System.out.println( toBase64Zip( toBytes( actual, "png" ), name + ".png" ) ); + LOG.debug( "Result returned for " + name + " (base64 -di encoded.dat > failed-test.zip)" ); + LOG.debug( toBase64Zip( toBytes( actual, "png" ), name + ".png" ) ); } catch ( Throwable t ) { } } @@ -178,7 +178,7 @@ public static boolean isImageSimilar( RenderedImage expected, RenderedImage actu String pasteBin = IntegrationTestUtils.toPasteBin( toBytes( actual, "png" ) ); if ( pasteBin != null ) { - System.out.println( "Actual returned image for " + name + " available at " + pasteBin ); + LOG.info( "Actual returned image for " + name + " available at " + pasteBin ); } toTempfile( expected, actual, name ); diff --git a/deegree-tests/deegree-wms-remoteows-tests/pom.xml b/deegree-tests/deegree-wms-remoteows-tests/pom.xml index 339bec54e1..d13d8ee695 100644 --- a/deegree-tests/deegree-wms-remoteows-tests/pom.xml +++ b/deegree-tests/deegree-wms-remoteows-tests/pom.xml @@ -91,6 +91,14 @@ junit junit + + org.xmlunit + xmlunit-core + + + org.xmlunit + xmlunit-matchers + diff --git a/deegree-tests/deegree-wms-remoteows-tests/src/test/java/org/deegree/services/wms/RemoteWMSGfiIntegrationTest.java b/deegree-tests/deegree-wms-remoteows-tests/src/test/java/org/deegree/services/wms/RemoteWMSGfiIntegrationTest.java new file mode 100644 index 0000000000..8dd295d503 --- /dev/null +++ b/deegree-tests/deegree-wms-remoteows-tests/src/test/java/org/deegree/services/wms/RemoteWMSGfiIntegrationTest.java @@ -0,0 +1,125 @@ +//$HeadURL$ +/*---------------------------------------------------------------------------- + This file is part of deegree, http://deegree.org/ + Copyright (C) 2001-2010 by: + - Department of Geography, University of Bonn - + and + - lat/lon GmbH - + + This library is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by the Free + Software Foundation; either version 2.1 of the License, or (at your option) + any later version. + This library is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + details. + You should have received a copy of the GNU Lesser General Public License + along with this library; if not, write to the Free Software Foundation, Inc., + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Contact information: + + lat/lon GmbH + Aennchenstr. 19, 53177 Bonn + Germany + http://lat-lon.de/ + + Department of Geography, University of Bonn + Prof. Dr. Klaus Greve + Postfach 1147, 53001 Bonn + Germany + http://www.geographie.uni-bonn.de/deegree/ + + Occam Labs UG (haftungsbeschränkt) + Godesberger Allee 139, 53175 Bonn + Germany + http://www.occamlabs.de/ + + e-mail: info@deegree.org + ----------------------------------------------------------------------------*/ + +package org.deegree.services.wms; + +import org.apache.commons.io.IOUtils; +import org.junit.Ignore; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +import org.junit.runners.Parameterized.Parameters; +import org.slf4j.Logger; +import org.xmlunit.matchers.CompareMatcher; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +import static org.deegree.commons.utils.net.HttpUtils.UTF8STRING; +import static org.deegree.commons.utils.net.HttpUtils.retrieve; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.slf4j.LoggerFactory.getLogger; + +/** + * RemoteWMSIntegrationTest + * + * @author Andreas Schmitz + * @author last edited by: $Author: mschneider $ + * @version $Revision: 31882 $, $Date: 2011-09-15 02:05:04 +0200 (Thu, 15 Sep 2011) $ + */ + +@Ignore +@RunWith(Parameterized.class) +public class RemoteWMSGfiIntegrationTest { + + private static final Logger LOG = getLogger( RemoteWMSGfiIntegrationTest.class ); + + private final String resourceName; + + private final String request; + + private final String expected; + + public RemoteWMSGfiIntegrationTest( String resourceName ) + throws IOException { + this.resourceName = resourceName; + this.request = IOUtils.toString( + RemoteWMSGfiIntegrationTest.class.getResourceAsStream( + "/requests/" + resourceName + ".kvp" ) ); + this.expected = IOUtils.toString( + RemoteWMSGfiIntegrationTest.class.getResourceAsStream( + "/requests/" + resourceName + ".xml" ) ); + } + + @Parameters(name = "{index}: {0}") + public static Collection getParameters() { + List requests = new ArrayList<>(); + requests.add( new Object[] { "featureinfofromdeegree" } ); + return requests; + } + + @Test + public void testGfiResponse() + throws + Exception { + String request = createRequest(); + LOG.info( "Requesting {}", request ); + String actual = retrieve( UTF8STRING, request ); + + assertThat( "GFI Response for " + resourceName + " does not match expected response", actual, + CompareMatcher.isSimilarTo( expected ).ignoreWhitespace() ); + } + + private String createRequest() { + StringBuffer sb = new StringBuffer(); + sb.append( "http://localhost:" ); + sb.append( "8090" ); + sb.append( "/" ); + sb.append( System.getProperty( "deegree-wms-remoteows-webapp", "deegree-wms-remoteows-tests" ) ); + sb.append( "/services/wms" ); + if ( !request.startsWith( "?" ) ) + sb.append( "?" ); + sb.append( request ); + return sb.toString(); + } +} diff --git a/deegree-tests/deegree-wms-remoteows-tests/src/test/java/org/deegree/services/wms/RemoteWMSIntegrationTest.java b/deegree-tests/deegree-wms-remoteows-tests/src/test/java/org/deegree/services/wms/RemoteWMSIntegrationTest.java index 8b5258aa0f..c24a18485d 100644 --- a/deegree-tests/deegree-wms-remoteows-tests/src/test/java/org/deegree/services/wms/RemoteWMSIntegrationTest.java +++ b/deegree-tests/deegree-wms-remoteows-tests/src/test/java/org/deegree/services/wms/RemoteWMSIntegrationTest.java @@ -42,7 +42,6 @@ Occam Labs UG (haftungsbeschränkt) package org.deegree.services.wms; import org.apache.commons.io.IOUtils; -import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; @@ -51,9 +50,8 @@ Occam Labs UG (haftungsbeschränkt) import javax.imageio.ImageIO; import java.awt.image.BufferedImage; -import java.awt.image.RenderedImage; -import java.io.ByteArrayOutputStream; import java.io.IOException; +import java.net.URL; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -73,18 +71,25 @@ Occam Labs UG (haftungsbeschränkt) */ @RunWith(Parameterized.class) -@Ignore public class RemoteWMSIntegrationTest { private static final Logger LOG = getLogger( RemoteWMSIntegrationTest.class ); - private static int numFailed = 0; + private enum IMAGE_RESPONSE_SUFFIXES { + FIRST( "" ), SECOND( "2" ), THIRD( "3" ), FOURTH( "4" ); + + private String suffix; + + IMAGE_RESPONSE_SUFFIXES( String suffix ) { + this.suffix = suffix; + } + } private final String resourceName; private final String request; - private final BufferedImage expected; + private final List expectedResourcePath = new ArrayList<>(); public RemoteWMSIntegrationTest( String resourceName ) throws IOException { @@ -92,15 +97,18 @@ public RemoteWMSIntegrationTest( String resourceName ) this.request = IOUtils.toString( RemoteWMSIntegrationTest.class.getResourceAsStream( "/requests/" + resourceName + ".kvp" ) ); - this.expected = ImageIO.read( - RemoteWMSIntegrationTest.class.getResourceAsStream( - "/requests/" + resourceName + ".response" ) ); + for ( IMAGE_RESPONSE_SUFFIXES suffix : IMAGE_RESPONSE_SUFFIXES.values() ) { + String resourcePath = "/requests/" + resourceName + suffix.suffix + ".png"; + URL resource = RemoteWMSIntegrationTest.class.getResource( + resourcePath ); + if ( resource != null ) + this.expectedResourcePath.add( resourcePath ); + } } @Parameters(name = "{index}: {0}") public static Collection getParameters() { List requests = new ArrayList<>(); - requests.add( new Object[] { "featureinfofromdeegree" } ); requests.add( new Object[] { "multiple" } ); requests.add( new Object[] { "optionsmultiple" } ); requests.add( new Object[] { "optionssingle" } ); @@ -114,14 +122,29 @@ public static Collection getParameters() { @Test public void testSimilarity() - throws - Exception { + throws + Exception { String request = createRequest(); LOG.info( "Requesting {}", request ); BufferedImage actual = retrieve( IMAGE, request ); - assertTrue( "Image for " + resourceName + "are not similar enough", - isImageSimilar( expected, actual, 0.01, getClass().getName() + resourceName ) ); + assertTrue( "Image for " + resourceName + " are not similar enough", + isAtLeastOneImageCandidateSimilar( actual ) ); + } + + private boolean isAtLeastOneImageCandidateSimilar( BufferedImage actual ) + throws Exception { + for ( String expectedCandidate : expectedResourcePath ) { + BufferedImage expected = ImageIO.read( RemoteWMSIntegrationTest.class.getResourceAsStream( + expectedCandidate ) ); + boolean imageSimilar = isImageSimilar( expected, actual, 0.01, + getClass().getName() + "_" + expectedCandidate ); + if ( imageSimilar ) { + LOG.info( "Found expected image {}", expectedCandidate ); + return true; + } + } + return false; } private String createRequest() { @@ -136,13 +159,4 @@ private String createRequest() { sb.append( request ); return sb.toString(); } - - private byte[] parseAsBytes( RenderedImage actual ) - throws IOException { - ByteArrayOutputStream bosActual = new ByteArrayOutputStream(); - ImageIO.write( actual, "png", bosActual ); - bosActual.flush(); - bosActual.close(); - return bosActual.toByteArray(); - } } diff --git a/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/featureinfofromdeegree.response b/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/featureinfofromdeegree.xml similarity index 100% rename from deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/featureinfofromdeegree.response rename to deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/featureinfofromdeegree.xml diff --git a/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/multiple.response b/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/multiple.png similarity index 100% rename from deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/multiple.response rename to deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/multiple.png diff --git a/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/multiple.response2 b/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/multiple2.png similarity index 100% rename from deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/multiple.response2 rename to deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/multiple2.png diff --git a/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/multiple.response3 b/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/multiple3.png similarity index 100% rename from deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/multiple.response3 rename to deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/multiple3.png diff --git a/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/multiple4.png b/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/multiple4.png new file mode 100644 index 0000000000..b45dc6db87 Binary files /dev/null and b/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/multiple4.png differ diff --git a/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/optionsmultiple.response b/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/optionsmultiple.png similarity index 100% rename from deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/optionsmultiple.response rename to deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/optionsmultiple.png diff --git a/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/optionsmultiple.response2 b/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/optionsmultiple2.png similarity index 100% rename from deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/optionsmultiple.response2 rename to deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/optionsmultiple2.png diff --git a/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/optionsmultiple.response3 b/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/optionsmultiple3.png similarity index 100% rename from deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/optionsmultiple.response3 rename to deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/optionsmultiple3.png diff --git a/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/optionsmultiple4.png b/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/optionsmultiple4.png new file mode 100644 index 0000000000..6b579a09e2 Binary files /dev/null and b/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/optionsmultiple4.png differ diff --git a/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/optionssingle.response b/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/optionssingle.png similarity index 100% rename from deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/optionssingle.response rename to deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/optionssingle.png diff --git a/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/optionssingle.response2 b/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/optionssingle2.png similarity index 100% rename from deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/optionssingle.response2 rename to deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/optionssingle2.png diff --git a/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/optionssingle3.png b/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/optionssingle3.png new file mode 100644 index 0000000000..e3cb3a7d18 Binary files /dev/null and b/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/optionssingle3.png differ diff --git a/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/parameters.response b/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/parameters.png similarity index 100% rename from deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/parameters.response rename to deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/parameters.png diff --git a/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/parametersext.response b/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/parametersext.png similarity index 100% rename from deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/parametersext.response rename to deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/parametersext.png diff --git a/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/parametersext.response2 b/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/parametersext2.png similarity index 100% rename from deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/parametersext.response2 rename to deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/parametersext2.png diff --git a/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/parametersext.response3 b/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/parametersext3.png similarity index 100% rename from deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/parametersext.response3 rename to deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/parametersext3.png diff --git a/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/parametersext4.png b/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/parametersext4.png new file mode 100644 index 0000000000..80b272aeb0 Binary files /dev/null and b/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/parametersext4.png differ diff --git a/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/single.response b/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/single.png similarity index 100% rename from deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/single.response rename to deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/single.png diff --git a/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/single.response2 b/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/single2.png similarity index 100% rename from deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/single.response2 rename to deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/single2.png diff --git a/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/single3.png b/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/single3.png new file mode 100644 index 0000000000..0bb4a2b2a9 Binary files /dev/null and b/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/single3.png differ diff --git a/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/timeout.kvp b/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/timeout.kvp index 76d3631ab1..4389071b05 100644 --- a/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/timeout.kvp +++ b/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/timeout.kvp @@ -1 +1 @@ -?REQUEST=GetMap&SERVICE=WMS&VERSION=1.1.1&WIDTH=1193&HEIGHT=857&LAYERS=timeout&TRANSPARENT=TRUE&FORMAT=image%2Fpng&BBOX=389861.0150035092,4426483.167746064,531448.4199583281,4528193.482956693&SRS=EPSG:26912&STYLES= +?REQUEST=GetMap&SERVICE=WMS&VERSION=1.1.1&WIDTH=1193&HEIGHT=857&LAYERS=timeout&TRANSPARENT=TRUE&FORMAT=image%2Fpng&BBOX=389861.0150035092,4426483.167746064,531448.4199583281,4528193.482956693&SRS=EPSG:26912&STYLES=&EXCEPTIONS=application/vnd.ogc.se_inimage diff --git a/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/timeout.response b/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/timeout.png similarity index 100% rename from deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/timeout.response rename to deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/timeout.png diff --git a/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/transformedgif.response b/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/transformedgif.png similarity index 100% rename from deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/transformedgif.response rename to deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/transformedgif.png diff --git a/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/transformedgif.response2 b/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/transformedgif2.png similarity index 100% rename from deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/transformedgif.response2 rename to deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/transformedgif2.png diff --git a/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/transformedgif.response3 b/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/transformedgif3.png similarity index 100% rename from deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/transformedgif.response3 rename to deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/transformedgif3.png diff --git a/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/transformedgif4.png b/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/transformedgif4.png new file mode 100644 index 0000000000..3b397f3cf5 Binary files /dev/null and b/deegree-tests/deegree-wms-remoteows-tests/src/test/resources/requests/transformedgif4.png differ