+ public static FutureCallback<UnsignedLong> coordinatedCommit(final ShardDataTreeCohort cohort) {
+ final FutureCallback<UnsignedLong> callback = mockCallback();
+ doNothing().when(callback).onSuccess(any(UnsignedLong.class));
+ doNothing().when(callback).onFailure(any(Throwable.class));
+ cohort.commit(callback);
+ return callback;
+ }
+
+ public static FutureCallback<UnsignedLong> immediate3PhaseCommit(final ShardDataTreeCohort cohort) {
+ final FutureCallback<UnsignedLong> commitCallback = mockCallback();
+ doNothing().when(commitCallback).onSuccess(any(UnsignedLong.class));
+ doNothing().when(commitCallback).onFailure(any(Throwable.class));
+
+ final FutureCallback<DataTreeCandidate> preCommitCallback = mockCallback();
+ doAnswer(invocation -> {
+ cohort.commit(commitCallback);
+ return null;
+ }).when(preCommitCallback).onSuccess(any(DataTreeCandidate.class));
+ doNothing().when(preCommitCallback).onFailure(any(Throwable.class));
+
+ final FutureCallback<Empty> canCommit = mockCallback();
+ doAnswer(invocation -> {
+ cohort.preCommit(preCommitCallback);
+ return null;
+ }).when(canCommit).onSuccess(Empty.value());
+ doNothing().when(canCommit).onFailure(any(Throwable.class));
+
+ cohort.canCommit(canCommit);
+ return commitCallback;
+ }
+