From a82e1091e43ecc08b79158387a35e9e8b0f4b990 Mon Sep 17 00:00:00 2001
From: Sergii Kabashniuk <skabashnyuk@users.noreply.github.com>
Date: Fri, 25 Oct 2019 08:26:35 +0200
Subject: [PATCH] Do not use spy in ServerCheckerTest (#14975)

Signed-off-by: Sergii Kabashniuk <skabashniuk@redhat.com>
---
 .../server/hc/ServerCheckerTest.java          | 63 ++++++++++---------
 1 file changed, 35 insertions(+), 28 deletions(-)

diff --git a/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/hc/ServerCheckerTest.java b/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/hc/ServerCheckerTest.java
index c257030a6b..66fbb65e9e 100644
--- a/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/hc/ServerCheckerTest.java
+++ b/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/hc/ServerCheckerTest.java
@@ -12,11 +12,7 @@
 package org.eclipse.che.api.workspace.server.hc;
 
 import static java.lang.String.format;
-import static org.mockito.Mockito.atLeast;
-import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.timeout;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertFalse;
 import static org.testng.Assert.assertTrue;
@@ -24,6 +20,7 @@ import static org.testng.Assert.fail;
 
 import java.util.Timer;
 import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.TimeUnit;
 import org.eclipse.che.api.workspace.server.spi.InfrastructureException;
@@ -56,49 +53,47 @@ public class ServerCheckerTest {
   @Test(timeOut = TEST_TIMEOUT_MS)
   public void successfulCheckTest() throws Exception {
     checker =
-        spy(
-            new TestServerChecker(
-                MACHINE_NAME,
-                SERVER_REF,
-                PERIOD_MS,
-                CHECKER_TIMEOUT_MS,
-                SUCCESS_THRESHOLD,
-                TimeUnit.MILLISECONDS,
-                timer));
+        new TestServerChecker(
+            MACHINE_NAME,
+            SERVER_REF,
+            PERIOD_MS,
+            CHECKER_TIMEOUT_MS,
+            SUCCESS_THRESHOLD,
+            TimeUnit.MILLISECONDS,
+            timer);
     CompletableFuture<String> reportCompFuture = checker.getReportCompFuture();
     // not considered as available before start
     assertFalse(reportCompFuture.isDone());
     // ensure server not available before start
-    when(checker.isAvailable()).thenReturn(false);
+    CountDownLatch isAvailableCountDownLatch = checker.setAvailable(false);
 
     checker.start();
 
-    verify(checker, timeout((int) (PERIOD_MS * 2)).atLeastOnce()).isAvailable();
+    isAvailableCountDownLatch.await(PERIOD_MS * 2, TimeUnit.MILLISECONDS);
     // not considered as available after check
     assertFalse(reportCompFuture.isDone());
 
     // make server available
-    when(checker.isAvailable()).thenReturn(true);
+    isAvailableCountDownLatch = checker.setAvailable(true);
 
     assertEquals(reportCompFuture.get(), SERVER_REF);
-    verify(checker, atLeast(2)).isAvailable();
+    isAvailableCountDownLatch.await(PERIOD_MS * 2, TimeUnit.MILLISECONDS);
   }
 
   @Test(timeOut = TEST_TIMEOUT_MS)
   public void checkTimeoutTest() throws Exception {
     checker =
-        spy(
-            new TestServerChecker(
-                MACHINE_NAME,
-                SERVER_REF,
-                PERIOD_MS,
-                PERIOD_MS * 2,
-                SUCCESS_THRESHOLD,
-                TimeUnit.MILLISECONDS,
-                timer));
+        new TestServerChecker(
+            MACHINE_NAME,
+            SERVER_REF,
+            PERIOD_MS,
+            PERIOD_MS * 2,
+            SUCCESS_THRESHOLD,
+            TimeUnit.MILLISECONDS,
+            timer);
 
     // ensure server not available before start
-    when(checker.isAvailable()).thenReturn(false);
+    checker.setAvailable(false);
     checker.start();
 
     CompletableFuture<String> reportCompFuture = checker.getReportCompFuture();
@@ -119,6 +114,11 @@ public class ServerCheckerTest {
   }
 
   private static class TestServerChecker extends ServerChecker {
+
+    private boolean isAvailable;
+
+    private CountDownLatch isAvailableCountDownLatch = new CountDownLatch(1);
+
     protected TestServerChecker(
         String machineName,
         String serverRef,
@@ -132,7 +132,14 @@ public class ServerCheckerTest {
 
     @Override
     public boolean isAvailable() {
-      return false;
+      isAvailableCountDownLatch.countDown();
+      return isAvailable;
+    }
+
+    public CountDownLatch setAvailable(boolean isAvailable) {
+      this.isAvailable = isAvailable;
+      this.isAvailableCountDownLatch = new CountDownLatch(1);
+      return isAvailableCountDownLatch;
     }
   }
 }
-- 
GitLab