Skip to content

Commit

Permalink
2.3.0 Release (#111)
Browse files Browse the repository at this point in the history
* Add is-reply message header (#97)

* Add `solace_isReply` message header

* Creating configuration metadata for bindings properties (#98)

* Handle consuming null payloads (#112)

* Add `solace_scst_nullPayload` message header
* Convert incoming null payloads to empty equivalents

* add config option to disable adding destination subscription on queue (#108)

* add `addDestinationAsSubscriptionToQueue` binding config option
* deprecate `isProvisionSubscriptionsToDurableQueue` in favor of `addDestinationAsSubscriptionToQueue`

Co-authored-by: Jeffrey D <[email protected]>

* Upgrade to Spring cloud 2021.0.0 and Junit 5 (#118)

# Product Changes
* Upgrade Spring Boot to `2.6.2`
* Upgrade Spring Cloud to `2021.0.0`
* Upgrade sol-jcsmp to `10.13.0`

# Test Changes
* Upgrade sol-jms to `10.13.0`
* Upgrade solace-integration-test-support to `0.8.0`
* Upgrade all binder tests to JUnit 5
  * Add `PubSubPlusExtension` into integration tests for automatic provisioning of PubSub+ in Docker and extension-managed JCSMP resources (e.g. managed `JCSMPSession` and `Queue`).
    * Docker provisioning is disabled if Spring properties are defined to use an externally provisioned broker.
  * Usage of Mockito, SoftAssertions, & ExecutorService were updated to use extensions for injection and auto-cleanup (or auto-calling `assertAll()` in the case of SoftAssertions).
* Remove Maven `it` profile
  * Integration tests will always run by default.
* Add parallel test execution and enable it by default in **Maven**
  * Is disabled by default for easy debugging when test are directly ran from an IDE (not through Maven).
* Update `Test` Github Action workflow to skip duplicate runs, cache maven dependencies, and report unit test results.

* fix PubSubPlusExtension integration (#119)

* upgrade solace-integration-test-support to 0.9.0
* fix `SpringCloudStreamExtension` to use static accessors of `PubSubPlusExtension` resources

* Replace the use of Pivotal Cloud Foundry by VMware Tanzu in documentation (#114)

* SOL-46352: Fix duplicate logs by registering a single RetryListener (#116)

* Fix duplicate logs by registering a single RetryListener
  * Fixes #77

* update sonatype urls to s01 (#121)

Co-authored-by: skgaddam <[email protected]>

* Delivery Count (#122)

* Add solace_deliveryCount Spring message header
  * This is a controlled availability feature

* upgrade to [email protected] & [email protected] (#126)

* SOL-57956: Removing dependency on spring-cloud-connector (#113)

Fixes #15

* Sol 46284 Queue Name Expression (#120)

* add config options to change the queue name format:
  * Add `queueNameExpression` and `errorQueueNameExpression` consumer config options
  * Add `queueNameExpression` and `queueNameExpressionsForRequiredGroups` producer config options
  * Deprecate `queueNamePrefix`, `useGroupNameInQueueName`, `useFamiliarityInQueueName`, `useDestinationEncodingInQueueName`, `errorQueueNameOverride`, and `useGroupNameInErrorQueueName` binding config options
  * Fixes #88

* Sol 58058 health actuator (#125)

* Add support for health indicator
* Add new `RECONNECTING` health indicator status

Co-authored-by: E521877 <[email protected]>
Co-authored-by: Jeffrey Douangpaseuth <[email protected]>

* SOL-58059 Consumer Pause/Resume (#123)

* Add support for consumer pause/resume

Co-authored-by: Jeffrey Douangpaseuth <[email protected]>

* SOL-43137 Batch Consumer Support (#124)

* Add support for batch consumers
  * Add `batchMaxSize` and `batchTimeout` consumer config options
  * Add `solace_scst_batchedHeaders` message header
  * closes #22

* SOL-49780: SCSt README Cleanup (#127)

* Expand table of contents to 3 levels
* Rewrite overview to be more clear
* Try to make it more apparent that Solace session configuration is handled by the Solace Java Spring Boot starter (a completely different project)
* Remove references to obsolete `prefix` consumer/producer config options. The `prefix` option was removed in `3.0.0`.

* prepare for 2.3.0 release (#128)

* add dependabot (#130)

closes #78

* Upgrade Solace APIs to 10.13.1 & Log4j2 to 2.17.2 (#131)

* Upgrade sol-jcsmp to `10.13.1`
* Upgrade sol-jms to `10.13.1`
* Upgrade Log4j2 to `2.17.2`

* upgrade solace-spring-boot to 1.2.0 (#129)

* upgrade to [email protected] & [email protected]

Co-authored-by: carolmorneau <[email protected]>
Co-authored-by: PhilippeKhalife <[email protected]>
Co-authored-by: skgaddam <[email protected]>
Co-authored-by: E521877 <[email protected]>
  • Loading branch information
5 people authored Mar 11, 2022
1 parent 1b12b97 commit 7d5c8d2
Show file tree
Hide file tree
Showing 113 changed files with 9,543 additions and 5,144 deletions.
11 changes: 11 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
version: 2
updates:
- package-ecosystem: "maven"
directory: "/"
schedule:
interval: "daily"
allow:
- dependency-name: "com.solace.*"
- dependency-name: "com.solacesystems:*"
- dependency-name: "org.springframework.*"
- dependency-name: "org.apache.logging.log4j:*"
68 changes: 50 additions & 18 deletions .github/workflows/build-test.yml
Original file line number Diff line number Diff line change
@@ -1,34 +1,66 @@
# This workflow will build and test a Java project with Maven

name: build
name: Test

on:
pull_request:
push:
workflow_dispatch:

jobs:
build:
dupe_check:
name: Check for Duplicate Workflow Run
runs-on: ubuntu-latest
outputs:
should_skip: ${{ steps.skip_check.outputs.should_skip }}
steps:
- id: skip_check
uses: fkirc/[email protected]
with:
concurrent_skipping: same_content
do_not_skip: '["pull_request", "workflow_dispatch", "schedule"]'

build:
name : Build & Test
needs:
- dupe_check
if: needs.dupe_check.outputs.should_skip != 'true'
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- name: Cache local Maven repository
uses: actions/cache@v2
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-test-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-test-
- name: Setup JDK 1.8
uses: actions/setup-java@v1
uses: actions/setup-java@v2
with:
java-version: 1.8
- name: Build and run Unit Tests
distribution: zulu
java-version: 8
- name: Build and run Tests
run: mvn clean verify
- name: Build and run Integration Tests
if: ${{ github.event_name != 'pull_request' }}
run: mvn clean verify -Pit
env:
SOLACE_JAVA_MSG_VPN: ${{ secrets.SOLACE_JAVA_MSG_VPN }}
SOLACE_JAVA_CLIENT_USERNAME: ${{ secrets.SOLACE_JAVA_CLIENT_USERNAME }}
SOLACE_JAVA_CLIENT_PASSWORD: ${{ secrets.SOLACE_JAVA_CLIENT_PASSWORD }}
SOLACE_JAVA_HOST: ${{ secrets.SOLACE_JAVA_HOST }}
TEST_SOLACE_MGMT_HOST: ${{ secrets.TEST_SOLACE_MGMT_HOST }}
TEST_SOLACE_MGMT_USERNAME: ${{ secrets.TEST_SOLACE_MGMT_USERNAME }}
TEST_SOLACE_MGMT_PASSWORD: ${{ secrets.TEST_SOLACE_MGMT_PASSWORD }}
- name: Verify Integration Test Support was not changed
run: ./solace-integration-test-support/scripts/validate_submodule_not_changed.sh
- name: Upload Test Artifacts
if: always()
uses: actions/upload-artifact@v2
with:
name: Test Results
path: |
**/target/failsafe-reports/*.xml
**/target/surefire-reports/*.xml
- name: Publish Unit Test Results
if: (success() || failure()) && (github.actor != 'dependabot[bot]' || (github.event_name == 'push' && !contains(github.ref, 'dependabot')))
uses: EnricoMi/publish-unit-test-result-action@v1
continue-on-error: true
with:
check_name: Unit Test Results
comment_mode: create new
fail_on: nothing
hide_comments: orphaned commits
files: |
**/target/failsafe-reports/*.xml
!**/target/failsafe-reports/failsafe-summary.xml
**/target/surefire-reports/*.xml
30 changes: 28 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ Please consult the [Spring Cloud Compatibility Table](./solace-spring-cloud-bom/
### Solace Spring Cloud Projects

These are the projects contained within this repository:
* [Solace Spring Cloud Stream Starter](./solace-spring-cloud-starters/solace-spring-cloud-stream-starter)
* [Spring Cloud Stream Binder for Solace PubSub+](./solace-spring-cloud-starters/solace-spring-cloud-stream-starter)
* [Solace Spring Cloud Connector](./solace-spring-cloud-connector)

## Building Locally
Expand Down Expand Up @@ -71,6 +71,32 @@ If it shouldn't be inherited by the BOM, it doesn't go here.
- solace-spring-cloud-parent
This POM defines common properties and dependencies for the Solace Spring Cloud projects.

### Running the Tests

Run the following command to run all the unit and integration tests:

```shell
mvn clean verify
```

#### Run Tests With An External Broker

By default, the tests requires for Docker to be installed on the host machine so that they can auto-provision a PubSub+ broker. Otherwise, the following environment variables can be set to direct the tests to use an external broker:

```
SOLACE_JAVA_HOST=tcp://localhost:55555
SOLACE_JAVA_CLIENT_USERNAME=default
SOLACE_JAVA_CLIENT_PASSWORD=default
SOLACE_JAVA_MSG_VPN=default
TEST_SOLACE_MGMT_HOST=http://localhost:8080
TEST_SOLACE_MGMT_USERNAME=admin
TEST_SOLACE_MGMT_PASSWORD=admin
```

#### Parallel Test Execution

Parallel test execution is enabled by default. Add the `-Djunit.jupiter.execution.parallel.enabled=false` option to your command to disable parallel test execution.

## Release Process

1. Update `solace-spring-boot-bom` to latest released version
Expand Down Expand Up @@ -108,7 +134,7 @@ For more information about Spring Boot Auto-Configuration and Starters try these
- [GitHub Tutorial - Master Spring Boot Auto-Configuration](//github.com/snicoll-demos/spring-boot-master-auto-configuration)

For more information about Cloud Foundry and the Solace PubSub+ service these resources:
- [Solace PubSub+ for Pivotal Cloud Foundry](http://docs.pivotal.io/solace-messaging/)
- [Solace PubSub+ for VMware Tanzu](http://docs.pivotal.io/solace-messaging/)
- [Cloud Foundry Documentation](http://docs.cloudfoundry.org/)
- For an introduction to Cloud Foundry: https://www.cloudfoundry.org/

Expand Down
18 changes: 9 additions & 9 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@
<parent>
<groupId>com.solace.spring.boot</groupId>
<artifactId>solace-spring-boot-bom</artifactId>
<version>1.1.1</version>
<version>1.2.1</version>
</parent>

<groupId>com.solace.spring.cloud</groupId>
<artifactId>solace-spring-cloud-build</artifactId>
<version>2.2.2-SNAPSHOT</version>
<version>2.3.0-SNAPSHOT</version>
<packaging>pom</packaging>

<name>Solace Spring Cloud Build</name>
Expand All @@ -21,24 +21,24 @@
<repoName>SolaceProducts</repoName>

<!-- This is the version of Spring Cloud we have targeted for this build -->
<spring.cloud.version>2020.0.1</spring.cloud.version>
<spring.cloud.version>2021.0.1</spring.cloud.version>

<!-- Legacy Support for the Spring Cloud Connectors project -->
<spring.cloud.connectors.version>2.2.13.RELEASE</spring.cloud.connectors.version>

<!-- This is the version of Solace Spring Boot we have targeted for this build -->
<!-- This also dictates the expected version of Spring Boot -->
<!-- Must match ${project.parent.version} -->
<solace.spring.boot.bom.version>1.1.1</solace.spring.boot.bom.version>
<solace.spring.boot.bom.version>1.2.1</solace.spring.boot.bom.version>

<!-- Override spring-boot version from solace-spring-boot to latest patch version -->
<!-- Remove this if the next version of solace-spring-boot works fine -->
<spring.boot.version>2.4.3</spring.boot.version>
<spring.boot.version>2.6.4</spring.boot.version>

<solace.spring.cloud.connector.version>4.3.6-SNAPSHOT</solace.spring.cloud.connector.version>
<solace.spring.cloud.stream-starter.version>3.2.2-SNAPSHOT</solace.spring.cloud.stream-starter.version>
<solace.spring.cloud.stream-starter.version>3.3.0-SNAPSHOT</solace.spring.cloud.stream-starter.version>

<solace.integration.test.support.version>0.2.0</solace.integration.test.support.version>
<solace.integration.test.support.version>0.9.0</solace.integration.test.support.version>
<solace.integration.test.support.fetch_checkout.skip>false</solace.integration.test.support.fetch_checkout.skip>
<solace.integration.test.support.install.skip>true</solace.integration.test.support.install.skip>
</properties>
Expand Down Expand Up @@ -113,7 +113,7 @@
<distributionManagement>
<snapshotRepository>
<id>ossrh</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
<url>https://s01.oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
</distributionManagement>
<build>
Expand All @@ -133,7 +133,7 @@
<extensions>true</extensions>
<configuration>
<serverId>ossrh</serverId>
<nexusUrl>https://oss.sonatype.org/</nexusUrl>
<nexusUrl>https://s01.oss.sonatype.org/</nexusUrl>
<!--<stagingProfileId>1d86d96a0b6bce</stagingProfileId> -->
<autoReleaseAfterClose>true</autoReleaseAfterClose>
</configuration>
Expand Down
2 changes: 1 addition & 1 deletion solace-integration-test-support
Submodule solace-integration-test-support updated 30 files
+10 −0 .github/dependabot.yml
+42 −0 .github/workflows/build-test.yml
+117 −0 .mvn/wrapper/MavenWrapperDownloader.java
+ .mvn/wrapper/maven-wrapper.jar
+2 −0 .mvn/wrapper/maven-wrapper.properties
+57 −11 README.md
+49 −0 bom/pom.xml
+40 −0 junit-jupiter/README.md
+86 −0 junit-jupiter/pom.xml
+100 −0 junit-jupiter/src/main/java/com/solace/test/integration/junit/jupiter/extension/ExecutorServiceExtension.java
+103 −0 junit-jupiter/src/main/java/com/solace/test/integration/junit/jupiter/extension/LogCaptorExtension.java
+41 −0 junit-jupiter/src/main/java/com/solace/test/integration/junit/jupiter/extension/LogTestInfoExtension.java
+540 −0 junit-jupiter/src/main/java/com/solace/test/integration/junit/jupiter/extension/PubSubPlusExtension.java
+83 −0 ...in/java/com/solace/test/integration/junit/jupiter/extension/pubsubplus/provider/PubSubPlusFileProvider.java
+34 −0 .../solace/test/integration/junit/jupiter/extension/pubsubplus/provider/container/SimpleContainerProvider.java
+111 −0 junit-jupiter/src/test/java/com/solace/test/integration/junit/jupiter/extension/PubSubPlusExtensionIT.java
+13 −0 junit-jupiter/src/test/resources/log4j2.xml
+310 −0 mvnw
+182 −0 mvnw.cmd
+86 −3 pom.xml
+19 −6 semp-client/README.md
+69 −59 semp-client/pom.xml
+6 −6 semp-client/src/main/java/com/solace/test/integration/semp/v2/SempV2Api.java
+23 −0 semp-client/src/test/java/com/solace/test/integration/semp/v2/SempV2ApiIT.java
+4 −0 semp-client/src/test/resources/simplelogger.properties
+48 −0 testcontainer/README.md
+66 −0 testcontainer/pom.xml
+100 −0 testcontainer/src/main/java/com/solace/test/integration/testcontainer/PubSubPlusContainer.java
+91 −0 testcontainer/src/test/java/com/solace/test/integration/testcontainer/PubSubPlusContainerIT.java
+5 −0 testcontainer/src/test/resources/logback.xml
7 changes: 4 additions & 3 deletions solace-spring-cloud-bom/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ Consult the table below to determine which version of the BOM you need to use:
|Hoxton.SR1 |1.0.0 | 2.2.x |
|Hoxton.SR6 |1.1.0 | 2.3.x |
|2020.0.1 |2.0.0, 2.1.0, 2.2.0, 2.2.1 | 2.4.x |
|2021.0.1 |2.3.0 | 2.6.x |

## Including the BOM

Expand All @@ -33,7 +34,7 @@ In addition to showing how to include the BOM, the following snippets also shows
<dependency>
<groupId>com.solace.spring.cloud</groupId>
<artifactId>solace-spring-cloud-bom</artifactId>
<version>2.2.1</version>
<version>2.3.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
Expand Down Expand Up @@ -61,7 +62,7 @@ apply plugin: 'io.spring.dependency-management'
dependencyManagement {
imports {
mavenBom "com.solace.spring.cloud:solace-spring-cloud-bom:2.2.1"
mavenBom "com.solace.spring.cloud:solace-spring-cloud-bom:2.3.0"
}
}
Expand All @@ -73,7 +74,7 @@ dependencies {
### Using it with Gradle 5
```groovy
dependencies {
implementation(platform("com.solace.spring.cloud:solace-spring-cloud-bom:2.2.1"))
implementation(platform("com.solace.spring.cloud:solace-spring-cloud-bom:2.3.0"))
implementation("com.solace.spring.cloud:spring-cloud-starter-stream-solace")
}
```
4 changes: 2 additions & 2 deletions solace-spring-cloud-bom/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@
<parent>
<groupId>com.solace.spring.cloud</groupId>
<artifactId>solace-spring-cloud-build</artifactId>
<version>2.2.2-SNAPSHOT</version>
<version>2.3.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

<artifactId>solace-spring-cloud-bom</artifactId>
<packaging>pom</packaging>
<version>2.2.2-SNAPSHOT</version>
<version>2.3.0-SNAPSHOT</version>

<name>Solace Spring Cloud BOM</name>
<description>BOM for Solace Spring Cloud</description>
Expand Down
10 changes: 5 additions & 5 deletions solace-spring-cloud-connector/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,9 +52,9 @@ session.connect();

## Spring Applications

The Spring Cloud Auto-Configure Java, JMS and JNDI tutorials in the [Solace PubSub+ with Pivotal Cloud Foundry Getting Started Samples](https://dev.solace.com/samples/solace-samples-cloudfoundry-java/) provide easy integration into Spring applications.
The Spring Cloud Auto-Configure Java, JMS and JNDI tutorials in the [Solace PubSub+ with VMware Tanzu Getting Started Samples](https://tutorials.solace.dev/tanzu) provide easy integration into Spring applications.

Above example for the Solace PubSub+ API for Java (JCSMP) would be further simplified as follows: here Spring creates a SpringJCSMPFactory with all the properties set and all that is required is to autowire this into your application. Check out the [tutorial](https://dev.solace.com/samples/solace-samples-cloudfoundry-java/spring-cloud-autoconf-java/) for further details.
Above example for the Solace PubSub+ API for Java (JCSMP) would be further simplified as follows: here Spring creates a SpringJCSMPFactory with all the properties set and all that is required is to autowire this into your application. Check out the [tutorial](https://tutorials.solace.dev/tanzu/spring-cloud-autoconf-java/) for further details.

```java
@Autowired
Expand All @@ -76,7 +76,7 @@ Include version 4.0.0 or later to use Spring Boot release 2.x

```
// Solace Cloud
compile("com.solace.cloud.cloudfoundry:solace-spring-cloud-connector:4.3.5")
compile("com.solace.cloud.cloudfoundry:solace-spring-cloud-connector:4.3.6")
```

### Using it with Maven
Expand All @@ -86,14 +86,14 @@ compile("com.solace.cloud.cloudfoundry:solace-spring-cloud-connector:4.3.5")
<dependency>
<groupId>com.solace.cloud.cloudfoundry</groupId>
<artifactId>solace-spring-cloud-connector</artifactId>
<version>4.3.5</version>
<version>4.3.6</version>
</dependency>
```

## Resources

For more information about Cloud Foundry and the Solace PubSub+ service these resources:
- [Solace PubSub+ for Pivotal Cloud Foundry](http://docs.pivotal.io/solace-messaging/)
- [Solace PubSub+ for VMware Tanzu](http://docs.pivotal.io/solace-messaging/)
- [Cloud Foundry Documentation](http://docs.cloudfoundry.org/)
- For an introduction to Cloud Foundry: https://www.cloudfoundry.org/

Expand Down
4 changes: 2 additions & 2 deletions solace-spring-cloud-connector/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
<parent>
<groupId>com.solace.spring.cloud</groupId>
<artifactId>solace-spring-cloud-parent</artifactId>
<version>2.2.2-SNAPSHOT</version>
<version>2.3.0-SNAPSHOT</version>
<relativePath>../solace-spring-cloud-parent/pom.xml</relativePath>
</parent>

Expand All @@ -38,7 +38,7 @@
<dependency>
<groupId>com.solace.cloud.core</groupId>
<artifactId>solace-services-info</artifactId>
<version>0.4.3</version>
<version>0.4.4</version>
</dependency>

<dependency>
Expand Down
27 changes: 23 additions & 4 deletions solace-spring-cloud-parent/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<parent>
<groupId>com.solace.spring.cloud</groupId>
<artifactId>solace-spring-cloud-build</artifactId>
<version>2.2.2-SNAPSHOT</version>
<version>2.3.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

Expand All @@ -23,8 +23,8 @@
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.source>1.8</maven.compiler.source>

<solace.jcsmp.version>10.12.0</solace.jcsmp.version>
<solace.jms.version>10.12.0</solace.jms.version>
<solace.jcsmp.version>10.13.1</solace.jcsmp.version>
<solace.jms.version>10.13.1</solace.jms.version>
</properties>

<dependencyManagement>
Expand All @@ -36,7 +36,7 @@
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-bom</artifactId>
<version>2.16.0</version>
<version>2.17.2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
Expand Down Expand Up @@ -90,6 +90,18 @@
<build>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.2</version>
<configuration>
<properties>
<configurationParameters>
junit.jupiter.execution.parallel.enabled=true
</configurationParameters>
</properties>
</configuration>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
Expand All @@ -101,6 +113,13 @@
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
<configuration>
<properties>
<configurationParameters>
junit.jupiter.execution.parallel.enabled=true
</configurationParameters>
</properties>
</configuration>
</execution>
</executions>
</plugin>
Expand Down
Loading

0 comments on commit 7d5c8d2

Please sign in to comment.