Changeset 14535 in josm for trunk/test/unit/org


Ignore:
Timestamp:
2018-12-09T20:06:53+01:00 (6 years ago)
Author:
Don-vip
Message:

see #16073 - check response contents
see #16854 - stability of created primitive IDs (accidental commit...)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/test/unit/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreferenceTestIT.java

    r14533 r14535  
    44import static org.junit.Assert.assertTrue;
    55
     6import java.io.ByteArrayInputStream;
    67import java.io.IOException;
    78import java.net.URL;
     9import java.nio.charset.StandardCharsets;
    810import java.util.ArrayList;
    911import java.util.Collections;
     
    1517import java.util.concurrent.TimeUnit;
    1618
     19import javax.imageio.ImageIO;
     20
     21import org.apache.commons.jcs.access.CacheAccess;
    1722import org.junit.Before;
    1823import org.junit.Rule;
     
    3439import org.openstreetmap.josm.data.imagery.ImageryLayerInfo;
    3540import org.openstreetmap.josm.data.imagery.Shape;
     41import org.openstreetmap.josm.data.imagery.TMSCachedTileLoaderJob;
    3642import org.openstreetmap.josm.data.imagery.TemplatedWMSTileSource;
     43import org.openstreetmap.josm.data.imagery.TileJobOptions;
    3744import org.openstreetmap.josm.data.imagery.WMSEndpointTileSource;
    3845import org.openstreetmap.josm.data.imagery.WMTSTileSource;
     
    6471    private final Set<String> workingURLs = Collections.synchronizedSet(new HashSet<>());
    6572
     73    private TMSCachedTileLoaderJob helper;
    6674    private List<String> ignoredErrors;
    6775
     
    7280    @Before
    7381    public void before() throws IOException {
     82        helper = new TMSCachedTileLoaderJob(null, null, new CacheAccess<>(null), new TileJobOptions(0, 0, null, 0), null);
    7483        ignoredErrors = TestUtils.getIgnoredErrorMessages(ImageryPreferenceTestIT.class);
    7584    }
     
    8291    }
    8392
    84     private void checkUrl(ImageryInfo info, String url) {
     93    private byte[] checkUrl(ImageryInfo info, String url) {
    8594        if (url != null && !url.isEmpty() && !workingURLs.contains(url)) {
    8695            try {
     
    97106                    workingURLs.add(url);
    98107                }
    99                 response.disconnect();
     108                try {
     109                    return Utils.readBytesFromStream(response.getContent());
     110                } finally {
     111                    response.disconnect();
     112                }
    100113            } catch (IOException e) {
    101114                addError(info, url + " -> " + e);
    102115            }
     116        }
     117        return new byte[0];
     118    }
     119
     120    private void checkLinkUrl(ImageryInfo info, String url) {
     121        if (url != null && checkUrl(info, url).length == 0) {
     122            addError(info, url + " -> returned empty contents");
    103123        }
    104124    }
     
    109129        for (int i = 0; i < 3; i++) {
    110130            try {
    111                 checkUrl(info, tileSource.getTileUrl(zoom, xy.getXIndex(), xy.getYIndex()));
     131                String url = tileSource.getTileUrl(zoom, xy.getXIndex(), xy.getYIndex());
     132                byte[] data = checkUrl(info, url);
     133                try (ByteArrayInputStream bais = new ByteArrayInputStream(data)) {
     134                    if (ImageIO.read(bais) == null) {
     135                        addImageError(info, url, data, "did not return an image");
     136                    }
     137                } catch (IOException e) {
     138                    addImageError(info, url, data, e.toString());
     139                    Logging.trace(e);
     140                }
    112141                return;
    113142            } catch (IOException e) {
     
    125154            }
    126155        }
     156    }
     157
     158    private void addImageError(ImageryInfo info, String url, byte[] data, String defaultMessage) {
     159        // Check if we have received an error message
     160        String error = helper.detectErrorMessage(new String(data, StandardCharsets.UTF_8));
     161        addError(info, url + " -> " + (error != null ? error : defaultMessage));
    127162    }
    128163
     
    184219        }
    185220
    186         checkUrl(info, info.getAttributionImageURL());
    187         checkUrl(info, info.getAttributionLinkURL());
     221        checkLinkUrl(info, info.getAttributionImageURL());
     222        checkLinkUrl(info, info.getAttributionLinkURL());
    188223        String eula = info.getEulaAcceptanceRequired();
    189224        if (eula != null) {
    190             checkUrl(info, eula.replaceAll("\\{lang\\}", ""));
    191         }
    192         checkUrl(info, info.getPermissionReferenceURL());
    193         checkUrl(info, info.getTermsOfUseURL());
     225            checkLinkUrl(info, eula.replaceAll("\\{lang\\}", ""));
     226        }
     227        checkLinkUrl(info, info.getPermissionReferenceURL());
     228        checkLinkUrl(info, info.getTermsOfUseURL());
    194229
    195230        try {
Note: See TracChangeset for help on using the changeset viewer.