-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Expand file tree
/
Copy pathRetryableReadsProseTest.java
More file actions
72 lines (66 loc) · 2.97 KB
/
RetryableReadsProseTest.java
File metadata and controls
72 lines (66 loc) · 2.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
/*
* Copyright 2008-present MongoDB, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.mongodb.reactivestreams.client;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.RetryableWritesProseTest;
import com.mongodb.reactivestreams.client.syncadapter.SyncMongoClient;
import org.bson.Document;
import org.junit.jupiter.api.Test;
import static com.mongodb.client.model.Filters.eq;
/**
* <a href="https://github.com/mongodb/specifications/blob/master/source/retryable-reads/tests/README.md#prose-tests">
* Prose Tests</a>.
*/
final class RetryableReadsProseTest {
/**
* <a href="https://github.com/mongodb/specifications/blob/master/source/retryable-reads/tests/README.md#1-poolclearederror-retryability-test">
* 1. PoolClearedError Retryability Test</a>.
*/
@Test
void poolClearedExceptionMustBeRetryable() throws Exception {
RetryableWritesProseTest.poolClearedExceptionMustBeRetryable(
SyncMongoClient::new,
mongoCollection -> mongoCollection.find(eq(0)).iterator().hasNext(), "find", false);
}
/**
* <a href="https://github.com/mongodb/specifications/blob/master/source/retryable-reads/tests/README.md#21-retryable-reads-are-retried-on-a-different-mongos-when-one-is-available">
* 2.1 Retryable Reads Are Retried on a Different mongos When One is Available</a>.
*/
@Test
void retriesOnDifferentMongosWhenAvailable() {
RetryableWritesProseTest.retriesOnDifferentMongosWhenAvailable(
SyncMongoClient::new,
mongoCollection -> {
try (MongoCursor<Document> cursor = mongoCollection.find().iterator()) {
return cursor.hasNext();
}
}, "find", false);
}
/**
* <a href="https://github.com/mongodb/specifications/blob/master/source/retryable-reads/tests/README.md#22-retryable-reads-are-retried-on-the-same-mongos-when-no-others-are-available">
* 2.2 Retryable Reads Are Retried on the Same mongos When No Others are Available</a>.
*/
@Test
void retriesOnSameMongosWhenAnotherNotAvailable() {
RetryableWritesProseTest.retriesOnSameMongosWhenAnotherNotAvailable(
SyncMongoClient::new,
mongoCollection -> {
try (MongoCursor<Document> cursor = mongoCollection.find().iterator()) {
return cursor.hasNext();
}
}, "find", false);
}
}