You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When a bunch of stuff is going on at the same time on a computer, the random port assignment fails because it is being taken. Instead of using python to find a random port and then launching the java server on it, perhaps make the java server bind a random port and pull that back up.
My work around is essentially putting that _get_free_port in a loop until something succeeds...
Reproduction steps
On GitHub actions I have two pipelines that run concurrently with Wiremock. The port assignment fails -- it's already being reserved by something else by the time the java server comes up and runs.
References
My resolution in my testing looks something like this. Essentially try again for a bit so that two people standing it up at once don't fail.
@pytest.fixture()
def wiremock():
initialized = False
attempts = 0
while attempts < 10 and not initialized:
try:
s = socket.socket(socket.AF_INET, type=socket.SOCK_STREAM)
s.bind(("localhost", 0))
address, port = s.getsockname()
s.close()
with WireMockServer(port=port) as wm:
Config.base_url = 'http://localhost:{}/__admin'.format(wm.port)
initialized = True
yield wm
except exceptions.WireMockServerNotStartedError as e:
logging.error(e)
attempts += 1
The text was updated successfully, but these errors were encountered:
@andrewkruse thanks for raising this issue. I think this could be supported natively within the WireMockServer class, we'd be more than happy to take a PR if you fancy having a go. Otherwise I will try and come to this soon. We are working on a bunch of new features to support different strategies for running the wiremock server like (#71) so it might be a little while before I get to it.
Proposal
When a bunch of stuff is going on at the same time on a computer, the random port assignment fails because it is being taken. Instead of using python to find a random port and then launching the java server on it, perhaps make the java server bind a random port and pull that back up.
The lines in question:
https://github.com/wiremock/python-wiremock/blob/master/wiremock/server/server.py#L116-L121
My work around is essentially putting that _get_free_port in a loop until something succeeds...
Reproduction steps
On GitHub actions I have two pipelines that run concurrently with Wiremock. The port assignment fails -- it's already being reserved by something else by the time the java server comes up and runs.
References
My resolution in my testing looks something like this. Essentially try again for a bit so that two people standing it up at once don't fail.
The text was updated successfully, but these errors were encountered: