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>