You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by td...@apache.org on 2015/04/10 07:42:47 UTC

phoenix git commit: Test changes

Repository: phoenix
Updated Branches:
  refs/heads/txn e1521ab05 -> f844829c8


Test changes


Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/f844829c
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/f844829c
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/f844829c

Branch: refs/heads/txn
Commit: f844829c82b268f067eee680949dc702a8d9c802
Parents: e1521ab
Author: Thomas <td...@salesforce.com>
Authored: Thu Apr 9 21:19:12 2015 -0700
Committer: Thomas <td...@salesforce.com>
Committed: Thu Apr 9 21:19:14 2015 -0700

----------------------------------------------------------------------
 .../end2end/index/IndexExpressionIT.java        |   7 +-
 .../phoenix/transactions/TransactionIT.java     | 185 ++++++++++++++-----
 .../java/org/apache/phoenix/query/BaseTest.java |  68 +++----
 .../java/org/apache/phoenix/util/TestUtil.java  |   4 +
 4 files changed, 168 insertions(+), 96 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/phoenix/blob/f844829c/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexExpressionIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexExpressionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexExpressionIT.java
index 1e3733b..81c03a5 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexExpressionIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexExpressionIT.java
@@ -37,12 +37,11 @@ import org.apache.phoenix.util.DateUtil;
 import org.apache.phoenix.util.IndexUtil;
 import org.apache.phoenix.util.PropertiesUtil;
 import org.apache.phoenix.util.QueryUtil;
