2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License. You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
18 package org
.apache
.hadoop
.hbase
;
20 import java
.io
.IOException
;
21 import java
.util
.concurrent
.CompletableFuture
;
22 import java
.util
.function
.Supplier
;
23 import org
.apache
.hadoop
.hbase
.client
.AsyncConnection
;
24 import org
.junit
.ClassRule
;
25 import org
.junit
.Rule
;
26 import org
.junit
.rules
.ExternalResource
;
29 * A {@link Rule} that manages the lifecycle of an instance of {@link AsyncConnection}. Can be used
30 * in either the {@link Rule} or {@link ClassRule} positions.
32 * Use in combination with {@link MiniClusterRule}, for example:
35 * public class TestMyClass {
36 * private static final MiniClusterRule miniClusterRule = MiniClusterRule.newBuilder().build();
37 * private static final ConnectionRule connectionRule =
38 * new ConnectionRule(miniClusterRule::createConnection);
41 * public static final TestRule rule = RuleChain
42 * .outerRule(miniClusterRule)
43 * .around(connectionRule);
47 public class ConnectionRule
extends ExternalResource
{
49 private final Supplier
<CompletableFuture
<AsyncConnection
>> connectionSupplier
;
50 private AsyncConnection connection
;
52 public ConnectionRule(final Supplier
<CompletableFuture
<AsyncConnection
>> connectionSupplier
) {
53 this.connectionSupplier
= connectionSupplier
;
56 public AsyncConnection
getConnection() {
61 protected void before() throws Throwable
{
62 this.connection
= connectionSupplier
.get().join();
66 protected void after() {
67 if (this.connection
!= null) {
70 } catch (IOException e
) {
71 throw new RuntimeException(e
);