Commit Graph

8138 Commits

Author SHA1 Message Date
Artem Bilan
c67cce1563 INT-3892: Make ExpRatioTests Thread.sleep()-free
JIRA: https://jira.spring.io/browse/INT-3892

 **Cherry-pick to 4.2.x**
2015-11-19 11:49:51 -05:00
Artem Bilan
c0d1277b55 INT-3888: Fix STOMP Test for Race Condition
JIRA: https://jira.spring.io/browse/INT-3888

Note sure yet what race condition we have in the `DefaultSubscriptionRegistry`,
but that looks for me better to follow with the standard `SubscriptionRegistry.findSubscriptions()`
to check subscription present, unless fail during `send()` because of `destinationLookup` early exit.

Fix for the `StompServerIntegrationTests`

Looks like we have to `reconnect()` for any `handleTransportError()` activity,
otherwise we are just hang in the Reactor's TCP reconnect loop without freeing resources
for other activities, e.g. start Embedded STOMP Broker.

Increase `receive` timeout in case of wait for the Broker Start
2015-11-19 08:55:13 -05:00
Gary Russell
f80c0db0df INT-3861: Mail Namespace Support for userFlag
JIRA: https://jira.spring.io/browse/INT-3861

Allow the custom `userFlag` to be configured using the namespace.

Polishing according PR comments
2015-11-18 18:12:00 -05:00
Gary Russell
33a40f6cae INT-3884: Outbound Gateway replyChannel in Chain
JIRA: https://jira.spring.io/browse/INT-3884

Previously, an outbound gateway within a chain allowed a `reply-channel` attribute
but it was ignored. The gateway's output channel is set to send the message to
the next element in the chain, or the chain's output channel if the gateway is
the last element.

Tighten the parser logic to detect and disallow a reply channel within a chain.

Polishing
2015-11-18 17:41:54 -05:00
Gary Russell
051b393ed0 Prepare Master for 4.3
Reference to 4.3

Refactor `what's new` for 4.3
2015-11-17 12:12:49 -05:00
Gary Russell
1fe50138f0 Fix JMX MonitorTests
MessagingTemplate had no timeout and could hang the build.

OnlyOneTrigger could fire before the message is sent; increase
the poller receive timeout so the poller thread blocks until the message is sent.
2015-11-16 16:55:11 -05:00
Gary Russell
dd8b5c2e72 INT-3889: spring-integration-amqp Logs: Add Thread 2015-11-16 15:34:03 -05:00
Spring Buildmaster
e4f1614d11 [artifactory-release] Next development version 2015-11-16 09:06:16 -08:00
Spring Buildmaster
184e888361 [artifactory-release] Release version 4.2.2.RELEASE 2015-11-16 09:06:09 -08:00
Gary Russell
9500d308a0 INT-3823: Fix EnableIntTests Race Condition
JIRA: https://jira.spring.io/browse/INT-3823

The test stops the endpoint.

The previous poller thread can 'steal' the `input` message, but since
it is interrupted, it can't send the message to the `publishedChannel`.

Add logic to wait until the previous poller has been interrupted in `receive()`.

Increase the endpoint `receiveTimeout` to ensure the thread will be interrupted.

Bump SF Version to 4.2.3

Remove `TRACE` logging from the `EnableIntegrationTests` since we have the fix already
Make some optimization around `@DirtiesContext`
2015-11-16 10:49:27 -05:00
Artem Bilan
0327666ca7 Fix RedisMessageGroupStore Tests: clean up DB
https://build.spring.io/browse/INT-B41-JOB1-493
2015-11-14 16:51:01 -05:00
Artem Bilan
9d8e2b61f6 Fixes for Sporadic Test Failures
* `ClientWebSocketContainer`: add some synchronization to avoid race conditions: https://build.spring.io/browse/INT-B41-492
* `TomcatWebSocketTestServer`: convert to `0` port to rely on the OS resolution for `localPort`
* Add `LogAdjustingTestSupport` for STOMP test
* `SftpServerTests`: use `0` port to rely on the OS resolution for `localPort`
* `ImapMailReceiver`, `OutboundGatewayFunctionTests` (JMS), `CachingClientConnectionFactoryTests`,
`AsyncGatewayTests`, `AsyncMessagingTemplateTests`, `GatewayParserTests`, `PriorityChannelTests`, `AggregatorIntegrationTests`: increase timeout
* `EnableIntegrationTests`: use `LogAdjustingTestSupport`
* `FileOutboundChannelAdapterParserTests`: rework `Thread.sleep()` with `CountDownLatch`
* `ConnectionToConnectionTests`: increase timeout and count iteration. Previously with `1sec` we may lose some events. And we can't just rely on the `10sec`,
because the last iteration will be so long
* `TcpOutboundGatewayTests`: `500ms` is so big timeout to wait for the `Exception` that in the high load environment we can yield to other Thread so long.
Like in our case to `server` Thread to send the reply for us. Therefore decrease the Exception timeout to the `50ms` and increase server delay to `2sec`
* `StompInboundChannelAdapterWebSocketIntegrationTests`: remove `@Qualifier("taskScheduler")` as a potential candidate to test against latest SF changes.
We're fine with `SF-4.2.2` and it is just a test-case. So, I don't see reason to wait for their fix here.