+import org.apache.phoenix.util.TestUtil;
 import org.junit.Test;
 
 public class IndexExpressionIT extends BaseHBaseManagedTimeIT {
 
-    private static final int NUM_MILLIS_IN_DAY = 86400000;
-
     @Test
     public void testImmutableIndexCreateAndUpdate() throws Exception {
         helpTestCreateAndUpdate(false, false);
@@ -76,7 +75,7 @@ public class IndexExpressionIT extends BaseHBaseManagedTimeIT {
         stmt.setInt(3, i);
         stmt.setLong(4, i);
         stmt.setBigDecimal(5, new BigDecimal(i*0.5d));
-        Date date = new Date(DateUtil.parseDate("2015-01-01 00:00:00").getTime() + (i - 1) * NUM_MILLIS_IN_DAY);
+        Date date = new Date(DateUtil.parseDate("2015-01-01 00:00:00").getTime() + (i - 1) * TestUtil.NUM_MILLIS_IN_DAY);
         stmt.setDate(6, date);
         stmt.setString(7, "a.varchar" + String.valueOf(i));
         stmt.setString(8, "a.char" + String.valueOf(i));
@@ -99,7 +98,7 @@ public class IndexExpressionIT extends BaseHBaseManagedTimeIT {
                 + "_A.VARCHAR" + String.valueOf(i) + "_" + StringUtils.rightPad("B.CHAR" + String.valueOf(i), 10, ' '),
                 rs.getString(1));
         assertEquals(i * 3, rs.getInt(2));
-        Date date = new Date(DateUtil.parseDate("2015-01-01 00:00:00").getTime() + (i) * NUM_MILLIS_IN_DAY);
+        Date date = new Date(DateUtil.parseDate("2015-01-01 00:00:00").getTime() + (i) * TestUtil.NUM_MILLIS_IN_DAY);
         assertEquals(date, rs.getDate(3));
         assertEquals(date, rs.getDate(4));
         assertEquals(date, rs.getDate(5));

http://git-wip-us.apache.org/repos/asf/phoenix/blob/f844829c/phoenix-core/src/it/java/org/apache/phoenix/transactions/TransactionIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/transactions/TransactionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/transactions/TransactionIT.java
index a4b5bc3..9b50551 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/transactions/TransactionIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/transactions/TransactionIT.java
@@ -9,16 +9,21 @@
  */
 package org.apache.phoenix.transactions;
 
+import static org.apache.phoenix.util.TestUtil.INDEX_DATA_SCHEMA;
+import static org.apache.phoenix.util.TestUtil.TRANSACTIONAL_DATA_TABLE;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
+import java.math.BigDecimal;
 import java.sql.Connection;
+import java.sql.Date;
 import java.sql.DriverManager;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.SQLException;
+import java.util.Map;
 import java.util.concurrent.TimeUnit;
 
 import co.cask.tephra.TransactionManager;
@@ -29,26 +34,47 @@ import co.cask.tephra.persist.InMemoryTransactionStateStorage;
 
 import org.apache.hadoop.hbase.HConstants;
 import org.apache.phoenix.end2end.BaseHBaseManagedTimeIT;
+import org.apache.phoenix.end2end.Shadower;
 import org.apache.phoenix.exception.SQLExceptionCode;
 import org.apache.phoenix.jdbc.PhoenixEmbeddedDriver.ConnectionInfo;
+import org.apache.phoenix.query.QueryConstants;
+import org.apache.phoenix.query.QueryServices;
+import org.apache.phoenix.util.DateUtil;
+import org.apache.phoenix.util.ReadOnlyProps;
+import org.apache.phoenix.util.TestUtil;
 import org.apache.twill.discovery.DiscoveryService;
 import org.apache.twill.discovery.ZKDiscoveryService;
 import org.apache.twill.zookeeper.RetryStrategies;
 import org.apache.twill.zookeeper.ZKClientService;
 import org.apache.twill.zookeeper.ZKClientServices;
 import org.apache.twill.zookeeper.ZKClients;
+import org.junit.Before;
 import org.junit.BeforeClass;
+import org.junit.ClassRule;
 import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
 
-public class TransactionIT extends BaseHBaseManagedTimeIT {
+import com.google.common.collect.Maps;
 
+public class TransactionIT extends BaseHBaseManagedTimeIT {
+	
+	private static final String FULL_TABLE_NAME = INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + TRANSACTIONAL_DATA_TABLE;
+	@ClassRule
+	public static TemporaryFolder tmpFolder = new TemporaryFolder();
+	
 	@BeforeClass
-	public static void setupBeforeClass() throws Exception {
+    @Shadower(classBeingShadowed = BaseHBaseManagedTimeIT.class)
+	public static void doSetup() throws Exception {
+	    Map<String,String> props = Maps.newHashMapWithExpectedSize(1);
+        // drop HBase tables because TransactionProcessor will not allow you to delete rows
+        props.put(QueryServices.DROP_METADATA_ATTRIB, Boolean.toString(true));
+        setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
+        
 		config.setBoolean(TxConstants.Manager.CFG_DO_PERSIST, false);
-//		config.set(TxConstants.Service.CFG_DATA_TX_ZOOKEEPER_QUORUM, ConnectionInfo.getZookeeperConnectionString(getUrl()));
 		config.set(TxConstants.Service.CFG_DATA_TX_CLIENT_RETRY_STRATEGY, "n-times");
 		config.setInt(TxConstants.Service.CFG_DATA_TX_CLIENT_ATTEMPTS, 1);
-
+		config.set(TxConstants.Manager.CFG_TX_SNAPSHOT_DIR, tmpFolder.newFolder().getAbsolutePath());
+		
 		ConnectionInfo connInfo = ConnectionInfo.create(getUrl());
 	    ZKClientService zkClient = ZKClientServices.delegate(
 	      ZKClients.reWatchOnExpire(
@@ -69,45 +95,103 @@ public class TransactionIT extends BaseHBaseManagedTimeIT {
 	    txService.startAndWait();
 	}
 	
+	@Before
+    public void setUp() throws SQLException {
+		ensureTableCreated(getUrl(), TRANSACTIONAL_DATA_TABLE);
+    }
+	
+	private void setRowKeyColumns(PreparedStatement stmt, int i) throws SQLException {
+        // insert row
+        stmt.setString(1, "varchar" + String.valueOf(i));
+        stmt.setString(2, "char" + String.valueOf(i));
+        stmt.setInt(3, i);
+        stmt.setLong(4, i);
+        stmt.setBigDecimal(5, new BigDecimal(i*0.5d));
+        Date date = new Date(DateUtil.parseDate("2015-01-01 00:00:00").getTime() + (i - 1) * TestUtil.NUM_MILLIS_IN_DAY);
+        stmt.setDate(6, date);
+    }
+	
+	private void validateRowKeyColumns(ResultSet rs, int i) throws SQLException {
+		assertTrue(rs.next());
+		assertEquals(rs.getString(1), "varchar" + String.valueOf(i));
+		assertEquals(rs.getString(2), "char" + String.valueOf(i));
+		assertEquals(rs.getInt(3), i);
+		assertEquals(rs.getInt(4), i);
+		assertEquals(rs.getBigDecimal(5), new BigDecimal(i*0.5d));
+		Date date = new Date(DateUtil.parseDate("2015-01-01 00:00:00").getTime() + (i - 1) * TestUtil.NUM_MILLIS_IN_DAY);
+		assertEquals(rs.getDate(6), date);
+	}
+	
+//	@Test
+//	public void testUpsert() throws Exception {
+//		Connection conn = DriverManager.getConnection(getUrl());
+//		String selectSql = "SELECT * FROM "+FULL_TABLE_NAME;
+//		try {
+//			conn.setAutoCommit(false);
+//			ResultSet rs = conn.createStatement().executeQuery(selectSql);
+//	     	assertFalse(rs.next());
+//	     	
+//	        String upsert = "UPSERT INTO " + FULL_TABLE_NAME + "(varchar_pk, char_pk, int_pk, long_pk, decimal_pk, date_pk) VALUES(?, ?, ?, ?, ?, ?)";
+//	        PreparedStatement stmt = conn.prepareStatement(upsert);
+//			// upsert two rows
+//			setRowKeyColumns(stmt, 1);
+//			stmt.execute();
+//			setRowKeyColumns(stmt, 2);
+//			stmt.execute();
+//	        
+//	        // verify no rows returned 
+//			rs = conn.createStatement().executeQuery(selectSql);
+//	     	assertFalse(rs.next());
+//	     	
+//	        conn.commit();
+//	        // verify row exists
+//	        rs = conn.createStatement().executeQuery(selectSql);
+//	        validateRowKeyColumns(rs, 1);
+//	        validateRowKeyColumns(rs, 2);
+//	        assertFalse(rs.next());
+//		}
+//        finally {
+//        	conn.close();
+//        }
+//	}
+	
 	@Test
-	public void testUpsert() throws Exception {
+	public void testUpsert2() throws Exception {
 		Connection conn = DriverManager.getConnection(getUrl());
 		String ddl = "CREATE TABLE t (k1 INTEGER PRIMARY KEY, k2 INTEGER) transactional=true";
 		try {
 			conn.setAutoCommit(false);
 			conn.createStatement().execute(ddl);
 			// upsert one row
-			PreparedStatement stmt = conn.prepareStatement("UPSERT INTO t VALUES(?,?)");
-	        stmt.setInt(1, 1);
-	        stmt.setInt(2, 1);
-	        stmt.execute();
-	        
-	        // verify no rows returned 
-	     	ResultSet rs = conn.createStatement().executeQuery("SELECT * FROM t");
-	     	assertFalse(rs.next());
-	     	
-	        conn.commit();
-	        // verify row exists
-	        rs = conn.createStatement().executeQuery("SELECT * FROM t");
-	        assertTrue(rs.next());
-	        assertEquals(1,rs.getInt(1));
-	        assertEquals(1,rs.getInt(1));
-	        assertFalse(rs.next());
+			PreparedStatement stmt = conn
+					.prepareStatement("UPSERT INTO t VALUES(?,?)");
+			stmt.setInt(1, 1);
+			stmt.setInt(2, 1);
+			stmt.execute();
+			stmt.setInt(1, 2);
+			stmt.setInt(2, 2);
+			stmt.execute();
+			conn.commit();
+			// verify row exists
+			ResultSet rs = conn.createStatement().executeQuery(
+					"SELECT * FROM t");
+			assertTrue(rs.next());
+			assertEquals(1, rs.getInt(1));
+			assertTrue(rs.next());
+			assertEquals(2, rs.getInt(1));
+			assertFalse(rs.next());
+		} finally {
+			conn.close();
 		}
-        finally {
-        	conn.close();
-        }
 	}
 	
 	@Test
-	public void testUpsertWithAutocommit() throws Exception {
+	public void testAutocommitQueryEmptyTable() throws Exception {
 		Connection conn = DriverManager.getConnection(getUrl());
-		String ddl = "CREATE TABLE t (k1 INTEGER PRIMARY KEY, k2 INTEGER) transactional=true";
 		try {
 			conn.setAutoCommit(true);
-			conn.createStatement().execute(ddl);
 			// verify no rows returned
-			ResultSet rs = conn.createStatement().executeQuery("SELECT * FROM t");
+			ResultSet rs = conn.createStatement().executeQuery("SELECT * FROM "+FULL_TABLE_NAME);
 			assertFalse(rs.next());
 		} finally {
 			conn.close();
@@ -118,21 +202,24 @@ public class TransactionIT extends BaseHBaseManagedTimeIT {
 	public void testColConflicts() throws Exception {
 		Connection conn1 = DriverManager.getConnection(getUrl());
 		Connection conn2 = DriverManager.getConnection(getUrl());
-		String ddl = "CREATE TABLE t (k1 INTEGER PRIMARY KEY, k2 INTEGER) transactional=true";
 		try {
 			conn1.setAutoCommit(false);
 			conn2.setAutoCommit(false);
-			conn1.createStatement().execute(ddl);
+			String selectSql = "SELECT * FROM "+FULL_TABLE_NAME;
+			conn1.setAutoCommit(false);
+			ResultSet rs = conn1.createStatement().executeQuery(selectSql);
+	     	assertFalse(rs.next());
 			// upsert row using conn1
-			PreparedStatement stmt = conn1.prepareStatement("UPSERT INTO t VALUES(?,?)");
-	        stmt.setInt(1, 1);
-	        stmt.setInt(2, 10);
+			String upsertSql = "UPSERT INTO " + FULL_TABLE_NAME + "(varchar_pk, char_pk, int_pk, long_pk, decimal_pk, date_pk, a.int_col1) VALUES(?, ?, ?, ?, ?, ?, ?)";
+			PreparedStatement stmt = conn1.prepareStatement(upsertSql);
+			setRowKeyColumns(stmt, 1);
+			stmt.setInt(7, 10);
 	        stmt.execute();
 	        // upsert row using conn2
- 			stmt = conn2.prepareStatement("UPSERT INTO t VALUES(?,?)");
- 	        stmt.setInt(1, 1);
- 	        stmt.setInt(2, 11);
- 	        stmt.execute();
+ 			stmt = conn2.prepareStatement(upsertSql);
+ 			setRowKeyColumns(stmt, 1);
+			stmt.setInt(7, 11);
+	        stmt.execute();
  	        
  	        conn1.commit();
 	        //second commit should fail
@@ -153,20 +240,24 @@ public class TransactionIT extends BaseHBaseManagedTimeIT {
 	public void testRowConflicts() throws Exception {
 		Connection conn1 = DriverManager.getConnection(getUrl());
 		Connection conn2 = DriverManager.getConnection(getUrl());
-		String ddl = "CREATE TABLE t (k1 INTEGER PRIMARY KEY, k2 INTEGER, k3 INTEGER) transactional=true";
 		try {
 			conn1.setAutoCommit(false);
 			conn2.setAutoCommit(false);
-			conn1.createStatement().execute(ddl);
+			String selectSql = "SELECT * FROM "+FULL_TABLE_NAME;
+			conn1.setAutoCommit(false);
+			ResultSet rs = conn1.createStatement().executeQuery(selectSql);
+	     	assertFalse(rs.next());
 			// upsert row using conn1
-			PreparedStatement stmt = conn1.prepareStatement("UPSERT INTO t(k1,k2) VALUES(?,?)");
-	        stmt.setInt(1, 1);
-	        stmt.setInt(2, 10);
+			String upsertSql = "UPSERT INTO " + FULL_TABLE_NAME + "(varchar_pk, char_pk, int_pk, long_pk, decimal_pk, date_pk, a.int_col1) VALUES(?, ?, ?, ?, ?, ?, ?)";
+			PreparedStatement stmt = conn1.prepareStatement(upsertSql);
+			setRowKeyColumns(stmt, 1);
+			stmt.setInt(7, 10);
 	        stmt.execute();
 	        // upsert row using conn2
- 			stmt = conn2.prepareStatement("UPSERT INTO t(k1,k3) VALUES(?,?)");
- 	        stmt.setInt(1, 1);
- 	        stmt.setInt(2, 11);
+	        upsertSql = "UPSERT INTO " + FULL_TABLE_NAME + "(varchar_pk, char_pk, int_pk, long_pk, decimal_pk, date_pk, b.int_col2) VALUES(?, ?, ?, ?, ?, ?, ?)";
+ 			stmt = conn2.prepareStatement(upsertSql);
+ 			setRowKeyColumns(stmt, 1);
+			stmt.setInt(7, 11);
  	        stmt.execute();
  	        
  	        conn1.commit();
@@ -185,9 +276,5 @@ public class TransactionIT extends BaseHBaseManagedTimeIT {
 	}
 
 
-//	@AfterClass
-//	public static void shutdownAfterClass() throws Exception {
-//		txManager.stop();
-//	}
 
 }

http://git-wip-us.apache.org/repos/asf/phoenix/blob/f844829c/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java b/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java
index 9947440..699d350 100644
--- a/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java
+++ b/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java
@@ -81,6 +81,7 @@ import static org.apache.phoenix.util.TestUtil.STABLE_NAME;
 import static org.apache.phoenix.util.TestUtil.TABLE_WITH_ARRAY;
 import static org.apache.phoenix.util.TestUtil.TABLE_WITH_SALTING;
 import static org.apache.phoenix.util.TestUtil.TEST_PROPERTIES;
+import static org.apache.phoenix.util.TestUtil.TRANSACTIONAL_DATA_TABLE;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
@@ -158,7 +159,27 @@ import com.google.common.collect.Sets;
  *
  */
 public abstract class BaseTest {
-    private static final Map<String,String> tableDDLMap;
+    private static final String TEST_TABLE_SCHEMA = "(" +
+	                "   varchar_pk VARCHAR NOT NULL, " +
+	                "   char_pk CHAR(6) NOT NULL, " +
+	                "   int_pk INTEGER NOT NULL, "+ 
+	                "   long_pk BIGINT NOT NULL, " +
+	                "   decimal_pk DECIMAL(31, 10) NOT NULL, " +
+	                "   date_pk DATE NOT NULL, " +
+	                "   a.varchar_col1 VARCHAR, " +
+	                "   a.char_col1 CHAR(10), " +
+	                "   a.int_col1 INTEGER, " +
+	                "   a.long_col1 BIGINT, " +
+	                "   a.decimal_col1 DECIMAL(31, 10), " +
+	                "   a.date1 DATE, " +
+	                "   b.varchar_col2 VARCHAR, " +
+	                "   b.char_col2 CHAR(10), " +
+	                "   b.int_col2 INTEGER, " +
+	                "   b.long_col2 BIGINT, " +
+	                "   b.decimal_col2 DECIMAL(31, 10), " +
+	                "   b.date2 DATE " +
+	                "   CONSTRAINT pk PRIMARY KEY (varchar_pk, char_pk, int_pk, long_pk DESC, decimal_pk, date_pk)) ";
+	private static final Map<String,String> tableDDLMap;
     private static final Logger logger = LoggerFactory.getLogger(BaseTest.class);
 
     static {
@@ -374,48 +395,9 @@ public abstract class BaseTest {
         builder.put("KVBigIntValueTest", "create table KVBigIntValueTest" +
                 "   (pk integer not null primary key,\n" +
                 "    kv bigint)\n");
-        builder.put(INDEX_DATA_TABLE, "create table " + INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + INDEX_DATA_TABLE + "(" +
-                "   varchar_pk VARCHAR NOT NULL, " +
-                "   char_pk CHAR(6) NOT NULL, " +
-                "   int_pk INTEGER NOT NULL, "+ 
-                "   long_pk BIGINT NOT NULL, " +
-                "   decimal_pk DECIMAL(31, 10) NOT NULL, " +
-                "   date_pk DATE NOT NULL, " +
-                "   a.varchar_col1 VARCHAR, " +
-                "   a.char_col1 CHAR(10), " +
-                "   a.int_col1 INTEGER, " +
-                "   a.long_col1 BIGINT, " +
-                "   a.decimal_col1 DECIMAL(31, 10), " +
-                "   a.date1 DATE, " +
-                "   b.varchar_col2 VARCHAR, " +
-                "   b.char_col2 CHAR(10), " +
-                "   b.int_col2 INTEGER, " +
-                "   b.long_col2 BIGINT, " +
-                "   b.decimal_col2 DECIMAL(31, 10), " +
-                "   b.date2 DATE " +
-                "   CONSTRAINT pk PRIMARY KEY (varchar_pk, char_pk, int_pk, long_pk DESC, decimal_pk, date_pk)) " +
-                "IMMUTABLE_ROWS=true");
-        builder.put(MUTABLE_INDEX_DATA_TABLE, "create table " + INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + MUTABLE_INDEX_DATA_TABLE + "(" +
-                "   varchar_pk VARCHAR NOT NULL, " +
-                "   char_pk CHAR(6) NOT NULL, " +
-                "   int_pk INTEGER NOT NULL, "+ 
-                "   long_pk BIGINT NOT NULL, " +
-                "   decimal_pk DECIMAL(31, 10) NOT NULL, " +
-                "   date_pk DATE NOT NULL, " +
-                "   a.varchar_col1 VARCHAR, " +
-                "   a.char_col1 CHAR(10), " +
-                "   a.int_col1 INTEGER, " +
-                "   a.long_col1 BIGINT, " +
-                "   a.decimal_col1 DECIMAL(31, 10), " +
-                "   a.date1 DATE, " +
-                "   b.varchar_col2 VARCHAR, " +
-                "   b.char_col2 CHAR(10), " +
-                "   b.int_col2 INTEGER, " +
-                "   b.long_col2 BIGINT, " +
-                "   b.decimal_col2 DECIMAL(31, 10), " +
-                "   b.date2 DATE " +
-                "   CONSTRAINT pk PRIMARY KEY (varchar_pk, char_pk, int_pk, long_pk DESC, decimal_pk, date_pk)) "
-                );
+        builder.put(INDEX_DATA_TABLE, "create table " + INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + INDEX_DATA_TABLE + TEST_TABLE_SCHEMA + "IMMUTABLE_ROWS=true");
+        builder.put(MUTABLE_INDEX_DATA_TABLE, "create table " + INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + MUTABLE_INDEX_DATA_TABLE + TEST_TABLE_SCHEMA);
+        builder.put(TRANSACTIONAL_DATA_TABLE, "create table " + INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + TRANSACTIONAL_DATA_TABLE + TEST_TABLE_SCHEMA + "TRANSACTIONAL=true");
         builder.put("SumDoubleTest","create table SumDoubleTest" +
                 "   (id varchar not null primary key, d DOUBLE, f FLOAT, ud UNSIGNED_DOUBLE, uf UNSIGNED_FLOAT, i integer, de decimal)");
         builder.put(JOIN_ORDER_TABLE_FULL_NAME, "create table " + JOIN_ORDER_TABLE_FULL_NAME +

http://git-wip-us.apache.org/repos/asf/phoenix/blob/f844829c/phoenix-core/src/test/java/org/apache/phoenix/util/TestUtil.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/test/java/org/apache/phoenix/util/TestUtil.java b/phoenix-core/src/test/java/org/apache/phoenix/util/TestUtil.java
index 872c318..9fbb8c9 100644
--- a/phoenix-core/src/test/java/org/apache/phoenix/util/TestUtil.java
+++ b/phoenix-core/src/test/java/org/apache/phoenix/util/TestUtil.java
@@ -95,6 +95,8 @@ public class TestUtil {
     public static final String DEFAULT_INDEX_TABLE_NAME = "I";
     public static final String DEFAULT_DATA_TABLE_FULL_NAME = SchemaUtil.getTableName(DEFAULT_SCHEMA_NAME, "T");
     public static final String DEFAULT_INDEX_TABLE_FULL_NAME = SchemaUtil.getTableName(DEFAULT_SCHEMA_NAME, "I");
+    
+	public static final int NUM_MILLIS_IN_DAY = 86400000;
 
     private TestUtil() {
     }
@@ -188,6 +190,7 @@ public class TestUtil {
     public static final String INDEX_DATA_SCHEMA = "INDEX_TEST";
     public static final String INDEX_DATA_TABLE = "INDEX_DATA_TABLE";
     public static final String MUTABLE_INDEX_DATA_TABLE = "MUTABLE_INDEX_DATA_TABLE";
+    public static final String TRANSACTIONAL_DATA_TABLE = "TRANSACTIONAL_DATA_TABLE";
     public static final String JOIN_SCHEMA = "Join";
     public static final String JOIN_ORDER_TABLE = "OrderTable";
     public static final String JOIN_CUSTOMER_TABLE = "CustomerTable";
@@ -565,3 +568,4 @@ public class TestUtil {
         conn.close();
     }
 }
+