List of usage examples for org.springframework.integration.mqtt.outbound MqttPahoMessageHandler MqttPahoMessageHandler
public MqttPahoMessageHandler(String url, String clientId, MqttPahoClientFactory clientFactory)
From source file:org.springframework.integration.mqtt.MqttAdapterTests.java
@Test public void testOutboundOptionsApplied() throws Exception { DefaultMqttPahoClientFactory factory = new DefaultMqttPahoClientFactory(); factory.setCleanSession(false);/*from ww w. j ava2s. co m*/ factory.setConnectionTimeout(23); factory.setKeepAliveInterval(45); factory.setPassword("pass"); MemoryPersistence persistence = new MemoryPersistence(); factory.setPersistence(persistence); final SocketFactory socketFactory = mock(SocketFactory.class); factory.setSocketFactory(socketFactory); final Properties props = new Properties(); factory.setSslProperties(props); factory.setUserName("user"); Will will = new Will("foo", "bar".getBytes(), 2, true); factory.setWill(will); factory = spy(factory); final MqttAsyncClient client = mock(MqttAsyncClient.class); willAnswer(invocation -> client).given(factory).getAsyncClientInstance(anyString(), anyString()); MqttPahoMessageHandler handler = new MqttPahoMessageHandler("foo", "bar", factory); handler.setDefaultTopic("mqtt-foo"); handler.setBeanFactory(mock(BeanFactory.class)); handler.afterPropertiesSet(); handler.start(); final MqttToken token = mock(MqttToken.class); final AtomicBoolean connectCalled = new AtomicBoolean(); willAnswer(invocation -> { MqttConnectOptions options = invocation.getArgument(0); assertEquals(23, options.getConnectionTimeout()); assertEquals(45, options.getKeepAliveInterval()); assertEquals("pass", new String(options.getPassword())); assertSame(socketFactory, options.getSocketFactory()); assertSame(props, options.getSSLProperties()); assertEquals("user", options.getUserName()); assertEquals("foo", options.getWillDestination()); assertEquals("bar", new String(options.getWillMessage().getPayload())); assertEquals(2, options.getWillMessage().getQos()); connectCalled.set(true); return token; }).given(client).connect(any(MqttConnectOptions.class)); willReturn(token).given(client).subscribe(any(String[].class), any(int[].class)); final MqttDeliveryToken deliveryToken = mock(MqttDeliveryToken.class); final AtomicBoolean publishCalled = new AtomicBoolean(); willAnswer(invocation -> { assertEquals("mqtt-foo", invocation.getArguments()[0]); MqttMessage message = invocation.getArgument(1); assertEquals("Hello, world!", new String(message.getPayload())); publishCalled.set(true); return deliveryToken; }).given(client).publish(anyString(), any(MqttMessage.class)); handler.handleMessage(new GenericMessage<String>("Hello, world!")); verify(client, times(1)).connect(any(MqttConnectOptions.class)); assertTrue(connectCalled.get()); }