ChinmaySKulkarni commented on a change in pull request #659: PHOENIX-5634: Use
'phoenix.default.update.cache.frequency' from conne…
URL: https://github.com/apache/phoenix/pull/659#discussion_r361758957
##########
File path:
phoenix-core/src/it/java/org/apache/phoenix/rpc/UpdateCacheConnectionLevelPropIT.java
##########
@@ -0,0 +1,211 @@
+package org.apache.phoenix.rpc;
+
+import org.apache.phoenix.end2end.ParallelStatsDisabledIT;
+import org.apache.phoenix.query.ConnectionQueryServices;
+import org.apache.phoenix.query.QueryConstants;
+import org.apache.phoenix.query.QueryServices;
+import org.apache.phoenix.schema.PName;
+import org.apache.phoenix.schema.types.PVarchar;
+import org.apache.phoenix.util.SchemaUtil;
+import static org.apache.phoenix.util.TestUtil.DEFAULT_SCHEMA_NAME;
+
+import org.junit.AfterClass;
+import org.junit.Test;
+import static org.junit.Assert.assertTrue;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.SQLException;
+import java.sql.ResultSet;
+import java.util.Properties;
+
+import org.mockito.Mockito;
+import static org.mockito.Matchers.anyLong;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.isNull;
+import static org.mockito.Mockito.reset;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+
+/**
+ * Tests for connection level 'Update Cache Frequency' property.
+ *
+ * These tests verify that the 'Update Cache Frequency' is honored in the
following precedence order:
+ * Table-level property > Connection-level property > Default value
+ */
+public class UpdateCacheConnectionLevelPropIT extends ParallelStatsDisabledIT {
+
+ private static Connection conn1;
+ private static Connection conn2;
+ private static ConnectionQueryServices spyForConn2;
+
+ @AfterClass
+ public static synchronized void freeResources() {
+ try {
+ conn1.close();
+ conn2.close();
+ } catch (Exception e) {
+ /* ignored */
+ }
+ }
+
+ /**
+ * Test 'Update Cache Frequency' property when it is set at
connection-level only, and not at
+ * table-level.
+ */
+ @Test
+ public void testWithConnLevelUCFNoTableLevelUCF() throws Exception {
+ long tableUpdateCacheFrequency = -1;
+ long connUpdateCacheFrequency = 1000;
+ String fullTableName = DEFAULT_SCHEMA_NAME +
QueryConstants.NAME_SEPARATOR + generateUniqueName();
+
+ setUpTableAndConnections(fullTableName, tableUpdateCacheFrequency,
connUpdateCacheFrequency);
+
+ // There should only be a single call to getTable() for fetching the
table's metadata
+ int numSelectExecutions = 2;
+ int numExpectedGetTableCalls = 1;
+ verifyExpectedGetTableCalls(fullTableName, numSelectExecutions,
numExpectedGetTableCalls);
+
+ // Wait for a period of 'connUpdateCacheFrequency' and verify that
there was one new call to getTable() for
+ // fetching the table's metadata
+ Thread.sleep(connUpdateCacheFrequency);
+ verifyExpectedGetTableCalls(fullTableName, numSelectExecutions,
numExpectedGetTableCalls);
+ }
+
+ /**
+ * Test 'Update Cache Frequency' property when it is set at table-level
only, and not at
+ * connection-level.
+ */
+ @Test
+ public void testWithTableLevelUCFNoConnLevelUCF() throws Exception {
+ long tableUpdateCacheFrequency = 1000;
+ long connUpdateCacheFrequency = -1;
+ String fullTableName = DEFAULT_SCHEMA_NAME +
QueryConstants.NAME_SEPARATOR + generateUniqueName();
+
+ // There should only be a single call to getTable() for fetching the
table's metadata
+ int numSelectExecutions = 2;
+ int numExpectedGetTableCalls = 1;
+ setUpTableAndConnections(fullTableName, tableUpdateCacheFrequency,
connUpdateCacheFrequency);
+ verifyExpectedGetTableCalls(fullTableName, numSelectExecutions,
numExpectedGetTableCalls);
+
+ // Wait for a period of 'tableUpdateCacheFrequency' and verify that
there was one new call to getTable() for
+ // fetching the table's metadata
+ Thread.sleep(tableUpdateCacheFrequency);
+ verifyExpectedGetTableCalls(fullTableName, numSelectExecutions,
numExpectedGetTableCalls);
Review comment:
Is it also worth testing that when we set UCF on table1, queries for table2
are not affected?
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services