diff --git a/README.adoc b/README.adoc index 6f118fd5..5ac92ce2 100644 --- a/README.adoc +++ b/README.adoc @@ -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. diff --git a/applications/processor/header-enricher-processor/README.adoc b/applications/processor/header-enricher-processor/README.adoc index ee3972d6..b2e5f8f3 100644 --- a/applications/processor/header-enricher-processor/README.adoc +++ b/applications/processor/header-enricher-processor/README.adoc @@ -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: `$$$$`)* -$$header.enricher.overwrite$$:: $$set to true to overwrite any existing message headers.$$ *($$Boolean$$, default: `$$$$`)* +$$header.enricher.overwrite$$:: $$set to true to overwrite any existing message headers.$$ *($$Boolean$$, default: `$$false$$`)* //end::configuration-properties[] //end::ref-doc[] diff --git a/applications/processor/splitter-processor/README.adoc b/applications/processor/splitter-processor/README.adoc index 2dc0d4bd..08834790 100644 --- a/applications/processor/splitter-processor/README.adoc +++ b/applications/processor/splitter-processor/README.adoc @@ -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: `$$$$`)* +$$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: `$$$$`)* $$splitter.delimiters$$:: $$When expression is null, delimiters to use when tokenizing {@link String} payloads.$$ *($$String$$, default: `$$$$`)* $$splitter.expression$$:: $$A SpEL expression for splitting payloads.$$ *($$String$$, default: `$$$$`)* $$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: `$$$$`)* -$$splitter.markers-json$$:: $$When 'fileMarkers == true', specify if they should be produced as FileSplitter.FileMarker objects or JSON.$$ *($$Boolean$$, default: `$$$$`)* +$$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[] diff --git a/applications/sink/elasticsearch-sink/src/test/java/org/springframework/cloud/stream/app/sink/elasticsearch/ElasticsearchSinkTests.java b/applications/sink/elasticsearch-sink/src/test/java/org/springframework/cloud/stream/app/sink/elasticsearch/ElasticsearchSinkTests.java index 98cd185e..6cb58fb3 100644 --- a/applications/sink/elasticsearch-sink/src/test/java/org/springframework/cloud/stream/app/sink/elasticsearch/ElasticsearchSinkTests.java +++ b/applications/sink/elasticsearch-sink/src/test/java/org/springframework/cloud/stream/app/sink/elasticsearch/ElasticsearchSinkTests.java @@ -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 { diff --git a/applications/sink/geode-sink/src/test/java/org/springframework/cloud/stream/app/sink/geode/GeodeSinkTests.java b/applications/sink/geode-sink/src/test/java/org/springframework/cloud/stream/app/sink/geode/GeodeSinkTests.java index 789a6d07..10ff2277 100644 --- a/applications/sink/geode-sink/src/test/java/org/springframework/cloud/stream/app/sink/geode/GeodeSinkTests.java +++ b/applications/sink/geode-sink/src/test/java/org/springframework/cloud/stream/app/sink/geode/GeodeSinkTests.java @@ -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; diff --git a/applications/sink/mqtt-sink/README.adoc b/applications/sink/mqtt-sink/README.adoc index d44eb6b3..2648234a 100644 --- a/applications/sink/mqtt-sink/README.adoc +++ b/applications/sink/mqtt-sink/README.adoc @@ -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: `$$$$`)* -$$charset$$:: $$the charset used to convert a String payload to byte[].$$ *($$String$$, default: `$$$$`)* -$$client-id$$:: $$identifies the client.$$ *($$String$$, default: `$$$$`)* -$$qos$$:: $$the quality of service to use.$$ *($$Integer$$, default: `$$$$`)* -$$retained$$:: $$whether to set the 'retained' flag.$$ *($$Boolean$$, default: `$$$$`)* -$$topic$$:: $$the topic to which the sink will publish.$$ *($$String$$, default: `$$$$`)* +$$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[] diff --git a/applications/sink/mqtt-sink/src/test/java/org/springframework/cloud/stream/app/mqtt/sink/MqttSinkTests.java b/applications/sink/mqtt-sink/src/test/java/org/springframework/cloud/stream/app/mqtt/sink/MqttSinkTests.java index 38c843f9..0b2e835f 100644 --- a/applications/sink/mqtt-sink/src/test/java/org/springframework/cloud/stream/app/mqtt/sink/MqttSinkTests.java +++ b/applications/sink/mqtt-sink/src/test/java/org/springframework/cloud/stream/app/mqtt/sink/MqttSinkTests.java @@ -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 { diff --git a/applications/sink/rabbit-sink/README.adoc b/applications/sink/rabbit-sink/README.adoc index 6faddbe6..b90d5547 100644 --- a/applications/sink/rabbit-sink/README.adoc +++ b/applications/sink/rabbit-sink/README.adoc @@ -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: `$$$$`)* -$$exchange$$:: $$Exchange name - overridden by exchangeNameExpression, if supplied.$$ *($$String$$, default: `$$$$`)* +$$exchange$$:: $$Exchange name - overridden by exchangeNameExpression, if supplied.$$ *($$String$$, default: `$$$$`)* $$exchange-expression$$:: $$A SpEL expression that evaluates to an exchange name.$$ *($$Expression$$, default: `$$$$`)* -$$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: `$$$$`)* -$$persistent-delivery-mode$$:: $$Default delivery mode when 'amqp_deliveryMode' header is not present, true for PERSISTENT.$$ *($$Boolean$$, default: `$$$$`)* +$$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: `$$$$`)* $$routing-key-expression$$:: $$A SpEL expression that evaluates to a routing key.$$ *($$Expression$$, default: `$$$$`)* diff --git a/applications/sink/rabbit-sink/src/test/java/org/springframework/cloud/stream/app/sink/rabbit/RabbitSinkIntegrationTests.java b/applications/sink/rabbit-sink/src/test/java/org/springframework/cloud/stream/app/sink/rabbit/RabbitSinkIntegrationTests.java index 10938b37..b4d8ea67 100644 --- a/applications/sink/rabbit-sink/src/test/java/org/springframework/cloud/stream/app/sink/rabbit/RabbitSinkIntegrationTests.java +++ b/applications/sink/rabbit-sink/src/test/java/org/springframework/cloud/stream/app/sink/rabbit/RabbitSinkIntegrationTests.java @@ -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 { diff --git a/applications/sink/s3-sink/README.adoc b/applications/sink/s3-sink/README.adoc index 0469c487..be85aaec 100644 --- a/applications/sink/s3-sink/README.adoc +++ b/applications/sink/s3-sink/README.adoc @@ -21,7 +21,7 @@ Properties grouped by prefix: === s3.common $$endpoint-url$$:: $$Optional endpoint url to connect to s3 compatible storage.$$ *($$String$$, default: `$$$$`)* -$$path-style-access$$:: $$Use path style access.$$ *($$Boolean$$, default: `$$$$`)* +$$path-style-access$$:: $$Use path style access.$$ *($$Boolean$$, default: `$$false$$`)* === s3.consumer diff --git a/applications/source/cdc-debezium-source/src/test/java/org/springframework/cloud/stream/app/source/cdc/CdcMySqlTestSupport.java b/applications/source/cdc-debezium-source/src/test/java/org/springframework/cloud/stream/app/source/cdc/CdcMySqlTestSupport.java index 03c9a72c..af04ea16 100644 --- a/applications/source/cdc-debezium-source/src/test/java/org/springframework/cloud/stream/app/source/cdc/CdcMySqlTestSupport.java +++ b/applications/source/cdc-debezium-source/src/test/java/org/springframework/cloud/stream/app/source/cdc/CdcMySqlTestSupport.java @@ -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"; diff --git a/applications/source/cdc-debezium-source/src/test/java/org/springframework/cloud/stream/app/source/cdc/CdcSourceDatabasesIntegrationTest.java b/applications/source/cdc-debezium-source/src/test/java/org/springframework/cloud/stream/app/source/cdc/CdcSourceDatabasesIntegrationTest.java index 164c065f..a2ef6a3c 100644 --- a/applications/source/cdc-debezium-source/src/test/java/org/springframework/cloud/stream/app/source/cdc/CdcSourceDatabasesIntegrationTest.java +++ b/applications/source/cdc-debezium-source/src/test/java/org/springframework/cloud/stream/app/source/cdc/CdcSourceDatabasesIntegrationTest.java @@ -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( diff --git a/applications/source/geode-source/src/test/java/org/springframework/cloud/stream/app/source/geode/GeodeSourceTests.java b/applications/source/geode-source/src/test/java/org/springframework/cloud/stream/app/source/geode/GeodeSourceTests.java index 27876316..0db023d8 100644 --- a/applications/source/geode-source/src/test/java/org/springframework/cloud/stream/app/source/geode/GeodeSourceTests.java +++ b/applications/source/geode-source/src/test/java/org/springframework/cloud/stream/app/source/geode/GeodeSourceTests.java @@ -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; diff --git a/applications/source/mqtt-source/README.adoc b/applications/source/mqtt-source/README.adoc index dfc583b9..e677727a 100644 --- a/applications/source/mqtt-source/README.adoc +++ b/applications/source/mqtt-source/README.adoc @@ -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: `$$$$`)* -$$charset$$:: $$the charset used to convert bytes to String (when binary is false).$$ *($$String$$, default: `$$$$`)* -$$client-id$$:: $$identifies the client.$$ *($$String$$, default: `$$$$`)* -$$qos$$:: $$the qos; a single value for all topics or a comma-delimited list to match the topics.$$ *($$Integer[]$$, default: `$$$$`)* -$$topics$$:: $$the topic(s) (comma-delimited) to which the source will subscribe.$$ *($$String[]$$, default: `$$$$`)* +$$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[] diff --git a/applications/source/mqtt-source/src/test/java/org/springframework/cloud/stream/app/source/mqtt/MqttSourceTests.java b/applications/source/mqtt-source/src/test/java/org/springframework/cloud/stream/app/source/mqtt/MqttSourceTests.java index d946363d..fbfe7b38 100644 --- a/applications/source/mqtt-source/src/test/java/org/springframework/cloud/stream/app/source/mqtt/MqttSourceTests.java +++ b/applications/source/mqtt-source/src/test/java/org/springframework/cloud/stream/app/source/mqtt/MqttSourceTests.java @@ -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 { diff --git a/applications/source/rabbit-source/src/test/java/org/springframework/cloud/stream/app/source/rabbit/RabbitSourceListenerTests.java b/applications/source/rabbit-source/src/test/java/org/springframework/cloud/stream/app/source/rabbit/RabbitSourceListenerTests.java index 07ffd272..02256f91 100644 --- a/applications/source/rabbit-source/src/test/java/org/springframework/cloud/stream/app/source/rabbit/RabbitSourceListenerTests.java +++ b/applications/source/rabbit-source/src/test/java/org/springframework/cloud/stream/app/source/rabbit/RabbitSourceListenerTests.java @@ -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 { diff --git a/applications/source/s3-source/README.adoc b/applications/source/s3-source/README.adoc index d27690ff..76880905 100644 --- a/applications/source/s3-source/README.adoc +++ b/applications/source/s3-source/README.adoc @@ -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: `$$$$`)* -$$path-style-access$$:: $$Use path style access.$$ *($$Boolean$$, default: `$$$$`)* +$$path-style-access$$:: $$Use path style access.$$ *($$Boolean$$, default: `$$false$$`)* === s3.supplier -$$auto-create-local-dir$$:: $$Create or not the local directory.$$ *($$Boolean$$, default: `$$$$`)* -$$delete-remote-files$$:: $$Delete or not remote files after processing.$$ *($$Boolean$$, default: `$$$$`)* +$$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: `$$$$`)* $$filename-regex$$:: $$The regexp to filter remote files.$$ *($$Pattern$$, default: `$$$$`)* -$$list-only$$:: $$Set to true to return s3 object metadata without copying file to a local directory.$$ *($$Boolean$$, default: `$$$$`)* +$$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: `$$$$`)* -$$preserve-timestamp$$:: $$To transfer or not the timestamp of the remote file to the local one.$$ *($$Boolean$$, default: `$$$$`)* -$$remote-dir$$:: $$AWS S3 bucket resource.$$ *($$String$$, default: `$$$$`)* -$$remote-file-separator$$:: $$Remote File separator.$$ *($$String$$, default: `$$$$`)* -$$tmp-file-suffix$$:: $$Temporary file suffix.$$ *($$String$$, default: `$$$$`)* +$$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 diff --git a/applications/source/sftp-source/README.adoc b/applications/source/sftp-source/README.adoc index 7864a60f..9ec82749 100644 --- a/applications/source/sftp-source/README.adoc +++ b/applications/source/sftp-source/README.adoc @@ -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: `$$$$`)* -$$delay-when-empty$$:: $$Duration of delay when no new files are detected.$$ *($$Duration$$, default: `$$$$`)* -$$delete-remote-files$$:: $$Set to true to delete remote files after successful transfer.$$ *($$Boolean$$, default: `$$$$`)* +$$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: `$$$$`)* $$factories$$:: $$A map of factory names to factories.$$ *($$Map$$, default: `$$$$`)* -$$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: `$$$$`)* +$$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: `$$$$`)* $$filename-regex$$:: $$A filter regex pattern to match the names of files to transfer.$$ *($$Pattern$$, default: `$$$$`)* -$$list-only$$:: $$Set to true to return file metadata without the entire payload.$$ *($$Boolean$$, default: `$$$$`)* +$$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: `$$$$`)* $$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: `$$$$`)* -$$preserve-timestamp$$:: $$Set to true to preserve the original timestamp.$$ *($$Boolean$$, default: `$$$$`)* -$$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: `$$$$`)* -$$tmp-file-suffix$$:: $$The suffix to use while the transfer is in progress.$$ *($$String$$, default: `$$$$`)* +$$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: `$$$$`)* -$$host$$:: $$The host name of the server.$$ *($$String$$, default: `$$$$`)* +$$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: `$$$$`)* -$$pass-phrase$$:: $$Passphrase for user's private key.$$ *($$String$$, default: `$$$$`)* +$$pass-phrase$$:: $$Passphrase for user's private key.$$ *($$String$$, default: `$$$$`)* $$password$$:: $$The password to use to connect to the server.$$ *($$String$$, default: `$$$$`)* -$$port$$:: $$The port of the server.$$ *($$Integer$$, default: `$$$$`)* +$$port$$:: $$The port of the server.$$ *($$Integer$$, default: `$$22$$`)* $$private-key$$:: $$Resource location of user's private key.$$ *($$Resource$$, default: `$$$$`)* $$username$$:: $$The username to use to connect to the server.$$ *($$String$$, default: `$$$$`)* diff --git a/functions/common/cdc-debezium-boot-starter/src/test/java/org/springframework/cloud/fn/common/cdc/CdcBootStarterIntegrationTest.java b/functions/common/cdc-debezium-boot-starter/src/test/java/org/springframework/cloud/fn/common/cdc/CdcBootStarterIntegrationTest.java index f3db2d13..a19946bd 100644 --- a/functions/common/cdc-debezium-boot-starter/src/test/java/org/springframework/cloud/fn/common/cdc/CdcBootStarterIntegrationTest.java +++ b/functions/common/cdc-debezium-boot-starter/src/test/java/org/springframework/cloud/fn/common/cdc/CdcBootStarterIntegrationTest.java @@ -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 { diff --git a/functions/consumer/elasticsearch-consumer/src/test/java/org/springframework/cloud/fn/consumer/elasticsearch/ElasticsearchConsumerApplicationTests.java b/functions/consumer/elasticsearch-consumer/src/test/java/org/springframework/cloud/fn/consumer/elasticsearch/ElasticsearchConsumerApplicationTests.java index f415345c..cf35120b 100644 --- a/functions/consumer/elasticsearch-consumer/src/test/java/org/springframework/cloud/fn/consumer/elasticsearch/ElasticsearchConsumerApplicationTests.java +++ b/functions/consumer/elasticsearch-consumer/src/test/java/org/springframework/cloud/fn/consumer/elasticsearch/ElasticsearchConsumerApplicationTests.java @@ -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 { diff --git a/functions/consumer/geode-consumer/src/test/java/org/springframework/cloud/fn/consumer/geode/GeodeConsumerApplicationTests.java b/functions/consumer/geode-consumer/src/test/java/org/springframework/cloud/fn/consumer/geode/GeodeConsumerApplicationTests.java index 890657bd..59f0b8a1 100644 --- a/functions/consumer/geode-consumer/src/test/java/org/springframework/cloud/fn/consumer/geode/GeodeConsumerApplicationTests.java +++ b/functions/consumer/geode-consumer/src/test/java/org/springframework/cloud/fn/consumer/geode/GeodeConsumerApplicationTests.java @@ -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; diff --git a/functions/consumer/mqtt-consumer/src/test/java/org/springframework/cloud/fn/consumer/mqtt/MqttConsumerTests.java b/functions/consumer/mqtt-consumer/src/test/java/org/springframework/cloud/fn/consumer/mqtt/MqttConsumerTests.java index 694460ce..414f30d7 100644 --- a/functions/consumer/mqtt-consumer/src/test/java/org/springframework/cloud/fn/consumer/mqtt/MqttConsumerTests.java +++ b/functions/consumer/mqtt-consumer/src/test/java/org/springframework/cloud/fn/consumer/mqtt/MqttConsumerTests.java @@ -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 { diff --git a/functions/consumer/redis-consumer/src/test/java/org/springframework/cloud/fn/consumer/redis/AbstractRedisConsumerTests.java b/functions/consumer/redis-consumer/src/test/java/org/springframework/cloud/fn/consumer/redis/AbstractRedisConsumerTests.java index a49439e2..d742afc9 100644 --- a/functions/consumer/redis-consumer/src/test/java/org/springframework/cloud/fn/consumer/redis/AbstractRedisConsumerTests.java +++ b/functions/consumer/redis-consumer/src/test/java/org/springframework/cloud/fn/consumer/redis/AbstractRedisConsumerTests.java @@ -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 diff --git a/functions/pom.xml b/functions/pom.xml index f74d6457..9bc3ea09 100644 --- a/functions/pom.xml +++ b/functions/pom.xml @@ -1,5 +1,6 @@ - + 4.0.0 org.springframework.cloud.fn diff --git a/functions/supplier/geode-supplier/src/test/java/org/springframework/cloud/fn/supplier/geode/GeodeSupplierApplicationTests.java b/functions/supplier/geode-supplier/src/test/java/org/springframework/cloud/fn/supplier/geode/GeodeSupplierApplicationTests.java index e898a455..0178cd2d 100644 --- a/functions/supplier/geode-supplier/src/test/java/org/springframework/cloud/fn/supplier/geode/GeodeSupplierApplicationTests.java +++ b/functions/supplier/geode-supplier/src/test/java/org/springframework/cloud/fn/supplier/geode/GeodeSupplierApplicationTests.java @@ -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; diff --git a/functions/supplier/mqtt-supplier/src/test/java/org/springframework/cloud/fn/supplier/mqtt/MqttSupplierTests.java b/functions/supplier/mqtt-supplier/src/test/java/org/springframework/cloud/fn/supplier/mqtt/MqttSupplierTests.java index 2cd995c1..4705f644 100644 --- a/functions/supplier/mqtt-supplier/src/test/java/org/springframework/cloud/fn/supplier/mqtt/MqttSupplierTests.java +++ b/functions/supplier/mqtt-supplier/src/test/java/org/springframework/cloud/fn/supplier/mqtt/MqttSupplierTests.java @@ -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 { diff --git a/stream-applications-build/pom.xml b/stream-applications-build/pom.xml index be9f57c1..37eb5c6f 100644 --- a/stream-applications-build/pom.xml +++ b/stream-applications-build/pom.xml @@ -313,6 +313,34 @@ + + default + + true + + + + + org.apache.maven.plugins + maven-surefire-plugin + + integration + + + + + + + integration + + + + org.apache.maven.plugins + maven-surefire-plugin + + + + milestone