1 /** 2 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. 3 * SPDX-License-Identifier: Apache-2.0. 4 */ 5 6 package software.amazon.awssdk.crt.test; 7 8 import org.junit.Assume; 9 import org.junit.Test; 10 import static org.junit.Assert.assertEquals; 11 import static org.junit.Assert.fail; 12 13 import software.amazon.awssdk.crt.io.TlsContext; 14 import software.amazon.awssdk.crt.io.TlsContextOptions; 15 import software.amazon.awssdk.crt.mqtt.MqttMessage; 16 import software.amazon.awssdk.crt.mqtt.QualityOfService; 17 18 import java.util.UUID; 19 import java.util.concurrent.CompletableFuture; 20 import java.util.function.*; 21 22 public class IotServiceTest extends MqttClientConnectionFixture { IotServiceTest()23 public IotServiceTest() { 24 } 25 26 static final String TEST_TOPIC = "sdk/test/java/" + UUID.randomUUID().toString(); 27 int subsAcked = 0; 28 29 @Test testIotService()30 public void testIotService() { 31 skipIfNetworkUnavailable(); 32 Assume.assumeTrue(AWS_TEST_MQTT311_IOT_CORE_HOST != null); 33 Assume.assumeTrue(AWS_TEST_MQTT311_IOT_CORE_RSA_CERT != null); 34 Assume.assumeTrue(AWS_TEST_MQTT311_IOT_CORE_RSA_KEY != null); 35 Consumer<MqttMessage> messageHandler = (message) -> {}; 36 int port = 8883; 37 38 try (TlsContextOptions contextOptions = TlsContextOptions.createWithMtlsFromPath( 39 AWS_TEST_MQTT311_IOT_CORE_RSA_CERT, 40 AWS_TEST_MQTT311_IOT_CORE_RSA_KEY);) 41 { 42 try (TlsContext context = new TlsContext(contextOptions);) 43 { 44 connectDirectWithConfig( 45 context, 46 AWS_TEST_MQTT311_IOT_CORE_HOST, 47 port, 48 null, 49 null, 50 null); 51 52 CompletableFuture<Integer> subscribed = connection.subscribe(TEST_TOPIC, QualityOfService.AT_LEAST_ONCE, messageHandler); 53 subscribed.thenApply(packetId -> subsAcked++); 54 subscribed.get(); 55 56 assertEquals("Single subscription", 1, subsAcked); 57 58 CompletableFuture<Integer> unsubscribed = connection.unsubscribe(TEST_TOPIC); 59 unsubscribed.thenApply(packetId -> subsAcked--); 60 unsubscribed.get(); 61 62 assertEquals("No Subscriptions", 0, subsAcked); 63 64 disconnect(); 65 close(); 66 } 67 catch (Exception ex) 68 { 69 fail(ex.getMessage()); 70 } 71 } 72 } 73 }; 74