Class groovyx.net.http.EncodersSpec

5

tests

0

failures

0

ignored

4.216s

duration

100%

successful

Tests

Test Duration Result
multipart 3.550s passed
multipart: file (bytes) 0.129s passed
multipart: file (path) 0.180s passed
multipart: file (stream) 0.197s passed
multipart: file (string) 0.160s passed

Standard output

19:16:16.219 [Test worker] DEBUG ersatz.jboss.logging - Logging Provider: ersatz.jboss.logging.Slf4jLoggerProvider
19:16:16.303 [Test worker] DEBUG ersatz.undertow - starting undertow server ersatz.undertow.Undertow@1d201df
19:16:16.346 [Test worker] INFO ersatz.xnio - XNIO version 3.3.8.Final
19:16:16.397 [Test worker] INFO ersatz.xnio.nio - XNIO NIO Implementation Version 3.3.8.Final
19:16:16.787 [XNIO-1 I/O-1] DEBUG ersatz.xnio.nio - Started channel thread 'XNIO-1 I/O-1', selector sun.nio.ch.EPollSelectorImpl@6567f49c
19:16:16.830 [XNIO-1 I/O-3] DEBUG ersatz.xnio.nio - Started channel thread 'XNIO-1 I/O-3', selector sun.nio.ch.EPollSelectorImpl@47b4eda
19:16:16.832 [XNIO-1 I/O-4] DEBUG ersatz.xnio.nio - Started channel thread 'XNIO-1 I/O-4', selector sun.nio.ch.EPollSelectorImpl@2280988a
19:16:16.812 [XNIO-1 I/O-2] DEBUG ersatz.xnio.nio - Started channel thread 'XNIO-1 I/O-2', selector sun.nio.ch.EPollSelectorImpl@27711ef4
19:16:16.845 [XNIO-1 I/O-6] DEBUG ersatz.xnio.nio - Started channel thread 'XNIO-1 I/O-6', selector sun.nio.ch.EPollSelectorImpl@1e945e2a
19:16:16.846 [XNIO-1 I/O-7] DEBUG ersatz.xnio.nio - Started channel thread 'XNIO-1 I/O-7', selector sun.nio.ch.EPollSelectorImpl@37f382a9
19:16:16.846 [XNIO-1 I/O-5] DEBUG ersatz.xnio.nio - Started channel thread 'XNIO-1 I/O-5', selector sun.nio.ch.EPollSelectorImpl@1bac024a
19:16:16.853 [XNIO-1 I/O-8] DEBUG ersatz.xnio.nio - Started channel thread 'XNIO-1 I/O-8', selector sun.nio.ch.EPollSelectorImpl@26d61e6c
19:16:16.869 [Test worker] DEBUG ersatz.undertow - Configuring listener with protocol HTTP for interface localhost and port 0
19:16:16.870 [XNIO-1 Accept] DEBUG ersatz.xnio.nio - Started channel thread 'XNIO-1 Accept', selector sun.nio.ch.EPollSelectorImpl@117f67d8
19:16:17.251 [Test worker] DEBUG groovyx.net.http.JavaHttpBuilder - Request-URI(POST): http://localhost:39773/multi
19:16:17.253 [Test worker] DEBUG groovy.net.http.JavaHttpBuilder.headers - Request-Header: Accept-Encoding -> [gzip, deflate]
19:16:17.254 [Test worker] DEBUG groovy.net.http.JavaHttpBuilder.headers - Request-Header: Content-Type -> [multipart/mixed; 
	boundary="----=_Part_0_433066640.1565482577166"; charset=utf-8]
19:16:17.265 [Test worker] DEBUG groovy.net.http.JavaHttpBuilder.content - Request-Body(multipart/mixed; 
	boundary="----=_Part_0_433066640.1565482577166"): ------=_Part_0_433066640.1565482577166
Content-Type: text/plain
Content-Disposition: form-data; name="alpha"

