001: /*
002: * GeoTools - OpenSource mapping toolkit
003: * http://geotools.org
004: * (C) 2004-2006, Geotools Project Managment Committee (PMC)
005: *
006: * This library is free software; you can redistribute it and/or
007: * modify it under the terms of the GNU Lesser General Public
008: * License as published by the Free Software Foundation; either
009: * version 2.1 of the License, or (at your option) any later version.
010: *
011: * This library is distributed in the hope that it will be useful,
012: * but WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014: * Lesser General Public License for more details.
015: */
016: package org.geotools.validation.relate;
017:
018: import java.io.IOException;
019: import java.util.HashMap;
020: import java.util.Map;
021: import java.util.PropertyResourceBundle;
022:
023: import javax.sql.DataSource;
024:
025: import junit.framework.TestCase;
026:
027: import org.geotools.data.DataTestCase;
028: import org.geotools.data.jdbc.JDBCDataStoreConfig;
029: import org.geotools.data.jdbc.datasource.DataSourceUtil;
030: import org.geotools.data.jdbc.fidmapper.BasicFIDMapper;
031: import org.geotools.data.jdbc.fidmapper.TypedFIDMapper;
032: import org.geotools.data.postgis.PostgisDataStore;
033: import org.geotools.validation.ValidationResults;
034:
035: /**
036: * This class tests the PostgisDataStoreAPI, against the same tests as
037: * MemoryDataStore.
038: *
039: * <p>
040: * The test fixture is available in the shared DataTestCase, really the common
041: * elements should move to a shared DataStoreAPITestCase.
042: * </p>
043: *
044: * <p>
045: * This class does require your own DataStore, it will create a table populated
046: * with the Features from the test fixture, and run a test, and then remove
047: * the table.
048: * </p>
049: *
050: * <p>
051: * Because of the nature of this testing process you cannot run these tests in
052: * conjunction with another user, so they cannot be implemented against the
053: * public server.
054: * </p>
055: *
056: * <p>
057: * A simple properties file has been constructed,
058: * <code>fixture.properties</code>, which you may direct to your own potgis
059: * database installation.
060: * </p>
061: *
062: * @author Jody Garnett, Refractions Research
063: * @source $URL: http://svn.geotools.org/geotools/tags/2.4.1/modules/extension/validation/src/test/java/org/geotools/validation/relate/MemoryLeakOnlineTest.java $
064: */
065: public class MemoryLeakOnlineTest extends DataTestCase {
066:
067: PostgisDataStore data;
068: String database;
069:
070: /**
071: * Constructor for MemoryDataStoreTest.
072: *
073: * @param test
074: *
075: * @throws AssertionError DOCUMENT ME!
076: */
077: public MemoryLeakOnlineTest(String test) {
078: super (test);
079: }
080:
081: /**
082: * @see TestCase#setUp()
083: */
084: protected void setUp() throws Exception {
085: super .setUp();
086:
087: PropertyResourceBundle resource;
088: resource = new PropertyResourceBundle(this .getClass()
089: .getResourceAsStream("fixture.properties"));
090:
091: String namespace = resource.getString("namespace");
092: String host = resource.getString("host");
093: int port = Integer.parseInt(resource.getString("port"));
094: String database = resource.getString("database");
095: String schema = resource.getString("schema");
096: this .database = database;
097:
098: String user = resource.getString("user");
099: String password = resource.getString("password");
100:
101: if (namespace.equals("http://www.geotools.org/data/postgis")) {
102: throw new IllegalStateException(
103: "The fixture.properties file needs to be configured for your own database");
104: }
105:
106: DataSource ds = DataSourceUtil.buildDefaultDataSource(
107: "jdbc:postgresql://" + host + ":" + port + "/"
108: + database, "org.postgresql.Driver", user,
109: password, null);
110: JDBCDataStoreConfig config = JDBCDataStoreConfig
111: .createWithNameSpaceAndSchemaName(namespace, schema);
112: data = new PostgisDataStore(ds, config,
113: PostgisDataStore.OPTIMIZE_SAFE);
114: BasicFIDMapper basic = new BasicFIDMapper("tid", 255, false);
115: TypedFIDMapper typed = new TypedFIDMapper(basic, "trim_utm10");
116: data.setFIDMapper("trim_utm10", typed);
117: }
118:
119: public void testMe() throws Exception {
120: String typeNames[] = data.getTypeNames();
121: assertNotNull(typeNames);
122: assertEquals(1, typeNames.length);
123: }
124:
125: public void testSlap() throws Exception {
126: OverlapsIntegrity overlap = new OverlapsIntegrity();
127: overlap.setExpected(false);
128: overlap.setGeomTypeRefA("my:line");
129:
130: Map map = new HashMap();
131: try {
132: map.put("my:line", data.getFeatureSource("trim_utm10"));
133: } catch (IOException e1) {
134: e1.printStackTrace();
135: }
136:
137: ValidationResults results = new TempFeatureResults();
138: try {
139: results.setValidation(overlap);
140: //NOTE: seems to die on line 301: fr1 = featureResults.features(); in OverlapsIntegrity.java - bowens
141: assertFalse(overlap.validate(map, null, results));
142: } catch (Exception e) {
143: e.printStackTrace();
144: }
145: }
146: }
|