ClientTransactionCommitCohort extends AbstractTransactionCommitCohort { @Override public ListenableFuture<Void> preCommit() { final VotingFuture<Void> ret = new VotingFuture<>(null, proxies.size()); for (AbstractProxyTransaction proxy : proxies) { proxy.preCommit(ret); } return ret; } ClientTransactionCommitCohort(final AbstractClientHistory parent, final TransactionIdentifier txId,
            final Collection<AbstractProxyTransaction> proxies); @Override ListenableFuture<Boolean> canCommit(); @Override ListenableFuture<Void> preCommit(); @Override ListenableFuture<Void> commit(); @Override ListenableFuture<Void> abort();  }
@Test public void testPreCommit() throws Exception { testOpSuccess(ClientTransactionCommitCohort::preCommit, this::expectPreCommit, this::replyPreCommitSuccess, null); }