/* * GeoTools - The Open Source Java GIS Toolkit * http://geotools.org * * (C) 2004-2008, Open Source Geospatial Foundation (OSGeo) * * 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; * version 2.1 of the License. * * 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. */ package org.geotools.xml; import java.io.File; import java.io.IOException; import java.net.URI; import java.util.logging.Level; import junit.framework.TestCase; import org.geotools.TestData; import org.geotools.data.FeatureReader; import org.geotools.xml.gml.FCBuffer; import org.opengis.feature.simple.SimpleFeature; import org.opengis.feature.simple.SimpleFeatureType; /** * <p> * DOCUMENT ME! * </p> * @ * * @author dzwiers www.refractions.net * * @source $URL$ */ public class GMLStreamingParserStressTest extends TestCase { // public void testOSDNFFeatures() throws SAXException, IOException { // FeatureReader<SimpleFeatureType, SimpleFeature> fr = null; // try { // // String path = "/home/dzwiers/testData/sample-master-map.xml"; // File f = new File(path); // URI u = f.toURI(); // // XMLSAXHandler.setLogLevel(Level.FINEST); // XSISAXHandler.setLogLevel(Level.FINEST); // XMLElementHandler.setLogLevel(Level.FINEST); // XSIElementHandler.setLogLevel(Level.FINEST); // fr = FCBuffer.getFeatureReader(u,10,100000); // // assertNotNull("FeatureReader missing", fr); // // int i=0; // for(;fr.hasNext();i++){ // System.out.println(fr.next()); // } // // assertTrue("# features = "+i,i==70); // // } catch (Throwable e) { // e.printStackTrace(); // fail(e.toString()); // } finally { // if(fr!=null){ // ((FCBuffer)fr).stop(); // } // } // } public void skippedtestGTRoadsFeatures() throws IOException { if(!TestData.isExtensiveTest()) return; FeatureReader<SimpleFeatureType, SimpleFeature> fr = null; try { String path = "xml/geoserver/roads.xml"; File f = TestData.copy(this,path); TestData.copy(this,"xml/wfs/WFS-basic.xsd"); TestData.copy(this,"xml/geoserver/roadSchema.xsd"); URI u = f.toURI(); XMLSAXHandler.setLogLevel(Level.FINEST); XSISAXHandler.setLogLevel(Level.FINEST); XMLElementHandler.setLogLevel(Level.FINEST); XSIElementHandler.setLogLevel(Level.FINEST); fr = FCBuffer.getFeatureReader(u,10,10000); assertNotNull("FeatureReader missing", fr); int i=0; for(;fr.hasNext();i++){ // System.out.println(fr.next()); fr.next(); } assertTrue("# features = "+i,i==70); } catch (Throwable e) { e.printStackTrace(); fail(e.toString()); } finally { if(fr!=null){ ((FCBuffer)fr).close(); } } } public void testFMERoadsFeatures() throws IOException { if(!TestData.isExtensiveTest()) return; FeatureReader<SimpleFeatureType, SimpleFeature> fr = null; try { String path = "xml/fme/roads/roads.xml"; File f = TestData.copy(this,path); TestData.copy(this,"xml/fme/roads/roads.xsd"); URI u = f.toURI(); fr = FCBuffer.getFeatureReader(u,10,10000); assertNotNull("FeatureReader missing", fr); int i=0; for(;fr.hasNext();i++){ // System.out.println(fr.next()); fr.next(); } assertTrue("# features "+i,i>20); System.out.println("\n # Features = "+i); } catch (Throwable e) { e.printStackTrace(); fail(e.toString()); } finally { if(fr!=null){ ((FCBuffer)fr).close(); } } } public void testFMELakesFeatures() throws IOException { if(!TestData.isExtensiveTest()) return; FeatureReader<SimpleFeatureType, SimpleFeature> fr = null; try { String path = "xml/fme/lakes/lakes.xml"; File f = TestData.copy(this,path); TestData.copy(this,"xml/fme/lakes/lakes.xsd"); URI u = f.toURI(); fr = FCBuffer.getFeatureReader(u,10,10000); assertNotNull("FeatureReader missing", fr); int i=0; for(;fr.hasNext();i++){ // System.out.println(fr.next()); fr.next(); } assertTrue("# features"+i,i>20); System.out.println("\n # Features = "+i); } catch (Throwable e) { e.printStackTrace(); fail(e.toString()); } finally { if(fr!=null){ ((FCBuffer)fr).close(); } } } public void testFME2StreamsFeatures() throws IOException { if(!TestData.isExtensiveTest()) return; FeatureReader<SimpleFeatureType, SimpleFeature> fr1 = null; FeatureReader<SimpleFeatureType, SimpleFeature> fr2 = null; try { String path = "xml/fme/lakes/lakes.xml"; File f = TestData.copy(this,path); TestData.copy(this,"xml/fme/lakes/lakes.xsd"); URI u1 = f.toURI(); path = "xml/fme/roads/roads.xml"; f = TestData.copy(this,path); TestData.copy(this,"xml/geoserver/roadSchema.xsd"); URI u2 = f.toURI(); fr1 = FCBuffer.getFeatureReader(u1,10,10000); fr2 = FCBuffer.getFeatureReader(u2,10,10000); assertNotNull("FeatureReader missing", fr1); assertNotNull("FeatureReader missing", fr2); boolean cont = true; int count1,count2; count1 = count2 = 0; while(cont){ cont = false; for(int i=0;i<10 && fr1.hasNext();i++){ SimpleFeature ftr = fr1.next(); assertTrue("Feature Null",ftr!=null); // System.out.println(ftr); cont = true; count1++; } for(int i=0;i<10 && fr2.hasNext();i++){ SimpleFeature ftr = fr2.next(); assertTrue("Feature Null",ftr!=null); // System.out.println(ftr); cont = true; count2++; } } assertTrue("Must have used both readers",(count1>20 && count2>20)); System.out.println("\n# Features: "+count1+" , "+count2); } catch (Throwable e) { e.printStackTrace(); fail(e.toString()); } finally { if(fr1!=null){ ((FCBuffer)fr1).close(); } if(fr2!=null){ ((FCBuffer)fr2).close(); } } } }