You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2017/02/23 09:03:42 UTC
[06/10] camel git commit: CAMEL-10883: correct tests and ensure that
reader's wait for data
CAMEL-10883: correct tests and ensure that reader's wait for data
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/4196654f
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/4196654f
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/4196654f
Branch: refs/heads/master
Commit: 4196654f91f540bc32465f24cc04c190a233f8b8
Parents: de3afdd
Author: rohan <ro...@fronde.com>
Authored: Tue Feb 21 15:44:46 2017 +1300
Committer: Andrea Cosentino <an...@gmail.com>
Committed: Thu Feb 23 10:00:25 2017 +0100
----------------------------------------------------------------------
.../DefaultUndertowHttpBindingTest.java | 41 +++++++++++++-------
1 file changed, 28 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/4196654f/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/DefaultUndertowHttpBindingTest.java
----------------------------------------------------------------------
diff --git a/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/DefaultUndertowHttpBindingTest.java b/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/DefaultUndertowHttpBindingTest.java
index 532ee9d..4a4884b 100644
--- a/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/DefaultUndertowHttpBindingTest.java
+++ b/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/DefaultUndertowHttpBindingTest.java
@@ -15,12 +15,14 @@ import java.util.stream.Stream;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertThat;
+import static org.junit.Assert.fail;
public class DefaultUndertowHttpBindingTest {
@Test(timeout = 1000)
public void readEntireDelayedPayload() throws Exception {
String[] delayedPayloads = new String[] {
+ "",
"chunk",
};
@@ -29,12 +31,13 @@ public class DefaultUndertowHttpBindingTest {
DefaultUndertowHttpBinding binding = new DefaultUndertowHttpBinding();
String result = new String(binding.readFromChannel(source));
- assertThat(result, is(delayedPayloads[0]));
+ checkResult(result, delayedPayloads);
}
@Test(timeout = 1000)
public void readEntireMultiDelayedPayload() throws Exception {
String[] delayedPayloads = new String[] {
+ "",
"first ",
"second",
};
@@ -44,6 +47,10 @@ public class DefaultUndertowHttpBindingTest {
DefaultUndertowHttpBinding binding = new DefaultUndertowHttpBinding();
String result = new String(binding.readFromChannel(source));
+ checkResult(result, delayedPayloads);
+ }
+
+ private void checkResult(String result, String[] delayedPayloads) {
assertThat(result, is(
Stream.of(delayedPayloads)
.collect(Collectors.joining())));
@@ -52,6 +59,7 @@ public class DefaultUndertowHttpBindingTest {
@Test(timeout = 1000)
public void readEntireMultiDelayedWithPausePayload() throws Exception {
String[] delayedPayloads = new String[] {
+ "",
"first ",
"",
"second",
@@ -62,9 +70,7 @@ public class DefaultUndertowHttpBindingTest {
DefaultUndertowHttpBinding binding = new DefaultUndertowHttpBinding();
String result = new String(binding.readFromChannel(source));
- assertThat(result, is(
- Stream.of(delayedPayloads)
- .collect(Collectors.joining())));
+ checkResult(result, delayedPayloads);
}
private StreamSourceChannel source(final String[] delayedPayloads) {
@@ -72,20 +78,23 @@ public class DefaultUndertowHttpBindingTest {
return new EmptyStreamSourceChannel(thread()) {
int chunk = 0;
+ boolean mustWait = false; // make sure that the caller is not spinning on read==0
@Override
public int read(ByteBuffer dst) throws IOException {
- // can only read payloads in the reader thread
- if (sourceThread != Thread.currentThread()) {
- if (chunk < delayedPayloads.length) {
- byte[] delayedPayload = delayedPayloads[chunk].getBytes();
- dst.put(delayedPayload);
- chunk++;
- return delayedPayload.length;
+ if (mustWait) {
+ fail("must wait before reading");
+ }
+ if (chunk < delayedPayloads.length) {
+ byte[] delayedPayload = delayedPayloads[chunk].getBytes();
+ dst.put(delayedPayload);
+ chunk++;
+ if (delayedPayload.length == 0) {
+ mustWait = true;
}
- return -1;
+ return delayedPayload.length;
}
- return 0;
+ return -1;
}
@Override
@@ -97,6 +106,12 @@ public class DefaultUndertowHttpBindingTest {
super.resumeReads();
}
}
+
+ @Override
+ public void awaitReadable() throws IOException {
+ mustWait = false;
+ super.awaitReadable();
+ }
};
}