I’m using CouchbaseMock 1.5.22 for my testing and couchbase-client 2.7.2.
My test looks the following way:
@Test(expected = TemporaryFailureException.class)
public void test() {
mockHttpClient.request(new OpfailRequest(ErrorCode.EBUSY, 10), "Fail");
exists("any-key");
}
// operation being tested
public Observable<Boolean> exists(String key) {
return asyncBucket
.exists(key)
.compose(logAndTimeoutAndRetry(key, "exists"))
.onErrorResumeNext(returnFalseIf(DocumentDoesNotExistException.class));
}
I expect exists
to fail with TemporaryFailureException
, but that does not happen – instead I get false
as result. When debugging couchbase client I see the following response from server:
Looks like Exists.java
does not check response.status()
as it is done in Get.java
. Check the following code: https://github.com/couchbase/couchbase-java-client/blob/master/src/main/java/com/couchbase/client/java/bucket/api/Get.java#L152
Looks like this is a bug according to exists
operation javadoc.