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 2017/10/26 00:47:31 UTC
[geode] branch feature/GEODE-3781 updated: test now validates
insert, update, and destroy
This is an automated email from the ASF dual-hosted git repository.
dschneider pushed a commit to branch feature/GEODE-3781
in repository https://gitbox.apache.org/repos/asf/geode.git
The following commit(s) were added to refs/heads/feature/GEODE-3781 by this push:
new 0b6e410 test now validates insert, update, and destroy
0b6e410 is described below
commit 0b6e410521d62df0f1a4fd51416e79d2103fa057
Author: Darrel Schneider <ds...@pivotal.io>
AuthorDate: Wed Oct 25 17:47:08 2017 -0700
test now validates insert, update, and destroy
---
.../apache/geode/connectors/jdbc/JDBCManager.java | 25 +++++++++--
.../jdbc/JDBCAsyncWriterIntegrationTest.java | 51 +++++++++++++++++++++-
2 files changed, 70 insertions(+), 6 deletions(-)
diff --git a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/JDBCManager.java b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/JDBCManager.java
index 49c948d..fceb8dc 100644
--- a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/JDBCManager.java
+++ b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/JDBCManager.java
@@ -107,13 +107,29 @@ public class JDBCManager {
}
private String getDestroyQueryString(String tableName, List<ColumnValue> columnList) {
- // TODO Auto-generated method stub
- return null;
+ assert columnList.size() == 1;
+ ColumnValue keyCV = columnList.get(0);
+ StringBuilder query =
+ new StringBuilder("DELETE FROM " + tableName + " WHERE " + keyCV.getColumnName() + " = ?");
+ return query.toString();
}
private String getUpdateQueryString(String tableName, List<ColumnValue> columnList) {
- // TODO Auto-generated method stub
- return null;
+ StringBuilder query = new StringBuilder("UPDATE " + tableName + " SET ");
+ int idx = 0;
+ for (ColumnValue cv : columnList) {
+ if (cv.isKey()) {
+ query.append(" WHERE ");
+ } else {
+ idx++;
+ if (idx > 1) {
+ query.append(", ");
+ }
+ }
+ query.append(cv.getColumnName());
+ query.append(" = ?");
+ }
+ return query.toString();
}
private String getInsertQueryString(String tableName, List<ColumnValue> columnList) {
@@ -180,6 +196,7 @@ public class JDBCManager {
// }
// });
String query = getQueryString(tableName, columnList, operation);
+ System.out.println("query=" + query);
Connection con = getConnection();
try {
return con.prepareStatement(query);
diff --git a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/JDBCAsyncWriterIntegrationTest.java b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/JDBCAsyncWriterIntegrationTest.java
index 173ec62..fdfd218 100644
--- a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/JDBCAsyncWriterIntegrationTest.java
+++ b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/JDBCAsyncWriterIntegrationTest.java
@@ -65,7 +65,8 @@ public class JDBCAsyncWriterIntegrationTest {
// ignore
}
if (null == cache) {
- cache = (GemFireCacheImpl) new CacheFactory().set(MCAST_PORT, "0").create();
+ cache = (GemFireCacheImpl) new CacheFactory().setPdxReadSerialized(true).set(MCAST_PORT, "0")
+ .create();
}
setupDB();
}
@@ -122,7 +123,7 @@ public class JDBCAsyncWriterIntegrationTest {
}
@Test
- public void jdbcAsyncWriterCanWriteToDatabase() throws Exception {
+ public void jdbcAsyncWriterCanInsertIntoDatabase() throws Exception {
Region employees = createRegionWithJDBCAsyncWriter(regionTableName, getRequiredProperties());
PdxInstance pdx1 = cache.createPdxInstanceFactory("Employee").writeString("name", "Emp1")
.writeInt("age", 55).writeInt("id", 3).create();
@@ -138,6 +139,52 @@ public class JDBCAsyncWriterIntegrationTest {
printTable();
}
+ @Test
+ public void jdbcAsyncWriterCanDestroyFromDatabase() throws Exception {
+ Region employees = createRegionWithJDBCAsyncWriter(regionTableName, getRequiredProperties());
+ PdxInstance pdx1 = cache.createPdxInstanceFactory("Employee").writeString("name", "Emp1")
+ .writeInt("age", 55).create();
+ PdxInstance pdx2 = cache.createPdxInstanceFactory("Employee").writeString("name", "Emp2")
+ .writeInt("age", 21).create();
+ employees.put("1", pdx1);
+ employees.put("2", pdx2);
+
+ Awaitility.await().atMost(30, TimeUnit.SECONDS)
+ .until(() -> assertThat(jdbcWriter.getSuccessfulEvents()).isEqualTo(2));
+
+ employees.destroy("1");
+
+ Awaitility.await().atMost(30, TimeUnit.SECONDS)
+ .until(() -> assertThat(jdbcWriter.getSuccessfulEvents()).isEqualTo(3));
+
+ validateTableRowCount(1);
+ printTable();
+ }
+
+ @Test
+ public void jdbcAsyncWriterCanUpdateDatabase() throws Exception {
+ Region employees = createRegionWithJDBCAsyncWriter(regionTableName, getRequiredProperties());
+ PdxInstance pdx1 = cache.createPdxInstanceFactory("Employee").writeString("name", "Emp1")
+ .writeInt("age", 55).create();
+ PdxInstance pdx2 = cache.createPdxInstanceFactory("Employee").writeString("name", "Emp2")
+ .writeInt("age", 21).create();
+ employees.put("1", pdx1);
+ employees.put("2", pdx2);
+
+ Awaitility.await().atMost(30, TimeUnit.SECONDS)
+ .until(() -> assertThat(jdbcWriter.getSuccessfulEvents()).isEqualTo(2));
+
+ PdxInstance pdx3 = cache.createPdxInstanceFactory("Employee").writeString("name", "Emp1")
+ .writeInt("age", 72).create();
+ employees.put("1", pdx3);
+
+ Awaitility.await().atMost(30, TimeUnit.SECONDS)
+ .until(() -> assertThat(jdbcWriter.getSuccessfulEvents()).isEqualTo(3));
+
+ validateTableRowCount(2);
+ printTable();
+ }
+
private Region createRegionWithJDBCAsyncWriter(String regionName, Properties props) {
jdbcWriter = new JDBCAsyncWriter();
jdbcWriter.init(props);
--
To stop receiving notification emails like this one, please contact
['"commits@geode.apache.org" <co...@geode.apache.org>'].