STOMP: `session = null` in adapters for any transportError

Polishing
2015-11-14 16:12:23 -05:00
Artem Bilan
e45bb36be2 Upgrade to AMQP-1.5.2
Add `@Qualifier("taskScheduler")` to the `StompInboundChannelAdapterWebSocketIntegrationTests`:
https://build.spring.io/browse/INT-B41-JOB1-491
2015-11-13 15:17:08 -05:00
Artem Bilan
b9730cd183 INT-3882: StompSession Reconnection Logic
JIRA: https://jira.spring.io/browse/INT-3882

Add reconnect support for the StompSession:
* Introduce `recoveryInterval` for the `AbstractStompSessionManager`
* Add reconnect scheduled task
* Add handling of the `ConnectionLostException` into the `AbstractStompSessionManager`,
as well as for the `StompInboundChannelAdapter` and `StompMessageHandler`
* Cover adapters reconnection feature with tests
* Documentation polishing

Rework logic according PR comments

* Make `StompMessageHandler` as a "lazy-load" for the connection
* Add "direct" connect interaction for the `AbstractStompSessionManager`
* Polishing tests

Polishing

Fix `StompAdaptersParserTests#testStompSessionManagerReconnect()` to use "fake" server port

Address PR comments

The further polishing

Some further polishing

* `AbstractStompSessionManager`: `reconnectFuture.cancel(true)` on each `scheduleReconnect()` to avoid something like "DDoS attack"
* Add reconnect feature test for the `StompInboundChannelAdapterWebSocketIntegrationTests`, closing and then refreshing again the `serverContext`
2015-11-13 14:19:18 -05:00
Gary Russell
f1bd6e3bac INT-3885: Fix JMS Outbound Gateway Concurrency
JIRA: https://jira.spring.io/browse/INT-3885

Possible dropped reply, causing timeout.

WARN org.springframework.integration.jms.JmsOutboundGateway#1.replyListener-1 jms.JmsOutboundGateway:1202
    - Failed to consume reply with correlationId 164a49bf-c41d-4c0b-b012-55deecf001d1_2
      java.lang.RuntimeException: No sender waiting for reply

- Reproduced by running the test in a loop
- Cleaned up test to aid debugging - capture a unique message at each stage
- Added additional debug logging to th gateway

Polishing
2015-11-13 10:56:11 -05:00
Gary Russell
e5269bb265 INT-3886: TCP Fix Socket Timeout: Raw Deserializer
JIRA: https://jira.spring.io/browse/INT-3886

An SO user reported a short message delivery when an NIO connection was timed out.

See JIRA for link.

We could not produce the problem with his deserializer but it did identify a problem
with the standard `ByteArrayRawSerializer`.

With NIO, socket timeouts were reported to the deserializer as a normal EOF (-1). This
caused the raw serializer to emit a short message - it's signal for end of message is the
socket closure.

We can't treat a timeout as a normal EOF.

If the socket is forcibly timed out due to no recent data, throw a `SocketTimeoutException` to
the deserializer.

Just in case the old behavior is being relied upon, a boolean has been added to restore that
behavior. This is not recommended, as using timeout to delimit messages is not reliable.