one
------=_Part_0_433066640.1565482577166
Content-Type: text/plain
Content-Disposition: form-data; name="bravo"

two
------=_Part_0_433066640.1565482577166--

19:16:17.452 [XNIO-1 task-1] DEBUG com.stehno.ersatz.ErsatzServer - Request: { POST /multi (query=[:], headers={Accept=[text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2], Connection=[keep-alive], Accept-Encoding=[gzip, deflate], Content-Type=[multipart/mixed; boundary="----=_Part_0_433066640.1565482577166"; charset=utf-8], Content-Length=[280], User-Agent=[Java/1.8.0_222], Host=[localhost:39773]}, cookies=[:]): ------=_Part_0_433066640.1565482577166
Content-Type: text/plain
Content-Disposition: form-data; name="alpha"

one
------=_Part_0_433066640.1565482577166
Content-Type: text/plain
Content-Disposition: form-data; name="bravo"

two
------=_Part_0_433066640.1565482577166--
 }
19:16:17.817 [XNIO-1 task-1] DEBUG com.stehno.ersatz.ErsatzServer - Response({Content-Type=[text/plain]}): ok
19:16:17.860 [Test worker] DEBUG groovy.net.http.JavaHttpBuilder.content - Response-Body: ok
19:16:17.860 [Test worker] DEBUG groovy.net.http.JavaHttpBuilder.headers - Response-Header: Content-Encoding -> gzip
19:16:17.860 [Test worker] DEBUG groovy.net.http.JavaHttpBuilder.headers - Response-Header: Connection -> keep-alive
19:16:17.860 [Test worker] DEBUG groovy.net.http.JavaHttpBuilder.headers - Response-Header: Content-Type -> text/plain
19:16:17.860 [Test worker] DEBUG groovy.net.http.JavaHttpBuilder.headers - Response-Header: Content-Length -> 22
19:16:17.860 [Test worker] DEBUG groovy.net.http.JavaHttpBuilder.headers - Response-Header: Date -> Sun, 11 Aug 2019 00:16:17 GMT
19:16:18.259 [Test worker] DEBUG ersatz.undertow - stopping undertow server ersatz.undertow.Undertow@1d201df
19:16:18.324 [Test worker] DEBUG ersatz.undertow - starting undertow server ersatz.undertow.Undertow@2651a77c
19:16:18.340 [XNIO-2 I/O-1] DEBUG ersatz.xnio.nio - Started channel thread 'XNIO-2 I/O-1', selector sun.nio.ch.EPollSelectorImpl@369ca324
19:16:18.354 [XNIO-2 I/O-3] DEBUG ersatz.xnio.nio - Started channel thread 'XNIO-2 I/O-3', selector sun.nio.ch.EPollSelectorImpl@4e2a6bd8
19:16:18.357 [XNIO-2 I/O-4] DEBUG ersatz.xnio.nio - Started channel thread 'XNIO-2 I/O-4', selector sun.nio.ch.EPollSelectorImpl@39aecd18
19:16:18.361 [XNIO-2 I/O-5] DEBUG ersatz.xnio.nio - Started channel thread 'XNIO-2 I/O-5', selector sun.nio.ch.EPollSelectorImpl@5761238
19:16:18.340 [XNIO-2 I/O-2] DEBUG ersatz.xnio.nio - Started channel thread 'XNIO-2 I/O-2', selector sun.nio.ch.EPollSelectorImpl@2dd32664
19:16:18.363 [XNIO-2 I/O-6] DEBUG ersatz.xnio.nio - Started channel thread 'XNIO-2 I/O-6', selector sun.nio.ch.EPollSelectorImpl@4942fe1e
19:16:18.375 [XNIO-2 I/O-7] DEBUG ersatz.xnio.nio - Started channel thread 'XNIO-2 I/O-7', selector sun.nio.ch.EPollSelectorImpl@5f97b353
19:16:18.376 [XNIO-2 I/O-8] DEBUG ersatz.xnio.nio - Started channel thread 'XNIO-2 I/O-8', selector sun.nio.ch.EPollSelectorImpl@77bb565a
19:16:18.384 [Test worker] DEBUG ersatz.undertow - Configuring listener with protocol HTTP for interface localhost and port 0
19:16:18.387 [XNIO-2 Accept] DEBUG ersatz.xnio.nio - Started channel thread 'XNIO-2 Accept', selector sun.nio.ch.EPollSelectorImpl@61fb28d
19:16:18.423 [Test worker] DEBUG groovyx.net.http.JavaHttpBuilder - Request-URI(POST): http://localhost:37917/multi
19:16:18.423 [Test worker] DEBUG groovy.net.http.JavaHttpBuilder.headers - Request-Header: Accept-Encoding -> [gzip, deflate]
19:16:18.423 [Test worker] DEBUG groovy.net.http.JavaHttpBuilder.headers - Request-Header: Content-Type -> [multipart/mixed; 
	boundary="----=_Part_1_1827833770.1565482578411"; charset=utf-8]
