use of com.coreos.jetcd.api.TxnResponse in project jetcd by coreos.
the class KVTest method testTxn.
@Test
public void testTxn() throws Exception {
ByteString sampleKey = ByteString.copyFrom("txn_key", "UTF-8");
ByteString sampleValue = ByteString.copyFrom("xyz", "UTF-8");
ByteString cmpValue = ByteString.copyFrom("abc", "UTF-8");
ByteString putValue = ByteString.copyFrom("XYZ", "UTF-8");
ByteString putValueNew = ByteString.copyFrom("ABC", "UTF-8");
ListenableFuture<PutResponse> feature = kvClient.put(sampleKey, sampleValue);
try {
// put the original txn key value pair
PutResponse putResp = feature.get();
// construct txn operation
Cmp cmp = new Cmp(sampleKey, Cmp.Op.GREATER, CmpTarget.value(cmpValue));
Txn txn = Txn.newBuilder().If(cmp).Then(Op.put(sampleKey, putValue, PutOption.DEFAULT)).Else(Op.put(sampleKey, putValueNew, PutOption.DEFAULT)).build();
ListenableFuture<TxnResponse> txnResp = kvClient.commit(txn);
txnResp.get();
// get the value
RangeResponse getResp = kvClient.get(sampleKey).get();
test.assertEquals(getResp.getKvsList().size(), 1);
test.assertEquals(getResp.getKvs(0).getValue().toStringUtf8(), "XYZ");
} catch (Exception e) {
// empty
}
}
Aggregations