management.port=8081
@WebIntegrationTest(randomPort = true)
The actuator endpoints should be assigned to a random port.
The actuator endpoints are assigned to the same port as in the configuration file (i.e. 8081
in the example above)
Spring Boot 1.3.0.RC1
The randomPort
attribute only affects the main server port, not the actuator (from the Javadoc):
Convenience attribute that can be used to set a
server.port=0
Environment
property which usually triggers listening on a random port.
We can't really use it to set a random management port since many tests will expect that the actuator is running on the same port as the main server.
You can probably achieve what you need by setting management.port=0
for your tests.
@philwebb The problem that I am currently facing is that I cannot have my application running and executing integration tests concurrently because the actuator port collisions when using randomPort
. That said, you are correct, I can use the workaround that you suggested by using @WebIntegrationTest({"server.port=0", "management.port=0"})
and then autowire the values in the integration test by using @Value("${local.server.port}")
and @Value("${local.management.port}")
respectively.
Nevertheless, I can see an updated solution to the random port behavior where some logic checks server.port
and management.port
in the Environment
. If just server.port
has been set (or both have been set and have the same the value) then the random port can be used to generate one single value for both the application and the actuator (thus not affecting any tests that rely on having the same port value). However, if both properties have been specified then two different random values can be generated.
@matsev I'd have to take a look at the code but I have a feeling that the randomPort
logic is run before the Environment
is populated. I'm not sure it's possible for us to inspect for management.port
properties. I guess the easiest fix might be to add a randomManagementPort
attribute to the annotation.
@philwebb Ok, just a suggestion, not a big deal. If you need to create a second attribute I guess that it is of less value since the developer needs to key about as many characters anyway (although tab-completion will help you).
I can try help in this issue if not solved, ok @philwebb?
@FelipeAdorno no need to ask, the issue has ideal-for-contribution
so we're waiting for your PR, thanks!
The updated @SpringBootTest
annotation might make this easier to implement now. We could add WebEnvironment.RANDOM_SERVER_AND_MANAGEMENT_PORT
Closing in favor of PR #8023
Reopening due to comment https://github.com/spring-projects/spring-boot/pull/8023#issuecomment-274806996
@philwebb is there any way to do this now?
@guenhter The issue is still open
Is there any news with this fix?
So, are there only these 2 workarounds:
@DirtiesContext
for tests with the same contextsmanagement.server.port: 0
for test profileCorrect?
shall it be reflected in the release notes? https://github.com/spring-projects/spring-boot/releases/tag/v2.1.0.M3
or M4 ?
@radistao I'll be in the M4 release notes, but we've not written them yet.
Most helpful comment
Is there any news with this fix?