* Fix typos
* Increase `MongoDbInboundChannelAdapterIntegrationTests` timeouts
* Some code polishing
2015-11-12 21:35:03 -05:00
Artem Bilan
f0d0772397 Increase timeouts for DelayHandlerTests
https://build.spring.io/browse/INT-B41-487
2015-11-12 19:18:11 -05:00
Artem Bilan
febea4fe40 MQTT: Document Java Config
http://stackoverflow.com/questions/33655970/eclipse-paho-mqtt-spring-java-configuration
2015-11-12 12:12:12 -05:00
Gary Russell
79745c8b08 Add Debug for Amqp Channel Tests 2015-11-10 12:58:50 -05:00
Gary Russell
81cd1e1ad9 Increase File Test Timeouts 2015-11-10 12:57:49 -05:00
Artem Bilan
f6b95630c4 INT-3871: Fix NPE in the JsonPropertyAccessor
JIRA: https://jira.spring.io/browse/INT-3871

**Cherry-pick to 4.1.x, 4.0.x, 3.0.x**
2015-11-10 11:27:57 -05:00
Gary Russell
1107bfacb4 Fix Stomp Test Race Condition
Message producers are started in phase `Integer.MAX_INT / 2`.

The test case has a stomp inbound adapter and an event producer.

Since they are both in the same phase, the event producer can miss the `StompReceiptEvent`.

Change the phase of the event producer to ensure it is started before other message producers.
2015-11-10 09:47:51 -05:00
Gary Russell
f5fa979681 MQTT: Possible NPE
Examining the code revealed a possible (but improbable) NPE.

Checking the connection was disjoint from the publish; encapsulate the check within publish.
Synchronize the connectionLost method so it can't null the client while it is being checked.

Add `@SuppressWarnings("deprecation")` on the deprecated `connectIfNeeded()` usage.
2015-11-09 18:29:14 -05:00
Gary Russell
90a485e6a9 Fix Race Condition in BarrierMessageHandlerTests
Main thread waited for map.size() to go to zero, which is the initial state; use a latch instead.
2015-11-09 11:37:15 -05:00
Gary Russell
240e14fca1 Fix ZookeeperLeaderTests Race Condition
Leadership was yielded before testing whether the adapter was started when leadership was granted.
It was possible for the adapter to be stopped again before testing `isRunning()`.
2015-11-08 13:29:22 -05:00
Gary Russell
1849cda1c1 Extract LogAdjustingTestSupport
Also add test debugging to JmsOutboundGatewayTests.
2015-11-07 11:06:19 -05:00
Artem Bilan
b041fe9992 INT-3880: Document File Reading Comparator
JIRA: https://jira.spring.io/browse/INT-3880

Polishing
2015-11-06 13:33:03 -05:00
Gary Russell
b486247105 INT-3878: MQTT Application Events (inbound)
JIRA: https://jira.spring.io/browse/INT-3878

Publish `ApplicationEvent`s to report inbound channel adapter connection
status.

Fixing typos and simple polishing.
2015-11-05 17:39:08 -05:00
Gary Russell
b3dd85fb4b INT-3879: Mail: Configurable USER Flag
JIRA: https://jira.spring.io/browse/INT-3879

Namespace support to follow in 4.3.

Simple polishing and fix some typos in the `mail.adoc`
2015-11-05 17:13:49 -05:00
Eric Bottard
eec937b6d9 Fix asciidoc typo 2015-11-05 08:48:44 +01:00
Gary Russell
895336f60a INT-3877: BarrierParser and requires-reply
JIRA: https://jira.spring.io/browse/INT-3877

Failed to set the `requires-reply` boolean.
2015-11-04 19:24:52 -05:00
Gary Russell
c75a95c555 JMS: Doc: Explain Gateway Correlation Techniques 2015-11-04 18:31:30 -05:00
Artem Bilan
bfebb78429 Adjust some sporadic tests
https://build.spring.io/browse/INT-B41-JOB1-470
https://build.spring.io/browse/INT-B41-JOB1-471
2015-11-04 17:28:20 -05:00
Artem Bilan
703bc5fb82 INT-3872: Document Gateway's Exception as Reply
JIRA: https://jira.spring.io/browse/INT-3872

Polishing

Also, we had no tests for method element parsing.
2015-11-04 14:30:24 -05:00
Artem Bilan
7edef1d9f1 INT-3874: Copy spel-functions from parent ctx
JIRA: https://jira.spring.io/browse/INT-3874

Previously the `IntegrationEvaluationContextFactoryBean` copied only those spel-functions which are defined
as beans in the ctx. Those which are specified through the `setFunctions` hasn't been copied from parent ctx to child.

This fix addresses and issue.
2015-11-03 16:51:45 -05:00
Artem Bilan
9918304954 INT-3873: Fix STOMP WebSocket test
JIRA: https://jira.spring.io/browse/INT-3873

