use of com.adaptris.core.StandardWorkflow in project interlok by adaptris.
the class EmbeddedHttpConsumerTest method testChannelStarted_MultipleWorkflows_OneWorkflowStopped.
@Test
public void testChannelStarted_MultipleWorkflows_OneWorkflowStopped() throws Exception {
EmbeddedJettyHelper helper = new EmbeddedJettyHelper();
helper.startServer();
JettyMessageConsumer consumer1 = JettyHelper.createConsumer(URL_TO_POST_TO);
StandardWorkflow workflow1 = new StandardWorkflow();
workflow1.setConsumer(consumer1);
workflow1.getServiceCollection().add(new StandaloneProducer(new StandardResponseProducer(HttpStatus.OK_200)));
Channel channel = JettyHelper.createChannel(new EmbeddedConnection(), workflow1);
JettyMessageConsumer consumer2 = JettyHelper.createConsumer("/some/other/urlmapping/");
StandardWorkflow workflow2 = new StandardWorkflow();
workflow2.setConsumer(consumer2);
workflow2.getServiceCollection().add(new StandaloneProducer(new StandardResponseProducer(HttpStatus.OK_200)));
channel.getWorkflowList().add(workflow2);
try {
channel.requestStart();
AdaptrisMessage msg1 = AdaptrisMessageFactory.getDefaultInstance().newMessage(XML_PAYLOAD);
msg1.addMetadata(CONTENT_TYPE_METADATA_KEY, "text/xml");
httpProducer.setUrl(helper.createProduceDestination());
start(httpProducer);
AdaptrisMessage reply = httpProducer.request(msg1);
assertEquals("200", reply.getMetadataValue(CoreConstants.HTTP_PRODUCER_RESPONSE_CODE));
workflow2.requestClose();
// Stopping Workflow 2 means nothing, workflow1 should still be working!
AdaptrisMessage msg2 = AdaptrisMessageFactory.getDefaultInstance().newMessage(XML_PAYLOAD);
msg1.addMetadata(CONTENT_TYPE_METADATA_KEY, "text/xml");
AdaptrisMessage reply2 = httpProducer.request(msg2);
assertEquals("200", reply2.getMetadataValue(CoreConstants.HTTP_PRODUCER_RESPONSE_CODE));
} finally {
stop(httpProducer);
channel.requestClose();
helper.stopServer();
}
}
use of com.adaptris.core.StandardWorkflow in project interlok by adaptris.
the class RetryFromJettyTest method testRetry_WrongMethod.
@Test
public void testRetry_WrongMethod() throws Exception {
RetryFromJetty retrier = create();
StandardWorkflow workflow = createWorkflow();
try {
MockMessageProducer workflowProducer = (MockMessageProducer) workflow.getProducer();
retrier.addWorkflow(workflow);
retrier.addWorkflow(createWorkflow());
start(workflow, retrier);
AdaptrisMessage baseMsg = AdaptrisMessageFactory.getDefaultInstance().newMessage();
baseMsg.addMetadata(Workflow.WORKFLOW_ID_KEY, workflow.obtainWorkflowId());
retryStore.write(baseMsg);
assertNotNull(retryStore.getMetadata(baseMsg.getUniqueId()));
// This should result in a route condition that doesn't match POST + the msgId so 400 is
// expected
String url = jettyHelper.buildUrl(RetryFromJetty.DEFAULT_ENDPOINT_PREFIX + baseMsg.getUniqueId());
StandardHttpProducer http = buildProducer(url);
http.setIgnoreServerResponseCode(true);
http.setMethodProvider(new ConfiguredRequestMethodProvider(RequestMethodProvider.RequestMethod.GET));
AdaptrisMessage triggerMsg = AdaptrisMessageFactory.getDefaultInstance().newMessage();
ExampleServiceCase.execute(new StandaloneRequestor(http), triggerMsg);
assertEquals(RetryFromJetty.HTTP_BAD, triggerMsg.getMetadataValue(CoreConstants.HTTP_PRODUCER_RESPONSE_CODE));
} finally {
stop(retrier, workflow);
}
}
use of com.adaptris.core.StandardWorkflow in project interlok by adaptris.
the class RetryFromJettyTest method testRetry.
@Test
public void testRetry() throws Exception {
RetryFromJetty retrier = create();
StandardWorkflow workflow = createWorkflow();
try {
MockMessageProducer workflowProducer = (MockMessageProducer) workflow.getProducer();
retrier.addWorkflow(workflow);
retrier.addWorkflow(createWorkflow());
start(workflow, retrier);
AdaptrisMessage baseMsg = AdaptrisMessageFactory.getDefaultInstance().newMessage();
baseMsg.addMetadata(Workflow.WORKFLOW_ID_KEY, workflow.obtainWorkflowId());
retryStore.write(baseMsg);
assertNotNull(retryStore.getMetadata(baseMsg.getUniqueId()));
String url = jettyHelper.buildUrl(RetryFromJetty.DEFAULT_ENDPOINT_PREFIX + baseMsg.getUniqueId());
StandardHttpProducer http = buildProducer(url);
AdaptrisMessage triggerMsg = AdaptrisMessageFactory.getDefaultInstance().newMessage();
ExampleServiceCase.execute(new StandaloneRequestor(http), triggerMsg);
assertEquals(RetryFromJetty.HTTP_ACCEPTED, triggerMsg.getMetadataValue(CoreConstants.HTTP_PRODUCER_RESPONSE_CODE));
// This should trigger the workflow, so we should wait for the message
await().atMost(Duration.ofSeconds(1)).with().pollInterval(Duration.ofMillis(100)).until(workflowProducer::messageCount, greaterThanOrEqualTo(1));
assertEquals(1, workflowProducer.messageCount());
} finally {
stop(retrier, workflow);
}
}
use of com.adaptris.core.StandardWorkflow in project interlok by adaptris.
the class MessageMetricsWorkflowTest method retrieveObjectForSampleConfig.
@Override
protected Object retrieveObjectForSampleConfig() {
Channel c = new Channel();
StandardWorkflow wf = new StandardWorkflow();
wf.setUniqueId("MyWorkflowName");
MessageMetricsInterceptor ti = new MessageMetricsInterceptor();
ti.setUniqueId("Metrics_For_MyWorkflowName");
ti.setTimesliceDuration(new TimeInterval(60L, TimeUnit.SECONDS));
wf.addInterceptor(ti);
c.setUniqueId(UUID.randomUUID().toString());
wf.setUniqueId(UUID.randomUUID().toString());
c.getWorkflowList().add(wf);
return c;
}
use of com.adaptris.core.StandardWorkflow in project interlok by adaptris.
the class MultipleInterceptorWorkflowTest method retrieveObjectForSampleConfig.
@Override
protected Object retrieveObjectForSampleConfig() {
Channel c = new Channel();
StandardWorkflow wf = new StandardWorkflow();
wf.setUniqueId("MyWorkflowName");
MessageMetricsInterceptor ti = new MessageMetricsInterceptor();
ti.setUniqueId("Metrics_For_MyWorkflowName");
ti.setTimesliceDuration(new TimeInterval(60L, TimeUnit.SECONDS));
wf.addInterceptor(ti);
ThrottlingInterceptor ti2 = new ThrottlingInterceptor();
ti2.setMaximumMessages(60);
ti2.setCacheName("60msgsPerMinute");
ti2.setTimeSliceInterval(new TimeInterval(1L, TimeUnit.MINUTES.name()));
wf.addInterceptor(ti2);
c.setUniqueId(UUID.randomUUID().toString());
wf.setUniqueId(UUID.randomUUID().toString());
c.getWorkflowList().add(wf);
return c;
}
Aggregations