1+ /*
2+ * BSD 2-Clause License
3+ *
4+ * Copyright (c) 2023, Swat.engineering
5+ *
6+ * Redistribution and use in source and binary forms, with or without
7+ * modification, are permitted provided that the following conditions are met:
8+ *
9+ * 1. Redistributions of source code must retain the above copyright notice, this
10+ * list of conditions and the following disclaimer.
11+ *
12+ * 2. Redistributions in binary form must reproduce the above copyright notice,
13+ * this list of conditions and the following disclaimer in the documentation
14+ * and/or other materials provided with the distribution.
15+ *
16+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
20+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
22+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
23+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
24+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26+ */
127package engineering .swat .watch .impl .overflows ;
228
329import static org .awaitility .Awaitility .await ;
@@ -45,8 +71,8 @@ static void setupEverything() {
4571 void onlyEventsForFilesInScopeAreIssued () throws IOException , InterruptedException {
4672 var path = testDir .getTestDirectory ();
4773
48- // Prepare a watch that monitors only the children (not all descendants)
49- // of `path`
74+ // Configure a non-recursive directory watch that monitors only the
75+ // children (not all descendants) of `path`
5076 var eventsOnlyForChildren = new AtomicBoolean (true );
5177 var watchConfig = Watcher .watch (path , WatchScope .PATH_AND_CHILDREN )
5278 .approximate (OnOverflow .NONE ) // Disable the auto-handler here; we'll have an explicit one below
@@ -58,14 +84,16 @@ void onlyEventsForFilesInScopeAreIssued() throws IOException, InterruptedExcepti
5884
5985 try (var watch = (EventHandlingWatch ) watchConfig .start ()) {
6086 // Create a rescanner that initially indexes all descendants (not
61- // only the children) of `path`
87+ // only the children) of `path`. The resulting initial index is an
88+ // overestimation of the files monitored by the watch.
6289 var rescanner = new IndexingRescanner (
6390 ForkJoinPool .commonPool (), path ,
6491 WatchScope .PATH_AND_ALL_DESCENDANTS );
6592
66- // Trigger a rescan. As only the children (not all descendants) of
67- // `path` are watched, the rescan should issue events only for those
68- // children.
93+ // Trigger a rescan. Because only the children (not all descendants)
94+ // of `path` are watched, the rescan should issue events only for
95+ // those children (even though the initial index contains entries
96+ // for all descendants).
6997 var overflow = new WatchEvent (WatchEvent .Kind .OVERFLOW , path );
7098 rescanner .accept (watch , overflow );
7199 Thread .sleep (TestHelper .SHORT_WAIT .toMillis ());
0 commit comments