use of org.eclipse.jetty.client.HttpRequest in project jetty.project by eclipse.
the class PushedResourcesTest method testPushedResources.
@Test
public void testPushedResources() throws Exception {
Random random = new Random();
byte[] bytes = new byte[512];
random.nextBytes(bytes);
byte[] pushBytes1 = new byte[1024];
random.nextBytes(pushBytes1);
byte[] pushBytes2 = new byte[2048];
random.nextBytes(pushBytes2);
String path1 = "/secondary1";
String path2 = "/secondary2";
start(new AbstractHandler() {
@Override
public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
baseRequest.setHandled(true);
if (target.equals(path1)) {
response.getOutputStream().write(pushBytes1);
} else if (target.equals(path2)) {
response.getOutputStream().write(pushBytes2);
} else {
baseRequest.getPushBuilder().path(path1).push();
baseRequest.getPushBuilder().path(path2).push();
response.getOutputStream().write(bytes);
}
}
});
CountDownLatch latch1 = new CountDownLatch(1);
CountDownLatch latch2 = new CountDownLatch(1);
HttpRequest request = (HttpRequest) client.newRequest("localhost", connector.getLocalPort());
ContentResponse response = request.pushListener((mainRequest, pushedRequest) -> new BufferingResponseListener() {
@Override
public void onComplete(Result result) {
Assert.assertTrue(result.isSucceeded());
if (pushedRequest.getPath().equals(path1)) {
Assert.assertArrayEquals(pushBytes1, getContent());
latch1.countDown();
} else if (pushedRequest.getPath().equals(path2)) {
Assert.assertArrayEquals(pushBytes2, getContent());
latch2.countDown();
}
}
}).timeout(5, TimeUnit.SECONDS).send();
Assert.assertEquals(HttpStatus.OK_200, response.getStatus());
Assert.assertArrayEquals(bytes, response.getContent());
Assert.assertTrue(latch1.await(5, TimeUnit.SECONDS));
Assert.assertTrue(latch2.await(5, TimeUnit.SECONDS));
}
Aggregations