Tag integration tests and enable integration profile

This commit is contained in:
David Turanski
2021-02-22 14:00:20 -05:00
parent 386dad6562
commit f1d9f36dee
27 changed files with 109 additions and 43 deletions

View File

@@ -174,6 +174,9 @@ To perform this necessary step, run `setup-build.sh`.
`./mvnw clean install`
TIP: By default the build skips long running tests, annotated with `@Tag("integration")`,including tests requiring Testcontainers. To run the full test suite, activate the `integration` Maven profile:
`./mvnw clean install -Pintegration`. This applies to building functions or individual applications as well.
However, this may not be what you are interested in since you are probably interested in a single application or a few of them.
To build the functions and applications that you are interested in, you need to build them selectively, as shown below.

View File

@@ -12,7 +12,7 @@ The **$$header-enricher$$** $$processor$$ has the following options:
//tag::configuration-properties[]
$$header.enricher.headers$$:: $$\n separated properties representing headers in which values are SpEL expressions, e.g foo='bar' \n baz=payload.baz.$$ *($$Properties$$, default: `$$<none>$$`)*
$$header.enricher.overwrite$$:: $$set to true to overwrite any existing message headers.$$ *($$Boolean$$, default: `$$<none>$$`)*
$$header.enricher.overwrite$$:: $$set to true to overwrite any existing message headers.$$ *($$Boolean$$, default: `$$false$$`)*
//end::configuration-properties[]
//end::ref-doc[]

View File

@@ -17,12 +17,12 @@ If the incoming type is `byte[]` and the content type is set to `text/plain` or
== Options
//tag::configuration-properties[]
$$splitter.apply-sequence$$:: $$Add correlation/sequence information in headers to facilitate later aggregation.$$ *($$Boolean$$, default: `$$<none>$$`)*
$$splitter.apply-sequence$$:: $$Add correlation/sequence information in headers to facilitate later aggregation.$$ *($$Boolean$$, default: `$$true$$`)*
$$splitter.charset$$:: $$The charset to use when converting bytes in text-based files to String.$$ *($$String$$, default: `$$<none>$$`)*
$$splitter.delimiters$$:: $$When expression is null, delimiters to use when tokenizing {@link String} payloads.$$ *($$String$$, default: `$$<none>$$`)*
$$splitter.expression$$:: $$A SpEL expression for splitting payloads.$$ *($$String$$, default: `$$<none>$$`)*
$$splitter.file-markers$$:: $$Set to true or false to use a {@code FileSplitter} (to split text-based files by line) that includes (or not) beginning/end of file markers.$$ *($$Boolean$$, default: `$$<none>$$`)*
$$splitter.markers-json$$:: $$When 'fileMarkers == true', specify if they should be produced as FileSplitter.FileMarker objects or JSON.$$ *($$Boolean$$, default: `$$<none>$$`)*
$$splitter.markers-json$$:: $$When 'fileMarkers == true', specify if they should be produced as FileSplitter.FileMarker objects or JSON.$$ *($$Boolean$$, default: `$$true$$`)*
//end::configuration-properties[]
//end::ref-doc[]

View File

@@ -22,6 +22,7 @@ import org.elasticsearch.action.get.GetRequest;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.testcontainers.elasticsearch.ElasticsearchContainer;
import org.testcontainers.junit.jupiter.Container;
@@ -37,6 +38,7 @@ import org.springframework.messaging.support.GenericMessage;
import static org.assertj.core.api.Assertions.assertThat;
@Tag("integration")
@Testcontainers(disabledWithoutDocker = true)
public class ElasticsearchSinkTests {

View File

@@ -22,6 +22,7 @@ import lombok.NoArgsConstructor;
import org.apache.geode.cache.Region;
import org.apache.geode.pdx.PdxInstance;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.testcontainers.shaded.com.fasterxml.jackson.databind.ObjectMapper;
@@ -37,6 +38,7 @@ import org.springframework.messaging.support.GenericMessage;
import static org.assertj.core.api.Assertions.assertThat;
@Tag("integration")
public class GeodeSinkTests {
private static ApplicationContextRunner applicationContextRunner;

View File

@@ -29,12 +29,12 @@ $$username$$:: $$the username to use when connecting to the broker.$$ *($$String
=== mqtt.consumer
$$async$$:: $$whether or not to use async sends.$$ *($$Boolean$$, default: `$$<none>$$`)*
$$charset$$:: $$the charset used to convert a String payload to byte[].$$ *($$String$$, default: `$$<none>$$`)*
$$client-id$$:: $$identifies the client.$$ *($$String$$, default: `$$<none>$$`)*
$$qos$$:: $$the quality of service to use.$$ *($$Integer$$, default: `$$<none>$$`)*
$$retained$$:: $$whether to set the 'retained' flag.$$ *($$Boolean$$, default: `$$<none>$$`)*
$$topic$$:: $$the topic to which the sink will publish.$$ *($$String$$, default: `$$<none>$$`)*
$$async$$:: $$whether or not to use async sends.$$ *($$Boolean$$, default: `$$false$$`)*
$$charset$$:: $$the charset used to convert a String payload to byte[].$$ *($$String$$, default: `$$UTF-8$$`)*
$$client-id$$:: $$identifies the client.$$ *($$String$$, default: `$$stream.client.id.sink$$`)*
$$qos$$:: $$the quality of service to use.$$ *($$Integer$$, default: `$$1$$`)*
$$retained$$:: $$whether to set the 'retained' flag.$$ *($$Boolean$$, default: `$$false$$`)*
$$topic$$:: $$the topic to which the sink will publish.$$ *($$String$$, default: `$$stream.mqtt$$`)*
//end::configuration-properties[]
//end::ref-doc[]

View File

@@ -17,6 +17,7 @@
package org.springframework.cloud.stream.app.mqtt.sink;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.testcontainers.containers.GenericContainer;
@@ -39,7 +40,7 @@ import org.springframework.integration.support.MessageBuilder;
import org.springframework.messaging.Message;
import static org.assertj.core.api.Assertions.assertThat;
@Tag("integration")
public class MqttSinkTests {
static {

View File

@@ -16,11 +16,11 @@ Properties grouped by prefix:
=== rabbit
$$converter-bean-name$$:: $$The bean name for a custom message converter; if omitted, a SimpleMessageConverter is used. If 'jsonConverter', a Jackson2JsonMessageConverter bean will be created for you.$$ *($$String$$, default: `$$<none>$$`)*
$$exchange$$:: $$Exchange name - overridden by exchangeNameExpression, if supplied.$$ *($$String$$, default: `$$<none>$$`)*
$$exchange$$:: $$Exchange name - overridden by exchangeNameExpression, if supplied.$$ *($$String$$, default: `$$<empty string>$$`)*
$$exchange-expression$$:: $$A SpEL expression that evaluates to an exchange name.$$ *($$Expression$$, default: `$$<none>$$`)*
$$mapped-request-headers$$:: $$Headers that will be mapped.$$ *($$String[]$$, default: `$$<none>$$`)*
$$own-connection$$:: $$When true, use a separate connection based on the boot properties.$$ *($$Boolean$$, default: `$$<none>$$`)*
$$persistent-delivery-mode$$:: $$Default delivery mode when 'amqp_deliveryMode' header is not present, true for PERSISTENT.$$ *($$Boolean$$, default: `$$<none>$$`)*
$$mapped-request-headers$$:: $$Headers that will be mapped.$$ *($$String[]$$, default: `$$[*]$$`)*
$$own-connection$$:: $$When true, use a separate connection based on the boot properties.$$ *($$Boolean$$, default: `$$false$$`)*
$$persistent-delivery-mode$$:: $$Default delivery mode when 'amqp_deliveryMode' header is not present, true for PERSISTENT.$$ *($$Boolean$$, default: `$$false$$`)*
$$routing-key$$:: $$Routing key - overridden by routingKeyExpression, if supplied.$$ *($$String$$, default: `$$<none>$$`)*
$$routing-key-expression$$:: $$A SpEL expression that evaluates to a routing key.$$ *($$Expression$$, default: `$$<none>$$`)*

View File

@@ -16,6 +16,7 @@
package org.springframework.cloud.stream.app.sink.rabbit;
import org.junit.jupiter.api.Tag;
import org.testcontainers.containers.GenericContainer;
import org.springframework.amqp.core.Binding;
@@ -41,6 +42,7 @@ import org.springframework.test.annotation.DirtiesContext;
properties = {"spring.cloud.function.definition=rabbitConsumer", "spring.rabbitmq.port = ${spring.rabbitmq.test.port}"},
webEnvironment = SpringBootTest.WebEnvironment.NONE)
@DirtiesContext
@Tag("integration")
@Import(RabbitSinkIntegrationTests.FooConfiguration.class)
abstract class RabbitSinkIntegrationTests {

View File

@@ -21,7 +21,7 @@ Properties grouped by prefix:
=== s3.common
$$endpoint-url$$:: $$Optional endpoint url to connect to s3 compatible storage.$$ *($$String$$, default: `$$<none>$$`)*
$$path-style-access$$:: $$Use path style access.$$ *($$Boolean$$, default: `$$<none>$$`)*
$$path-style-access$$:: $$Use path style access.$$ *($$Boolean$$, default: `$$false$$`)*
=== s3.consumer

View File

@@ -17,6 +17,7 @@
package org.springframework.cloud.stream.app.source.cdc;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Tag;
import org.testcontainers.containers.GenericContainer;
import org.springframework.jdbc.core.JdbcTemplate;
@@ -24,6 +25,8 @@ import org.springframework.jdbc.core.JdbcTemplate;
/**
* @author David Turanski
*/
@Tag("integration")
public abstract class CdcMySqlTestSupport {
static final String DATABASE_NAME = "inventory";

View File

@@ -19,6 +19,7 @@ package org.springframework.cloud.stream.app.source.cdc;
import java.util.List;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.slf4j.LoggerFactory;
import org.testcontainers.containers.GenericContainer;
@@ -40,6 +41,7 @@ import static org.springframework.cloud.stream.app.source.cdc.CdcTestUtils.recei
* @author David Turanski
* @author Artem Bilan
*/
@Tag("integration")
public class CdcSourceDatabasesIntegrationTest {
private final SpringApplicationBuilder applicationBuilder = new SpringApplicationBuilder(

View File

@@ -28,6 +28,7 @@ import lombok.NoArgsConstructor;
import org.apache.geode.cache.Region;
import org.apache.geode.pdx.PdxInstance;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -43,6 +44,7 @@ import org.springframework.messaging.Message;
import static org.assertj.core.api.Assertions.assertThat;
@Tag("integration")
public class GeodeSourceTests {
private static ApplicationContextRunner applicationContextRunner;

View File

@@ -29,11 +29,11 @@ $$username$$:: $$the username to use when connecting to the broker.$$ *($$String
=== mqtt.supplier
$$binary$$:: $$true to leave the payload as bytes.$$ *($$Boolean$$, default: `$$<none>$$`)*
$$charset$$:: $$the charset used to convert bytes to String (when binary is false).$$ *($$String$$, default: `$$<none>$$`)*
$$client-id$$:: $$identifies the client.$$ *($$String$$, default: `$$<none>$$`)*
$$qos$$:: $$the qos; a single value for all topics or a comma-delimited list to match the topics.$$ *($$Integer[]$$, default: `$$<none>$$`)*
$$topics$$:: $$the topic(s) (comma-delimited) to which the source will subscribe.$$ *($$String[]$$, default: `$$<none>$$`)*
$$binary$$:: $$true to leave the payload as bytes.$$ *($$Boolean$$, default: `$$false$$`)*
$$charset$$:: $$the charset used to convert bytes to String (when binary is false).$$ *($$String$$, default: `$$UTF-8$$`)*
$$client-id$$:: $$identifies the client.$$ *($$String$$, default: `$$stream.client.id.source$$`)*
$$qos$$:: $$the qos; a single value for all topics or a comma-delimited list to match the topics.$$ *($$Integer[]$$, default: `$$[0]$$`)*
$$topics$$:: $$the topic(s) (comma-delimited) to which the source will subscribe.$$ *($$String[]$$, default: `$$[stream.mqtt]$$`)*
//end::configuration-properties[]
//end::ref-doc[]

View File

@@ -17,6 +17,7 @@
package org.springframework.cloud.stream.app.source.mqtt;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.testcontainers.containers.GenericContainer;
@@ -40,6 +41,7 @@ import org.springframework.messaging.support.MessageBuilder;
import static org.assertj.core.api.Assertions.assertThat;
@Tag("integration")
public class MqttSourceTests {
static {

View File

@@ -19,6 +19,7 @@ package org.springframework.cloud.stream.app.source.rabbit;
import java.util.HashMap;
import org.aopalliance.aop.Advice;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.testcontainers.containers.RabbitMQContainer;
@@ -47,6 +48,7 @@ import static org.assertj.core.api.Assertions.assertThat;
* @author Gary Russell
* @author Chris Schaefer
*/
@Tag("integration")
public class RabbitSourceListenerTests {
static {

View File

@@ -102,20 +102,20 @@ $$root$$:: $$Root node - store entries are children of this node.$$ *($$String$$
=== s3.common
$$endpoint-url$$:: $$Optional endpoint url to connect to s3 compatible storage.$$ *($$String$$, default: `$$<none>$$`)*
$$path-style-access$$:: $$Use path style access.$$ *($$Boolean$$, default: `$$<none>$$`)*
$$path-style-access$$:: $$Use path style access.$$ *($$Boolean$$, default: `$$false$$`)*
=== s3.supplier
$$auto-create-local-dir$$:: $$Create or not the local directory.$$ *($$Boolean$$, default: `$$<none>$$`)*
$$delete-remote-files$$:: $$Delete or not remote files after processing.$$ *($$Boolean$$, default: `$$<none>$$`)*
$$auto-create-local-dir$$:: $$Create or not the local directory.$$ *($$Boolean$$, default: `$$true$$`)*
$$delete-remote-files$$:: $$Delete or not remote files after processing.$$ *($$Boolean$$, default: `$$false$$`)*
$$filename-pattern$$:: $$The pattern to filter remote files.$$ *($$String$$, default: `$$<none>$$`)*
$$filename-regex$$:: $$The regexp to filter remote files.$$ *($$Pattern$$, default: `$$<none>$$`)*
$$list-only$$:: $$Set to true to return s3 object metadata without copying file to a local directory.$$ *($$Boolean$$, default: `$$<none>$$`)*
$$list-only$$:: $$Set to true to return s3 object metadata without copying file to a local directory.$$ *($$Boolean$$, default: `$$false$$`)*
$$local-dir$$:: $$The local directory to store files.$$ *($$File$$, default: `$$<none>$$`)*
$$preserve-timestamp$$:: $$To transfer or not the timestamp of the remote file to the local one.$$ *($$Boolean$$, default: `$$<none>$$`)*
$$remote-dir$$:: $$AWS S3 bucket resource.$$ *($$String$$, default: `$$<none>$$`)*
$$remote-file-separator$$:: $$Remote File separator.$$ *($$String$$, default: `$$<none>$$`)*
$$tmp-file-suffix$$:: $$Temporary file suffix.$$ *($$String$$, default: `$$<none>$$`)*
$$preserve-timestamp$$:: $$To transfer or not the timestamp of the remote file to the local one.$$ *($$Boolean$$, default: `$$true$$`)*
$$remote-dir$$:: $$AWS S3 bucket resource.$$ *($$String$$, default: `$$bucket$$`)*
$$remote-file-separator$$:: $$Remote File separator.$$ *($$String$$, default: `$$/$$`)*
$$tmp-file-suffix$$:: $$Temporary file suffix.$$ *($$String$$, default: `$$.tmp$$`)*
//end::configuration-properties[]
== Amazon AWS common options

View File

@@ -130,31 +130,31 @@ $$root$$:: $$Root node - store entries are children of this node.$$ *($$String$$
=== sftp.supplier
$$auto-create-local-dir$$:: $$Set to true to create the local directory if it does not exist.$$ *($$Boolean$$, default: `$$<none>$$`)*
$$delay-when-empty$$:: $$Duration of delay when no new files are detected.$$ *($$Duration$$, default: `$$<none>$$`)*
$$delete-remote-files$$:: $$Set to true to delete remote files after successful transfer.$$ *($$Boolean$$, default: `$$<none>$$`)*
$$auto-create-local-dir$$:: $$Set to true to create the local directory if it does not exist.$$ *($$Boolean$$, default: `$$true$$`)*
$$delay-when-empty$$:: $$Duration of delay when no new files are detected.$$ *($$Duration$$, default: `$$1s$$`)*
$$delete-remote-files$$:: $$Set to true to delete remote files after successful transfer.$$ *($$Boolean$$, default: `$$false$$`)*
$$directories$$:: $$A list of factory "name.directory" pairs.$$ *($$String[]$$, default: `$$<none>$$`)*
$$factories$$:: $$A map of factory names to factories.$$ *($$Map<String, Factory>$$, default: `$$<none>$$`)*
$$fair$$:: $$True for fair rotation of multiple servers/directories. This is false by default so if a source has more than one entry, these will be received before the other sources are visited.$$ *($$Boolean$$, default: `$$<none>$$`)*
$$fair$$:: $$True for fair rotation of multiple servers/directories. This is false by default so if a source has more than one entry, these will be received before the other sources are visited.$$ *($$Boolean$$, default: `$$false$$`)*
$$filename-pattern$$:: $$A filter pattern to match the names of files to transfer.$$ *($$String$$, default: `$$<none>$$`)*
$$filename-regex$$:: $$A filter regex pattern to match the names of files to transfer.$$ *($$Pattern$$, default: `$$<none>$$`)*
$$list-only$$:: $$Set to true to return file metadata without the entire payload.$$ *($$Boolean$$, default: `$$<none>$$`)*
$$list-only$$:: $$Set to true to return file metadata without the entire payload.$$ *($$Boolean$$, default: `$$false$$`)*
$$local-dir$$:: $$The local directory to use for file transfers.$$ *($$File$$, default: `$$<none>$$`)*
$$max-fetch$$:: $$The maximum number of remote files to fetch per poll; default unlimited. Does not apply when listing files or building task launch requests.$$ *($$Integer$$, default: `$$<none>$$`)*
$$preserve-timestamp$$:: $$Set to true to preserve the original timestamp.$$ *($$Boolean$$, default: `$$<none>$$`)*
$$remote-dir$$:: $$The remote FTP directory.$$ *($$String$$, default: `$$<none>$$`)*
$$remote-file-separator$$:: $$The remote file separator.$$ *($$String$$, default: `$$<none>$$`)*
$$stream$$:: $$Set to true to stream the file rather than copy to a local directory.$$ *($$Boolean$$, default: `$$<none>$$`)*
$$tmp-file-suffix$$:: $$The suffix to use while the transfer is in progress.$$ *($$String$$, default: `$$<none>$$`)*
$$preserve-timestamp$$:: $$Set to true to preserve the original timestamp.$$ *($$Boolean$$, default: `$$true$$`)*
$$remote-dir$$:: $$The remote FTP directory.$$ *($$String$$, default: `$$/$$`)*
$$remote-file-separator$$:: $$The remote file separator.$$ *($$String$$, default: `$$/$$`)*
$$stream$$:: $$Set to true to stream the file rather than copy to a local directory.$$ *($$Boolean$$, default: `$$false$$`)*
$$tmp-file-suffix$$:: $$The suffix to use while the transfer is in progress.$$ *($$String$$, default: `$$.tmp$$`)*
=== sftp.supplier.factory
$$allow-unknown-keys$$:: $$True to allow an unknown or changed key.$$ *($$Boolean$$, default: `$$<none>$$`)*
$$host$$:: $$The host name of the server.$$ *($$String$$, default: `$$<none>$$`)*
$$allow-unknown-keys$$:: $$True to allow an unknown or changed key.$$ *($$Boolean$$, default: `$$false$$`)*
$$host$$:: $$The host name of the server.$$ *($$String$$, default: `$$localhost$$`)*
$$known-hosts-expression$$:: $$A SpEL expression resolving to the location of the known hosts file.$$ *($$Expression$$, default: `$$<none>$$`)*
$$pass-phrase$$:: $$Passphrase for user's private key.$$ *($$String$$, default: `$$<none>$$`)*
$$pass-phrase$$:: $$Passphrase for user's private key.$$ *($$String$$, default: `$$<empty string>$$`)*
$$password$$:: $$The password to use to connect to the server.$$ *($$String$$, default: `$$<none>$$`)*
$$port$$:: $$The port of the server.$$ *($$Integer$$, default: `$$<none>$$`)*
$$port$$:: $$The port of the server.$$ *($$Integer$$, default: `$$22$$`)*
$$private-key$$:: $$Resource location of user's private key.$$ *($$Resource$$, default: `$$<none>$$`)*
$$username$$:: $$The username to use to connect to the server.$$ *($$String$$, default: `$$<none>$$`)*

View File

@@ -20,6 +20,7 @@ import java.time.Duration;
import com.zaxxer.hikari.HikariDataSource;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.testcontainers.containers.GenericContainer;
import org.testcontainers.junit.jupiter.Container;
@@ -38,6 +39,8 @@ import static org.awaitility.Awaitility.await;
* @author David Turanski
* @author Artem Bilan
*/
@Tag("integration")
@Testcontainers
public class CdcBootStarterIntegrationTest {

View File

@@ -30,6 +30,7 @@ import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.common.Strings;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentFactory;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.testcontainers.elasticsearch.ElasticsearchContainer;
import org.testcontainers.junit.jupiter.Container;
@@ -43,6 +44,7 @@ import org.springframework.messaging.support.MessageBuilder;
import static org.assertj.core.api.Assertions.assertThat;
@Tag("integration")
@Testcontainers(disabledWithoutDocker = true)
public class ElasticsearchConsumerApplicationTests {

View File

@@ -25,6 +25,7 @@ import lombok.NoArgsConstructor;
import org.apache.geode.cache.Region;
import org.apache.geode.pdx.PdxInstance;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -36,6 +37,7 @@ import org.springframework.messaging.support.GenericMessage;
import static org.assertj.core.api.Assertions.assertThat;
@Tag("integration")
public class GeodeConsumerApplicationTests {
private static ApplicationContextRunner applicationContextRunner;

View File

@@ -19,6 +19,7 @@ package org.springframework.cloud.fn.consumer.mqtt;
import java.util.function.Consumer;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.testcontainers.containers.GenericContainer;
@@ -39,6 +40,7 @@ import static org.assertj.core.api.Assertions.assertThat;
@SpringBootTest(properties = "mqtt.consumer.topic=test")
@DirtiesContext
@Tag("integration")
public class MqttConsumerTests {
static {

View File

@@ -18,6 +18,8 @@ package org.springframework.cloud.fn.consumer.redis;
import java.util.function.Consumer;
import org.junit.jupiter.api.Tag;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.test.context.SpringBootTest;
@@ -31,6 +33,7 @@ import org.springframework.test.annotation.DirtiesContext;
*/
@SpringBootTest
@DirtiesContext
@Tag("integration")
public class AbstractRedisConsumerTests {
@Autowired

View File

@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.springframework.cloud.fn</groupId>

View File

@@ -28,6 +28,7 @@ import org.apache.geode.cache.EntryEvent;
import org.apache.geode.cache.Region;
import org.apache.geode.pdx.PdxInstance;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import reactor.core.publisher.Flux;
import reactor.test.StepVerifier;
@@ -41,6 +42,7 @@ import org.springframework.cloud.fn.test.support.geode.GeodeContainerIntializer;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.fail;
@Tag("integration")
public class GeodeSupplierApplicationTests {
private static ApplicationContextRunner applicationContextRunner;

View File

@@ -19,6 +19,7 @@ package org.springframework.cloud.fn.supplier.mqtt;
import java.util.function.Supplier;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.testcontainers.containers.GenericContainer;
import reactor.core.publisher.Flux;
@@ -49,6 +50,7 @@ import static org.assertj.core.api.Assertions.assertThat;
*/
@SpringBootTest(properties = {"mqtt.supplier.topics=test,fake", "mqtt.supplier.qos=0,0"})
@DirtiesContext
@Tag("integration")
public class MqttSupplierTests {
static {

View File

@@ -313,6 +313,34 @@
</pluginRepository>
</pluginRepositories>
<profiles>
<profile>
<id>default</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<excludedGroups>integration</excludedGroups>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>integration</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>milestone</id>
<distributionManagement>