/*
 * The Alluxio Open Foundation licenses this work under the Apache License, version 2.0
 * (the "License"). You may not use this work except in compliance with the License, which is
 * available at www.apache.org/licenses/LICENSE-2.0
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
 * either express or implied, as more fully set forth in the License.
 *
 * See the NOTICE file distributed with this work for information regarding copyright ownership.
 */

package alluxio.server.health;

import alluxio.HealthCheckClient;
import alluxio.PropertyKey;
import alluxio.master.LocalAlluxioCluster;
import alluxio.retry.CountingRetry;
import alluxio.testutils.BaseIntegrationTest;
import alluxio.testutils.LocalAlluxioClusterResource;
import alluxio.util.network.NetworkAddressUtils;
import alluxio.worker.WorkerHealthCheckClient;

import org.junit.Assert;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;

public class WorkerHealthCheckClientIntegrationTest extends BaseIntegrationTest {

  @Rule
  public LocalAlluxioClusterResource mLocalAlluxioClusterResource =
          new LocalAlluxioClusterResource.Builder()
                  .setProperty(PropertyKey.USER_RPC_RETRY_MAX_NUM_RETRY, 30)
                  .setProperty(PropertyKey.WORKER_RPC_PORT, 29998)
                  .build();

  private LocalAlluxioCluster mLocalAlluxioCluster = null;
  private HealthCheckClient mHealthCheckClient;

  @Before
  public final void before() throws Exception {
    mLocalAlluxioCluster = mLocalAlluxioClusterResource.get();
    mHealthCheckClient = new WorkerHealthCheckClient(
        NetworkAddressUtils.getConnectAddress(NetworkAddressUtils.ServiceType.WORKER_RPC),
        () -> new CountingRetry(1));
  }

  @Test
  public void isServing() {
    Assert.assertTrue(mHealthCheckClient.isServing());
  }

  @Test
  public void isServingStopFS() throws Exception {
    mLocalAlluxioCluster.stopFS();
    Assert.assertFalse(mHealthCheckClient.isServing());
  }
}

@@ -784,57 +784,8 @@
 ce;%0A
-import alluxio.util.network.NetworkAddressUtils;%0A
 impo
@@ -827,16 +827,16 @@
 Client;%0A
+
 %0Aimport 
@@ -925,16 +925,52 @@
 .Test;%0A%0A
+import java.net.InetSocketAddress;%0A%0A
 public c
@@ -1126,20 +1126,16 @@
 =%0A      
-    
 new Loca
@@ -1171,104 +1171,8 @@
 er()
-%0A                  .setProperty(PropertyKey.USER_RPC_RETRY_MAX_NUM_RETRY, 30)%0A                  
 .set
@@ -1213,23 +1213,11 @@
 RT, 
-29998)%0A        
+0)%0A
     
@@ -1470,156 +1470,245 @@
     
-mHealthCheckClient = new WorkerHealthCheckClient(%0A        NetworkAddressUtils.getConnectAddress(Netw
+InetSocketAddress address =%0A        new InetSocketAddress(mLocalAlluxioCluster.getWorkerAddress().getHost(),%0A            mLocalAlluxioCluster.getW
 ork
+er
 Address
-Utils.ServiceType.WORKER_RPC),%0A       
+().getRpcPort());%0A    mHealthCheckClient = new WorkerHealthCheckClient(address,
  () 

Use an ephemeral worker port. (#7737)