[
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)