Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
S
spring-boot
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
DEMO
spring-boot
Commits
4c4097a2
Commit
4c4097a2
authored
May 12, 2020
by
Andy Wilkinson
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Address flakiness in TomcatServletWebServerFactoryTests
parent
8cf56069
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
15 additions
and
22 deletions
+15
-22
TomcatServletWebServerFactoryTests.java
...b/embedded/tomcat/TomcatServletWebServerFactoryTests.java
+5
-4
AbstractServletWebServerFactoryTests.java
.../servlet/server/AbstractServletWebServerFactoryTests.java
+10
-18
No files found.
spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/embedded/tomcat/TomcatServletWebServerFactoryTests.java
View file @
4c4097a2
...
@@ -574,10 +574,12 @@ class TomcatServletWebServerFactoryTests extends AbstractServletWebServerFactory
...
@@ -574,10 +574,12 @@ class TomcatServletWebServerFactoryTests extends AbstractServletWebServerFactory
blockingServlet
.
awaitQueue
();
blockingServlet
.
awaitQueue
();
this
.
webServer
.
shutDownGracefully
((
result
)
->
{
this
.
webServer
.
shutDownGracefully
((
result
)
->
{
});
});
Future
<
Object
>
unconnectableRequest
=
initiateGetRequest
(
HttpClients
.
createDefault
(),
port
,
"/"
);
Object
unconnectableRequest
=
Awaitility
.
await
().
until
(
()
->
initiateGetRequest
(
HttpClients
.
createDefault
(),
port
,
"/"
).
get
(),
(
result
)
->
result
instanceof
Exception
);
assertThat
(
unconnectableRequest
).
isInstanceOf
(
HttpHostConnectException
.
class
);
blockingServlet
.
admitOne
();
blockingServlet
.
admitOne
();
assertThat
(
request
.
get
()).
isInstanceOf
(
HttpResponse
.
class
);
assertThat
(
request
.
get
()).
isInstanceOf
(
HttpResponse
.
class
);
assertThat
(
unconnectableRequest
.
get
()).
isInstanceOf
(
HttpHostConnectException
.
class
);
this
.
webServer
.
stop
();
this
.
webServer
.
stop
();
}
}
...
@@ -600,11 +602,10 @@ class TomcatServletWebServerFactoryTests extends AbstractServletWebServerFactory
...
@@ -600,11 +602,10 @@ class TomcatServletWebServerFactoryTests extends AbstractServletWebServerFactory
assertThat
(
keepAliveRequest
.
get
()).
isInstanceOf
(
HttpResponse
.
class
);
assertThat
(
keepAliveRequest
.
get
()).
isInstanceOf
(
HttpResponse
.
class
);
Future
<
Object
>
request
=
initiateGetRequest
(
port
,
"/blocking"
);
Future
<
Object
>
request
=
initiateGetRequest
(
port
,
"/blocking"
);
blockingServlet
.
awaitQueue
();
blockingServlet
.
awaitQueue
();
blockingServlet
.
setBlocking
(
false
);
this
.
webServer
.
shutDownGracefully
((
result
)
->
{
this
.
webServer
.
shutDownGracefully
((
result
)
->
{
});
});
Object
idleConnectionRequestResult
=
Awaitility
.
await
().
until
(()
->
{
Object
idleConnectionRequestResult
=
Awaitility
.
await
().
until
(()
->
{
Future
<
Object
>
idleConnectionRequest
=
initiateGetRequest
(
httpClient
,
port
,
"/
blocking
"
);
Future
<
Object
>
idleConnectionRequest
=
initiateGetRequest
(
httpClient
,
port
,
"/"
);
Object
result
=
idleConnectionRequest
.
get
();
Object
result
=
idleConnectionRequest
.
get
();
return
result
;
return
result
;
},
(
result
)
->
result
instanceof
Exception
);
},
(
result
)
->
result
instanceof
Exception
);
...
...
spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/servlet/server/AbstractServletWebServerFactoryTests.java
View file @
4c4097a2
...
@@ -1445,26 +1445,22 @@ public abstract class AbstractServletWebServerFactoryTests {
...
@@ -1445,26 +1445,22 @@ public abstract class AbstractServletWebServerFactoryTests {
private
final
BlockingQueue
<
CyclicBarrier
>
barriers
=
new
ArrayBlockingQueue
<>(
10
);
private
final
BlockingQueue
<
CyclicBarrier
>
barriers
=
new
ArrayBlockingQueue
<>(
10
);
protected
volatile
boolean
blocking
=
true
;
public
BlockingServlet
()
{
public
BlockingServlet
()
{
}
}
@Override
@Override
protected
void
doGet
(
HttpServletRequest
req
,
HttpServletResponse
resp
)
throws
ServletException
,
IOException
{
protected
void
doGet
(
HttpServletRequest
req
,
HttpServletResponse
resp
)
throws
ServletException
,
IOException
{
if
(
this
.
blocking
)
{
CyclicBarrier
barrier
=
new
CyclicBarrier
(
2
);
CyclicBarrier
barrier
=
new
CyclicBarrier
(
2
);
this
.
barriers
.
add
(
barrier
);
this
.
barriers
.
add
(
barrier
);
try
{
try
{
barrier
.
await
();
barrier
.
await
();
}
}
catch
(
InterruptedException
ex
)
{
catch
(
InterruptedException
ex
)
{
Thread
.
currentThread
().
interrupt
();
Thread
.
currentThread
().
interrupt
();
}
}
catch
(
BrokenBarrierException
ex
)
{
catch
(
BrokenBarrierException
ex
)
{
throw
new
ServletException
(
ex
);
throw
new
ServletException
(
ex
);
}
}
}
}
}
...
@@ -1495,10 +1491,6 @@ public abstract class AbstractServletWebServerFactoryTests {
...
@@ -1495,10 +1491,6 @@ public abstract class AbstractServletWebServerFactoryTests {
}
}
}
}
public
void
setBlocking
(
boolean
blocking
)
{
this
.
blocking
=
blocking
;
}
}
}
static
class
BlockingAsyncServlet
extends
HttpServlet
{
static
class
BlockingAsyncServlet
extends
HttpServlet
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment