You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by ol...@apache.org on 2022/04/16 09:57:38 UTC
[archiva] 01/02: use testcontainers for cassandra test
This is an automated email from the ASF dual-hosted git repository.
olamy pushed a commit to branch master-cassandra-testcontainers
in repository https://gitbox.apache.org/repos/asf/archiva.git
commit 162a743bf7c65a444218851b442abc55fbe22fac
Author: Olivier Lamy <ol...@apache.org>
AuthorDate: Fri Apr 15 11:15:51 2022 +1000
use testcontainers for cassandra test
Signed-off-by: Olivier Lamy <ol...@apache.org>
---
.../metadata-store-cassandra/pom.xml | 155 ++-------------------
.../cassandra/DefaultCassandraArchivaManager.java | 1 -
.../cassandra/CassandraMetadataRepositoryTest.java | 24 ++++
.../cassandra/RepositoriesNamespaceTest.java | 28 +++-
.../META-INF/spring-context.xml | 0
.../src/test/resources/log4j2-test.xml | 5 +-
6 files changed, 61 insertions(+), 152 deletions(-)
diff --git a/archiva-modules/metadata/metadata-store-provider/metadata-store-cassandra/pom.xml b/archiva-modules/metadata/metadata-store-provider/metadata-store-cassandra/pom.xml
index 0bd365661..b0e9b20fa 100644
--- a/archiva-modules/metadata/metadata-store-provider/metadata-store-cassandra/pom.xml
+++ b/archiva-modules/metadata/metadata-store-provider/metadata-store-cassandra/pom.xml
@@ -165,7 +165,7 @@
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
- <artifactId>log4j-1.2-api</artifactId>
+ <artifactId>log4j-core</artifactId>
<version>${log4j.version}</version>
<scope>test</scope>
</dependency>
@@ -176,147 +176,26 @@
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.testcontainers</groupId>
+ <artifactId>cassandra</artifactId>
+ <version>1.17.1</version>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<build>
- <testResources>
- <testResource>
- <directory>src/test/filtered-resources</directory>
- <filtering>true</filtering>
- </testResource>
- </testResources>
-
- <plugins>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>build-helper-maven-plugin</artifactId>
- <executions>
- <execution>
- <id>reserve-ports</id>
- <phase>process-test-resources</phase>
- <goals>
- <goal>reserve-network-port</goal>
- </goals>
- <configuration>
- <portNames>
- <portName>cassandra.rpcPort</portName>
- <portName>cassandra.storagePort</portName>
- <portName>cassandra.stopPort</portName>
- <portName>cassandra.jmxPort</portName>
- <portName>cassandra.nativeTransportPort</portName>
- </portNames>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>cassandra-maven-plugin</artifactId>
- <version>3.7-SNAPSHOT</version>
- <executions>
- <execution>
- <id>start-cassandra</id>
- <phase>pre-integration-test</phase>
- <goals>
- <goal>start</goal>
- </goals>
- <configuration>
- <nativeTransportPort>${cassandra.nativeTransportPort}</nativeTransportPort>
- <rpcPort>${cassandra.rpcPort}</rpcPort>
- <storagePort>${cassandra.storagePort}</storagePort>
- <stopPort>${cassandra.stopPort}</stopPort>
- <jmxPort>${cassandra.jmxPort}</jmxPort>
- <addMainClasspath>false</addMainClasspath>
- <addTestClasspath>false</addTestClasspath>
- <startWaitSeconds>500</startWaitSeconds>
- <startNativeTransport>true</startNativeTransport>
- <logLevel>INFO</logLevel>
- <loadAfterFirstStart>false</loadAfterFirstStart>
- <systemPropertyVariables>
- <cassandra.jmx.local.port>${cassandra.jmxPort}</cassandra.jmx.local.port>
- </systemPropertyVariables>
- <yaml><![CDATA[rpc_address: 127.0.0.1
-broadcast_rpc_address: 127.0.0.1
-listen_address: 127.0.0.1
-auto_snapshot: false
-snapshot_before_compaction: false
-num_tokens: 1
-]]></yaml>
- </configuration>
- </execution>
- <execution>
- <id>stop-cassandra</id>
- <phase>post-integration-test</phase>
- <goals>
- <goal>stop</goal>
- </goals>
- </execution>
- </executions>
- <dependencies>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-simple</artifactId>
- <version>${slf4j.version}</version>
- </dependency>
- <dependency>
- <groupId>net.java.dev.jna</groupId>
- <artifactId>jna</artifactId>
- <version>4.2.2</version>
- </dependency>
- <dependency>
- <groupId>org.apache.cassandra</groupId>
- <artifactId>cassandra-all</artifactId>
- <version>${cassandraVersion}</version>
- </dependency>
- </dependencies>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-failsafe-plugin</artifactId>
- <version>3.0.0-M5</version>
- <executions>
- <execution>
- <goals>
- <goal>integration-test</goal>
- <goal>verify</goal>
- </goals>
- </execution>
- </executions>
- <configuration>
- <includes>
- <include>**/*Test.java</include>
- </includes>
- <systemPropertyVariables>
- <cassandra.port>${cassandra.nativeTransportPort}</cassandra.port>
- <cassandra.host>127.0.0.1</cassandra.host>
- <archiva.repositorySessionFactory.id>cassandra</archiva.repositorySessionFactory.id>
- <appserver.base>${project.build.directory}/appserver-base</appserver.base>
- <java.net.preferIPv4Stack>true</java.net.preferIPv4Stack>
- </systemPropertyVariables>
- <trimStackTrace>false</trimStackTrace>
- <skip>false</skip>
- <classesDirectory>${project.build.outputDirectory}</classesDirectory>
- </configuration>
- <dependencies>
- <dependency>
- <groupId>org.junit.jupiter</groupId>
- <artifactId>junit-jupiter-engine</artifactId>
- <version>${junit.jupiter.version}</version>
- </dependency>
- </dependencies>
- </plugin>
-
- </plugins>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
- <executions>
- </executions>
<configuration>
- <skip>true</skip>
+ <systemPropertyVariables>
+ <archiva.repositorySessionFactory.id>cassandra</archiva.repositorySessionFactory.id>
+ <appserver.base>${project.build.directory}/appserver-base</appserver.base>
+ </systemPropertyVariables>
</configuration>
</plugin>
@@ -326,7 +205,6 @@ num_tokens: 1
<configuration>
<excludes>
<exclude>src/cassandra/**</exclude>
- <exclude>src/test/resources/cassandra-test.yaml</exclude>
</excludes>
</configuration>
</plugin>
@@ -334,15 +212,4 @@ num_tokens: 1
</pluginManagement>
</build>
- <profiles>
- <profile>
- <id>jdk9+</id>
- <activation>
- <jdk>[1.9,)</jdk>
- </activation>
- <properties >
- <cassandra.addJdk11Options>true</cassandra.addJdk11Options>
- </properties>
- </profile>
- </profiles>
</project>
diff --git a/archiva-modules/metadata/metadata-store-provider/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/DefaultCassandraArchivaManager.java b/archiva-modules/metadata/metadata-store-provider/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/DefaultCassandraArchivaManager.java
index df53f600b..21df2ca15 100644
--- a/archiva-modules/metadata/metadata-store-provider/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/DefaultCassandraArchivaManager.java
+++ b/archiva-modules/metadata/metadata-store-provider/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/DefaultCassandraArchivaManager.java
@@ -182,7 +182,6 @@ public class DefaultCassandraArchivaManager
hostNames.add( cassandraHost + ":" + cassandraPort );
configLoader =
DriverConfigLoader.programmaticBuilder( )
-
.withStringList( DefaultDriverOption.CONTACT_POINTS, hostNames )
.withInt( DefaultDriverOption.CONNECTION_POOL_LOCAL_SIZE, maxActive )
.withInt( DefaultDriverOption.CONNECTION_POOL_REMOTE_SIZE, maxActive )
diff --git a/archiva-modules/metadata/metadata-store-provider/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepositoryTest.java b/archiva-modules/metadata/metadata-store-provider/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepositoryTest.java
index c1e07a07a..64abf10a1 100644
--- a/archiva-modules/metadata/metadata-store-provider/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepositoryTest.java
+++ b/archiva-modules/metadata/metadata-store-provider/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepositoryTest.java
@@ -27,13 +27,19 @@ import org.apache.archiva.metadata.repository.MetadataService;
import org.apache.archiva.metadata.repository.RepositorySession;
import org.apache.archiva.metadata.repository.RepositorySessionFactory;
import org.apache.archiva.metadata.repository.cassandra.model.ProjectVersionMetadataModel;
+import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInfo;
import org.junit.jupiter.api.TestInstance;
import org.junit.jupiter.api.extension.ExtendWith;
+import org.slf4j.LoggerFactory;
import org.springframework.test.context.junit.jupiter.SpringExtension;
+import org.testcontainers.containers.CassandraContainer;
+import org.testcontainers.containers.output.Slf4jLogConsumer;
+import org.testcontainers.utility.DockerImageName;
import javax.inject.Inject;
import javax.inject.Named;
@@ -70,6 +76,9 @@ public class CassandraMetadataRepositoryTest
RepositorySession session;
+ private static final CassandraContainer CASSANDRA =
+ new CassandraContainer(DockerImageName.parse("cassandra").withTag("3.11.2"));
+
long cTime;
int testNum = 0;
final AtomicBoolean clearedTables = new AtomicBoolean( false );
@@ -87,6 +96,21 @@ public class CassandraMetadataRepositoryTest
return cmr;
}
+ @BeforeAll
+ public static void initCassandra()
+ throws Exception {
+ CASSANDRA.withLogConsumer(new Slf4jLogConsumer(LoggerFactory.getLogger("org.apache.archiva.metadata.repository.cassandra.logs")));
+ CASSANDRA.start();
+ System.setProperty("cassandra.host", CASSANDRA.getHost());
+ System.setProperty("cassandra.port", CASSANDRA.getMappedPort(9042).toString());
+ }
+
+ @AfterAll
+ public static void stopCassandra()
+ throws Exception {
+ CASSANDRA.close();
+ }
+
@BeforeEach
public void setUp( TestInfo testInfo )
throws Exception
diff --git a/archiva-modules/metadata/metadata-store-provider/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/cassandra/RepositoriesNamespaceTest.java b/archiva-modules/metadata/metadata-store-provider/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/cassandra/RepositoriesNamespaceTest.java
index 7bcc68758..a5931e8cd 100644
--- a/archiva-modules/metadata/metadata-store-provider/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/cassandra/RepositoriesNamespaceTest.java
+++ b/archiva-modules/metadata/metadata-store-provider/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/cassandra/RepositoriesNamespaceTest.java
@@ -22,7 +22,9 @@ package org.apache.archiva.metadata.repository.cassandra;
import org.apache.archiva.metadata.model.ProjectMetadata;
import org.apache.archiva.metadata.repository.cassandra.model.Namespace;
import org.apache.archiva.metadata.repository.cassandra.model.Repository;
+import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
@@ -30,6 +32,9 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit.jupiter.SpringExtension;
+import org.testcontainers.containers.CassandraContainer;
+import org.testcontainers.containers.output.Slf4jLogConsumer;
+import org.testcontainers.utility.DockerImageName;
import javax.inject.Inject;
import javax.inject.Named;
@@ -44,15 +49,32 @@ import static org.assertj.core.api.Assertions.assertThat;
public class RepositoriesNamespaceTest
{
- private Logger logger = LoggerFactory.getLogger( getClass() );
+ private static final Logger LOGGER = LoggerFactory.getLogger( RepositoriesNamespaceTest.class );
+
+ private static final CassandraContainer CASSANDRA =
+ new CassandraContainer(DockerImageName.parse("cassandra").withTag("3.11.2"));
@Inject
@Named( value = "archivaEntityManagerFactory#cassandra" )
CassandraArchivaManager cassandraArchivaManager;
-
CassandraMetadataRepository cmr;
+ @BeforeAll
+ public static void initCassandra()
+ throws Exception {
+ CASSANDRA.withLogConsumer(new Slf4jLogConsumer(LoggerFactory.getLogger("org.apache.archiva.metadata.repository.cassandra.logs")));
+ CASSANDRA.start();
+ System.setProperty("cassandra.host", CASSANDRA.getHost());
+ System.setProperty("cassandra.port", CASSANDRA.getMappedPort(9042).toString());
+ }
+
+ @AfterAll
+ public static void stopCassandra()
+ throws Exception {
+ CASSANDRA.close();
+ }
+
@BeforeEach
public void setup()
throws Exception
@@ -131,7 +153,7 @@ public class RepositoriesNamespaceTest
}
catch ( Exception e )
{
- logger.error( e.getMessage(), e );
+ LOGGER.error( e.getMessage(), e );
throw e;
}
finally
diff --git a/archiva-modules/metadata/metadata-store-provider/metadata-store-cassandra/src/test/filtered-resources/META-INF/spring-context.xml b/archiva-modules/metadata/metadata-store-provider/metadata-store-cassandra/src/test/resources/META-INF/spring-context.xml
similarity index 100%
rename from archiva-modules/metadata/metadata-store-provider/metadata-store-cassandra/src/test/filtered-resources/META-INF/spring-context.xml
rename to archiva-modules/metadata/metadata-store-provider/metadata-store-cassandra/src/test/resources/META-INF/spring-context.xml
diff --git a/archiva-modules/metadata/metadata-store-provider/metadata-store-cassandra/src/test/resources/log4j2-test.xml b/archiva-modules/metadata/metadata-store-provider/metadata-store-cassandra/src/test/resources/log4j2-test.xml
index 6e871d967..de342df96 100644
--- a/archiva-modules/metadata/metadata-store-provider/metadata-store-cassandra/src/test/resources/log4j2-test.xml
+++ b/archiva-modules/metadata/metadata-store-provider/metadata-store-cassandra/src/test/resources/log4j2-test.xml
@@ -21,11 +21,8 @@
<configuration status="debug">
-
-
<appenders>
<Console name="console" target="SYSTEM_OUT">
- <!--PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/-->
<PatternLayout pattern="%highlight{%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n}" />
</Console>
@@ -34,7 +31,7 @@
<logger name="org.apache.archiva.metadata.repository.cassandra" level="debug"/>
-
+ <logger name="org.apache.archiva.metadata.repository.cassandra.logs" level="debug"/>
<root level="debug" includeLocation="true">
<appender-ref ref="console"/>
</root>