private void doTest(final TestWriteOperation op) throws Exception {
final StateSequencer sequencer = new StateSequencer();
sequencer.logicalThread("st", "st:cache0_before_send_state");
sequencer.logicalThread("write", "write:before_start", "write:start", "write:cache1_before_return", "write:cache2_before_dist", "write:end", "write:after_end");
sequencer.logicalThread("remote_get_cache0", "remote_get_cache0");
sequencer.logicalThread("remote_get_cache1", "remote_get_cache1");
sequencer.order("write:end", "remote_get_cache0").order("write:end", "remote_get_cache1");
sequencer.action("st:cache0_before_send_state", new Callable<Object>() {
@Override
public Object call() throws Exception {
sequencer.advance("write:before_start");