Commit 8742f14d authored by Martti Käärik's avatar Martti Käärik
Browse files

Improved HTTP system adapter logging of message matching #188

parent 06725f7b
Loading
Loading
Loading
Loading
Loading
+19 −6
Original line number Diff line number Diff line
@@ -14,6 +14,7 @@ import java.net.URLEncoder;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.ByteBuffer;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
@@ -282,10 +283,10 @@ public class HttpSystemAdapter implements SystemAdapter {
				requestBuilder.uri(uri);

				// TODO logging
				reporter.comment(source.getName(), "Outgoing (headers): " + httpData.method.toString() + " | " + uri);
				reporter.comment("SystemAdapter | " + source.getName(), "Outgoing (headers): " + httpData.method.toString() + " | " + uri);
				
				byte[] body = encodeBody(httpData.body);
				reporter.comment(source.getName(), "Outgoing (body): " + mapper.writeValueAsString(httpData.body));
				reporter.comment("SystemAdapter | " + source.getName(), "Outgoing (body): " + mapper.writeValueAsString(httpData.body));
				requestBuilder.method(httpData.method.toString(), HttpRequest.BodyPublishers.ofByteArray(body));

				if (httpData.headers != null)
@@ -339,8 +340,8 @@ public class HttpSystemAdapter implements SystemAdapter {
				int length = body.length;

				// TODO logging
				reporter.comment(source.getName(), "Outgoing (headers): " + httpData.status + " | length=" + length);
				reporter.comment(source.getName(), "Outgoing (body): " + mapper.writeValueAsString(httpData.body));
				reporter.comment("SystemAdapter | " + source.getName(), "Outgoing (headers): " + httpData.status + " | length=" + length);
				reporter.comment("SystemAdapter | " + source.getName(), "Outgoing (body): " + mapper.writeValueAsString(httpData.body));
				
				unhandledExchange.sendResponseHeaders(httpData.status, length);
				
@@ -385,7 +386,7 @@ public class HttpSystemAdapter implements SystemAdapter {
				String body = response.body();

				// TODO logging
				reporter.comment(target.getName(), "Incoming: " + response.statusCode() + " | " + body);
				//reporter.comment(target.getName(), "Incoming: " + response.statusCode() + " | " + body);

				try {
					
@@ -403,10 +404,16 @@ public class HttpSystemAdapter implements SystemAdapter {

					Data received = new PojoData<>(receivedHttpData);
					if (expected != null) {
						String expectedBody = null;
						if (expectedHttpData.body != null) {
							receivedHttpData.body = decodeBody(body, expectedHttpData.body.getClass());
							// For logging only
							expectedBody = StandardCharsets.UTF_8.decode(ByteBuffer.wrap(encodeBody(expectedHttpData.body))).toString();
						}
						reporter.comment("SystemAdapter | " + target.getName(), "Matching: " + response.statusCode() + " | " + body);
						reporter.comment("SystemAdapter | " + target.getName(), "\t vs " + expectedHttpData.status + " | " + expectedBody);
						if (this.validator.matches(expected, received)) {
							reporter.comment("SystemAdapter | " + target.getName(), "\t MATCHED");
							unhandledInputs.remove(input);
							return received;
						}
@@ -437,7 +444,7 @@ public class HttpSystemAdapter implements SystemAdapter {
						input.body = new String(is.readAllBytes(), cs);

						// TODO logging
						reporter.comment(target.getName(), "Incoming: " + exchange.getRequestMethod() + " | " + input.body);
						// reporter.comment(target.getName(), "Incoming: " + exchange.getRequestMethod() + " | " + input.body);
	
					} catch (IOException e) {
						handleError(e);
@@ -458,10 +465,16 @@ public class HttpSystemAdapter implements SystemAdapter {
					Data received = new PojoData<>(receivedHttpData);
					boolean isReceived = false;
					if (expected != null) {
						String expectedBody = null;
						if (expectedHttpData.body != null) {
							receivedHttpData.body = decodeBody(input.body, expectedHttpData.body.getClass());
							// For logging only
							expectedBody  = StandardCharsets.UTF_8.decode(ByteBuffer.wrap(encodeBody(expectedHttpData.body))).toString();
						}
						reporter.comment("SystemAdapter | " + target.getName(), "Matching: " + exchange.getRequestMethod() + " | " + input.body);
						reporter.comment("SystemAdapter | " + target.getName(), "\t vs " + expectedHttpData.method + " | " + expectedBody);
						if (this.validator.matches(expected, received)) {
							reporter.comment("SystemAdapter | " + target.getName(), "\t MATCHED");
							isReceived = true;
						}