001/* 002 * Licensed to the Apache Software Foundation (ASF) under one 003 * or more contributor license agreements. See the NOTICE file 004 * distributed with this work for additional information 005 * regarding copyright ownership. The ASF licenses this file 006 * to you under the Apache License, Version 2.0 (the 007 * "License"); you may not use this file except in compliance 008 * with the License. You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, software 013 * distributed under the License is distributed on an "AS IS" BASIS, 014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 015 * See the License for the specific language governing permissions and 016 * limitations under the License. 017 */ 018package org.apache.hadoop.hbase.client; 019 020import static org.junit.jupiter.api.Assertions.assertEquals; 021import static org.junit.jupiter.api.Assertions.assertThrows; 022import static org.junit.jupiter.api.Assertions.assertTrue; 023 024import java.util.Arrays; 025import java.util.List; 026import org.apache.hadoop.conf.Configuration; 027import org.apache.hadoop.hbase.HBaseConfiguration; 028import org.apache.hadoop.hbase.HConstants; 029import org.apache.hadoop.hbase.testclassification.ClientTests; 030import org.apache.hadoop.hbase.testclassification.SmallTests; 031import org.junit.jupiter.api.Tag; 032import org.junit.jupiter.api.Test; 033 034/** 035 * See HBASE-28608. Configuration tests for (non async) connections 036 */ 037@Tag(ClientTests.TAG) 038@Tag(SmallTests.TAG) 039public class TestConnectionConfiguration { 040 041 @Test 042 public void testDefaultMetaOperationTimeout() { 043 Configuration conf = HBaseConfiguration.create(); 044 long clientOperationTimeoutMs = 1000; 045 conf.setLong(HConstants.HBASE_CLIENT_OPERATION_TIMEOUT, clientOperationTimeoutMs); 046 ConnectionConfiguration config = new ConnectionConfiguration(conf); 047 assertEquals(clientOperationTimeoutMs, config.getOperationTimeout()); 048 assertEquals(clientOperationTimeoutMs, config.getMetaOperationTimeout()); 049 } 050 051 @Test 052 public void testNegativeTimeoutsThrow() { 053 List<String> timeoutKeys = Arrays.asList(HConstants.HBASE_CLIENT_META_OPERATION_TIMEOUT, 054 HConstants.HBASE_CLIENT_OPERATION_TIMEOUT, 055 ConnectionConfiguration.PRIMARY_CALL_TIMEOUT_MICROSECOND, 056 ConnectionConfiguration.PRIMARY_SCAN_TIMEOUT_MICROSECOND, 057 HConstants.HBASE_CLIENT_META_REPLICA_SCAN_TIMEOUT, HConstants.HBASE_RPC_TIMEOUT_KEY, 058 HConstants.HBASE_RPC_READ_TIMEOUT_KEY, 059 ConnectionConfiguration.HBASE_CLIENT_META_READ_RPC_TIMEOUT_KEY, 060 HConstants.HBASE_RPC_WRITE_TIMEOUT_KEY); 061 062 for (String key : timeoutKeys) { 063 Configuration conf = HBaseConfiguration.create(); 064 conf.setInt(key, -1); 065 IllegalArgumentException error = 066 assertThrows(IllegalArgumentException.class, () -> new ConnectionConfiguration(conf), key); 067 assertTrue(error.getMessage().contains(key), key); 068 } 069 } 070 071 @Test 072 public void testZeroTimeoutsAreAllowed() { 073 Configuration conf = HBaseConfiguration.create(); 074 conf.setInt(HConstants.HBASE_CLIENT_OPERATION_TIMEOUT, 0); 075 conf.setInt(HConstants.HBASE_CLIENT_META_OPERATION_TIMEOUT, 0); 076 conf.setInt(ConnectionConfiguration.PRIMARY_CALL_TIMEOUT_MICROSECOND, 0); 077 conf.setInt(ConnectionConfiguration.PRIMARY_SCAN_TIMEOUT_MICROSECOND, 0); 078 conf.setInt(HConstants.HBASE_CLIENT_META_REPLICA_SCAN_TIMEOUT, 0); 079 conf.setInt(HConstants.HBASE_RPC_TIMEOUT_KEY, 0); 080 conf.setInt(HConstants.HBASE_RPC_READ_TIMEOUT_KEY, 0); 081 conf.setInt(ConnectionConfiguration.HBASE_CLIENT_META_READ_RPC_TIMEOUT_KEY, 0); 082 conf.setInt(HConstants.HBASE_RPC_WRITE_TIMEOUT_KEY, 0); 083 084 ConnectionConfiguration config = new ConnectionConfiguration(conf); 085 assertEquals(0, config.getOperationTimeout()); 086 assertEquals(0, config.getMetaOperationTimeout()); 087 assertEquals(0, config.getPrimaryCallTimeoutMicroSecond()); 088 assertEquals(0, config.getReplicaCallTimeoutMicroSecondScan()); 089 assertEquals(0, config.getMetaReplicaCallTimeoutMicroSecondScan()); 090 assertEquals(0, config.getRpcTimeout()); 091 assertEquals(0, config.getReadRpcTimeout()); 092 assertEquals(0, config.getMetaReadRpcTimeout()); 093 assertEquals(0, config.getWriteRpcTimeout()); 094 } 095 096}