19:16:18.424 [Test worker] DEBUG groovy.net.http.JavaHttpBuilder.content - Request-Body(multipart/mixed; 
	boundary="----=_Part_1_1827833770.1565482578411"): ------=_Part_1_1827833770.1565482578411
Content-Type: text/plain
Content-Disposition: form-data; name="filea"; filename="file-a.txt"

some-a-content
------=_Part_1_1827833770.1565482578411
Content-Type: text/plain
Content-Disposition: form-data; name="fileb"; filename="file-b.xtx"

some-b-content
------=_Part_1_1827833770.1565482578411--

19:16:18.429 [XNIO-2 task-1] DEBUG com.stehno.ersatz.ErsatzServer - Request: { POST /multi (query=[:], headers={Accept=[text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2], Connection=[keep-alive], Accept-Encoding=[gzip, deflate], Content-Type=[multipart/mixed; boundary="----=_Part_1_1827833770.1565482578411"; charset=utf-8], Content-Length=[351], User-Agent=[Java/1.8.0_222], Host=[localhost:37917]}, cookies=[:]): ------=_Part_1_1827833770.1565482578411
Content-Type: text/plain
Content-Disposition: form-data; name="filea"; filename="file-a.txt"

some-a-content
------=_Part_1_1827833770.1565482578411
Content-Type: text/plain
Content-Disposition: form-data; name="fileb"; filename="file-b.xtx"

some-b-content
------=_Part_1_1827833770.1565482578411--
 }
