|
25 | 25 | import org.testng.annotations.Test;
|
26 | 26 |
|
27 | 27 | import java.util.Arrays;
|
| 28 | +import java.util.HashMap; |
| 29 | +import java.util.Map; |
28 | 30 | import java.util.concurrent.CountDownLatch;
|
29 | 31 | import java.util.concurrent.Future;
|
30 | 32 | import java.util.concurrent.TimeUnit;
|
|
40 | 42 |
|
41 | 43 | public class AsyncStreamHandlerTest extends HttpTest {
|
42 | 44 |
|
43 |
| - private static final String RESPONSE = "param_1_"; |
| 45 | + private static final String RESPONSE = "param_1=value_1"; |
44 | 46 |
|
45 | 47 | private static HttpServer server;
|
46 | 48 |
|
@@ -93,18 +95,25 @@ public void asyncStreamPOSTTest() throws Throwable {
|
93 | 95 | @Override
|
94 | 96 | public State onHeadersReceived(HttpHeaders headers) {
|
95 | 97 | assertContentTypesEquals(headers.get(CONTENT_TYPE), TEXT_HTML_CONTENT_TYPE_WITH_UTF_8_CHARSET);
|
| 98 | + for (Map.Entry<String, String> header : headers) { |
| 99 | + if (header.getKey().startsWith("X-param")) { |
| 100 | + builder.append(header.getKey().substring(2)).append("=").append(header.getValue()).append("&"); |
| 101 | + } |
| 102 | + } |
96 | 103 | return State.CONTINUE;
|
97 | 104 | }
|
98 | 105 |
|
99 | 106 | @Override
|
100 | 107 | public State onBodyPartReceived(HttpResponseBodyPart content) {
|
101 |
| - builder.append(new String(content.getBodyPartBytes(), US_ASCII)); |
102 | 108 | return State.CONTINUE;
|
103 | 109 | }
|
104 | 110 |
|
105 | 111 | @Override
|
106 | 112 | public String onCompleted() {
|
107 |
| - return builder.toString().trim(); |
| 113 | + if (builder.length() > 0) { |
| 114 | + builder.setLength(builder.length() - 1); |
| 115 | + } |
| 116 | + return builder.toString(); |
108 | 117 | }
|
109 | 118 | }).get(10, TimeUnit.SECONDS);
|
110 | 119 |
|
@@ -174,17 +183,24 @@ public void asyncStreamFutureTest() throws Throwable {
|
174 | 183 | public State onHeadersReceived(HttpHeaders headers) {
|
175 | 184 | assertContentTypesEquals(headers.get(CONTENT_TYPE), TEXT_HTML_CONTENT_TYPE_WITH_UTF_8_CHARSET);
|
176 | 185 | onHeadersReceived.set(true);
|
| 186 | + for (Map.Entry<String, String> header : headers) { |
| 187 | + if (header.getKey().startsWith("X-param")) { |
| 188 | + builder.append(header.getKey().substring(2)).append("=").append(header.getValue()).append("&"); |
| 189 | + } |
| 190 | + } |
177 | 191 | return State.CONTINUE;
|
178 | 192 | }
|
179 | 193 |
|
180 | 194 | @Override
|
181 | 195 | public State onBodyPartReceived(HttpResponseBodyPart content) {
|
182 |
| - builder.append(new String(content.getBodyPartBytes())); |
183 | 196 | return State.CONTINUE;
|
184 | 197 | }
|
185 | 198 |
|
186 | 199 | @Override
|
187 | 200 | public String onCompleted() {
|
| 201 | + if (builder.length() > 0) { |
| 202 | + builder.setLength(builder.length() - 1); |
| 203 | + } |
188 | 204 | return builder.toString().trim();
|
189 | 205 | }
|
190 | 206 |
|
@@ -254,17 +270,24 @@ public void asyncStreamReusePOSTTest() throws Throwable {
|
254 | 270 | @Override
|
255 | 271 | public State onHeadersReceived(HttpHeaders headers) {
|
256 | 272 | responseHeaders.set(headers);
|
| 273 | + for (Map.Entry<String, String> header : headers) { |
| 274 | + if (header.getKey().startsWith("X-param")) { |
| 275 | + builder.append(header.getKey().substring(2)).append("=").append(header.getValue()).append("&"); |
| 276 | + } |
| 277 | + } |
257 | 278 | return State.CONTINUE;
|
258 | 279 | }
|
259 | 280 |
|
260 | 281 | @Override
|
261 | 282 | public State onBodyPartReceived(HttpResponseBodyPart content) {
|
262 |
| - builder.append(new String(content.getBodyPartBytes())); |
263 | 283 | return State.CONTINUE;
|
264 | 284 | }
|
265 | 285 |
|
266 | 286 | @Override
|
267 | 287 | public String onCompleted() {
|
| 288 | + if (builder.length() > 0) { |
| 289 | + builder.setLength(builder.length() - 1); |
| 290 | + } |
268 | 291 | return builder.toString();
|
269 | 292 | }
|
270 | 293 | });
|
|
0 commit comments