Kamil created CAMEL-13544:
-----------------------------

             Summary: adviceWith in test should be fired before routes are 
started
                 Key: CAMEL-13544
                 URL: https://issues.apache.org/jira/browse/CAMEL-13544
             Project: Camel
          Issue Type: Bug
            Reporter: Kamil


This test should pass:
{code:java}
import java.util.concurrent.atomic.AtomicInteger;

import org.apache.camel.CamelContext;
import org.apache.camel.RoutesBuilder;
import org.apache.camel.builder.AdviceWithRouteBuilder;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.test.junit4.CamelTestSupport;
import org.assertj.core.api.Assertions;
import org.junit.Test;

public class MyRouteTest extends CamelTestSupport {

  private static final String ROUTE_ID = "mytest";

  private final AtomicInteger counter = new AtomicInteger(0);

  @Override
  public RoutesBuilder createRouteBuilder() throws Exception {
    return new RouteBuilder() {

      @Override
      public void configure() throws Exception {
        from("quartz2://test?cron=0/1+*+*+*+*+?")
          .id(ROUTE_ID)
          .bean(counter, "incrementAndGet", false)
          .to("stream:out");
      }
    };
  }

  @Override
  public void setUp() throws Exception {
      super.setUp();
      final CamelContext camelContext = context();
      camelContext.getRouteDefinition(ROUTE_ID)
        .adviceWith(camelContext, new AdviceWithRouteBuilder() {
          @Override
          public void configure() throws Exception {
            replaceFromWith("direct:quartz");
            weaveAddLast().to("mock:extract");
          }
        });
  }

  @Test
  public void shouldReceive2Messages() throws InterruptedException {
    // given
    final MockEndpoint quartzMock = getMockEndpoint("mock:extract");

    // declare
    quartzMock.expectedMessageCount(2);

    // when
    template.sendBody("direct:quartz", "tick");
    template.sendBody("direct:quartz", "tick");

    // then
    quartzMock.assertIsSatisfied();
    Assertions.assertThat(counter).hasValue(2);
  }
}
{code}

Unfortunatelly, before adviceWith is invoked, quartz sends already two messages



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to