19:16:18.457 [XNIO-2 task-1] DEBUG com.stehno.ersatz.ErsatzServer - Response({Content-Type=[text/plain]}): ok
19:16:18.459 [Test worker] DEBUG groovy.net.http.JavaHttpBuilder.content - Response-Body: ok
19:16:18.459 [Test worker] DEBUG groovy.net.http.JavaHttpBuilder.headers - Response-Header: Content-Encoding -> gzip
19:16:18.459 [Test worker] DEBUG groovy.net.http.JavaHttpBuilder.headers - Response-Header: Connection -> keep-alive
19:16:18.459 [Test worker] DEBUG groovy.net.http.JavaHttpBuilder.headers - Response-Header: Content-Type -> text/plain
19:16:18.459 [Test worker] DEBUG groovy.net.http.JavaHttpBuilder.headers - Response-Header: Content-Length -> 22
19:16:18.460 [Test worker] DEBUG groovy.net.http.JavaHttpBuilder.headers - Response-Header: Date -> Sun, 11 Aug 2019 00:16:18 GMT
19:16:18.460 [Test worker] DEBUG ersatz.undertow - stopping undertow server ersatz.undertow.Undertow@2651a77c
19:16:18.471 [Test worker] DEBUG ersatz.undertow - starting undertow server ersatz.undertow.Undertow@2e09b7c
19:16:18.474 [XNIO-3 I/O-1] DEBUG ersatz.xnio.nio - Started channel thread 'XNIO-3 I/O-1', selector sun.nio.ch.EPollSelectorImpl@22ae6540
19:16:18.478 [XNIO-3 I/O-2] DEBUG ersatz.xnio.nio - Started channel thread 'XNIO-3 I/O-2', selector sun.nio.ch.EPollSelectorImpl@598ca1db
19:16:18.479 [XNIO-3 I/O-3] DEBUG ersatz.xnio.nio - Started channel thread 'XNIO-3 I/O-3', selector sun.nio.ch.EPollSelectorImpl@2434c904
19:16:18.480 [XNIO-3 I/O-4] DEBUG ersatz.xnio.nio - Started channel thread 'XNIO-3 I/O-4', selector sun.nio.ch.EPollSelectorImpl@22779b1f
19:16:18.482 [XNIO-3 I/O-5] DEBUG ersatz.xnio.nio - Started channel thread 'XNIO-3 I/O-5', selector sun.nio.ch.EPollSelectorImpl@50265f5d
19:16:18.495 [XNIO-3 I/O-6] DEBUG ersatz.xnio.nio - Started channel thread 'XNIO-3 I/O-6', selector sun.nio.ch.EPollSelectorImpl@34d887fc
19:16:18.503 [XNIO-3 I/O-7] DEBUG ersatz.xnio.nio - Started channel thread 'XNIO-3 I/O-7', selector sun.nio.ch.EPollSelectorImpl@5bb9b601
19:16:18.518 [XNIO-3 I/O-8] DEBUG ersatz.xnio.nio - Started channel thread 'XNIO-3 I/O-8', selector sun.nio.ch.EPollSelectorImpl@7747287f
19:16:18.521 [Test worker] DEBUG ersatz.undertow - Configuring listener with protocol HTTP for interface localhost and port 0
19:16:18.521 [XNIO-3 Accept] DEBUG ersatz.xnio.nio - Started channel thread 'XNIO-3 Accept', selector sun.nio.ch.EPollSelectorImpl@4d9dee09
19:16:18.546 [Test worker] DEBUG groovyx.net.http.JavaHttpBuilder - Request-URI(POST): http://localhost:40321/multi
19:16:18.547 [Test worker] DEBUG groovy.net.http.JavaHttpBuilder.headers - Request-Header: Accept-Encoding -> [gzip, deflate]
19:16:18.548 [Test worker] DEBUG groovy.net.http.JavaHttpBuilder.headers - Request-Header: Content-Type -> [multipart/mixed; 
	boundary="----=_Part_2_172889866.1565482578545"; charset=utf-8]
19:16:18.560 [Test worker] DEBUG groovy.net.http.JavaHttpBuilder.content - Request-Body(multipart/mixed; 
	boundary="----=_Part_2_172889866.1565482578545"): ------=_Part_2_172889866.1565482578545
Content-Type: text/plain
Content-Disposition: form-data; name="filea"; filename="file-a.txt"

some-a-content
------=_Part_2_172889866.1565482578545
Content-Type: text/plain
Content-Disposition: form-data; name="fileb"; filename="file-b.xtx"

some-b-content
------=_Part_2_172889866.1565482578545--

19:16:18.570 [XNIO-3 task-1] DEBUG com.stehno.ersatz.ErsatzServer - Request: { POST /multi (query=[:], headers={Accept=[text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2], Connection=[keep-alive], Accept-Encoding=[gzip, deflate], Content-Type=[multipart/mixed; boundary="----=_Part_2_172889866.1565482578545"; charset=utf-8], Content-Length=[348], User-Agent=[Java/1.8.0_222], Host=[localhost:40321]}, cookies=[:]): ------=_Part_2_172889866.1565482578545
Content-Type: text/plain
Content-Disposition: form-data; name="filea"; filename="file-a.txt"

some-a-content
------=_Part_2_172889866.1565482578545
Content-Type: text/plain
Content-Disposition: form-data; name="fileb"; filename="file-b.xtx"

some-b-content
------=_Part_2_172889866.1565482578545--
 }
