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 1/3] 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


From bba8694e300a5e3d6f62553b3ed28e432efcba1d Mon Sep 17 00:00:00 2001
From: Jan Zickermann <jan.zickermann@dataport.de>
Date: Mon, 31 Mar 2025 13:45:39 +0200
Subject: [PATCH 2/3] KOP-3126 Fix ClientITCase

---
 src/test/java/de/ozgcloud/xta/client/XtaClientITCase.java | 8 ++++----
 .../client/extension/XtaServerSetupExtensionTestUtil.java | 8 +++++---
 2 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/src/test/java/de/ozgcloud/xta/client/XtaClientITCase.java b/src/test/java/de/ozgcloud/xta/client/XtaClientITCase.java
index 0a244ea..9f535b8 100644
--- a/src/test/java/de/ozgcloud/xta/client/XtaClientITCase.java
+++ b/src/test/java/de/ozgcloud/xta/client/XtaClientITCase.java
@@ -44,10 +44,10 @@ class XtaClientITCase {
 	@BeforeEach
 	@SneakyThrows
 	void setup() {
-		processMessageDummy = (message) -> {
+		processMessageDummy = message -> {
 		};
 		supportCheckedMetadataItems = new ArrayList<>();
-		isSupportedDummy = (metaData) -> true;
+		isSupportedDummy = metaData -> true;
 		processedMessages = new ArrayList<>();
 		silentTestClient = XTA_TEST_SERVER_SETUP_EXTENSION.getSilentTestClient();
 
@@ -99,7 +99,7 @@ class XtaClientITCase {
 		void shouldThrowExceptionOnConnectionFailure() {
 			setupClientWithoutTrustStore();
 
-			assertThatThrownBy(() -> testClient.fetchMessages((message) -> fail("Should not process any message!")))
+			assertThatThrownBy(() -> testClient.fetchMessages(message -> fail("Should not process any message!")))
 					.isInstanceOf(XtaClientException.class);
 		}
 
@@ -303,7 +303,7 @@ class XtaClientITCase {
 
 		@SneakyThrows
 		private List<XtaTransportReport> fetchMessages() {
-			return testClient.fetchMessages((message) -> {
+			return testClient.fetchMessages(message -> {
 				processedMessages.add(message);
 				processMessageDummy.accept(message);
 			});
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 4718256..4af1313 100644
--- a/src/test/java/de/ozgcloud/xta/client/extension/XtaServerSetupExtensionTestUtil.java
+++ b/src/test/java/de/ozgcloud/xta/client/extension/XtaServerSetupExtensionTestUtil.java
@@ -153,9 +153,11 @@ public class XtaServerSetupExtensionTestUtil {
 				.build();
 	}
 
-	public static XtaMessageMetaData withoutMessageSize(XtaMessageMetaData metaData) {
+	public static XtaMessageMetaData withoutMessageSizeAndDelivery(XtaMessageMetaData metaData) {
 		return metaData.toBuilder()
 				.messageSize(null)
+				.deliveryAttributesDelivery(null)
+				.deliveryAttributesOrigin(null)
 				.build();
 	}
 
@@ -325,10 +327,10 @@ public class XtaServerSetupExtensionTestUtil {
 			// ignoring size since it may be null for transport report (due to message closed?)
 			assertThat(transportReports)
 					.extracting(XtaTransportReport::metaData)
-					.extracting(XtaServerSetupExtensionTestUtil::withoutMessageSize)
+					.extracting(XtaServerSetupExtensionTestUtil::withoutMessageSizeAndDelivery)
 					.containsExactlyElementsOf(processedMessages.stream()
 							.map(XtaMessage::metaData)
-							.map(XtaServerSetupExtensionTestUtil::withoutMessageSize)
+							.map(XtaServerSetupExtensionTestUtil::withoutMessageSizeAndDelivery)
 							.toList());
 		}
 
-- 
GitLab


From 83f21774333d15e1ae93065da4ab24a42183ba97 Mon Sep 17 00:00:00 2001
From: Jan Zickermann <jan.zickermann@dataport.de>
Date: Mon, 31 Mar 2025 13:51:54 +0200
Subject: [PATCH 3/3] KOP-3126 pipeline: Add docker credentials

---
 .gitlab-ci.yml | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index edbc971..ad6c905 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -12,6 +12,29 @@ variables:
 services:
   - docker:dind
 
+before_script:
+  - mkdir -p $HOME/.docker
+  - |
+    cat << EOF > $HOME/.docker/config.json
+    {
+      "auths": {
+        "docker.ozg-sh.de": {
+          "username": "$NEXUS_USER",
+          "password": "$NEXUS_PASSWORD"
+        }
+      },
+      "proxies": {
+        "default": {
+          "httpProxy": "$HTTP_PROXY",
+          "httpsProxy": "$HTTPS_PROXY",
+          "noProxy": "$NO_PROXY"
+        }
+      }
+    }
+    EOF
+  - cat ~/.docker/config.json
+
+
 cache:
   paths:
     - .m2/repository/
-- 
GitLab