Skip to content

Commit a88df85

Browse files
committed
JAVA-2634: Change stream documentation samples
1 parent 5bcc683 commit a88df85

File tree

1 file changed

+56
-0
lines changed

1 file changed

+56
-0
lines changed

driver/src/examples/documentation/DocumentationSamples.java

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,12 @@
2121
import com.mongodb.client.FindIterable;
2222
import com.mongodb.client.MongoCollection;
2323
import com.mongodb.client.MongoDatabase;
24+
// imports required for change streams
25+
import com.mongodb.client.MongoCursor;
26+
import com.mongodb.client.model.changestream.ChangeStreamDocument;
27+
import com.mongodb.client.model.changestream.FullDocument;
28+
import org.bson.BsonDocument;
29+
// end required change streams imports
2430
import org.bson.BsonType;
2531
import org.bson.Document;
2632
import org.junit.After;
@@ -29,7 +35,10 @@
2935
import java.util.ArrayList;
3036
import java.util.HashSet;
3137
import java.util.List;
38+
import java.util.concurrent.atomic.AtomicBoolean;
3239

40+
import static com.mongodb.ClusterFixture.isDiscoverableReplicaSet;
41+
import static com.mongodb.ClusterFixture.serverVersionAtLeast;
3342
import static com.mongodb.Fixture.getDefaultDatabaseName;
3443
import static com.mongodb.Fixture.getMongoClient;
3544

@@ -61,6 +70,7 @@
6170
import static java.util.Collections.singletonList;
6271
import static org.junit.Assert.assertEquals;
6372
import static org.junit.Assert.assertTrue;
73+
import static org.junit.Assume.assumeTrue;
6474

6575

6676
public final class DocumentationSamples extends DatabaseTestCase {
@@ -603,6 +613,52 @@ public void testDeletions() {
603613
assertEquals(0, collection.count());
604614
}
605615

616+
@Test
617+
public void testWatch() {
618+
assumeTrue(isDiscoverableReplicaSet() && serverVersionAtLeast(3, 5));
619+
620+
final MongoCollection<Document> inventory = collection;
621+
final AtomicBoolean stop = new AtomicBoolean(false);
622+
623+
new Thread(new Runnable() {
624+
@Override
625+
public void run() {
626+
while (!stop.get()) {
627+
collection.insertOne(new Document());
628+
try {
629+
Thread.sleep(10);
630+
} catch (InterruptedException e) {
631+
// ignore
632+
}
633+
}
634+
}
635+
}).start();
636+
637+
638+
// Start Changestream Example 1
639+
MongoCursor<ChangeStreamDocument<Document>> cursor = inventory.watch().iterator();
640+
ChangeStreamDocument<Document> next = cursor.next();
641+
// End Changestream Example 1
642+
643+
cursor.close();
644+
645+
// Start Changestream Example 2
646+
cursor = inventory.watch().fullDocument(FullDocument.UPDATE_LOOKUP).iterator();
647+
next = cursor.next();
648+
// End Changestream Example 2
649+
650+
cursor.close();
651+
652+
// Start Changestream Example 3
653+
BsonDocument resumeToken = next.getResumeToken();
654+
cursor = inventory.watch().resumeAfter(resumeToken).iterator();
655+
next = cursor.next();
656+
// End Changestream Example 3
657+
658+
cursor.close();
659+
660+
stop.set(true);
661+
}
606662

607663
@After
608664
public void tearDown() {

0 commit comments

Comments
 (0)