19:16:18.577 [XNIO-3 task-1] DEBUG com.stehno.ersatz.ErsatzServer - Response({Content-Type=[text/plain]}): ok
19:16:18.581 [Test worker] DEBUG groovy.net.http.JavaHttpBuilder.content - Response-Body: ok
19:16:18.581 [Test worker] DEBUG groovy.net.http.JavaHttpBuilder.headers - Response-Header: Content-Encoding -> gzip
19:16:18.581 [Test worker] DEBUG groovy.net.http.JavaHttpBuilder.headers - Response-Header: Connection -> keep-alive
19:16:18.581 [Test worker] DEBUG groovy.net.http.JavaHttpBuilder.headers - Response-Header: Content-Type -> text/plain
19:16:18.581 [Test worker] DEBUG groovy.net.http.JavaHttpBuilder.headers - Response-Header: Content-Length -> 22
19:16:18.582 [Test worker] DEBUG groovy.net.http.JavaHttpBuilder.headers - Response-Header: Date -> Sun, 11 Aug 2019 00:16:18 GMT
19:16:18.582 [Test worker] DEBUG ersatz.undertow - stopping undertow server ersatz.undertow.Undertow@2e09b7c
19:16:18.598 [Test worker] DEBUG ersatz.undertow - starting undertow server ersatz.undertow.Undertow@2c42ca40
19:16:18.626 [XNIO-4 I/O-2] DEBUG ersatz.xnio.nio - Started channel thread 'XNIO-4 I/O-2', selector sun.nio.ch.EPollSelectorImpl@5065c52f
19:16:18.626 [XNIO-4 I/O-1] DEBUG ersatz.xnio.nio - Started channel thread 'XNIO-4 I/O-1', selector sun.nio.ch.EPollSelectorImpl@7b467481
19:16:18.654 [XNIO-4 I/O-3] DEBUG ersatz.xnio.nio - Started channel thread 'XNIO-4 I/O-3', selector sun.nio.ch.EPollSelectorImpl@55ca1513
19:16:18.654 [XNIO-4 I/O-5] DEBUG ersatz.xnio.nio - Started channel thread 'XNIO-4 I/O-5', selector sun.nio.ch.EPollSelectorImpl@3df5d274
19:16:18.655 [XNIO-4 I/O-6] DEBUG ersatz.xnio.nio - Started channel thread 'XNIO-4 I/O-6', selector sun.nio.ch.EPollSelectorImpl@69d94c50
19:16:18.656 [XNIO-4 I/O-4] DEBUG ersatz.xnio.nio - Started channel thread 'XNIO-4 I/O-4', selector sun.nio.ch.EPollSelectorImpl@4a171809
19:16:18.661 [XNIO-4 I/O-7] DEBUG ersatz.xnio.nio - Started channel thread 'XNIO-4 I/O-7', selector sun.nio.ch.EPollSelectorImpl@6cb777e5
19:16:18.673 [XNIO-4 I/O-8] DEBUG ersatz.xnio.nio - Started channel thread 'XNIO-4 I/O-8', selector sun.nio.ch.EPollSelectorImpl@5f6e16b0
19:16:18.677 [Test worker] DEBUG ersatz.undertow - Configuring listener with protocol HTTP for interface localhost and port 0
19:16:18.682 [XNIO-4 Accept] DEBUG ersatz.xnio.nio - Started channel thread 'XNIO-4 Accept', selector sun.nio.ch.EPollSelectorImpl@8aaa3f7
19:16:18.693 [Test worker] DEBUG groovyx.net.http.JavaHttpBuilder - Request-URI(POST): http://localhost:36483/multi
19:16:18.694 [Test worker] DEBUG groovy.net.http.JavaHttpBuilder.headers - Request-Header: Accept-Encoding -> [gzip, deflate]
19:16:18.694 [Test worker] DEBUG groovy.net.http.JavaHttpBuilder.headers - Request-Header: Content-Type -> [multipart/mixed; 
	boundary="----=_Part_3_925149266.1565482578692"; charset=utf-8]
