/*
* 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.validation.relate;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.PropertyResourceBundle;
import javax.sql.DataSource;
import junit.framework.TestCase;
import org.geotools.data.DataTestCase;
import org.geotools.data.jdbc.JDBCDataStoreConfig;
import org.geotools.data.jdbc.datasource.DataSourceUtil;
import org.geotools.data.jdbc.fidmapper.BasicFIDMapper;
import org.geotools.data.jdbc.fidmapper.TypedFIDMapper;
import org.geotools.data.postgis.PostgisDataStore;
import org.geotools.validation.ValidationResults;
/**
* This class tests the PostgisDataStoreAPI, against the same tests as
* MemoryDataStore.
*
* <p>
* The test fixture is available in the shared DataTestCase, really the common
* elements should move to a shared DataStoreAPITestCase.
* </p>
*
* <p>
* This class does require your own DataStore, it will create a table populated
* with the Features from the test fixture, and run a test, and then remove
* the table.
* </p>
*
* <p>
* Because of the nature of this testing process you cannot run these tests in
* conjunction with another user, so they cannot be implemented against the
* public server.
* </p>
*
* <p>
* A simple properties file has been constructed,
* <code>fixture.properties</code>, which you may direct to your own potgis
* database installation.
* </p>
*
* @author Jody Garnett, Refractions Research
* @source $URL$
*/
public class MemoryLeakOnlineTest extends DataTestCase {
PostgisDataStore data;
String database;
/**
* Constructor for MemoryDataStoreTest.
*
* @param test
*
* @throws AssertionError DOCUMENT ME!
*/
public MemoryLeakOnlineTest(String test) {
super(test);
}
/**
* @see TestCase#setUp()
*/
protected void setUp() throws Exception {
super.setUp();
PropertyResourceBundle resource;
resource =
new PropertyResourceBundle(this.getClass().getResourceAsStream("fixture.properties"));
String namespace = resource.getString("namespace");
String host = resource.getString("host");
int port = Integer.parseInt(resource.getString("port"));
String database = resource.getString("database");
String schema = resource.getString("schema");
this.database = database;
String user = resource.getString("user");
String password = resource.getString("password");
if (namespace.equals("http://www.geotools.org/data/postgis")) {
throw new IllegalStateException(
"The fixture.properties file needs to be configured for your own database");
}
DataSource ds = DataSourceUtil.buildDefaultDataSource("jdbc:postgresql://" + host + ":" + port + "/" + database, "org.postgresql.Driver", user, password, null);
JDBCDataStoreConfig config = JDBCDataStoreConfig.createWithNameSpaceAndSchemaName( namespace, schema );
data = new PostgisDataStore(ds, config, PostgisDataStore.OPTIMIZE_SAFE);
BasicFIDMapper basic = new BasicFIDMapper("tid", 255, false);
TypedFIDMapper typed = new TypedFIDMapper( basic, "trim_utm10");
data.setFIDMapper("trim_utm10", typed );
}
public void testMe() throws Exception {
String typeNames[] = data.getTypeNames();
assertNotNull( typeNames );
assertEquals( 1, typeNames.length );
}
public void testSlap() throws Exception {
OverlapsIntegrity overlap = new OverlapsIntegrity();
overlap.setExpected(false);
overlap.setGeomTypeRefA("my:line");
Map map = new HashMap();
try
{
map.put("my:line", data.getFeatureSource("trim_utm10"));
} catch (IOException e1)
{
e1.printStackTrace();
}
ValidationResults results = new TempFeatureResults();
try
{
results.setValidation( overlap );
//NOTE: seems to die on line 301: fr1 = featureResults.features(); in OverlapsIntegrity.java - bowens
assertFalse(overlap.validate(map, null, results));
} catch (Exception e)
{
e.printStackTrace();
}
}
}