You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by vy...@apache.org on 2021/11/02 12:37:16 UTC

[logging-log4j2] branch release-2.x updated: LOG4J2-2829 Try to fix SocketAppenderReconnectTest failures on Windows.

This is an automated email from the ASF dual-hosted git repository.

vy pushed a commit to branch release-2.x
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git


The following commit(s) were added to refs/heads/release-2.x by this push:
     new 7b13505  LOG4J2-2829 Try to fix SocketAppenderReconnectTest failures on Windows.
7b13505 is described below

commit 7b13505a82e7afeb2d89518ad36597e233790572
Author: Volkan Yazici <vo...@yazi.ci>
AuthorDate: Tue Nov 2 13:37:31 2021 +0100

    LOG4J2-2829 Try to fix SocketAppenderReconnectTest failures on Windows.
---
 .../core/net/SocketAppenderReconnectTest.java      | 32 +++++++++++++++++-----
 1 file changed, 25 insertions(+), 7 deletions(-)

diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/net/SocketAppenderReconnectTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/net/SocketAppenderReconnectTest.java
index e007822..827ab06 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/net/SocketAppenderReconnectTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/net/SocketAppenderReconnectTest.java
@@ -28,6 +28,7 @@ import org.apache.logging.log4j.core.config.builder.api.ConfigurationBuilderFact
 import org.apache.logging.log4j.core.config.builder.impl.BuiltConfiguration;
 import org.apache.logging.log4j.core.net.TcpSocketManager.HostResolver;
 import org.apache.logging.log4j.status.StatusLogger;
+import org.apache.logging.log4j.util.PropertiesUtil;
 import org.junit.jupiter.api.Test;
 
 import java.io.BufferedReader;
@@ -188,13 +189,7 @@ class SocketAppenderReconnectTest {
             final String message = expectedMessages.get(messageIndex);
             // Due to socket initialization, the first write() might need some extra effort.
             if (messageIndex == 0) {
-                await()
-                        .pollInterval(100, TimeUnit.MILLISECONDS)
-                        .atMost(2, TimeUnit.SECONDS)
-                        .until(() -> {
-                            logger.info(message);
-                            return true;
-                        });
+                awaitUntilSucceeds(() -> logger.info(message));
             } else {
                 logger.info(message);
             }
@@ -204,6 +199,29 @@ class SocketAppenderReconnectTest {
         assertEquals(expectedMessages, actualMessages);
     }
 
+    private static void awaitUntilSucceeds(final Runnable runnable) {
+        final long pollIntervalMillis;
+        final long timeoutSeconds;
+        final boolean osWindows = PropertiesUtil.getProperties().isOsWindows();
+        if (osWindows) {
+            // Windows-specific non-sense values.
+            // These figures are collected by trial-and-error on a friend's laptop which has Windows installed.
+            pollIntervalMillis = 1_000L;
+            timeoutSeconds = 15;
+        } else {
+            // Universally sensible values.
+            pollIntervalMillis = 100;
+            timeoutSeconds = 3;
+        }
+        await()
+                .pollInterval(pollIntervalMillis, TimeUnit.MILLISECONDS)
+                .atMost(timeoutSeconds, TimeUnit.SECONDS)
+                .until(() -> {
+                    runnable.run();
+                    return true;
+                });
+    }
+
     private static void verifyLoggingFailure() {
         final Logger logger = LogManager.getLogger();
         int retryCount = 3;