From 940d969c7c5645f7197dc8e88ba6c8ea19b90305 Mon Sep 17 00:00:00 2001 From: Leo Li <269739606@qq.com> Date: Fri, 21 Jan 2022 16:08:45 +0800 Subject: [PATCH 1/2] Use a timeout when joining threads in HttpTunnelServerTests See gh-29522 --- .../tunnel/server/HttpTunnelServerTests.java | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/spring-boot-project/spring-boot-devtools/src/test/java/org/springframework/boot/devtools/tunnel/server/HttpTunnelServerTests.java b/spring-boot-project/spring-boot-devtools/src/test/java/org/springframework/boot/devtools/tunnel/server/HttpTunnelServerTests.java index 36258d1c851..1b209c15a8e 100644 --- a/spring-boot-project/spring-boot-devtools/src/test/java/org/springframework/boot/devtools/tunnel/server/HttpTunnelServerTests.java +++ b/spring-boot-project/spring-boot-devtools/src/test/java/org/springframework/boot/devtools/tunnel/server/HttpTunnelServerTests.java @@ -130,7 +130,7 @@ class HttpTunnelServerTests { this.servletRequest.setContent("hello".getBytes()); this.server.handle(this.request, this.response); this.serverChannel.disconnect(); - this.server.getServerThread().join(); + this.server.getServerThread().join(2000); this.serverChannel.verifyReceived("hello"); } @@ -143,7 +143,7 @@ class HttpTunnelServerTests { System.out.println("sending"); this.serverChannel.send("hello"); this.serverChannel.disconnect(); - this.server.getServerThread().join(); + this.server.getServerThread().join(2000); assertThat(this.servletResponse.getContentAsString()).isEqualTo("hello"); this.serverChannel.verifyReceived("hello"); } @@ -153,7 +153,7 @@ class HttpTunnelServerTests { givenServerConnectionOpenWillAnswerWithServerChannel(); this.server.handle(this.request, this.response); this.serverChannel.disconnect(); - this.server.getServerThread().join(); + this.server.getServerThread().join(2000); this.serverChannel.verifyReceived(NO_DATA); } @@ -176,7 +176,7 @@ class HttpTunnelServerTests { this.serverChannel.send("=3"); h3.verifyReceived("=3", 3); this.serverChannel.disconnect(); - this.server.getServerThread().join(); + this.server.getServerThread().join(2000); } @Test @@ -185,7 +185,7 @@ class HttpTunnelServerTests { MockHttpConnection h1 = new MockHttpConnection("1", 1); this.server.handle(h1); this.serverChannel.disconnect(); - this.server.getServerThread().join(); + this.server.getServerThread().join(2000); assertThat(h1.getServletResponse().getStatus()).isEqualTo(410); } @@ -197,7 +197,7 @@ class HttpTunnelServerTests { MockHttpConnection h2 = new MockHttpConnection("DISCONNECT", 1); h2.getServletRequest().addHeader("Content-Type", "application/x-disconnect"); this.server.handle(h2); - this.server.getServerThread().join(); + this.server.getServerThread().join(2000); assertThat(h1.getServletResponse().getStatus()).isEqualTo(410); assertThat(this.serverChannel.isOpen()).isFalse(); } @@ -214,7 +214,7 @@ class HttpTunnelServerTests { h1.waitForResponse(); assertThat(h1.getServletResponse().getStatus()).isEqualTo(429); this.serverChannel.disconnect(); - this.server.getServerThread().join(); + this.server.getServerThread().join(2000); } @Test @@ -228,7 +228,7 @@ class HttpTunnelServerTests { this.server.handle(h2); this.serverChannel.verifyReceived("1+2+3"); this.serverChannel.disconnect(); - this.server.getServerThread().join(); + this.server.getServerThread().join(2000); } @Test @@ -245,7 +245,7 @@ class HttpTunnelServerTests { Awaitility.await().atMost(Duration.ofSeconds(30)).until(h2.getServletResponse()::getStatus, (status) -> status == 204); this.serverChannel.disconnect(); - this.server.getServerThread().join(); + this.server.getServerThread().join(2000); } @Test @@ -256,7 +256,7 @@ class HttpTunnelServerTests { MockHttpConnection h1 = new MockHttpConnection(); this.server.handle(h1); this.serverChannel.send("hello"); - this.server.getServerThread().join(); + this.server.getServerThread().join(2000); assertThat(this.serverChannel.isOpen()).isFalse(); } From 0d78ff0657947c7debf3e1d7f267999858d9e467 Mon Sep 17 00:00:00 2001 From: Stephane Nicoll Date: Mon, 31 Jan 2022 16:22:28 +0100 Subject: [PATCH 2/2] Polish "Use a timeout when joining threads in HttpTunnelServerTests" See gh-29522 --- .../tunnel/server/HttpTunnelServerTests.java | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/spring-boot-project/spring-boot-devtools/src/test/java/org/springframework/boot/devtools/tunnel/server/HttpTunnelServerTests.java b/spring-boot-project/spring-boot-devtools/src/test/java/org/springframework/boot/devtools/tunnel/server/HttpTunnelServerTests.java index 1b209c15a8e..85676b09660 100644 --- a/spring-boot-project/spring-boot-devtools/src/test/java/org/springframework/boot/devtools/tunnel/server/HttpTunnelServerTests.java +++ b/spring-boot-project/spring-boot-devtools/src/test/java/org/springframework/boot/devtools/tunnel/server/HttpTunnelServerTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2021 the original author or authors. + * Copyright 2012-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -65,6 +65,8 @@ class HttpTunnelServerTests { private static final int DEFAULT_LONG_POLL_TIMEOUT = 10000; + private static final int JOIN_TIMEOUT = 5000; + private static final byte[] NO_DATA = {}; private static final String SEQ_HEADER = "x-seq"; @@ -130,7 +132,7 @@ class HttpTunnelServerTests { this.servletRequest.setContent("hello".getBytes()); this.server.handle(this.request, this.response); this.serverChannel.disconnect(); - this.server.getServerThread().join(2000); + this.server.getServerThread().join(JOIN_TIMEOUT); this.serverChannel.verifyReceived("hello"); } @@ -143,7 +145,7 @@ class HttpTunnelServerTests { System.out.println("sending"); this.serverChannel.send("hello"); this.serverChannel.disconnect(); - this.server.getServerThread().join(2000); + this.server.getServerThread().join(JOIN_TIMEOUT); assertThat(this.servletResponse.getContentAsString()).isEqualTo("hello"); this.serverChannel.verifyReceived("hello"); } @@ -153,7 +155,7 @@ class HttpTunnelServerTests { givenServerConnectionOpenWillAnswerWithServerChannel(); this.server.handle(this.request, this.response); this.serverChannel.disconnect(); - this.server.getServerThread().join(2000); + this.server.getServerThread().join(JOIN_TIMEOUT); this.serverChannel.verifyReceived(NO_DATA); } @@ -176,7 +178,7 @@ class HttpTunnelServerTests { this.serverChannel.send("=3"); h3.verifyReceived("=3", 3); this.serverChannel.disconnect(); - this.server.getServerThread().join(2000); + this.server.getServerThread().join(JOIN_TIMEOUT); } @Test @@ -185,7 +187,7 @@ class HttpTunnelServerTests { MockHttpConnection h1 = new MockHttpConnection("1", 1); this.server.handle(h1); this.serverChannel.disconnect(); - this.server.getServerThread().join(2000); + this.server.getServerThread().join(JOIN_TIMEOUT); assertThat(h1.getServletResponse().getStatus()).isEqualTo(410); } @@ -197,7 +199,7 @@ class HttpTunnelServerTests { MockHttpConnection h2 = new MockHttpConnection("DISCONNECT", 1); h2.getServletRequest().addHeader("Content-Type", "application/x-disconnect"); this.server.handle(h2); - this.server.getServerThread().join(2000); + this.server.getServerThread().join(JOIN_TIMEOUT); assertThat(h1.getServletResponse().getStatus()).isEqualTo(410); assertThat(this.serverChannel.isOpen()).isFalse(); } @@ -214,7 +216,7 @@ class HttpTunnelServerTests { h1.waitForResponse(); assertThat(h1.getServletResponse().getStatus()).isEqualTo(429); this.serverChannel.disconnect(); - this.server.getServerThread().join(2000); + this.server.getServerThread().join(JOIN_TIMEOUT); } @Test @@ -228,7 +230,7 @@ class HttpTunnelServerTests { this.server.handle(h2); this.serverChannel.verifyReceived("1+2+3"); this.serverChannel.disconnect(); - this.server.getServerThread().join(2000); + this.server.getServerThread().join(JOIN_TIMEOUT); } @Test @@ -245,7 +247,7 @@ class HttpTunnelServerTests { Awaitility.await().atMost(Duration.ofSeconds(30)).until(h2.getServletResponse()::getStatus, (status) -> status == 204); this.serverChannel.disconnect(); - this.server.getServerThread().join(2000); + this.server.getServerThread().join(JOIN_TIMEOUT); } @Test @@ -256,7 +258,7 @@ class HttpTunnelServerTests { MockHttpConnection h1 = new MockHttpConnection(); this.server.handle(h1); this.serverChannel.send("hello"); - this.server.getServerThread().join(2000); + this.server.getServerThread().join(JOIN_TIMEOUT); assertThat(this.serverChannel.isOpen()).isFalse(); }