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
ca5afb6e
Commit
ca5afb6e
authored
Jun 11, 2020
by
Stephane Nicoll
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix flaky integration test
Closes gh-21487
parent
a74afc10
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
33 additions
and
1 deletion
+33
-1
CassandraAutoConfigurationWithPasswordAuthenticationIntegrationTests.java
...figurationWithPasswordAuthenticationIntegrationTests.java
+33
-1
No files found.
spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/cassandra/CassandraAutoConfigurationWithPasswordAuthenticationIntegrationTests.java
View file @
ca5afb6e
...
@@ -16,14 +16,21 @@
...
@@ -16,14 +16,21 @@
package
org
.
springframework
.
boot
.
autoconfigure
.
cassandra
;
package
org
.
springframework
.
boot
.
autoconfigure
.
cassandra
;
import
java.net.InetSocketAddress
;
import
java.nio.charset.StandardCharsets
;
import
java.nio.charset.StandardCharsets
;
import
java.time.Duration
;
import
java.time.Duration
;
import
java.util.concurrent.TimeUnit
;
import
com.datastax.oss.driver.api.core.ConsistencyLevel
;
import
com.datastax.oss.driver.api.core.ConsistencyLevel
;
import
com.datastax.oss.driver.api.core.CqlSession
;
import
com.datastax.oss.driver.api.core.CqlSession
;
import
com.datastax.oss.driver.api.core.CqlSessionBuilder
;
import
com.datastax.oss.driver.api.core.cql.SimpleStatement
;
import
com.datastax.oss.driver.api.core.cql.SimpleStatement
;
import
org.junit.jupiter.api.Test
;
import
org.junit.jupiter.api.Test
;
import
org.rnorth.ducttape.TimeoutException
;
import
org.rnorth.ducttape.unreliables.Unreliables
;
import
org.testcontainers.containers.CassandraContainer
;
import
org.testcontainers.containers.CassandraContainer
;
import
org.testcontainers.containers.ContainerLaunchException
;
import
org.testcontainers.containers.wait.strategy.AbstractWaitStrategy
;
import
org.testcontainers.images.builder.Transferable
;
import
org.testcontainers.images.builder.Transferable
;
import
org.testcontainers.junit.jupiter.Container
;
import
org.testcontainers.junit.jupiter.Container
;
import
org.testcontainers.junit.jupiter.Testcontainers
;
import
org.testcontainers.junit.jupiter.Testcontainers
;
...
@@ -45,7 +52,7 @@ class CassandraAutoConfigurationWithPasswordAuthenticationIntegrationTests {
...
@@ -45,7 +52,7 @@ class CassandraAutoConfigurationWithPasswordAuthenticationIntegrationTests {
@Container
@Container
static
final
CassandraContainer
<?>
cassandra
=
new
PasswordAuthenticatorCassandraContainer
().
withStartupAttempts
(
5
)
static
final
CassandraContainer
<?>
cassandra
=
new
PasswordAuthenticatorCassandraContainer
().
withStartupAttempts
(
5
)
.
withStartupTimeout
(
Duration
.
ofMinutes
(
10
));
.
withStartupTimeout
(
Duration
.
ofMinutes
(
10
))
.
waitingFor
(
new
CassandraWaitStrategy
())
;
private
final
ApplicationContextRunner
contextRunner
=
new
ApplicationContextRunner
()
private
final
ApplicationContextRunner
contextRunner
=
new
ApplicationContextRunner
()
.
withConfiguration
(
AutoConfigurations
.
of
(
CassandraAutoConfiguration
.
class
)).
withPropertyValues
(
.
withConfiguration
(
AutoConfigurations
.
of
(
CassandraAutoConfiguration
.
class
)).
withPropertyValues
(
...
@@ -88,4 +95,29 @@ class CassandraAutoConfigurationWithPasswordAuthenticationIntegrationTests {
...
@@ -88,4 +95,29 @@ class CassandraAutoConfigurationWithPasswordAuthenticationIntegrationTests {
}
}
static
final
class
CassandraWaitStrategy
extends
AbstractWaitStrategy
{
@Override
protected
void
waitUntilReady
()
{
try
{
Unreliables
.
retryUntilSuccess
((
int
)
this
.
startupTimeout
.
getSeconds
(),
TimeUnit
.
SECONDS
,
()
->
{
getRateLimiter
().
doWhenReady
(()
->
cqlSessionBuilder
().
build
());
return
true
;
});
}
catch
(
TimeoutException
ex
)
{
throw
new
ContainerLaunchException
(
"Timed out waiting for Cassandra to be accessible for query execution"
);
}
}
private
CqlSessionBuilder
cqlSessionBuilder
()
{
return
CqlSession
.
builder
()
.
addContactPoint
(
new
InetSocketAddress
(
this
.
waitStrategyTarget
.
getHost
(),
this
.
waitStrategyTarget
.
getFirstMappedPort
()))
.
withLocalDatacenter
(
"datacenter1"
).
withAuthCredentials
(
"cassandra"
,
"cassandra"
);
}
}
}
}
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