19:16:18.694 [Test worker] DEBUG groovy.net.http.JavaHttpBuilder.content - Request-Body(multipart/mixed; 
	boundary="----=_Part_3_925149266.1565482578692"): ------=_Part_3_925149266.1565482578692
Content-Type: text/plain
Content-Disposition: form-data; name="filea"; filename="file-a.txt"

some-a-content
------=_Part_3_925149266.1565482578692
Content-Type: text/plain
Content-Disposition: form-data; name="fileb"; filename="file-b.xtx"

some-b-content
------=_Part_3_925149266.1565482578692--

19:16:18.719 [XNIO-4 task-1] DEBUG com.stehno.ersatz.ErsatzServer - Request: { POST /multi (query=[:], headers={Accept=[text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2], Connection=[keep-alive], Accept-Encoding=[gzip, deflate], Content-Type=[multipart/mixed; boundary="----=_Part_3_925149266.1565482578692"; charset=utf-8], Content-Length=[348], User-Agent=[Java/1.8.0_222], Host=[localhost:36483]}, cookies=[:]): ------=_Part_3_925149266.1565482578692
Content-Type: text/plain
Content-Disposition: form-data; name="filea"; filename="file-a.txt"

some-a-content
------=_Part_3_925149266.1565482578692
Content-Type: text/plain
Content-Disposition: form-data; name="fileb"; filename="file-b.xtx"

some-b-content
------=_Part_3_925149266.1565482578692--
 }
