@Test public void testGetQueueWithCustomConfiguration() { when(configuration.getIntProperty(eq("workflow.event.queues.sqs.batchSize"), anyInt())).thenReturn(10); when(configuration.getIntProperty(eq("workflow.event.queues.sqs.pollTimeInMS"), anyInt())).thenReturn(50); when(configuration.getIntProperty(eq("workflow.event.queues.sqs.visibilityTimeoutInSeconds"), anyInt())).thenReturn(30); ListQueuesResult listQueuesResult = new ListQueuesResult().withQueueUrls("test_queue_1"); when(amazonSQSClient.listQueues(any(ListQueuesRequest.class))).thenReturn(listQueuesResult); SQSEventQueueProvider sqsEventQueueProvider = new SQSEventQueueProvider(amazonSQSClient, configuration); SQSObservableQueue sqsObservableQueue = (SQSObservableQueue) sqsEventQueueProvider.getQueue("test_queue_1"); assertNotNull(sqsObservableQueue); assertEquals(10, sqsObservableQueue.getBatchSize()); assertEquals(50, sqsObservableQueue.getPollTimeInMS()); assertEquals(30, sqsObservableQueue.getVisibilityTimeoutInSeconds()); }
public ListQueuesResult unmarshall(StaxUnmarshallerContext context) throws Exception { ListQueuesResult listQueuesResult = new ListQueuesResult(); int originalDepth = context.getCurrentDepth(); int targetDepth = originalDepth + 1; if (context.isStartOfDocument()) targetDepth += 2; while (true) { XMLEvent xmlEvent = context.nextEvent(); if (xmlEvent.isEndDocument()) return listQueuesResult; if (xmlEvent.isAttribute() || xmlEvent.isStartElement()) { if (context.testExpression("QueueUrl", targetDepth)) { listQueuesResult.withQueueUrls(StringStaxUnmarshaller.getInstance().unmarshall(context)); continue; } } else if (xmlEvent.isEndElement()) { if (context.getCurrentDepth() < originalDepth) { return listQueuesResult; } } } }
@Test public void testGetQueueWithDefaultConfiguration() { when(configuration.getIntProperty(anyString(), anyInt())).thenAnswer(invocation -> invocation.getArguments()[1]); ListQueuesResult listQueuesResult = new ListQueuesResult().withQueueUrls("test_queue_1"); when(amazonSQSClient.listQueues(any(ListQueuesRequest.class))).thenReturn(listQueuesResult); SQSEventQueueProvider sqsEventQueueProvider = new SQSEventQueueProvider(amazonSQSClient, configuration); SQSObservableQueue sqsObservableQueue = (SQSObservableQueue) sqsEventQueueProvider.getQueue("test_queue_1"); assertNotNull(sqsObservableQueue); assertEquals(1, sqsObservableQueue.getBatchSize()); assertEquals(100, sqsObservableQueue.getPollTimeInMS()); assertEquals(60, sqsObservableQueue.getVisibilityTimeoutInSeconds()); }
@Test public void testException() { com.amazonaws.services.sqs.model.Message message = new com.amazonaws.services.sqs.model.Message().withMessageId("test") .withBody("") .withReceiptHandle("receiptHandle"); Answer<?> answer = (Answer<ReceiveMessageResult>) invocation -> new ReceiveMessageResult(); AmazonSQSClient client = mock(AmazonSQSClient.class); when(client.listQueues(any(ListQueuesRequest.class))).thenReturn(new ListQueuesResult().withQueueUrls("junit_queue_url")); when(client.receiveMessage(any(ReceiveMessageRequest.class))).thenThrow(new RuntimeException("Error in SQS communication")) .thenReturn(new ReceiveMessageResult().withMessages(message)) .thenAnswer(answer); SQSObservableQueue queue = new SQSObservableQueue.Builder() .withQueueName("junit") .withClient(client).build(); List<Message> found = new LinkedList<>(); Observable<Message> observable = queue.observe(); assertNotNull(observable); observable.subscribe(found::add); Uninterruptibles.sleepUninterruptibly(1000, TimeUnit.MILLISECONDS); assertEquals(1, found.size()); } }
public ListQueuesResult unmarshall(StaxUnmarshallerContext context) throws Exception { ListQueuesResult listQueuesResult = new ListQueuesResult(); int originalDepth = context.getCurrentDepth(); int targetDepth = originalDepth + 1; if (context.isStartOfDocument()) targetDepth += 2; while (true) { int xmlEvent = context.nextEvent(); if (xmlEvent == XmlPullParser.END_DOCUMENT) break; if (xmlEvent == XmlPullParser.START_TAG) { if (context.testExpression("QueueUrl", targetDepth)) { listQueuesResult.withQueueUrls(StringStaxUnmarshaller.getInstance().unmarshall( context)); continue; } } else if (xmlEvent == XmlPullParser.END_TAG) { if (context.getCurrentDepth() < originalDepth) { break; } } } return listQueuesResult; }
public ListQueuesResult unmarshall(StaxUnmarshallerContext context) throws Exception { ListQueuesResult listQueuesResult = new ListQueuesResult(); int originalDepth = context.getCurrentDepth(); int targetDepth = originalDepth + 1; if (context.isStartOfDocument()) targetDepth += 2; while (true) { XMLEvent xmlEvent = context.nextEvent(); if (xmlEvent.isEndDocument()) return listQueuesResult; if (xmlEvent.isAttribute() || xmlEvent.isStartElement()) { if (context.testExpression("QueueUrl", targetDepth)) { listQueuesResult.withQueueUrls(StringStaxUnmarshaller.getInstance().unmarshall(context)); continue; } } else if (xmlEvent.isEndElement()) { if (context.getCurrentDepth() < originalDepth) { return listQueuesResult; } } } }
public ListQueuesResult unmarshall(StaxUnmarshallerContext context) throws Exception { ListQueuesResult listQueuesResult = new ListQueuesResult(); int originalDepth = context.getCurrentDepth(); int targetDepth = originalDepth + 1; if (context.isStartOfDocument()) targetDepth += 2; while (true) { int xmlEvent = context.nextEvent(); if (xmlEvent == XmlPullParser.END_DOCUMENT) break; if (xmlEvent == XmlPullParser.START_TAG) { if (context.testExpression("QueueUrl", targetDepth)) { listQueuesResult.withQueueUrls(StringStaxUnmarshaller.getInstance().unmarshall( context)); continue; } } else if (xmlEvent == XmlPullParser.END_TAG) { if (context.getCurrentDepth() < originalDepth) { break; } } } return listQueuesResult; }