blob: 11add1ffcb2907b37a22c30d018edea70222dd11 [file] [log] [blame]
/**
* 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.util;
import static org.apache.phoenix.util.PhoenixRuntime.ANNOTATION_ATTRIB_PREFIX;
import static org.apache.phoenix.util.PhoenixRuntime.TENANT_ID_ATTRIB;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import java.util.Map;
import java.util.Properties;
import org.apache.phoenix.thirdparty.com.google.common.collect.Maps;
import org.apache.hadoop.hbase.client.Consistency;
import org.apache.phoenix.query.QueryServices;
import org.junit.Test;
public class JDBCUtilTest {
@Test
public void testGetCustomTracingAnnotationsWithNone() {
String url = "localhost;TenantId=abc;";
Map<String, String> customAnnotations = JDBCUtil.getAnnotations(url, new Properties());
assertTrue(customAnnotations.isEmpty());
}
@Test
public void testGetCustomTracingAnnotationInBothPropertiesAndURL() {
String annotKey1 = "key1";
String annotVal1 = "val1";
String annotKey2 = "key2";
String annotVal2 = "val2";
String annotKey3 = "key3";
String annotVal3 = "val3";
String url= "localhost;" + ANNOTATION_ATTRIB_PREFIX + annotKey1 + '=' + annotVal1;
Properties prop = new Properties();
prop.put(ANNOTATION_ATTRIB_PREFIX + annotKey2, annotVal2);
prop.put(ANNOTATION_ATTRIB_PREFIX + annotKey3, annotVal3);
Map<String, String> customAnnotations = JDBCUtil.getAnnotations(url, prop);
assertEquals(3, customAnnotations.size());
assertEquals(annotVal1, customAnnotations.get(annotKey1));
assertEquals(annotVal2, customAnnotations.get(annotKey2));
assertEquals(annotVal3, customAnnotations.get(annotKey3));
}
@Test
public void testRemoveProperty() {
assertEquals("localhost;", JDBCUtil.removeProperty("localhost;TenantId=abc;", TENANT_ID_ATTRIB));
assertEquals("localhost;foo=bar", JDBCUtil.removeProperty("localhost;TenantId=abc;foo=bar", TENANT_ID_ATTRIB));
assertEquals("localhost;TenantId=abc", JDBCUtil.removeProperty("localhost;TenantId=abc;foo=bar", "foo"));
assertEquals("localhost;TenantId=abc;foo=bar", JDBCUtil.removeProperty("localhost;TenantId=abc;foo=bar", "bar"));
}
@Test
public void testGetAutoCommit_NotSpecified_DefaultTrue() {
assertTrue(JDBCUtil.getAutoCommit("localhost", new Properties(), true));
}
@Test
public void testGetAutoCommit_NotSpecified_DefaultFalse() {
assertFalse(JDBCUtil.getAutoCommit("localhost", new Properties(), false));
}
@Test
public void testGetAutoCommit_TrueInUrl() {
assertTrue(JDBCUtil.getAutoCommit("localhost;AutoCommit=TrUe", new Properties(), false));
}
@Test
public void testGetAutoCommit_FalseInUrl() {
assertFalse(JDBCUtil.getAutoCommit("localhost;AutoCommit=FaLse", new Properties(), false));
}
@Test
public void testGetAutoCommit_TrueInProperties() {
Properties props = new Properties();
props.setProperty("AutoCommit", "true");
assertTrue(JDBCUtil.getAutoCommit("localhost", props, false));
}
@Test
public void testGetAutoCommit_FalseInProperties() {
Properties props = new Properties();
props.setProperty("AutoCommit", "false");
assertFalse(JDBCUtil.getAutoCommit("localhost", props, false));
}
@Test
public void testGetConsistency_TIMELINE_InUrl() {
assertTrue(JDBCUtil.getConsistencyLevel("localhost;Consistency=TIMELINE", new Properties(),
Consistency.STRONG.toString()) == Consistency.TIMELINE);
}
@Test
public void testSchema() {
assertTrue(JDBCUtil.getSchema("localhost;schema=TEST", new Properties(), null).equals("TEST"));
assertNull(JDBCUtil.getSchema("localhost;schema=", new Properties(), null));
assertNull(JDBCUtil.getSchema("localhost;", new Properties(), null));
}
@Test
public void testGetConsistency_TIMELINE_InProperties() {
Properties props = new Properties();
props.setProperty(PhoenixRuntime.CONSISTENCY_ATTRIB, "TIMELINE");
assertTrue(JDBCUtil.getConsistencyLevel("localhost", props, Consistency.STRONG.toString())
== Consistency.TIMELINE);
}
@Test
public void testGetMaxMutateBytes() throws Exception {
assertEquals(1000L, JDBCUtil.getMutateBatchSizeBytes("localhost;" + PhoenixRuntime.UPSERT_BATCH_SIZE_BYTES_ATTRIB +
"=1000", new Properties(), ReadOnlyProps.EMPTY_PROPS));
Properties props = new Properties();
props.setProperty(PhoenixRuntime.UPSERT_BATCH_SIZE_BYTES_ATTRIB, "2000");
assertEquals(2000L, JDBCUtil.getMutateBatchSizeBytes("localhost", props, ReadOnlyProps.EMPTY_PROPS));
Map<String, String> propMap = Maps.newHashMap();
propMap.put(QueryServices.MUTATE_BATCH_SIZE_BYTES_ATTRIB, "3000");
ReadOnlyProps readOnlyProps = new ReadOnlyProps(propMap);
assertEquals(3000L, JDBCUtil.getMutateBatchSizeBytes("localhost", new Properties(), readOnlyProps));
}
@Test
public void formatZookeeperUrlSameOrderTest() {
String zk1 = "zk1.net\\:2181,zk2.net\\:2181,zk3.net\\:2181::/hbase";
String result = JDBCUtil.formatZookeeperUrl(zk1);
assertEquals(zk1,result);
}
@Test
public void formatZookeeperUrlDifferentOrderTest() {
String zk1 = "zk3.net,zk2.net,zk1.net:2181:/hbase";
String result = JDBCUtil.formatZookeeperUrl(zk1);
assertEquals("zk1.net\\:2181,zk2.net\\:2181,zk3.net\\:2181::/hbase",result);
}
@Test
public void formatZookeeperUrlNoTrailersTest() {
String zk1 = "zk1.net,zk2.net,zk3.net";
String result = JDBCUtil.formatZookeeperUrl(zk1);
assertEquals("zk1.net\\:2181,zk2.net\\:2181,zk3.net\\:2181::/hbase",result);
}
@Test
public void formatZookeeperUrlToLowercaseTest() {
String zk1 = "MYHOST1.NET,MYHOST2.NET";
String result = JDBCUtil.formatZookeeperUrl(zk1);
assertEquals("myhost1.net\\:2181,myhost2.net\\:2181::/hbase",result);
}
}