Phase I: add `Log4jLevelAdjuster` to the `StompInboundChannelAdapterWebSocketIntegrationTests` to have more info on the next CI failure.
2015-11-03 11:47:56 -05:00
Gary Russell
fb766a951c TCP: Tests: Let OS Choose Test Port
https://build.spring.io/browse/INT-MJATS41-434

BindException.

Avoid using `findAvailableServerSocket()` where easily possible.

Some still remain, but they would require major rework of the tests.

Also fix a race in `TcpOutboundGatewayTests.testGoodNetGWTimeoutGuts()`. Although an
`AtomicBoolean` was used, both threads might still see the lower (500ms) timeout.

Polishing
2015-10-29 19:24:16 -04:00
Gary Russell
e5577b1e50 Fix Control Bus Doc Typo
s/JMS/JMX/
2015-10-28 10:31:26 -04:00
Spring Buildmaster
68e9e175f8 [artifactory-release] Next development version 2015-10-26 16:28:58 -07:00
Spring Buildmaster
f62fcfc615 [artifactory-release] Release version 4.2.1.RELEASE 2015-10-26 16:28:37 -07:00
Artem Bilan
095aeea703 @Ignore a couple nasty tests 2015-10-26 18:02:51 -04:00
Artem Bilan
4c331a26f0 SocketSupportTests: change server port to 0
Rely on the OS server port resolution and use the real port for the `client` from the `server`
2015-10-26 17:18:33 -04:00
Artem Bilan
7ef053da22 Increase timeouts for FileToChannelIntTests
https://build.spring.io/browse/INT-B41-JOB1-460
2015-10-26 16:37:39 -04:00
Gary Russell
37aaa82272 INT-3831: Fix MessagingGatewaySupport MBean Export
JIRA: https://jira.spring.io/browse/INT-3831

- Add `@IntegrationManagedResource`
- Suppress exporting as an endpoint

Fix `outputChannel` issue for anonymous `MessagingGatewaySupport`

INT-3831: Pure JavaConfig Test

INT-3831: Polishing

Check output channel name for anonymous message source metrics.

Don't use getter on MGS to avoid early channel resolution.

INT-3831: Fix Test - Avoid Second MBeanServer

Reference the `MBSFB` in the context rather than create a new `MBeanServer`.

Polishing
2015-10-26 14:28:29 -04:00
Artem Bilan
1012e588e4 Increase remoteTimeout for TcpOutbound test
Looks like `5000` isn't enough to wait for reply from server in high-loaded environment:
https://build.spring.io/browse/INT-B41-JOB1-456
2015-10-22 18:30:12 -04:00
Artem Bilan
9039a1b4c5 INT-3859: Fix NPE in the ImapMailReceiver
JIRA: https://jira.spring.io/browse/INT-3859

The Java Mail `MessageCache.getMessageBySeqnum()` has the code:
````java
if (msgnum < 0) {		// XXX - < 1 ?
    if (logger.isLoggable(Level.FINE))
	logger.fine("no message seqnum " + seqnum);
        return null;
}
````
about which the `IMAPFolder.search` doesn't care:
````java
matchMsgs[i] = getMessageBySeqNumber(matches[i]);
````
therefore pops `null`s to the top for the `ImapMailReceiver`

* Fix `NPE` filtering the `Message[]` from `null` items

Note: its enough difficult to reproduce it because it isn't clear how we can end up with:
````java
if (seqnums[msgnum-1] > seqnum)
		break;		// message doesn't exist
````

in the `MessageCache`.
That's why there is no test-cases on the matter.

**Cherry-pick to 4.1.x**

Polishing

- Only create a new array if needed.
- Add a test case
2015-10-22 17:09:54 -04:00
Artem Bilan
df85b87d5b Fix some JavaDocs Warnings 2015-10-22 11:13:26 -04:00
Gary Russell
279c30d1b0 Typo in Previous Commit 2015-10-22 09:47:07 -04:00
Gary Russell
3965e6977f Document 'trapException` for EERHAdvice 2015-10-22 09:44:16 -04:00
Artem Bilan
d0af90db62 Another fix for failing tests
* `JmsOutboundGatewayTests`: just increase timeouts. Looks like embedded ActiveMQ Broker takes more time to interact on high-loaded builds
* `TcpOutboundGatewayTests`: Rework the race condition fix to the atomic `remoteTimeout`  change using mocks
2015-10-21 19:04:01 -04:00