You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by ds...@apache.org on 2019/01/03 18:44:12 UTC
[geode] branch feature/GEODE-6225 updated: added integration test
for catalog/schema
This is an automated email from the ASF dual-hosted git repository.
dschneider pushed a commit to branch feature/GEODE-6225
in repository https://gitbox.apache.org/repos/asf/geode.git
The following commit(s) were added to refs/heads/feature/GEODE-6225 by this push:
new 69599f0 added integration test for catalog/schema
69599f0 is described below
commit 69599f0c31a5e402a7c414fb8e2225cc1a6a9670
Author: Darrel Schneider <ds...@pivotal.io>
AuthorDate: Thu Jan 3 10:43:42 2019 -0800
added integration test for catalog/schema
---
.../MySqlTableMetaDataManagerIntegrationTest.java | 7 +++
...ostgresTableMetaDataManagerIntegrationTest.java | 7 +++
.../TableMetaDataManagerIntegrationTest.java | 61 +++++++++++++++++++++-
3 files changed, 74 insertions(+), 1 deletion(-)
diff --git a/geode-connectors/src/acceptanceTest/java/org/apache/geode/connectors/jdbc/internal/MySqlTableMetaDataManagerIntegrationTest.java b/geode-connectors/src/acceptanceTest/java/org/apache/geode/connectors/jdbc/internal/MySqlTableMetaDataManagerIntegrationTest.java
index 7684542..3ff0e72 100644
--- a/geode-connectors/src/acceptanceTest/java/org/apache/geode/connectors/jdbc/internal/MySqlTableMetaDataManagerIntegrationTest.java
+++ b/geode-connectors/src/acceptanceTest/java/org/apache/geode/connectors/jdbc/internal/MySqlTableMetaDataManagerIntegrationTest.java
@@ -20,6 +20,7 @@ import java.sql.SQLException;
import org.junit.ClassRule;
+import org.apache.geode.connectors.jdbc.internal.configuration.RegionMapping;
import org.apache.geode.test.junit.rules.DatabaseConnectionRule;
import org.apache.geode.test.junit.rules.MySqlConnectionRule;
@@ -36,4 +37,10 @@ public class MySqlTableMetaDataManagerIntegrationTest extends TableMetaDataManag
public Connection getConnection() throws SQLException {
return dbRule.getConnection();
}
+
+ @Override
+ protected void setSchemaOrCatalogOnMapping(RegionMapping regionMapping, String name) {
+ regionMapping.setCatalog(name);
+ }
+
}
diff --git a/geode-connectors/src/acceptanceTest/java/org/apache/geode/connectors/jdbc/internal/PostgresTableMetaDataManagerIntegrationTest.java b/geode-connectors/src/acceptanceTest/java/org/apache/geode/connectors/jdbc/internal/PostgresTableMetaDataManagerIntegrationTest.java
index 7fca1fd..4a2d8f6 100644
--- a/geode-connectors/src/acceptanceTest/java/org/apache/geode/connectors/jdbc/internal/PostgresTableMetaDataManagerIntegrationTest.java
+++ b/geode-connectors/src/acceptanceTest/java/org/apache/geode/connectors/jdbc/internal/PostgresTableMetaDataManagerIntegrationTest.java
@@ -20,6 +20,7 @@ import java.sql.SQLException;
import org.junit.ClassRule;
+import org.apache.geode.connectors.jdbc.internal.configuration.RegionMapping;
import org.apache.geode.test.junit.rules.DatabaseConnectionRule;
import org.apache.geode.test.junit.rules.PostgresConnectionRule;
@@ -37,4 +38,10 @@ public class PostgresTableMetaDataManagerIntegrationTest
public Connection getConnection() throws SQLException {
return dbRule.getConnection();
}
+
+ @Override
+ protected void setSchemaOrCatalogOnMapping(RegionMapping regionMapping, String name) {
+ regionMapping.setSchema(name);
+ }
+
}
diff --git a/geode-connectors/src/acceptanceTest/java/org/apache/geode/connectors/jdbc/internal/TableMetaDataManagerIntegrationTest.java b/geode-connectors/src/acceptanceTest/java/org/apache/geode/connectors/jdbc/internal/TableMetaDataManagerIntegrationTest.java
index 620a041..3f044af 100644
--- a/geode-connectors/src/acceptanceTest/java/org/apache/geode/connectors/jdbc/internal/TableMetaDataManagerIntegrationTest.java
+++ b/geode-connectors/src/acceptanceTest/java/org/apache/geode/connectors/jdbc/internal/TableMetaDataManagerIntegrationTest.java
@@ -17,9 +17,11 @@
package org.apache.geode.connectors.jdbc.internal;
import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
+import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Types;
@@ -30,6 +32,7 @@ import org.junit.After;
import org.junit.Before;
import org.junit.Test;
+import org.apache.geode.connectors.jdbc.JdbcConnectorException;
import org.apache.geode.connectors.jdbc.internal.configuration.RegionMapping;
@@ -61,7 +64,9 @@ public abstract class TableMetaDataManagerIntegrationTest {
if (statement == null) {
statement = connection.createStatement();
}
- statement.execute("Drop table " + REGION_TABLE_NAME);
+ statement.execute("Drop table IF EXISTS " + REGION_TABLE_NAME);
+ statement.execute("Drop table IF EXISTS MYSCHEMA." + REGION_TABLE_NAME);
+ statement.execute("Drop schema IF EXISTS MYSCHEMA");
statement.close();
if (connection != null) {
@@ -79,6 +84,27 @@ public abstract class TableMetaDataManagerIntegrationTest {
+ "age" + quote + " int)");
}
+ protected void createTableWithSchema() throws SQLException {
+ DatabaseMetaData metaData = connection.getMetaData();
+ String quote = metaData.getIdentifierQuoteString();
+ statement.execute("CREATE SCHEMA MYSCHEMA");
+ statement.execute("CREATE TABLE MYSCHEMA." + REGION_TABLE_NAME + " (" + quote + "id" + quote
+ + " VARCHAR(10) primary key not null," + quote + "name" + quote + " VARCHAR(10)," + quote
+ + "age" + quote + " int)");
+ System.out.println("DEBUG getCatalogs()");
+ dumpResultSet(connection.getMetaData().getCatalogs());
+ System.out.println("DEBUG getSchemas()");
+ dumpResultSet(connection.getMetaData().getSchemas());
+ System.out.println("DEBUG getSchemas(%)");
+ dumpResultSet(connection.getMetaData().getSchemas("", "%"));
+ }
+
+ private void dumpResultSet(ResultSet schemas) throws SQLException {
+ while (schemas.next()) {
+ System.out.println(" " + schemas.getString(1));
+ }
+ }
+
protected void createTableWithNoPrimaryKey() throws SQLException {
DatabaseMetaData metaData = connection.getMetaData();
String quote = metaData.getIdentifierQuoteString();
@@ -105,6 +131,39 @@ public abstract class TableMetaDataManagerIntegrationTest {
assertThat(keyColumnNames).isEqualTo(Arrays.asList("id"));
}
+ protected abstract void setSchemaOrCatalogOnMapping(RegionMapping regionMapping, String name);
+
+ @Test
+ public void validateKeyColumnNameWithSchema() throws SQLException {
+ createTableWithSchema();
+ setSchemaOrCatalogOnMapping(regionMapping, "MYSCHEMA");
+ TableMetaDataView metaData = manager.getTableMetaDataView(connection, regionMapping);
+
+ List<String> keyColumnNames = metaData.getKeyColumnNames();
+
+ assertThat(keyColumnNames).isEqualTo(Arrays.asList("id"));
+ }
+
+ @Test
+ public void validateUnknownSchema() throws SQLException {
+ createTable();
+ regionMapping.setSchema("unknownSchema");
+ assertThatThrownBy(
+ () -> manager.getTableMetaDataView(connection, regionMapping))
+ .isInstanceOf(JdbcConnectorException.class)
+ .hasMessageContaining("No schema was found that matches \"unknownSchema\"");
+ }
+
+ @Test
+ public void validateUnknownCatalog() throws SQLException {
+ createTable();
+ regionMapping.setCatalog("unknownCatalog");
+ assertThatThrownBy(
+ () -> manager.getTableMetaDataView(connection, regionMapping))
+ .isInstanceOf(JdbcConnectorException.class)
+ .hasMessageContaining("No catalog was found that matches \"unknownCatalog\"");
+ }
+
@Test
public void validateMultipleKeyColumnNames() throws SQLException {
createTableWithMultiplePrimaryKeys();