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();