/* * Copyright (c) 2014 Brocade Communications Systems, Inc. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ package org.opendaylight.yangtools.util.concurrent; import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.ListeningExecutorService; import com.google.common.util.concurrent.Uninterruptibles; import java.util.concurrent.CountDownLatch; /** * Some common test utilities. * * @author Thomas Pantelis */ final class CommonTestUtils { private CommonTestUtils() { throw new UnsupportedOperationException(); } @FunctionalInterface public interface Invoker { ListenableFuture invokeExecutor(ListeningExecutorService executor, CountDownLatch blockingLatch); } public static final Invoker SUBMIT_CALLABLE = (executor, blockingLatch) -> executor.submit(() -> { if (blockingLatch != null) { Uninterruptibles.awaitUninterruptibly(blockingLatch); } return null; }); public static final Invoker SUBMIT_RUNNABLE = (executor, blockingLatch) -> executor.submit(() -> { if (blockingLatch != null) { Uninterruptibles.awaitUninterruptibly(blockingLatch); } }); public static final Invoker SUBMIT_RUNNABLE_WITH_RESULT = (executor, blockingLatch) -> executor.submit(() -> { if (blockingLatch != null) { Uninterruptibles.awaitUninterruptibly(blockingLatch); } }, "foo"); }