From b4fa878245788dd469b1bbaab3d7bdb5f86ef49c Mon Sep 17 00:00:00 2001
From: Jan Zickermann <jan.zickermann@dataport.de>
Date: Mon, 31 Mar 2025 13:39:32 +0200
Subject: [PATCH] KOP-3126 Fix RemoteITCase

---
 pom.xml                                       |  6 ------
 .../xta/client/XtaClientRemoteITCase.java     | 10 ++++++++--
 .../XtaServerSetupExtensionTestUtil.java      | 19 +++++++++++++++----
 3 files changed, 23 insertions(+), 12 deletions(-)

diff --git a/pom.xml b/pom.xml
index f6c7cd1..a2bd7bb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -174,12 +174,6 @@
 			<plugin>
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-failsafe-plugin</artifactId>
-				<configuration>
-					<excludes>
-						<!--docker environment in der pipeline laeuft noch nicht-->
-						<exclude>**/XtaClientITCase.java</exclude>
-					</excludes>
-				</configuration>
 				<executions>
 					<execution>
 						<goals>
diff --git a/src/test/java/de/ozgcloud/xta/client/XtaClientRemoteITCase.java b/src/test/java/de/ozgcloud/xta/client/XtaClientRemoteITCase.java
index 8878a3f..319613b 100644
--- a/src/test/java/de/ozgcloud/xta/client/XtaClientRemoteITCase.java
+++ b/src/test/java/de/ozgcloud/xta/client/XtaClientRemoteITCase.java
@@ -7,6 +7,7 @@ import static org.assertj.core.api.Assertions.*;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Optional;
 import java.util.function.Consumer;
 import java.util.function.Predicate;
 import java.util.stream.Stream;
@@ -65,10 +66,10 @@ class XtaClientRemoteITCase {
 	@BeforeEach
 	@SneakyThrows
 	void setup() {
-		processMessageDummy = (message) -> {
+		processMessageDummy = message -> {
 		};
 		supportCheckedMetadataItems = new ArrayList<>();
-		isSupportedDummy = (metaData) -> true;
+		isSupportedDummy = metaData -> true;
 		processedMessages = new ArrayList<>();
 
 		testClient = XTA_REMOTE_SERVER_SETUP_EXTENSION.getTestClient();
@@ -76,6 +77,11 @@ class XtaClientRemoteITCase {
 		devClient = XTA_REMOTE_SERVER_SETUP_EXTENSION.getDevClient();
 		silentDevClient = XTA_REMOTE_SERVER_SETUP_EXTENSION.getSilentDevClient();
 
+		if (Optional.ofNullable(System.getenv("CLEAR_ALL_MESSAGES")).map(d -> d.equals("yes")).orElse(false)) {
+			closeAllMessages(XTA_REMOTE_SERVER_SETUP_EXTENSION.getSilentDevClientConfig(), DEV_READER_CLIENT_IDENTIFIER);
+			closeAllMessages(XTA_REMOTE_SERVER_SETUP_EXTENSION.getSilentTestClientConfig(), TEST_READER_CLIENT_IDENTIFIER);
+		}
+
 		failIfAnyMessagePending(XTA_REMOTE_SERVER_SETUP_EXTENSION.getSilentDevClientConfig(), DEV_READER_CLIENT_IDENTIFIER);
 		failIfAnyMessagePending(XTA_REMOTE_SERVER_SETUP_EXTENSION.getSilentTestClientConfig(), TEST_READER_CLIENT_IDENTIFIER);
 
diff --git a/src/test/java/de/ozgcloud/xta/client/extension/XtaServerSetupExtensionTestUtil.java b/src/test/java/de/ozgcloud/xta/client/extension/XtaServerSetupExtensionTestUtil.java
index 6d2731a..4718256 100644
--- a/src/test/java/de/ozgcloud/xta/client/extension/XtaServerSetupExtensionTestUtil.java
+++ b/src/test/java/de/ozgcloud/xta/client/extension/XtaServerSetupExtensionTestUtil.java
@@ -16,6 +16,7 @@ import de.ozgcloud.xta.client.core.WrappedXtaService;
 import de.ozgcloud.xta.client.core.WrappedXtaServiceFactory;
 import de.ozgcloud.xta.client.exception.XtaClientRuntimeException;
 import de.ozgcloud.xta.client.gen.v3.de.xoev.transport.xta.x211.CodeFehlernummer;
+import de.ozgcloud.xta.client.gen.v3.de.xoev.transport.xta.x211.InvalidMessageIDException;
 import de.ozgcloud.xta.client.gen.v3.de.xoev.transport.xta.x211.MessageSchemaViolationException;
 import de.ozgcloud.xta.client.gen.v3.de.xoev.transport.xta.x211.ParameterIsNotValidException;
 import de.ozgcloud.xta.client.gen.v3.de.xoev.transport.xta.x211.PermissionDeniedException;
@@ -122,11 +123,19 @@ public class XtaServerSetupExtensionTestUtil {
 		closeMessagesById(config, clientId, messageIds);
 	}
 
-	@SneakyThrows
 	public static void closeMessagesById(XtaClientConfig config, XtaIdentifier clientId, List<String> messageIds) {
 		var wrappedService = createWrappedService(config);
 		for (var messageId : messageIds) {
+			closeMessageById(wrappedService, messageId, clientId);
+		}
+	}
+
+	@SneakyThrows
+	private static void closeMessageById(WrappedXtaService wrappedService, String messageId, XtaIdentifier clientId) {
+		try {
 			wrappedService.close(messageId, clientId);
+		} catch (InvalidMessageIDException e) {
+			log.warn("Failed closing message, possibly it has already been closed! '{}' (reader: {})", messageId, clientId);
 		}
 	}
 
@@ -135,10 +144,12 @@ public class XtaServerSetupExtensionTestUtil {
 		return WrappedXtaServiceFactory.from(config).create();
 	}
 
-	public static XtaMessageMetaData withoutMessageIdAndSize(XtaMessageMetaData metaData) {
+	public static XtaMessageMetaData withoutMessageIdAndSizeAndDelivery(XtaMessageMetaData metaData) {
 		return metaData.toBuilder()
 				.messageId(null)
 				.messageSize(null)
+				.deliveryAttributesDelivery(null)
+				.deliveryAttributesOrigin(null)
 				.build();
 	}
 
@@ -268,9 +279,9 @@ public class XtaServerSetupExtensionTestUtil {
 				// Assert equal metadata (ignoring message id and size since they should be null before sending)
 				assertThat(processedMessages)
 						.extracting(XtaMessage::metaData)
-						.extracting(XtaServerSetupExtensionTestUtil::withoutMessageIdAndSize)
+						.extracting(XtaServerSetupExtensionTestUtil::withoutMessageIdAndSizeAndDelivery)
 						.containsExactlyInAnyOrderElementsOf(Arrays.stream(messageMetaDataItems)
-								.map(XtaServerSetupExtensionTestUtil::withoutMessageIdAndSize)
+								.map(XtaServerSetupExtensionTestUtil::withoutMessageIdAndSizeAndDelivery)
 								.toList());
 			} catch (AssertionError | RuntimeException e) {
 				log.error("Messages do not exactly contain excepted metadata!");
-- 
GitLab