Skip to content

Commit

Permalink
Testkit: introduce log capturing (akka#2040)
Browse files Browse the repository at this point in the history
Touches all modules to introduce log capturing which makes the logs show when tests fail.
  • Loading branch information
ennru authored Jan 21, 2020
1 parent 86be456 commit f6eb9dc
Show file tree
Hide file tree
Showing 229 changed files with 1,873 additions and 440 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,19 @@
import static org.hamcrest.CoreMatchers.instanceOf;
import static org.junit.Assert.*;

import akka.japi.Pair;
import akka.stream.alpakka.amqp.*;
import akka.stream.alpakka.testkit.javadsl.LogCapturingJunit4;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import org.junit.Rule;
import org.junit.Test;

import java.net.ConnectException;

public class AmqpConnectionProvidersTest {

@Rule public final LogCapturingJunit4 logCapturing = new LogCapturingJunit4();

@Test
public void LocalAmqpConnectionCreatesNewConnection() throws Exception {
AmqpConnectionProvider connectionProvider = AmqpLocalConnectionProvider.getInstance();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import akka.stream.Materializer;
import akka.stream.UniqueKillSwitch;
import akka.stream.alpakka.amqp.*;
import akka.stream.alpakka.testkit.javadsl.LogCapturingJunit4;
import akka.stream.javadsl.Flow;
import akka.stream.javadsl.Keep;
import akka.stream.javadsl.Sink;
Expand All @@ -23,10 +24,7 @@
import akka.testkit.javadsl.TestKit;
import akka.util.ByteString;
import com.rabbitmq.client.AuthenticationFailureException;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.*;
import scala.collection.JavaConverters;
import scala.concurrent.duration.Duration;

Expand All @@ -45,6 +43,8 @@
/** Needs a local running AMQP server on the default port with no password. */
public class AmqpConnectorsTest {

@Rule public final LogCapturingJunit4 logCapturing = new LogCapturingJunit4();

private static ActorSystem system;
private static Materializer materializer;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,9 @@
import java.util.concurrent.CompletionStage;
import java.util.stream.Collectors;

import akka.stream.alpakka.testkit.javadsl.LogCapturingJunit4;
import org.junit.BeforeClass;
import org.junit.Rule;
import org.junit.Test;

import akka.Done;
Expand All @@ -35,6 +37,8 @@
/** Needs a local running AMQP server on the default port with no password. */
public class AmqpFlowTest {

@Rule public final LogCapturingJunit4 logCapturing = new LogCapturingJunit4();

private static ActorSystem system;
private static Materializer materializer;

Expand Down
8 changes: 4 additions & 4 deletions amqp/src/test/java/docs/javadsl/AmqpDocsTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import akka.stream.alpakka.amqp.javadsl.AmqpSink;
import akka.stream.alpakka.amqp.javadsl.AmqpSource;
import akka.stream.alpakka.amqp.javadsl.CommittableReadResult;
import akka.stream.alpakka.testkit.javadsl.LogCapturingJunit4;
import akka.stream.javadsl.Flow;
import akka.stream.javadsl.Keep;
import akka.stream.javadsl.Sink;
Expand All @@ -28,10 +29,7 @@
import akka.testkit.javadsl.TestKit;
import akka.util.ByteString;

import org.junit.After;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.*;

import java.time.Duration;
import java.util.*;
Expand All @@ -45,6 +43,8 @@
/** Needs a local running AMQP server on the default port with no password. */
public class AmqpDocsTest {

@Rule public final LogCapturingJunit4 logCapturing = new LogCapturingJunit4();

private static ActorSystem system;
private static Materializer materializer;

Expand Down
17 changes: 16 additions & 1 deletion amqp/src/test/resources/logback-test.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,22 @@
</encoder>
</appender>

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} %-5level [%-20.20thread] %-36.36logger{36} %msg%n%rEx</pattern>
</encoder>
</appender>

<appender name="CapturingAppender" class="akka.stream.alpakka.testkit.CapturingAppender"/>

<logger name="akka.stream.alpakka.testkit.CapturingAppenderDelegate">
<appender-ref ref="STDOUT"/>
</logger>

<logger name="akka" level="DEBUG"/>

<root level="debug">
<appender-ref ref="CapturingAppender"/>
<appender-ref ref="FILE" />
</root>
</configuration>
</configuration>
3 changes: 2 additions & 1 deletion amqp/src/test/scala/akka/stream/alpakka/amqp/AmqpSpec.scala
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,13 @@ package akka.stream.alpakka.amqp
import akka.actor.ActorSystem
import akka.dispatch.ExecutionContexts
import akka.stream.ActorMaterializer
import akka.stream.alpakka.testkit.scaladsl.LogCapturing
import org.scalatest.concurrent.ScalaFutures
import org.scalatest.BeforeAndAfterAll
import org.scalatest.matchers.should.Matchers
import org.scalatest.wordspec.AnyWordSpec

abstract class AmqpSpec extends AnyWordSpec with Matchers with BeforeAndAfterAll with ScalaFutures {
abstract class AmqpSpec extends AnyWordSpec with Matchers with BeforeAndAfterAll with ScalaFutures with LogCapturing {

implicit val system = ActorSystem(this.getClass.getSimpleName)
implicit val materializer = ActorMaterializer()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import akka.stream.alpakka.amqp.{
AmqpWriteSettings,
QueueDeclaration
}
import akka.stream.alpakka.testkit.scaladsl.LogCapturing
import akka.stream.scaladsl.Source
import akka.util.ByteString
import com.rabbitmq.client.{AddressResolver, Connection, ConnectionFactory, ShutdownListener}
Expand All @@ -37,7 +38,8 @@ class AmqpGraphStageLogicConnectionShutdownSpec
extends AnyWordSpec
with Matchers
with ScalaFutures
with BeforeAndAfterEach {
with BeforeAndAfterEach
with LogCapturing {

override implicit val patienceConfig = PatienceConfig(10.seconds)
private implicit val executionContext = ExecutionContexts.sameThreadExecutionContext
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import akka.stream.ActorMaterializer;
import akka.stream.Materializer;
import akka.stream.alpakka.avroparquet.javadsl.AvroParquetSink;
import akka.stream.alpakka.testkit.javadsl.LogCapturingJunit4;
import akka.stream.javadsl.Sink;
import akka.stream.javadsl.Source;
import akka.stream.testkit.javadsl.StreamTestKit;
Expand All @@ -21,10 +22,10 @@
import org.apache.parquet.hadoop.ParquetReader;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CompletionStage;
Expand All @@ -33,7 +34,6 @@
import java.util.concurrent.TimeoutException;

import static junit.framework.TestCase.assertEquals;
import static junit.framework.TestCase.fail;

// #init-writer
import org.apache.parquet.hadoop.ParquetWriter;
Expand All @@ -47,6 +47,8 @@

public class AvroParquetSinkTest {

@Rule public final LogCapturingJunit4 logCapturing = new LogCapturingJunit4();

private final Schema schema =
new Schema.Parser()
.parse(
Expand Down
17 changes: 16 additions & 1 deletion avroparquet/src/test/resources/logback-test.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,22 @@
</encoder>
</appender>

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} %-5level [%-20.20thread] %-36.36logger{36} %msg%n%rEx</pattern>
</encoder>
</appender>

<appender name="CapturingAppender" class="akka.stream.alpakka.testkit.CapturingAppender"/>

<logger name="akka.stream.alpakka.testkit.CapturingAppenderDelegate">
<appender-ref ref="STDOUT"/>
</logger>

<logger name="akka" level="DEBUG"/>

<root level="debug">
<appender-ref ref="CapturingAppender"/>
<appender-ref ref="FILE" />
</root>
</configuration>
</configuration>
9 changes: 4 additions & 5 deletions awslambda/src/test/java/docs/javadsl/AwsLambdaFlowTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,32 +8,31 @@
import akka.actor.ActorSystem;
import akka.stream.ActorMaterializer;
import akka.stream.alpakka.awslambda.javadsl.AwsLambdaFlow;
import akka.stream.alpakka.testkit.javadsl.LogCapturingJunit4;
import akka.stream.javadsl.Flow;
import akka.stream.javadsl.Sink;
import akka.stream.javadsl.Source;
import akka.stream.testkit.javadsl.StreamTestKit;
import akka.testkit.javadsl.TestKit;
import org.junit.*;
import software.amazon.awssdk.services.lambda.LambdaAsyncClient;
import software.amazon.awssdk.services.lambda.model.InvokeRequest;
import software.amazon.awssdk.services.lambda.model.InvokeResponse;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;

import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CompletionStage;
import java.util.concurrent.TimeUnit;

import static org.junit.Assert.assertEquals;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

public class AwsLambdaFlowTest {

@Rule public final LogCapturingJunit4 logCapturing = new LogCapturingJunit4();

private static ActorSystem system;
private static ActorMaterializer materializer;
private static LambdaAsyncClient awsLambdaClient;
Expand Down
17 changes: 16 additions & 1 deletion awslambda/src/test/resources/logback-test.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,22 @@
</encoder>
</appender>

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} %-5level [%-20.20thread] %-36.36logger{36} %msg%n%rEx</pattern>
</encoder>
</appender>

<appender name="CapturingAppender" class="akka.stream.alpakka.testkit.CapturingAppender"/>

<logger name="akka.stream.alpakka.testkit.CapturingAppenderDelegate">
<appender-ref ref="STDOUT"/>
</logger>

<logger name="akka" level="DEBUG"/>

<root level="debug">
<appender-ref ref="CapturingAppender"/>
<appender-ref ref="FILE" />
</root>
</configuration>
</configuration>
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import java.util.concurrent.CompletableFuture
import akka.actor.ActorSystem
import akka.stream.ActorMaterializer
import akka.stream.alpakka.awslambda.scaladsl.AwsLambdaFlow
import akka.stream.alpakka.testkit.scaladsl.LogCapturing
import akka.stream.scaladsl.{Keep, Sink}
import akka.stream.testkit.scaladsl.StreamTestKit.assertAllStagesStopped
import akka.stream.testkit.scaladsl.TestSource
Expand Down Expand Up @@ -36,7 +37,8 @@ class AwsLambdaFlowSpec
with BeforeAndAfterEach
with ScalaFutures
with Matchers
with MockitoSugar {
with MockitoSugar
with LogCapturing {

implicit val mat = ActorMaterializer()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import akka.stream.ActorMaterializer;
import akka.stream.alpakka.azure.storagequeue.*;
import akka.stream.alpakka.azure.storagequeue.javadsl.*;
import akka.stream.alpakka.testkit.javadsl.LogCapturingJunit4;
import akka.stream.javadsl.Sink;
import akka.stream.javadsl.Source;
import akka.stream.testkit.javadsl.StreamTestKit;
Expand All @@ -28,6 +29,8 @@
import org.junit.*;

public class JavaDslTest {
@Rule public final LogCapturingJunit4 logCapturing = new LogCapturingJunit4();

private static ActorSystem system;
private static ActorMaterializer materializer;
private static final String storageConnectionString = System.getenv("AZURE_CONNECTION_STRING");
Expand Down
17 changes: 16 additions & 1 deletion azure-storage-queue/src/test/resources/logback-test.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,22 @@
</encoder>
</appender>

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} %-5level [%-20.20thread] %-36.36logger{36} %msg%n%rEx</pattern>
</encoder>
</appender>

<appender name="CapturingAppender" class="akka.stream.alpakka.testkit.CapturingAppender"/>

<logger name="akka.stream.alpakka.testkit.CapturingAppenderDelegate">
<appender-ref ref="STDOUT"/>
</logger>

<logger name="akka" level="DEBUG"/>

<root level="debug">
<appender-ref ref="CapturingAppender"/>
<appender-ref ref="FILE" />
</root>
</configuration>
</configuration>
4 changes: 4 additions & 0 deletions build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -263,6 +263,7 @@ lazy val orientdb = alpakkaProject("orientdb",
fatalWarnings := false)

lazy val reference = internalProject("reference", Dependencies.Reference)
.dependsOn(testkit % Test)

lazy val s3 = alpakkaProject("s3", "aws.s3", Dependencies.S3)

Expand Down Expand Up @@ -363,6 +364,8 @@ lazy val docs = project
apidocRootPackage := "akka"
)

lazy val testkit = internalProject("testkit", Dependencies.testkit)

lazy val whitesourceSupported = project
.in(file("tmp"))
.settings(whitesourceGroup := Whitesource.Group.Supported)
Expand Down Expand Up @@ -400,6 +403,7 @@ def alpakkaProject(projectId: String, moduleName: String, additionalSettings: sb
mimaBinaryIssueFilters += ProblemFilters.exclude[Problem]("*.impl.*")
)
.settings(additionalSettings: _*)
.dependsOn(testkit % Test)
}

def internalProject(projectId: String, additionalSettings: sbt.Def.SettingsDefinition*): Project =
Expand Down
8 changes: 4 additions & 4 deletions cassandra/src/test/java/docs/javadsl/CassandraSourceTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,13 @@
import akka.stream.alpakka.cassandra.javadsl.CassandraFlow;
import akka.stream.alpakka.cassandra.javadsl.CassandraSink;
import akka.stream.alpakka.cassandra.javadsl.CassandraSource;
import akka.stream.alpakka.testkit.javadsl.LogCapturingJunit4;
import akka.stream.javadsl.Flow;
import akka.stream.javadsl.Source;
import akka.stream.testkit.javadsl.StreamTestKit;
import akka.testkit.javadsl.TestKit;
import com.datastax.driver.core.*;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.*;

import static org.junit.Assert.*;

Expand All @@ -39,6 +37,8 @@
/** All the tests must be run with a local Cassandra running on default port 9042. */
public class CassandraSourceTest {

@Rule public final LogCapturingJunit4 logCapturing = new LogCapturingJunit4();

// #element-to-insert
private class ToInsert {
Integer id;
Expand Down
Loading

0 comments on commit f6eb9dc

Please sign in to comment.