You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@camel.apache.org by Claus Ibsen <cl...@gmail.com> on 2009/03/05 06:16:15 UTC

Re: svn commit: r749973 - in /camel/trunk/camel-core/src: main/java/org/apache/camel/component/mock/ main/java/org/apache/camel/processor/interceptor/ test/java/org/apache/camel/component/mock/ test/java/org/apache/camel/processor/

On Thu, Mar 5, 2009 at 2:52 AM, Willem Jiang <wi...@gmail.com> wrote:
> Hi Claus,
>
> Does this change need to be merge in to 1.x branch ?
No as the code change in StreamCachingInterceptor does not exists in
1.x. It was using a TypeConverterRegistry which does not exist in 1.x.

The other change to only wait 2 sec instead of 20 sec will of course
cut 18 sec on unit testing
+        // wait at most 2 sec to speedup unit testing
+        resultEndpoint.setResultWaitTime(2000);

And the last change to support Object instead of only String values
for expected header is fine only on trunk.


>
> Thanks,
>
> Willem
>
> davsclaus@apache.org wrote:
>> Author: davsclaus
>> Date: Wed Mar  4 12:06:11 2009
>> New Revision: 749973
>>
>> URL: http://svn.apache.org/viewvc?rev=749973&view=rev
>> Log:
>> CAMEL-1417: Fixed failing unit test as we can not use the lookup in type converter registry. Improved expectedHeader to allow all types instead of only string values. So now you can compare real numbers and whatelse.
>>
>> Modified:
>>     camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java
>>     camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/StreamCachingInterceptor.java
>>     camel/trunk/camel-core/src/test/java/org/apache/camel/component/mock/MockEndpointTest.java
>>     camel/trunk/camel-core/src/test/java/org/apache/camel/processor/RoutePerformanceTest.java
>>
>> Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java
>> URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java?rev=749973&r1=749972&r2=749973&view=diff
>> ==============================================================================
>> --- camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java (original)
>> +++ camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java Wed Mar  4 12:06:11 2009
>> @@ -74,7 +74,7 @@
>>      private List actualBodyValues;
>>      private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this);
>>      private String headerName;
>> -    private String headerValue;
>> +    private Object headerValue;
>>      private Object actualHeader;
>>      private Processor reporter;
>>
>> @@ -308,7 +308,7 @@
>>       * Adds an expectation that the given header name & value are received by this
>>       * endpoint
>>       */
>> -    public void expectedHeaderReceived(String name, String value) {
>> +    public void expectedHeaderReceived(final String name, final Object value) {
>>          this.headerName = name;
>>          this.headerValue = value;
>>
>> @@ -316,7 +316,8 @@
>>              public void run() {
>>                  assertTrue("No header with name " + headerName + " found.", actualHeader != null);
>>
>> -                assertEquals("Header of message", headerValue, actualHeader.toString());
>> +                Object actualValue = getCamelContext().getTypeConverter().convertTo(actualHeader.getClass(), headerValue);
>> +                assertEquals("Header of message", actualValue, actualHeader);
>>              }
>>          });
>>      }
>>
>> Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/StreamCachingInterceptor.java
>> URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/StreamCachingInterceptor.java?rev=749973&r1=749972&r2=749973&view=diff
>> ==============================================================================
>> --- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/StreamCachingInterceptor.java (original)
>> +++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/StreamCachingInterceptor.java Wed Mar  4 12:06:11 2009
>> @@ -24,7 +24,6 @@
>>  import org.apache.camel.NoTypeConversionAvailableException;
>>  import org.apache.camel.Processor;
>>  import org.apache.camel.StreamCache;
>> -import org.apache.camel.TypeConverter;
>>  import org.apache.camel.model.InterceptorRef;
>>  import org.apache.camel.model.InterceptorType;
>>  import org.apache.camel.processor.DelegateProcessor;
>> @@ -64,39 +63,28 @@
>>              }
>>          }
>>      }
>> -
>> +
>>      @Override
>>      public void process(Exchange exchange) throws Exception {
>>          AsyncProcessorHelper.process(this, exchange);
>>      }
>>
>>      public boolean process(Exchange exchange, AsyncCallback callback) {
>> -        // Change the body to StreamCache if possible
>> -        // important to lookup for the type converter to avoid excessive overhead of trying to covnert if not possible
>> -        // as Camel will throw NoTypeConversionAvailableException that we just ignores. So we want to avoid this
>> -        // exception handling as it hurts performance dramatically for high throughput
>> -        // See also MessageSupport#getBody and CAMEL-1417
>> -        Object body = exchange.getIn().getBody();
>> -        if (body != null) {
>> -            TypeConverter tc = exchange.getContext().getTypeConverterRegistry().lookup(StreamCache.class, body.getClass());
>> -            if (tc != null) {
>> -                try {
>> -                    StreamCache newBody = tc.convertTo(StreamCache.class, exchange, body);
>> -                    if (newBody != null) {
>> -                        exchange.getIn().setBody(newBody);
>> -                    }
>> -                    MessageHelper.resetStreamCache(exchange.getIn());
>> -                } catch (NoTypeConversionAvailableException ex) {
>> -                    // ignore if in is not of StreamCache type
>> -                }
>> +        try {
>> +            StreamCache newBody = exchange.getIn().getBody(StreamCache.class);
>> +            if (newBody != null) {
>> +                exchange.getIn().setBody(newBody);
>>              }
>> +            MessageHelper.resetStreamCache(exchange.getIn());
>> +        } catch (NoTypeConversionAvailableException ex) {
>> +            // ignore if in is not of StreamCache type
>>          }
>>
>>          return proceed(exchange, callback);
>>      }
>>
>> -    public boolean proceed(Exchange exchange, AsyncCallback callback) {
>> -        if (getProcessor() instanceof AsyncProcessor) {
>> +    public boolean proceed(Exchange exchange, AsyncCallback callback) {
>> +        if (getProcessor() instanceof AsyncProcessor) {
>>              return ((AsyncProcessor) getProcessor()).process(exchange, callback);
>>          } else {
>>              try {
>>
>> Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/component/mock/MockEndpointTest.java
>> URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/component/mock/MockEndpointTest.java?rev=749973&r1=749972&r2=749973&view=diff
>> ==============================================================================
>> --- camel/trunk/camel-core/src/test/java/org/apache/camel/component/mock/MockEndpointTest.java (original)
>> +++ camel/trunk/camel-core/src/test/java/org/apache/camel/component/mock/MockEndpointTest.java Wed Mar  4 12:06:11 2009
>> @@ -112,6 +112,8 @@
>>
>>          MockEndpoint resultEndpoint = getMockEndpoint("mock:result");
>>          resultEndpoint.expectedMessageCount(6);
>> +        // wait at most 2 sec to speedup unit testing
>> +        resultEndpoint.setResultWaitTime(2000);
>>          resultEndpoint.assertIsNotSatisfied();
>>      }
>>
>> @@ -141,7 +143,6 @@
>>          resultEndpoint.assertIsSatisfied();
>>
>>          resultEndpoint.reset();
>> -
>>          // assert failure when value is different
>>          resultEndpoint.expectedHeaderReceived("header", "value1");
>>          sendHeader("header", "value");
>> @@ -162,10 +163,21 @@
>>          resultEndpoint.assertIsNotSatisfied();
>>      }
>>
>> +    public void testExpectationOfHeaderWithNumber() throws InterruptedException {
>> +        MockEndpoint resultEndpoint = getMockEndpoint("mock:result");
>> +        resultEndpoint.reset();
>> +
>> +        // assert we can assert using other than string, eg numbers
>> +        resultEndpoint.expectedHeaderReceived("number", 123);
>> +        sendHeader("number", 123);
>> +        resultEndpoint.assertIsSatisfied();
>> +
>> +        resultEndpoint.assertIsNotSatisfied();
>> +    }
>> +
>>      protected void sendMessages(int... counters) {
>>          for (int counter : counters) {
>> -            template.sendBodyAndHeader("direct:a", createTestMessage(counter),
>> -                    "counter", counter);
>> +            template.sendBodyAndHeader("direct:a", createTestMessage(counter), "counter", counter);
>>          }
>>      }
>>
>> @@ -181,7 +193,7 @@
>>          return list;
>>      }
>>
>> -    protected void sendHeader(String name, String value) {
>> +    protected void sendHeader(String name, Object value) {
>>          template.sendBodyAndHeader("direct:a", "body", name, value);
>>      }
>>
>>
>> Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/RoutePerformanceTest.java
>> URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/RoutePerformanceTest.java?rev=749973&r1=749972&r2=749973&view=diff
>> ==============================================================================
>> --- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/RoutePerformanceTest.java (original)
>> +++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/RoutePerformanceTest.java Wed Mar  4 12:06:11 2009
>> @@ -38,6 +38,7 @@
>>
>>          MockEndpoint endpoint = getMockEndpoint("mock:results");
>>          endpoint.expectedMessageCount((int) dataSet.getSize());
>> +        endpoint.expectedHeaderReceived("foo", 123);
>>
>>          assertMockEndpointsSatisfied();
>>
>>
>>
>>
>
>



-- 
Claus Ibsen
Apache Camel Committer

Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/