[ 
https://issues.apache.org/jira/browse/PHOENIX-7029?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17760625#comment-17760625
 ] 

ASF GitHub Bot commented on PHOENIX-7029:
-----------------------------------------

shahrs87 commented on code in PR #1664:
URL: https://github.com/apache/phoenix/pull/1664#discussion_r1310809207


##########
phoenix-core/src/it/java/org/apache/phoenix/jdbc/PhoenixTestDriverIT.java:
##########
@@ -0,0 +1,124 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.phoenix.jdbc;
+
+import org.apache.phoenix.end2end.NeedsOwnMiniClusterTest;
+import org.apache.phoenix.query.BaseTest;
+import org.apache.phoenix.query.ConnectionQueryServices;
+import org.apache.phoenix.schema.PMetaData;
+import org.apache.phoenix.schema.PTableKey;
+import org.apache.phoenix.schema.PTableRef;
+import org.apache.phoenix.schema.TableNotFoundException;
+import org.apache.phoenix.thirdparty.com.google.common.collect.Maps;
+import org.apache.phoenix.util.PropertiesUtil;
+import org.apache.phoenix.util.QueryUtil;
+import org.apache.phoenix.util.ReadOnlyProps;
+import org.apache.phoenix.util.TestUtil;
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.SQLException;
+import java.util.Map;
+import java.util.Properties;
+
+@Category(NeedsOwnMiniClusterTest.class)
+public class PhoenixTestDriverIT extends BaseTest {
+
+    @BeforeClass
+    public static synchronized void doSetup() throws Exception {
+        Map<String, String> props = Maps.newHashMapWithExpectedSize(1);
+        setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator()));
+    }
+
+    /**
+     * Test that connections created using the same url have the same CQSI 
object.
+     */
+    @Test
+    public void testSameCQSI() throws SQLException {
+        Properties props = PropertiesUtil.deepCopy(TestUtil.TEST_PROPERTIES);
+        String url = QueryUtil.getConnectionUrl(props, config, "client1");
+        try (Connection conn1 = DriverManager.getConnection(url);
+             Connection conn2 = DriverManager.getConnection(url)) {
+            ConnectionQueryServices cqs1 = 
conn1.unwrap(PhoenixConnection.class).getQueryServices();
+            ConnectionQueryServices cqs2 = 
conn2.unwrap(PhoenixConnection.class).getQueryServices();
+            Assert.assertNotNull(cqs1);
+            Assert.assertNotNull(cqs2);
+            Assert.assertTrue("Connections using the same URL should have the 
same CQSI object.", cqs1.equals(cqs2));
+        }
+    }
+
+    /**
+     * Test that connections created using different urls have different CQSI 
objects.
+     */
+    @Test
+    public void testDifferentCQSI() throws SQLException {
+        Properties props = PropertiesUtil.deepCopy(TestUtil.TEST_PROPERTIES);
+        String url1 = QueryUtil.getConnectionUrl(props, config, "client1");
+        String url2 = QueryUtil.getConnectionUrl(props, config, "client2");
+        try (Connection conn1 = DriverManager.getConnection(url1);
+             Connection conn2 = DriverManager.getConnection(url2)) {
+            ConnectionQueryServices cqs1 = 
conn1.unwrap(PhoenixConnection.class).getQueryServices();
+            ConnectionQueryServices cqs2 = 
conn2.unwrap(PhoenixConnection.class).getQueryServices();
+            Assert.assertNotNull(cqs1);
+            Assert.assertNotNull(cqs2);
+            Assert.assertTrue("Connections using different URL should have 
different CQSI objects.", !cqs1.equals(cqs2));

Review Comment:
   You could have used assertNotEquals.





> Add support for multiple query services in PhoenixTestDriver.
> -------------------------------------------------------------
>
>                 Key: PHOENIX-7029
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-7029
>             Project: Phoenix
>          Issue Type: Sub-task
>            Reporter: Rushabh Shah
>            Assignee: Palash Chauhan
>            Priority: Major
>
> In PhoenixTestDriver, we cache the connectionQueryServices at class level and 
> use it for all the requests. 
>  
> {code:java}
> @Override // public for testing
> public synchronized ConnectionQueryServices getConnectionQueryServices(String 
> url, Properties info) throws SQLException {
>     checkClosed();
>     if (connectionQueryServices != null) {
>         return connectionQueryServices;
>     } 
>     ....
>     ....{code}
> In PHOENIX-7025, we want to test different clients using different CQSI. We 
> need to add support in PhoenixTestDriver to hold multiple CQSI.
> Even though we are committing the sub tasks to dev branch, this change is 
> independent of the feature and can go in master branch directly.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to