16
16
// ========================================================================
17
17
//
18
18
19
- package org .eclipse .jetty .server ;
19
+ package org .eclipse .jetty .server . handler ;
20
20
21
21
import java .io .File ;
22
22
import java .io .IOException ;
30
30
import java .time .Duration ;
31
31
import java .util .Random ;
32
32
import java .util .concurrent .CompletableFuture ;
33
+ import java .util .concurrent .CountDownLatch ;
33
34
import java .util .concurrent .TimeUnit ;
34
35
import java .util .concurrent .atomic .AtomicLong ;
35
36
import javax .servlet .ServletException ;
39
40
40
41
import org .eclipse .jetty .http .HttpStatus ;
41
42
import org .eclipse .jetty .http .HttpTester ;
42
- import org .eclipse .jetty .server .handler .AbstractHandler ;
43
- import org .eclipse .jetty .server .handler .FileBufferedResponseHandler ;
44
- import org .eclipse .jetty .server .handler .HandlerCollection ;
43
+ import org .eclipse .jetty .server .HttpChannel ;
44
+ import org .eclipse .jetty .server .HttpConfiguration ;
45
+ import org .eclipse .jetty .server .HttpConnectionFactory ;
46
+ import org .eclipse .jetty .server .HttpOutput ;
47
+ import org .eclipse .jetty .server .LocalConnector ;
48
+ import org .eclipse .jetty .server .Request ;
49
+ import org .eclipse .jetty .server .Server ;
50
+ import org .eclipse .jetty .server .ServerConnector ;
45
51
import org .eclipse .jetty .toolchain .test .FS ;
46
52
import org .eclipse .jetty .toolchain .test .MavenTestingUtils ;
47
53
import org .eclipse .jetty .util .Callback ;
@@ -63,6 +69,7 @@ public class FileBufferedResponseHandlerTest
63
69
{
64
70
private static final Logger LOG = Log .getLogger (FileBufferedResponseHandlerTest .class );
65
71
72
+ private final CountDownLatch _disposeLatch = new CountDownLatch (1 );
66
73
private Server _server ;
67
74
private LocalConnector _localConnector ;
68
75
private ServerConnector _serverConnector ;
@@ -86,7 +93,22 @@ public void before() throws Exception
86
93
_serverConnector = new ServerConnector (_server , new HttpConnectionFactory (config ));
87
94
_server .addConnector (_serverConnector );
88
95
89
- _bufferedHandler = new FileBufferedResponseHandler ();
96
+ _bufferedHandler = new FileBufferedResponseHandler ()
97
+ {
98
+ @ Override
99
+ protected BufferedInterceptor newBufferedInterceptor (HttpChannel httpChannel , HttpOutput .Interceptor interceptor )
100
+ {
101
+ return new FileBufferedInterceptor (httpChannel , interceptor )
102
+ {
103
+ @ Override
104
+ protected void dispose ()
105
+ {
106
+ super .dispose ();
107
+ _disposeLatch .countDown ();
108
+ }
109
+ };
110
+ }
111
+ };
90
112
_bufferedHandler .setTempDir (_testDir );
91
113
_bufferedHandler .getPathIncludeExclude ().include ("/include/*" );
92
114
_bufferedHandler .getPathIncludeExclude ().exclude ("*.exclude" );
@@ -157,6 +179,8 @@ public void handle(String target, Request baseRequest, HttpServletRequest reques
157
179
assertThat (response .getStatus (), is (HttpStatus .OK_200 ));
158
180
assertThat (responseContent , containsString ("Committed: false" ));
159
181
assertThat (responseContent , containsString ("NumFiles: 1" ));
182
+
183
+ assertTrue (_disposeLatch .await (5 , TimeUnit .SECONDS ));
160
184
assertThat (getNumFiles (), is (0 ));
161
185
}
162
186
@@ -249,6 +273,8 @@ public void handle(String target, Request baseRequest, HttpServletRequest reques
249
273
assertThat (responseContent , containsString ("NumFilesBeforeFlush: 0" ));
250
274
assertThat (responseContent , containsString ("Committed: false" ));
251
275
assertThat (responseContent , containsString ("NumFiles: 1" ));
276
+
277
+ assertTrue (_disposeLatch .await (5 , TimeUnit .SECONDS ));
252
278
assertThat (getNumFiles (), is (0 ));
253
279
}
254
280
@@ -279,6 +305,8 @@ public void handle(String target, Request baseRequest, HttpServletRequest reques
279
305
assertThat (response .getStatus (), is (HttpStatus .OK_200 ));
280
306
assertThat (responseContent , not (containsString ("writtenAfterClose" )));
281
307
assertThat (responseContent , containsString ("NumFiles: 1" ));
308
+
309
+ assertTrue (_disposeLatch .await (5 , TimeUnit .SECONDS ));
282
310
assertThat (getNumFiles (), is (0 ));
283
311
}
284
312
@@ -339,6 +367,8 @@ public void handle(String target, Request baseRequest, HttpServletRequest reques
339
367
// The flush should not create the file unless there is content to write.
340
368
assertThat (response .getStatus (), is (HttpStatus .OK_200 ));
341
369
assertThat (responseContent , containsString ("NumFiles: 0" ));
370
+
371
+ assertTrue (_disposeLatch .await (5 , TimeUnit .SECONDS ));
342
372
assertThat (getNumFiles (), is (0 ));
343
373
}
344
374
@@ -378,6 +408,8 @@ public void handle(String target, Request baseRequest, HttpServletRequest reques
378
408
assertThat (responseContent , containsString ("NumFilesBeforeReset: 1" ));
379
409
assertThat (responseContent , containsString ("NumFilesAfterReset: 0" ));
380
410
assertThat (responseContent , containsString ("NumFilesAfterWrite: 1" ));
411
+
412
+ assertTrue (_disposeLatch .await (5 , TimeUnit .SECONDS ));
381
413
assertThat (getNumFiles (), is (0 ));
382
414
}
383
415
@@ -451,6 +483,8 @@ public boolean content(ByteBuffer ref)
451
483
assertThat (response .get ("NumFiles" ), is ("1" ));
452
484
assertThat (response .get ("FileSize" ), is (Long .toString (fileSize )));
453
485
assertThat (received .get (), is (fileSize ));
486
+
487
+ assertTrue (_disposeLatch .await (5 , TimeUnit .SECONDS ));
454
488
assertThat (getNumFiles (), is (0 ));
455
489
}
456
490
@@ -531,6 +565,7 @@ public void handle(String target, Request baseRequest, HttpServletRequest reques
531
565
assertThat (error .getMessage (), containsString ("intentionally throwing from interceptor" ));
532
566
533
567
// All files were deleted.
568
+ assertTrue (_disposeLatch .await (5 , TimeUnit .SECONDS ));
534
569
assertThat (getNumFiles (), is (0 ));
535
570
}
536
571
@@ -579,6 +614,7 @@ public void handle(String target, Request baseRequest, HttpServletRequest reques
579
614
assertThat (error , instanceOf (NoSuchFileException .class ));
580
615
581
616
// No files were created.
617
+ assertTrue (_disposeLatch .await (5 , TimeUnit .SECONDS ));
582
618
assertThat (getNumFiles (), is (0 ));
583
619
}
584
620
0 commit comments