On Thu, Mar 13, 2025 at 11:58 AM <[email protected]> wrote:
>
> This is an automated email from the ASF dual-hosted git repository.
>
> markt pushed a commit to branch main
> in repository https://gitbox.apache.org/repos/asf/tomcat.git
>
>
> The following commit(s) were added to refs/heads/main by this push:
> new 05490b5be8 Fix test failures seen on Gump. Use approach from
> TestAccessLogValve.
> 05490b5be8 is described below
>
> commit 05490b5be83db66de209240d63ffdd3aebdff701
> Author: Mark Thomas <[email protected]>
> AuthorDate: Thu Mar 13 10:57:56 2025 +0000
>
> Fix test failures seen on Gump. Use approach from TestAccessLogValve.
Thanks. Indeed it was still not enough. Too bad.
Rémy
> ---
> .../valves/TestExtendedAccessLogValve.java | 54
> +++++++++++++++++-----
> 1 file changed, 43 insertions(+), 11 deletions(-)
>
> diff --git a/test/org/apache/catalina/valves/TestExtendedAccessLogValve.java
> b/test/org/apache/catalina/valves/TestExtendedAccessLogValve.java
> index 4cf73fd901..fefc342963 100644
> --- a/test/org/apache/catalina/valves/TestExtendedAccessLogValve.java
> +++ b/test/org/apache/catalina/valves/TestExtendedAccessLogValve.java
> @@ -16,10 +16,9 @@
> */
> package org.apache.catalina.valves;
>
> +import java.io.CharArrayWriter;
> import java.io.File;
> import java.io.IOException;
> -import java.nio.charset.StandardCharsets;
> -import java.nio.file.Files;
> import java.util.ArrayList;
> import java.util.Collection;
> import java.util.HashMap;
> @@ -46,6 +45,10 @@ import org.apache.tomcat.util.buf.ByteChunk;
> @RunWith(Parameterized.class)
> public class TestExtendedAccessLogValve extends TomcatBaseTest {
>
> + // Requests can return in the client before log() has been called
> + private static final long SLEEP = 2;
> + private static final long SLEEP_MAX = 1000;
> +
> @Parameterized.Parameters(name = "{index}: pattern=[{0}]")
> public static Collection<Object[]> data() {
> List<Object[]> patterns = new ArrayList<>();
> @@ -68,6 +71,29 @@ public class TestExtendedAccessLogValve extends
> TomcatBaseTest {
> @Parameter(1)
> public String logPattern;
>
> +
> + /**
> + * Extend AbstractAccessLogValve to retrieve log output.
> + */
> + public final class TesterExtendedAccessLogValve extends
> ExtendedAccessLogValve {
> +
> + private CharArrayWriter writer;
> +
> + public TesterExtendedAccessLogValve(CharArrayWriter writer) {
> + this.writer = writer;
> + }
> +
> + @Override
> + public void log(CharArrayWriter message) {
> + try {
> + message.writeTo(writer);
> + } catch (IOException ex) {
> + log.error("Could not write to writer", ex);
> + }
> + }
> + }
> +
> +
> @Test
> public void testLogFormat() throws Exception {
>
> @@ -77,7 +103,8 @@ public class TestExtendedAccessLogValve extends
> TomcatBaseTest {
> // Create temporary directory for logs
> File logDir = getTemporaryDirectory();
>
> - ExtendedAccessLogValve valve = new ExtendedAccessLogValve();
> + CharArrayWriter writer = new CharArrayWriter();
> + TesterExtendedAccessLogValve valve = new
> TesterExtendedAccessLogValve(writer);
> valve.setBuffered(false);
> valve.setPattern(logPattern);
> valve.setDirectory(logDir.getAbsolutePath());
> @@ -121,18 +148,21 @@ public class TestExtendedAccessLogValve extends
> TomcatBaseTest {
>
> tomcat.stop();
>
> - // Read log file
> - File[] logFiles = logDir.listFiles((dir, fname) ->
> fname.startsWith("access_log_" + name));
> - Assert.assertNotNull(logFiles);
> - Assert.assertTrue(logFiles.length > 0);
> -
> - File logFile = logFiles[0];
> - String content = new String(Files.readAllBytes(logFile.toPath()),
> StandardCharsets.UTF_8);
> + long startWait = System.currentTimeMillis();
> + String content = writer.toString();
> + while ("".equals(content) && System.currentTimeMillis() - startWait
> < SLEEP_MAX) {
> + try {
> + Thread.sleep(SLEEP);
> + } catch (InterruptedException ex) {
> + log.error("Exception during sleep", ex);
> + }
> + content = writer.toString();
> + }
>
> processLogContent(content);
> -
> }
>
> +
> private void processLogContent(String content) {
> String[] lines = content.split("\\r?\\n");
>
> @@ -163,6 +193,7 @@ public class TestExtendedAccessLogValve extends
> TomcatBaseTest {
> }
> }
>
> +
> private void checkField(String fieldId, String value) {
> if ("time".equals(fieldId)) {
> Assert.assertTrue("Invalid time format", isTimeFormat(value));
> @@ -186,6 +217,7 @@ public class TestExtendedAccessLogValve extends
> TomcatBaseTest {
> }
> }
>
> +
> private boolean isTimeFormat(String s) {
> return Pattern.matches("^\\d{2}:\\d{2}(:\\d{2}(\\.\\d+)?)?$", s);
> }
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]