19:16:18.731 [XNIO-4 task-1] DEBUG com.stehno.ersatz.ErsatzServer - Response({Content-Type=[text/plain]}): ok
19:16:18.734 [Test worker] DEBUG groovy.net.http.JavaHttpBuilder.content - Response-Body: ok
19:16:18.734 [Test worker] DEBUG groovy.net.http.JavaHttpBuilder.headers - Response-Header: Content-Encoding -> gzip
19:16:18.734 [Test worker] DEBUG groovy.net.http.JavaHttpBuilder.headers - Response-Header: Connection -> keep-alive
19:16:18.734 [Test worker] DEBUG groovy.net.http.JavaHttpBuilder.headers - Response-Header: Content-Type -> text/plain
19:16:18.734 [Test worker] DEBUG groovy.net.http.JavaHttpBuilder.headers - Response-Header: Content-Length -> 22
19:16:18.734 [Test worker] DEBUG groovy.net.http.JavaHttpBuilder.headers - Response-Header: Date -> Sun, 11 Aug 2019 00:16:18 GMT
19:16:18.736 [Test worker] DEBUG ersatz.undertow - stopping undertow server ersatz.undertow.Undertow@2c42ca40
19:16:18.758 [Test worker] DEBUG ersatz.undertow - starting undertow server ersatz.undertow.Undertow@64b7e657
19:16:18.759 [XNIO-4 task-1] DEBUG ersatz.undertow.request.io - UT005013: An IOException occurred
java.nio.channels.ClosedChannelException: null
	at sun.nio.ch.SocketChannelImpl.shutdownOutput(SocketChannelImpl.java:797)
	at ersatz.xnio.nio.NioSocketConduit.write(NioSocketConduit.java:190)
	at ersatz.undertow.server.protocol.http.HttpResponseConduit.processWrite(HttpResponseConduit.java:250)
	at ersatz.undertow.server.protocol.http.HttpResponseConduit.write(HttpResponseConduit.java:596)
	at ersatz.undertow.conduits.AbstractFixedLengthStreamSinkConduit.write(AbstractFixedLengthStreamSinkConduit.java:106)
	at ersatz.undertow.conduits.AbstractFixedLengthStreamSinkConduit.write(AbstractFixedLengthStreamSinkConduit.java:120)
	at ersatz.undertow.conduits.DeflatingStreamSinkConduit.performFlushIfRequired(DeflatingStreamSinkConduit.java:419)
	at ersatz.undertow.conduits.DeflatingStreamSinkConduit.flush(DeflatingStreamSinkConduit.java:349)
	at ersatz.xnio.conduits.ConduitStreamSinkChannel.flush(ConduitStreamSinkChannel.java:162)
	at ersatz.undertow.channels.DetachableStreamSinkChannel.flush(DetachableStreamSinkChannel.java:119)
	at ersatz.xnio.channels.Channels.flushBlocking(Channels.java:63)
	at ersatz.undertow.io.UndertowOutputStream.close(UndertowOutputStream.java:344)
	at ersatz.undertow.io.BlockingSenderImpl.close(BlockingSenderImpl.java:170)
	at ersatz.undertow.io.DefaultIoCallback.onComplete(DefaultIoCallback.java:54)
	at ersatz.undertow.io.BlockingSenderImpl.invokeOnComplete(BlockingSenderImpl.java:227)
	at ersatz.undertow.io.BlockingSenderImpl.send(BlockingSenderImpl.java:95)
	at ersatz.undertow.io.BlockingSenderImpl.send(BlockingSenderImpl.java:117)
	at com.stehno.ersatz.ErsatzServer.send(ErsatzServer.groovy:494)
	at com.stehno.ersatz.ErsatzServer.access$0(ErsatzServer.groovy)
	at com.stehno.ersatz.ErsatzServer$1.handleRequest(ErsatzServer.groovy:370)
	at ersatz.undertow.server.handlers.HttpTraceHandler.handleRequest(HttpTraceHandler.java:70)
	at ersatz.undertow.server.handlers.encoding.EncodingHandler.handleRequest(EncodingHandler.java:72)
	at ersatz.undertow.server.Connectors.executeRootHandler(Connectors.java:332)
	at ersatz.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:812)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
	Suppressed: java.nio.channels.ClosedByInterruptException: null
		at java.nio.channels.spi.AbstractInterruptibleChannel.end(AbstractInterruptibleChannel.java:202)
		at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:511)
		at ersatz.xnio.nio.NioSocketConduit.write(NioSocketConduit.java:184)
		... 25 common frames omitted
19:16:18.838 [XNIO-5 I/O-3] DEBUG ersatz.xnio.nio - Started channel thread 'XNIO-5 I/O-3', selector sun.nio.ch.EPollSelectorImpl@77de0e59
19:16:18.838 [XNIO-5 I/O-1] DEBUG ersatz.xnio.nio - Started channel thread 'XNIO-5 I/O-1', selector sun.nio.ch.EPollSelectorImpl@25557182
19:16:18.839 [XNIO-5 I/O-2] DEBUG ersatz.xnio.nio - Started channel thread 'XNIO-5 I/O-2', selector sun.nio.ch.EPollSelectorImpl@113cbac4
19:16:18.867 [XNIO-5 I/O-4] DEBUG ersatz.xnio.nio - Started channel thread 'XNIO-5 I/O-4', selector sun.nio.ch.EPollSelectorImpl@7ae58ce2
19:16:18.868 [XNIO-5 I/O-5] DEBUG ersatz.xnio.nio - Started channel thread 'XNIO-5 I/O-5', selector sun.nio.ch.EPollSelectorImpl@34511512
19:16:18.871 [XNIO-5 I/O-6] DEBUG ersatz.xnio.nio - Started channel thread 'XNIO-5 I/O-6', selector sun.nio.ch.EPollSelectorImpl@3951851f
19:16:18.894 [Test worker] DEBUG ersatz.undertow - Configuring listener with protocol HTTP for interface localhost and port 0
19:16:18.894 [XNIO-5 I/O-7] DEBUG ersatz.xnio.nio - Started channel thread 'XNIO-5 I/O-7', selector sun.nio.ch.EPollSelectorImpl@208c48c6
19:16:18.903 [Test worker] DEBUG groovyx.net.http.JavaHttpBuilder - Request-URI(POST): http://localhost:42619/multi
19:16:18.903 [Test worker] DEBUG groovy.net.http.JavaHttpBuilder.headers - Request-Header: Accept-Encoding -> [gzip, deflate]
19:16:18.904 [Test worker] DEBUG groovy.net.http.JavaHttpBuilder.headers - Request-Header: Content-Type -> [multipart/mixed; 
	boundary="----=_Part_4_1939570979.1565482578902"; charset=utf-8]
