IndexEventHandlerTest: fix flakiness in concurrent indexing tests

The usage of CyclicBarrier to synchronize two concurrent tasks was not
coded correctly. The assumption that when both concurrent tasks pass the
`await()` point, which occurred before attempting to acquire a lock,
ensures concurrency was wrong: it can happen that one task acquires a
lock and releases it before the other task even tries to acquire the
lock. In the end both tasks succeed in acquiring the lock.

To fix the flakiness, the `await()` on the CyclicBarrier has to be
called after a lock was successfully acquired but before it is released
and also when failing to acquire the lock. This way the two `await()`
calls from two concurrent tasks ensure real concurrency.

Change-Id: I4dd4faec5e94eecdefed4729e241ef174428bba1
diff --git a/src/test/java/com/ericsson/gerrit/plugins/highavailability/index/IndexEventHandlerTest.java b/src/test/java/com/ericsson/gerrit/plugins/highavailability/index/IndexEventHandlerTest.java
index 75c8a39..7c6a4f6 100644
--- a/src/test/java/com/ericsson/gerrit/plugins/highavailability/index/IndexEventHandlerTest.java
+++ b/src/test/java/com/ericsson/gerrit/plugins/highavailability/index/IndexEventHandlerTest.java
@@ -586,15 +586,20 @@
     @Override
     public void run() {
       try {
-        testBarrier.await();
         idLocks
             .withLock(
                 task,
                 () ->
                     runLater(
                         INDEX_WAIT_TIMEOUT_MS * 2,
-                        () -> CompletableFuture.completedFuture(successFunc.get())),
-                failureFunc)
+                        () -> {
+                          await();
+                          return CompletableFuture.completedFuture(successFunc.get());
+                        }),
+                () -> {
+                  await();
+                  failureFunc.invoke();
+                })
             .whenComplete(
                 (v, t) -> {
                   if (t == null) {
@@ -609,6 +614,14 @@
       }
     }
 
+    private void await() {
+      try {
+        testBarrier.await();
+      } catch (Exception e) {
+        throw new RuntimeException(e);
+      }
+    }
+
     public void join() {
       try {
         future.join();