From: Duarte Meneses Date: Thu, 15 Oct 2015 12:20:45 +0000 (+0200) Subject: Fix test with asynchronous logging X-Git-Tag: 5.2-RC3~25 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=201a6d91b04852dc07900a95d31c3b60c8341734;p=sonarqube.git Fix test with asynchronous logging --- diff --git a/sonar-batch/src/test/java/org/sonar/batch/mediumtest/log/LogListenerTest.java b/sonar-batch/src/test/java/org/sonar/batch/mediumtest/log/LogListenerTest.java index 186c15c8931..97567ccdfab 100644 --- a/sonar-batch/src/test/java/org/sonar/batch/mediumtest/log/LogListenerTest.java +++ b/sonar-batch/src/test/java/org/sonar/batch/mediumtest/log/LogListenerTest.java @@ -20,14 +20,17 @@ package org.sonar.batch.mediumtest.log; import com.google.common.collect.ImmutableMap; + import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import java.io.PrintStream; +import java.util.Collections; import java.util.LinkedList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; + import org.apache.commons.io.FileUtils; import org.junit.After; import org.junit.AfterClass; @@ -40,7 +43,6 @@ import org.junit.rules.TemporaryFolder; import org.sonar.batch.bootstrapper.LogOutput; import org.sonar.batch.mediumtest.BatchMediumTester; import org.sonar.xoo.XooPlugin; - import static org.assertj.core.api.Assertions.assertThat; public class LogListenerTest { @@ -87,7 +89,8 @@ public class LogListenerTest { public void prepare() throws IOException { System.setOut(new PrintStream(stdOutTarget)); System.setErr(new PrintStream(stdErrTarget)); - logOutput = new LinkedList<>(); + // logger from the batch might write to it asynchronously + logOutput = Collections.synchronizedList(new LinkedList()); tester.start(); baseDir = temp.getRoot(); @@ -139,8 +142,11 @@ public class LogListenerTest { assertNoStdOutput(); assertThat(logOutput).isNotEmpty(); - for (LogEvent e : logOutput) { - savedStdOut.println("[captured]" + e.level + " " + e.msg); + + synchronized (logOutput) { + for (LogEvent e : logOutput) { + savedStdOut.println("[captured]" + e.level + " " + e.msg); + } } } @@ -160,9 +166,11 @@ public class LogListenerTest { assertNoStdOutput(); - for (LogEvent e : logOutput) { - assertMsgClean(e.msg); - savedStdOut.println("[captured]" + e.level + " " + e.msg); + synchronized (logOutput) { + for (LogEvent e : logOutput) { + assertMsgClean(e.msg); + savedStdOut.println("[captured]" + e.level + " " + e.msg); + } } }