19:16:18.904 [Test worker] DEBUG groovy.net.http.JavaHttpBuilder.content - Request-Body(multipart/mixed; 
	boundary="----=_Part_4_1939570979.1565482578902"): ------=_Part_4_1939570979.1565482578902
Content-Type: text/plain
Content-Disposition: form-data; name="filea"; filename="file-a.txt"

some-a-content
------=_Part_4_1939570979.1565482578902
Content-Type: text/plain
Content-Disposition: form-data; name="fileb"; filename="file-b.xtx"

some-b-content
------=_Part_4_1939570979.1565482578902--

19:16:18.906 [XNIO-5 Accept] DEBUG ersatz.xnio.nio - Started channel thread 'XNIO-5 Accept', selector sun.nio.ch.EPollSelectorImpl@4b6a4e3a
19:16:18.910 [XNIO-5 I/O-8] DEBUG ersatz.xnio.nio - Started channel thread 'XNIO-5 I/O-8', selector sun.nio.ch.EPollSelectorImpl@70d2a14c
19:16:18.936 [XNIO-5 task-1] DEBUG com.stehno.ersatz.ErsatzServer - Request: { POST /multi (query=[:], headers={Accept=[text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2], Connection=[keep-alive], Accept-Encoding=[gzip, deflate], Content-Type=[multipart/mixed; boundary="----=_Part_4_1939570979.1565482578902"; charset=utf-8], Content-Length=[351], User-Agent=[Java/1.8.0_222], Host=[localhost:42619]}, cookies=[:]): ------=_Part_4_1939570979.1565482578902
Content-Type: text/plain
Content-Disposition: form-data; name="filea"; filename="file-a.txt"

some-a-content
------=_Part_4_1939570979.1565482578902
Content-Type: text/plain
Content-Disposition: form-data; name="fileb"; filename="file-b.xtx"

some-b-content
------=_Part_4_1939570979.1565482578902--
 }
19:16:18.942 [XNIO-5 task-1] DEBUG com.stehno.ersatz.ErsatzServer - Response({Content-Type=[text/plain]}): ok
19:16:18.943 [Test worker] DEBUG groovy.net.http.JavaHttpBuilder.content - Response-Body: ok
19:16:18.944 [Test worker] DEBUG groovy.net.http.JavaHttpBuilder.headers - Response-Header: Content-Encoding -> gzip
19:16:18.944 [Test worker] DEBUG groovy.net.http.JavaHttpBuilder.headers - Response-Header: Connection -> keep-alive
19:16:18.944 [Test worker] DEBUG groovy.net.http.JavaHttpBuilder.headers - Response-Header: Content-Type -> text/plain
19:16:18.944 [Test worker] DEBUG groovy.net.http.JavaHttpBuilder.headers - Response-Header: Content-Length -> 22
19:16:18.944 [Test worker] DEBUG groovy.net.http.JavaHttpBuilder.headers - Response-Header: Date -> Sun, 11 Aug 2019 00:16:18 GMT
19:16:18.945 [Test worker] DEBUG ersatz.undertow - stopping undertow server ersatz.undertow.Undertow@64b7e657