conn.tableOperations().create(table);
ConditionalWriter cw = conn.createConditionalWriter(table, new ConditionalWriterConfig().setTimeout(1, TimeUnit.SECONDS));
ConditionalMutation cm1 = new ConditionalMutation("r1", new Condition("tx", "seq"));
cm1.put("tx", "seq", "1");
cm1.put("data", "x", "a");
Assert.assertEquals(cw.write(cm1).getStatus(), Status.ACCEPTED);
IteratorSetting is = new IteratorSetting(5, SlowIterator.class);
SlowIterator.setSeekSleepTime(is, 1500);
ConditionalMutation cm2 = new ConditionalMutation("r1", new Condition("tx", "seq").setValue("1").setIterators(is));
cm2.put("tx", "seq", "2");
cm2.put("data", "x", "b");
Assert.assertEquals(cw.write(cm2).getStatus(), Status.UNKNOWN);
Scanner scanner = conn.createScanner(table, Authorizations.EMPTY);
for (Entry<Key,Value> entry : scanner) {
String cf = entry.getKey().getColumnFamilyData().toString();
String cq = entry.getKey().getColumnQualifierData().toString();
String val = entry.getValue().toString();
if (cf.equals("tx") && cq.equals("seq"))
Assert.assertEquals("1", val);
else if (cf.equals("data") && cq.equals("x"))
Assert.assertEquals("a", val);
else
Assert.fail();
}
ConditionalMutation cm3 = new ConditionalMutation("r1", new Condition("tx", "seq").setValue("1"));
cm3.put("tx", "seq", "2");
cm3.put("data", "x", "b");
Assert.assertEquals(cw.write(cm3).getStatus(), Status.ACCEPTED);