Hi,

I think the Jenkins build failures are related to this commit :-(

Gary

---------- Forwarded message ---------
From: <rgo...@apache.org>
Date: Sun, Dec 9, 2018 at 10:23 AM
Subject: [logging-log4j2] branch release-2.x updated: Enhance direct write
test. Add new OnStartup test
To: comm...@logging.apache.org <comm...@logging.apache.org>


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

rgoers 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 3a6f602  Enhance direct write test. Add new OnStartup test
3a6f602 is described below

commit 3a6f6022130b1eee6100c633b988cd8cb091580c
Author: Ralph Goers <rgo...@apache.org>
AuthorDate: Sun Dec 9 10:22:19 2018 -0700

    Enhance direct write test. Add new OnStartup test
---
 .../core/appender/rolling/RollingFileManager.java  |   1 +
 .../RollingAppenderDirectWrite1906Test.java        |  11 +-
 .../rolling/RollingAppenderOnStartup2Test.java     | 120
+++++++++++++++++++++
 .../src/test/resources/log4j-rollOnStartup.json    |  41 +++++++
 4 files changed, 169 insertions(+), 4 deletions(-)

diff --git
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java
index 8a9e980..4060a90 100644
---
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java
+++
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java
@@ -669,6 +669,7 @@ public class RollingFileManager extends FileManager {
                 final BasicFileAttributes attrs =
Files.readAttributes(path, BasicFileAttributes.class);
                 final FileTime fileTime = attrs.creationTime();
                 if (fileTime.compareTo(EPOCH) > 0) {
+                    LOGGER.debug("Returning file creation time for {}",
file.getAbsolutePath());
                     return fileTime.toMillis();
                 }
                 LOGGER.info("Unable to obtain file creation time for " +
file.getAbsolutePath());
diff --git
a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingAppenderDirectWrite1906Test.java
b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingAppenderDirectWrite1906Test.java
index c58c0ad..9417c40 100644
---
a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingAppenderDirectWrite1906Test.java
+++
b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingAppenderDirectWrite1906Test.java
@@ -92,11 +92,14 @@ public class RollingAppenderDirectWrite1906Test {

     }

-    private String logFileNameError(final String expected, final String
actual) {
+    private String logFileNameError(String expected, String actual) {
         final List<StatusData> statusData =
StatusLogger.getLogger().getStatusData();
-        for (final StatusData statusItem : statusData) {
-            System.err.println(statusItem.getFormattedStatus());
+        final StringBuilder sb = new StringBuilder();
+        for (StatusData statusItem : statusData) {
+            sb.append(statusItem.getFormattedStatus());
+            sb.append("\n");
         }
-        return "Incorrect file name. Expected: " + expected + " Actual: "
+ actual;
+        sb.append("Incorrect file name. Expected:
").append(expected).append(" Actual: ").append(actual);
+        return sb.toString();
     }
 }
diff --git
a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingAppenderOnStartup2Test.java
b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingAppenderOnStartup2Test.java
new file mode 100644
index 0000000..681a81b
--- /dev/null
+++
b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingAppenderOnStartup2Test.java
@@ -0,0 +1,120 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
+package org.apache.logging.log4j.core.appender.rolling;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.nio.file.DirectoryStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.nio.file.StandardCopyOption;
+import java.nio.file.attribute.BasicFileAttributeView;
+import java.nio.file.attribute.FileTime;
+import java.util.Arrays;
+import java.util.Collection;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.core.config.Configuration;
+import org.apache.logging.log4j.core.config.DefaultConfiguration;
+import org.apache.logging.log4j.core.util.datetime.FastDateFormat;
+import org.apache.logging.log4j.junit.LoggerContextRule;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+/**
+ *
+ */
+public class RollingAppenderOnStartup2Test {
+
+    private static final String DIR = "target/rollOnStartup";
+    private static final String TARGET_FILE = DIR + "/orchestrator.log";
+    private static final FastDateFormat formatter =
FastDateFormat.getInstance("MM-dd-yy-HH-mm-ss");
+    private static final String ROLLED_FILE_PREFIX = DIR +
"/orchestrator-";
+    private static final String ROLLED_FILE_SUFFIX = "-1.log.gz";
+    private static final String TEST_DATA = "Hello world!";
+
+    @BeforeClass
+    public static void beforeClass() throws Exception {
+        if (Files.exists(Paths.get("target/rollOnStartup"))) {
+            try (DirectoryStream<Path> directoryStream =
Files.newDirectoryStream(Paths.get(DIR))) {
+                for (final Path path : directoryStream) {
+                    Files.delete(path);
+                }
+                Files.delete(Paths.get(DIR));
+            }
+        }
+        //System.setProperty("log4j2.debug", "true");
+        //System.setProperty("log4j2.StatusLogger.level", "trace");
+        final Configuration configuration = new DefaultConfiguration();
+        final Path target = Paths.get(TARGET_FILE);
+        Assert.assertFalse(Files.exists(target));
+        target.toFile().getParentFile().mkdirs();
+        final long timeStamp = System.currentTimeMillis() - (1000 * 60 *
60 * 24);
+        final String expectedDate = formatter.format(timeStamp);
+        final String rolledFileName = ROLLED_FILE_PREFIX + expectedDate +
ROLLED_FILE_SUFFIX;
+        final Path rolled = Paths.get(rolledFileName);
+        final long copied;
+        try (final InputStream is = new
ByteArrayInputStream(TEST_DATA.getBytes("UTF-8"))) {
+            copied = Files.copy(is, target,
StandardCopyOption.REPLACE_EXISTING);
+        }
+        final long size = Files.size(target);
+        assertTrue(size > 0);
+        assertEquals(copied, size);
+        final FileTime fileTime = FileTime.fromMillis(timeStamp);
+        final BasicFileAttributeView attrs =
Files.getFileAttributeView(target, BasicFileAttributeView.class);
+        attrs.setTimes(fileTime, fileTime, fileTime);
+        System.setProperty("log4j.configurationFile",
"log4j-rollOnStartup.json");
+    }
+
+    @AfterClass
+    public static void afterClass() throws Exception {
+        long size = 0;
+        /* try (DirectoryStream<Path> directoryStream =
Files.newDirectoryStream(Paths.get(DIR))) {
+            for (final Path path : directoryStream) {
+                if (size == 0) {
+                    size = Files.size(path);
+                } else {
+                    final long fileSize = Files.size(path);
+                    assertTrue("Expected size: " + size + " Size of " +
path.getFileName() + ": " + fileSize,
+                        size == fileSize);
+                }
+                Files.delete(path);
+            }
+            Files.delete(Paths.get("target/rollOnStartup"));
+        } */
+    }
+
+    @Test
+    public void testAppender() throws Exception {
+        Logger logger =
LogManager.getLogger(RollingAppenderOnStartup2Test.class);
+        for (int i = 0; i < 10; ++i) {
+            logger.debug("This is test message number " + i);
+        }
+
+    }
+}
diff --git a/log4j-core/src/test/resources/log4j-rollOnStartup.json
b/log4j-core/src/test/resources/log4j-rollOnStartup.json
new file mode 100644
index 0000000..85e9203
--- /dev/null
+++ b/log4j-core/src/test/resources/log4j-rollOnStartup.json
@@ -0,0 +1,41 @@
+{
+  "configuration": { "status": "debug",
+    "appenders": {
+      "Console": {
+        "name": "Console",
+        "PatternLayout": {
+          "pattern": "%d{yyyy-MM-dd'T'HH:mm:ss.SSS} [%c{2}] [%t]%n[%p] :
%m%n"
+        }
+      },
+      "RollingFile": {
+        "name": "RollingFile",
+        "fileName": "target/rollOnStartup/orchestrator.log",
+        "filePattern":
"target/RollOnStartup/orchestrator-%d{MM-dd-yy-HH-mm-ss}-%i.log.gz",
+        "append": false,
+        "PatternLayout": {
+          "pattern": "%d{yyyy-MM-dd'T'HH:mm:ss.SSS} [%c{2}] [%t]%n[%p] :
%m%n"
+        },
+        "Policies": {
+          "OnStartupTriggeringPolicy": {
+            "minSize" : 0
+          },
+          "SizeBasedTriggeringPolicy": {
+            "size": "50 MB"
+          }
+        },
+        "DefaultRolloverStrategy": {
+          "max": "10"
+        }
+      }
+    },
+    "loggers": {
+      "root": {
+        "level": "info",
+        "AppenderRef": [
+          {"ref": "RollingFile", "level": "INFO"},
+          {"ref": "Console", "level": "ERROR"}
+        ]
+      }
+    }
+  }
+}
\ No newline at end of file

Reply via email to