use of com.couchbase.client.java.json.JsonObject in project couchbase-jvm-clients by couchbase.
the class KeyValueIntegrationTest method touch.
/**
* Right now the mock does not change the cas on touch, so we need to ignore the test
* until https://github.com/couchbase/CouchbaseMock/issues/50 is resolved.
*/
@Test
@IgnoreWhen(clusterTypes = { ClusterType.MOCKED })
void touch() throws Exception {
String id = UUID.randomUUID().toString();
JsonObject expected = JsonObject.create().put("foo", true);
MutationResult upsert = collection.upsert(id, expected, upsertOptions().expiry(Duration.ofSeconds(10)));
assertTrue(upsert.cas() != 0);
MutationResult touched = collection.touch(id, Duration.ofSeconds(1));
assertNotEquals(touched.cas(), upsert.cas());
Thread.sleep(300);
GetResult r = collection.get(id);
assertEquals(expected, r.contentAsObject());
assertEquals(r.cas(), touched.cas());
waitUntilCondition(() -> {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// ignored.
}
try {
collection.get(id);
return false;
} catch (DocumentNotFoundException knf) {
return true;
}
});
}
use of com.couchbase.client.java.json.JsonObject in project couchbase-jvm-clients by couchbase.
the class KeyValueIntegrationTest method unlock.
/**
* The mock returns TMPFAIL instead of LOCKED, so this test is ignored on the mock.
*/
@Test
@IgnoreWhen(clusterTypes = { ClusterType.MOCKED })
void unlock() {
String id = UUID.randomUUID().toString();
MutationResult upsert = collection.upsert(id, JsonObject.create().put("foo", true));
assertTrue(upsert.cas() != 0);
GetResult locked = collection.getAndLock(id, Duration.ofSeconds(30));
TimeoutException exception = assertThrows(TimeoutException.class, () -> collection.upsert(id, JsonObject.create(), upsertOptions().timeout(Duration.ofMillis(100))));
assertEquals(EnumSet.of(RetryReason.KV_LOCKED), exception.context().requestContext().retryReasons());
assertThrows(CasMismatchException.class, () -> collection.unlock(id, locked.cas() + 1));
collection.unlock(id, locked.cas());
JsonObject expected = JsonObject.create().put("foo", false);
MutationResult replaced = collection.replace(id, expected);
assertTrue(replaced.cas() != 0);
assertEquals(expected, collection.get(id).contentAsObject());
}
use of com.couchbase.client.java.json.JsonObject in project couchbase-jvm-clients by couchbase.
the class KeyValueIntegrationTest method remove.
@Test
void remove() {
String id = UUID.randomUUID().toString();
JsonObject expected = JsonObject.create().put("foo", true);
MutationResult insert = collection.insert(id, expected, insertOptions().expiry(Duration.ofSeconds(2)));
assertTrue(insert.cas() != 0);
assertThrows(CasMismatchException.class, () -> collection.remove(id, removeOptions().cas(insert.cas() + 100)));
MutationResult result = collection.remove(id);
assertTrue(result.cas() != insert.cas());
assertThrows(DocumentNotFoundException.class, () -> collection.remove(id));
}
use of com.couchbase.client.java.json.JsonObject in project couchbase-jvm-clients by couchbase.
the class KeyValueIntegrationTest method replace.
@Test
void replace() {
String id = UUID.randomUUID().toString();
MutationResult upsert = collection.upsert(id, JsonObject.create().put("foo", true));
assertTrue(upsert.cas() != 0);
assertThrows(CasMismatchException.class, () -> collection.replace(id, JsonObject.create(), replaceOptions().cas(upsert.cas() + 1)));
JsonObject expected = JsonObject.create().put("foo", false);
MutationResult replaced = collection.replace(id, expected);
assertTrue(replaced.cas() != 0);
assertTrue(upsert.cas() != replaced.cas());
assertEquals(expected, collection.get(id).contentAsObject());
assertThrows(DocumentNotFoundException.class, () -> collection.replace("some_doc", JsonObject.create()));
}
use of com.couchbase.client.java.json.JsonObject in project couchbase-jvm-clients by couchbase.
the class KeyValueIntegrationTest method throwsIfTooLarge.
@Test
void throwsIfTooLarge() {
String id = UUID.randomUUID().toString();
JsonObject content = JsonObject.create();
for (int i = 0; i < 400000; i++) {
content.put(UUID.randomUUID().toString(), UUID.randomUUID().toString());
}
assertThrows(ValueTooLargeException.class, () -> collection.upsert(id, content));
}
Aggregations