diff --git a/mockserver-tests/src/test/groovy/pl/touk/mockserver/tests/ServerMockPT.groovy b/mockserver-tests/src/test/groovy/pl/touk/mockserver/tests/ServerMockPT.groovy index 4ab9e3e..a696a98 100644 --- a/mockserver-tests/src/test/groovy/pl/touk/mockserver/tests/ServerMockPT.groovy +++ b/mockserver-tests/src/test/groovy/pl/touk/mockserver/tests/ServerMockPT.groovy @@ -19,8 +19,7 @@ import java.util.concurrent.TimeUnit class ServerMockPT extends Specification { - - @Timeout(value = 60) + @Timeout(value = 90) def "should handle many request simultaneously"() { given: HttpClient client = HttpClients.createDefault() @@ -28,7 +27,8 @@ class ServerMockPT extends Specification { RemoteMockServer controlServerClient = new RemoteMockServer("localhost", 9999) int requestAmount = 1000 String[] responses = new String[requestAmount] - ExecutorService executorService = Executors.newFixedThreadPool(20) + ExecutorService executorService = Executors.newCachedThreadPool() + when: for (int i = 0; i < requestAmount; ++i) { int current = i executorService.submit { @@ -45,14 +45,15 @@ class ServerMockPT extends Specification { restPost.entity = new StringEntity("", ContentType.create("text/xml", "UTF-8")) CloseableHttpResponse response = client.execute(restPost) responses[current] = Util.extractStringResponse(response) - assert controlServerClient.removeMock("testRest$current", false).size() == 1 + controlServerClient.removeMock("testRest$current", true) } } - when: - executorService.awaitTermination(60, TimeUnit.SECONDS) + executorService.shutdown() + executorService.awaitTermination(90, TimeUnit.SECONDS) then: - responses.eachWithIndex { res, i -> assert new XmlSlurper().parseText(res).name() == "goodResponse$i" as String } + responses.eachWithIndex { res, i -> assert res && new XmlSlurper().parseText(res).name() == "goodResponse$i" as String } cleanup: + executorService.shutdown() httpMockServer.stop() } } diff --git a/mockserver/src/main/groovy/pl/touk/mockserver/server/ContextExecutor.groovy b/mockserver/src/main/groovy/pl/touk/mockserver/server/ContextExecutor.groovy index d5a8230..e5c9c98 100644 --- a/mockserver/src/main/groovy/pl/touk/mockserver/server/ContextExecutor.groovy +++ b/mockserver/src/main/groovy/pl/touk/mockserver/server/ContextExecutor.groovy @@ -15,12 +15,12 @@ class ContextExecutor { ContextExecutor(HttpServerWraper httpServerWraper, Mock initialMock) { this.httpServerWraper = httpServerWraper - this.path = '/' + initialMock.path + this.path = "/${initialMock.path}" this.mocks = new CopyOnWriteArrayList<>([initialMock]) httpServerWraper.createContext(path) { HttpExchange ex -> MockRequest request = new MockRequest(ex.requestBody.text, ex.requestHeaders, ex.requestURI) - log.info("Mock received input") + log.info('Mock received input') log.debug("Request: ${request.text}") for (Mock mock : mocks) { try {