2 * Copyright (c) 2022 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package com.samsung.android.aitt;
18 import static org.junit.Assert.assertEquals;
19 import static org.junit.Assert.assertNotNull;
20 import static org.junit.Assert.assertThrows;
21 import static org.junit.Assert.fail;
22 import static org.mockito.Mockito.mock;
24 import android.content.Context;
26 import com.google.flatbuffers.FlexBuffersBuilder;
27 import com.samsung.android.aitt.internal.Definitions;
29 import org.junit.Before;
30 import org.junit.Test;
31 import org.junit.runner.RunWith;
32 import org.mockito.Mock;
33 import org.robolectric.RobolectricTestRunner;
34 import org.robolectric.annotation.Config;
36 import java.lang.reflect.Method;
37 import java.nio.ByteBuffer;
38 import java.nio.charset.StandardCharsets;
39 import java.util.EnumSet;
41 @RunWith(RobolectricTestRunner.class)
42 @Config(shadows = ShadowJniInterface.class)
43 public class AittUnitTest {
45 private final Context appContext = mock(Context.class);
47 private static final int DISCOVERY_MESSAGES_COUNT = 6;
48 private final String brokerIp = "192.168.0.1";
49 private final int port = 1803;
50 private final String topic = "aitt/test";
51 private final String message = "test message";
52 private final String aittId = "aitt";
54 ShadowJniInterface shadowJniInterface = new ShadowJniInterface();
56 private Method messageCallbackMethod;
59 public void initialize() {
61 messageCallbackMethod = Aitt.class.getDeclaredMethod("messageCallback", String.class, byte[].class);
62 messageCallbackMethod.setAccessible(true);
63 } catch (Exception e) {
64 fail("Failed to Initialize " + e);
68 private byte[] createDiscoveryMessage(int count) {
70 FlexBuffersBuilder builder = new FlexBuffersBuilder(ByteBuffer.allocate(512));
71 start = builder.startMap();
76 * "status": "connected",
77 * "host": "127.0.0.1",
84 builder.putString("status", Definitions.JOIN_NETWORK);
85 builder.putString("host", Definitions.AITT_LOCALHOST);
86 int secondStart = builder.startMap();
87 builder.putInt("port", 1000);
88 builder.putInt("protocol", Aitt.Protocol.TCP.getValue());
89 builder.endMap("aitt/topic1", secondStart);
94 * "status": "connected",
95 * "host": "127.0.0.2",
102 builder.putString("status", Definitions.JOIN_NETWORK);
103 builder.putString("host", "127.0.0.2");
104 secondStart = builder.startMap();
105 builder.putInt("port", 2000);
106 builder.putInt("protocol", Aitt.Protocol.MQTT.getValue());
107 builder.endMap("aitt/topic1", secondStart);
112 * "status": "connected",
113 * "host": "127.0.0.1",
120 builder.putString("status", Definitions.JOIN_NETWORK);
121 builder.putString("host", Definitions.AITT_LOCALHOST);
122 secondStart = builder.startMap();
123 builder.putInt("port", 2000);
124 builder.putInt("protocol", Aitt.Protocol.MQTT.getValue());
125 builder.endMap("aitt/topic2", secondStart);
130 * "status": "connected",
131 * "host": "127.0.0.1",
138 builder.putString("status", Definitions.JOIN_NETWORK);
139 builder.putString("host", Definitions.AITT_LOCALHOST);
140 secondStart = builder.startMap();
141 builder.putInt("port", 4000);
142 builder.putInt("protocol", Aitt.Protocol.TCP.getValue());
143 builder.endMap("aitt/topic2", secondStart);
148 * "status": "connected",
149 * "host": "127.0.0.1",
151 * "protocol": WEBRTC,
156 builder.putString("status", Definitions.JOIN_NETWORK);
157 builder.putString("host", Definitions.AITT_LOCALHOST);
158 secondStart = builder.startMap();
159 builder.putInt("port", 2000);
160 builder.putInt("protocol", Aitt.Protocol.WEBRTC.getValue());
161 builder.endMap("aitt/topic2", secondStart);
166 * "status": "disconnected",
167 * "host": "127.0.0.1",
174 builder.putString("status", Definitions.WILL_LEAVE_NETWORK);
175 builder.putString("host", Definitions.AITT_LOCALHOST);
176 secondStart = builder.startMap();
177 builder.putInt("port", 1000);
178 builder.putInt("protocol", Aitt.Protocol.TCP.getValue());
179 builder.endMap("aitt/topic1", secondStart);
184 builder.endMap(null, start);
185 ByteBuffer bb = builder.finish();
186 byte[] array = new byte[bb.remaining()];
187 bb.get(array, 0, array.length);
192 public void testAittConstructor_P() {
195 shadowJniInterface.setInitReturn(true);
196 Aitt aitt = new Aitt(appContext, id);
197 assertNotNull("Aitt Instance not null", aitt);
198 } catch (Exception e) {
199 fail("Failed testAittConstructor " + e);
203 @Test(expected = IllegalArgumentException.class)
204 public void testInitializeInvalidId_N() {
207 shadowJniInterface.setInitReturn(true);
208 Aitt aitt = new Aitt(appContext, _id);
210 } catch (InstantiationException e) {
211 fail("Error during testInitializeInvalidId" + e);
215 @Test(expected = IllegalArgumentException.class)
216 public void testInitializeInvalidIp_N() {
219 shadowJniInterface.setInitReturn(true);
220 Aitt aitt = new Aitt(appContext, aittId, ip, false);
222 } catch (InstantiationException e) {
223 fail("Error during testInitializeInvalidIp" + e);
227 @Test(expected = IllegalArgumentException.class)
228 public void testInitializeInvalidContext_N() {
231 shadowJniInterface.setInitReturn(true);
232 Aitt aitt = new Aitt(null, _id);
234 } catch (InstantiationException e) {
235 fail("Error during testInitializeInvalidContext" + e);
239 @Test(expected = InstantiationException.class)
240 public void testConstructorFail_N() throws InstantiationException {
241 shadowJniInterface.setInitReturn(false);
243 Aitt aitt = new Aitt(appContext, id);
248 public void testConnect_P() {
250 shadowJniInterface.setInitReturn(true);
251 Aitt aitt = new Aitt(appContext, aittId);
253 assertNotNull("Aitt Instance not null", aitt);
254 aitt.connect(brokerIp, port);
257 } catch (Exception e) {
258 fail("Failed testConnect " + e);
263 public void testConnectWithoutIP_P() {
265 shadowJniInterface.setInitReturn(true);
266 Aitt aitt = new Aitt(appContext, aittId);
268 assertNotNull("Aitt Instance not null", aitt);
272 } catch (Exception e) {
273 fail("Failed testConnectWithoutIP " + e);
278 public void testDisconnect_P() {
280 shadowJniInterface.setInitReturn(true);
281 Aitt aitt = new Aitt(appContext, aittId);
283 assertNotNull("Aitt Instance not null", aitt);
284 aitt.connect(brokerIp, port);
287 } catch (Exception e) {
288 fail("Failed testDisconnect " + e);
293 public void testPublishMqtt_P() {
295 shadowJniInterface.setInitReturn(true);
296 Aitt aitt = new Aitt(appContext, aittId);
298 assertNotNull("Aitt Instance not null", aitt);
299 aitt.connect(brokerIp, port);
301 byte[] payload = message.getBytes();
302 aitt.publish(topic, payload);
305 } catch (Exception e) {
306 fail("Failed testPublishMqtt " + e);
311 public void testPublishMqttInvalidTopic_N() {
313 shadowJniInterface.setInitReturn(true);
314 Aitt aitt = new Aitt(appContext, aittId);
315 aitt.connect(brokerIp, port);
317 byte[] payload = message.getBytes();
319 assertThrows(IllegalArgumentException.class, () -> aitt.publish(_topic, payload));
322 } catch (Exception e) {
323 fail("Failed testPublishMqttInvalidTopic" + e);
328 public void testPublishWebRTC_P() {
330 shadowJniInterface.setInitReturn(true);
331 Aitt aitt = new Aitt(appContext, aittId);
333 assertNotNull("Aitt Instance not null", aitt);
334 aitt.connect(brokerIp, port);
336 byte[] payload = message.getBytes();
337 aitt.publish(topic, payload, Aitt.Protocol.WEBRTC, Aitt.QoS.AT_MOST_ONCE, false);
340 } catch (Exception e) {
341 fail("Failed testPublishWebRTC " + e);
346 public void testPublishWebRTCInvalidTopic_N() {
348 shadowJniInterface.setInitReturn(true);
349 Aitt aitt = new Aitt(appContext, aittId);
350 aitt.connect(brokerIp, port);
352 byte[] payload = message.getBytes();
354 assertThrows(IllegalArgumentException.class, () -> aitt.publish(_topic, payload, Aitt.Protocol.WEBRTC, Aitt.QoS.AT_MOST_ONCE, false));
357 } catch (Exception e) {
358 fail("Failed testPublishWebRTCInvalidTopic" + e);
363 public void testPublishIpc_P() {
365 shadowJniInterface.setInitReturn(true);
366 Aitt aitt = new Aitt(appContext, aittId);
368 assertNotNull("Aitt Instance not null", aitt);
369 aitt.connect(brokerIp, port);
371 byte[] payload = message.getBytes();
372 aitt.publish(topic, payload, Aitt.Protocol.IPC, Aitt.QoS.AT_MOST_ONCE, false);
375 } catch (Exception e) {
376 fail("Failed testPublishIpc " + e);
381 public void testPublishIpcInvalidTopic_N() {
383 shadowJniInterface.setInitReturn(true);
384 Aitt aitt = new Aitt(appContext, aittId);
385 aitt.connect(brokerIp, port);
387 byte[] payload = message.getBytes();
389 assertThrows(IllegalArgumentException.class, () -> aitt.publish(_topic, payload, Aitt.Protocol.IPC, Aitt.QoS.AT_MOST_ONCE, false));
392 } catch (Exception e) {
393 fail("Failed testPublishIpcInvalidTopic" + e);
398 public void testPublishAnyProtocol_P() {
400 shadowJniInterface.setInitReturn(true);
401 Aitt aitt = new Aitt(appContext, aittId);
403 assertNotNull("Aitt Instance not null", aitt);
404 aitt.connect(brokerIp, port);
406 byte[] payload = message.getBytes();
407 aitt.publish(topic, payload, Aitt.Protocol.TCP, Aitt.QoS.AT_LEAST_ONCE, false);
410 } catch (Exception e) {
411 fail("Failed testPublishAnyProtocol " + e);
416 public void testPublishAnyProtocolInvalidTopic_N() {
418 shadowJniInterface.setInitReturn(true);
419 Aitt aitt = new Aitt(appContext, aittId);
420 aitt.connect(brokerIp, port);
422 byte[] payload = message.getBytes();
424 assertThrows(IllegalArgumentException.class, () -> aitt.publish(_topic, payload, Aitt.Protocol.TCP, Aitt.QoS.AT_LEAST_ONCE, false));
427 } catch (Exception e) {
428 fail("Failed testPublishAnyProtocolInvalidTopic" + e);
433 public void testPublishProtocolSet_P() {
435 shadowJniInterface.setInitReturn(true);
436 Aitt aitt = new Aitt(appContext, aittId);
438 assertNotNull("Aitt Instance not null", aitt);
439 aitt.connect(brokerIp, port);
441 byte[] payload = message.getBytes();
442 EnumSet<Aitt.Protocol> protocols = EnumSet.of(Aitt.Protocol.MQTT, Aitt.Protocol.TCP);
443 aitt.publish(topic, payload, protocols, Aitt.QoS.AT_MOST_ONCE, false);
446 } catch (Exception e) {
447 fail("Failed testPublishProtocolSet " + e);
452 public void testPublishProtocolSetInvalidTopic_N() {
454 shadowJniInterface.setInitReturn(true);
455 Aitt aitt = new Aitt(appContext, aittId);
457 assertNotNull("Aitt Instance not null", aitt);
458 aitt.connect(brokerIp, port);
460 byte[] payload = message.getBytes();
461 EnumSet<Aitt.Protocol> protocols = EnumSet.of(Aitt.Protocol.MQTT, Aitt.Protocol.TCP);
463 assertThrows(IllegalArgumentException.class, () -> aitt.publish(_topic, payload, protocols, Aitt.QoS.AT_MOST_ONCE, false));
466 } catch (Exception e) {
467 fail("Failed testPublishProtocolSetInvalidTopic " + e);
472 public void testPublishInvalidProtocol_N() {
474 shadowJniInterface.setInitReturn(true);
475 Aitt aitt = new Aitt(appContext, aittId);
476 aitt.connect(brokerIp, port);
477 byte[] payload = message.getBytes();
478 EnumSet<Aitt.Protocol> protocols = EnumSet.noneOf(Aitt.Protocol.class);
480 assertThrows(IllegalArgumentException.class, () -> aitt.publish(topic, payload, protocols, Aitt.QoS.AT_MOST_ONCE, false));
483 } catch (Exception e) {
484 fail("Failed testPublishInvalidProtocol" + e);
489 public void testSubscribeMqtt_P() {
491 shadowJniInterface.setInitReturn(true);
492 Aitt aitt = new Aitt(appContext, aittId);
494 assertNotNull("Aitt Instance not null", aitt);
495 aitt.connect(brokerIp, port);
497 aitt.subscribe(topic, message -> {
501 } catch (Exception e) {
502 fail("Failed testSubscribeMqtt " + e);
507 public void testSubscribeMqttInvalidTopic_N() {
509 shadowJniInterface.setInitReturn(true);
510 Aitt aitt = new Aitt(appContext, aittId);
511 aitt.connect(brokerIp, port);
515 assertThrows(IllegalArgumentException.class, () -> aitt.subscribe(_topic, message -> {
519 } catch (Exception e) {
520 fail("Failed testSubscribeMqttInvalidTopic " + e);
525 public void testSubscribeMqttInvalidCallback_N() {
527 shadowJniInterface.setInitReturn(true);
528 Aitt aitt = new Aitt(appContext, aittId);
530 aitt.connect(brokerIp, port);
532 assertThrows(IllegalArgumentException.class, () -> aitt.subscribe(topic, null));
535 } catch (Exception e) {
536 fail("Failed testSubscribeMqttInvalidCallback " + e);
541 public void testSubscribeTCP_P() {
543 shadowJniInterface.setInitReturn(true);
544 Aitt aitt = new Aitt(appContext, aittId);
546 assertNotNull("Aitt Instance not null", aitt);
547 aitt.connect(brokerIp, port);
549 aitt.subscribe(topic, message -> {
550 }, Aitt.Protocol.TCP);
553 } catch (Exception e) {
554 fail("Failed testSubscribeTCP " + e);
559 public void testSubscribeTcpInvalidTopic_N() {
561 shadowJniInterface.setInitReturn(true);
562 Aitt aitt = new Aitt(appContext, aittId);
563 aitt.connect(brokerIp, port);
567 assertThrows(IllegalArgumentException.class, () -> aitt.subscribe(_topic, message -> {
568 }, Aitt.Protocol.TCP));
571 } catch (Exception e) {
572 fail("Failed testSubscribeTcpInvalidTopic " + e);
577 public void testSubscribeTcpInvalidCallback_N() {
579 shadowJniInterface.setInitReturn(true);
580 Aitt aitt = new Aitt(appContext, aittId);
582 aitt.connect(brokerIp, port);
584 assertThrows(IllegalArgumentException.class, () -> aitt.subscribe(topic, null, Aitt.Protocol.TCP));
587 } catch (Exception e) {
588 fail("Failed testSubscribeTcpInvalidCallback " + e);
593 public void testSubscribeWebRTC_P() {
595 shadowJniInterface.setInitReturn(true);
596 Aitt aitt = new Aitt(appContext, aittId);
598 assertNotNull("Aitt Instance not null", aitt);
599 aitt.connect(brokerIp, port);
601 aitt.subscribe(topic, message -> {
602 }, Aitt.Protocol.WEBRTC, Aitt.QoS.AT_MOST_ONCE);
605 } catch (Exception e) {
606 fail("Failed testSubscribeWebRTC " + e);
611 public void testSubscribeWebRTCInvalidTopic_N() {
613 shadowJniInterface.setInitReturn(true);
614 Aitt aitt = new Aitt(appContext, aittId);
615 aitt.connect(brokerIp, port);
619 assertThrows(IllegalArgumentException.class, () -> aitt.subscribe(_topic, message -> {
620 }, Aitt.Protocol.WEBRTC, Aitt.QoS.AT_MOST_ONCE));
623 } catch (Exception e) {
624 fail("Failed testSubscribeWebRTCInvalidTopic " + e);
629 public void testSubscribeWebRTCInvalidCallback_N() {
631 shadowJniInterface.setInitReturn(true);
632 Aitt aitt = new Aitt(appContext, aittId);
634 aitt.connect(brokerIp, port);
636 assertThrows(IllegalArgumentException.class, () -> aitt.subscribe(topic, null, Aitt.Protocol.WEBRTC, Aitt.QoS.AT_MOST_ONCE));
639 } catch (Exception e) {
640 fail("Failed testSubscribeWebRTCInvalidCallback " + e);
645 public void testSubscribeIpc_P() {
647 shadowJniInterface.setInitReturn(true);
648 Aitt aitt = new Aitt(appContext, aittId);
650 assertNotNull("Aitt Instance not null", aitt);
651 aitt.connect(brokerIp, port);
653 aitt.subscribe(topic, message -> {
654 }, Aitt.Protocol.IPC, Aitt.QoS.AT_MOST_ONCE);
657 } catch (Exception e) {
658 fail("Failed testSubscribeIpc " + e);
663 public void testSubscribeIpcInvalidTopic_N() {
665 shadowJniInterface.setInitReturn(true);
666 Aitt aitt = new Aitt(appContext, aittId);
667 aitt.connect(brokerIp, port);
671 assertThrows(IllegalArgumentException.class, () -> aitt.subscribe(_topic, message -> {
672 }, Aitt.Protocol.IPC, Aitt.QoS.AT_MOST_ONCE));
675 } catch (Exception e) {
676 fail("Failed testSubscribeIpcInvalidTopic " + e);
681 public void testSubscribeAnyProtocol_P() {
683 shadowJniInterface.setInitReturn(true);
684 Aitt aitt = new Aitt(appContext, aittId);
686 assertNotNull("Aitt Instance not null", aitt);
687 aitt.connect(brokerIp, port);
689 aitt.subscribe(topic, message -> {
690 }, Aitt.Protocol.TCP, Aitt.QoS.AT_MOST_ONCE);
693 } catch (Exception e) {
694 fail("Failed testSubscribeAnyProtocol " + e);
699 public void testSubscribeAnyProtocolInvalidTopic_N() {
701 shadowJniInterface.setInitReturn(true);
702 Aitt aitt = new Aitt(appContext, aittId);
703 aitt.connect(brokerIp, port);
707 assertThrows(IllegalArgumentException.class, () -> aitt.subscribe(_topic, message -> {
708 }, Aitt.Protocol.TCP, Aitt.QoS.AT_MOST_ONCE));
711 } catch (Exception e) {
712 fail("Failed testSubscribeAnyProtocolInvalidTopic " + e);
717 public void testSubscribeAnyProtocolInvalidCallback_N() {
719 shadowJniInterface.setInitReturn(true);
720 Aitt aitt = new Aitt(appContext, aittId);
722 aitt.connect(brokerIp, port);
724 assertThrows(IllegalArgumentException.class, () -> aitt.subscribe(topic, null, Aitt.Protocol.TCP, Aitt.QoS.AT_MOST_ONCE));
727 } catch (Exception e) {
728 fail("Failed testSubscribeAnyProtocolInvalidCallback " + e);
733 public void testSubscribeInvalidProtocol_N() {
735 shadowJniInterface.setInitReturn(true);
736 Aitt aitt = new Aitt(appContext, aittId);
738 aitt.connect(brokerIp, port);
739 EnumSet<Aitt.Protocol> protocols = EnumSet.noneOf(Aitt.Protocol.class);
741 assertThrows(IllegalArgumentException.class, () -> aitt.subscribe(topic, message -> {
742 }, protocols, Aitt.QoS.AT_MOST_ONCE));
745 } catch (Exception e) {
746 fail("Failed testSubscribeInvalidProtocol " + e);
751 public void testSubscribeProtocolSet_P() {
753 shadowJniInterface.setInitReturn(true);
754 Aitt aitt = new Aitt(appContext, aittId);
756 assertNotNull("Aitt Instance not null", aitt);
757 aitt.connect(brokerIp, port);
759 EnumSet<Aitt.Protocol> protocols = EnumSet.of(Aitt.Protocol.MQTT, Aitt.Protocol.TCP);
760 aitt.subscribe(topic, message -> {
761 }, protocols, Aitt.QoS.EXACTLY_ONCE);
764 } catch (Exception e) {
765 fail("Failed testSubscribeProtocolSet " + e);
770 public void testSubscribeProtocolSetInvalidTopic_N() {
772 shadowJniInterface.setInitReturn(true);
773 Aitt aitt = new Aitt(appContext, aittId);
774 aitt.connect(brokerIp, port);
777 EnumSet<Aitt.Protocol> protocols = EnumSet.of(Aitt.Protocol.MQTT, Aitt.Protocol.TCP);
778 assertThrows(IllegalArgumentException.class, () -> aitt.subscribe(_topic, message -> {
779 }, protocols, Aitt.QoS.EXACTLY_ONCE));
782 } catch (Exception e) {
783 fail("Failed testSubscribeProtocolSetInvalidTopic " + e);
788 public void testSubscribeProtocolSetInvalidCallback_N() {
790 shadowJniInterface.setInitReturn(true);
791 Aitt aitt = new Aitt(appContext, aittId);
793 aitt.connect(brokerIp, port);
794 EnumSet<Aitt.Protocol> protocols = EnumSet.of(Aitt.Protocol.MQTT, Aitt.Protocol.TCP);
795 assertThrows(IllegalArgumentException.class, () -> aitt.subscribe(topic, null, protocols, Aitt.QoS.AT_MOST_ONCE));
798 } catch (Exception e) {
799 fail("Failed testSubscribeProtocolSetInvalidCallback " + e);
804 public void testUnsubscribe_P() {
806 shadowJniInterface.setInitReturn(true);
807 Aitt aitt = new Aitt(appContext, aittId);
809 assertNotNull("Aitt Instance not null", aitt);
810 aitt.connect(brokerIp, port);
812 aitt.subscribe(topic, message -> {
815 aitt.unsubscribe(topic);
817 } catch (Exception e) {
818 fail("Failed testUnsubscribe " + e);
823 public void testUnsubscribeInvalidTopic_N() {
825 shadowJniInterface.setInitReturn(true);
826 Aitt aitt = new Aitt(appContext, aittId);
828 aitt.connect(brokerIp, port);
831 assertThrows(IllegalArgumentException.class, () -> aitt.unsubscribe(_topic));
834 } catch (Exception e) {
835 fail("Failed testUnsubscribeInvalidTopic " + e);
840 public void testSetConnectionCallback_P() {
842 shadowJniInterface.setInitReturn(true);
843 Aitt aitt = new Aitt(appContext, aittId);
845 assertNotNull("Aitt Instance not null", aitt);
846 aitt.setConnectionCallback(new Aitt.ConnectionCallback() {
848 public void onConnected() {
852 public void onDisconnected() {
856 public void onConnectionFailed() {
859 aitt.connect(brokerIp, port);
862 } catch (Exception e) {
863 fail("Failed testSetConnectionCallback " + e);
868 public void testSetConnectionCallbackInvalidCallback_N() {
870 shadowJniInterface.setInitReturn(true);
871 Aitt aitt = new Aitt(appContext, aittId);
873 assertThrows(IllegalArgumentException.class, () -> aitt.setConnectionCallback(null));
875 aitt.connect(brokerIp, port);
877 } catch (Exception e) {
878 fail("Failed testSetConnectionCallbackInvalidCallback " + e);
883 public void testSubscribeMultipleCallbacks_P() {
885 shadowJniInterface.setInitReturn(true);
886 Aitt aitt = new Aitt(appContext, aittId);
888 assertNotNull("Aitt Instance not null", aitt);
889 aitt.connect(brokerIp, port);
891 Aitt.SubscribeCallback callback1 = message -> {
894 Aitt.SubscribeCallback callback2 = message -> {
897 aitt.subscribe(topic, callback1);
898 aitt.subscribe(topic, callback2);
901 } catch (Exception e) {
902 fail("Failed testSubscribeMultipleCallbacks " + e);
906 // The test covers different cases of updating the publish table
908 public void testDiscoveryMessageCallbackConnected_P() {
910 shadowJniInterface.setInitReturn(true);
911 Aitt aitt = new Aitt(appContext, aittId);
913 assertNotNull("Aitt Instance not null", aitt);
914 aitt.connect(brokerIp, port);
917 while (counter < DISCOVERY_MESSAGES_COUNT) {
918 byte[] discoveryMessage = createDiscoveryMessage(counter);
919 messageCallbackMethod.invoke(aitt, Definitions.JAVA_SPECIFIC_DISCOVERY_TOPIC, discoveryMessage);
924 } catch (Exception e) {
925 fail("Failed testDiscoveryMessageCallback " + e);
930 public void testDiscoveryMessageCallbackDisconnected_P() {
932 shadowJniInterface.setInitReturn(true);
933 Aitt aitt = new Aitt(appContext, aittId);
935 assertNotNull("Aitt Instance not null", aitt);
936 aitt.connect(brokerIp, port);
939 byte[] discoveryMessage = createDiscoveryMessage(counter);
940 messageCallbackMethod.invoke(aitt, Definitions.JAVA_SPECIFIC_DISCOVERY_TOPIC, discoveryMessage);
943 byte[] disconnectMessage = createDiscoveryMessage(counter);
944 messageCallbackMethod.invoke(aitt, Definitions.JAVA_SPECIFIC_DISCOVERY_TOPIC, disconnectMessage);
946 } catch (Exception e) {
947 fail("Failed testDiscoveryMessageCallback " + e);
952 public void testDiscoveryMessageCallbackEmptyPayload_N() {
954 shadowJniInterface.setInitReturn(true);
955 Aitt aitt = new Aitt(appContext, aittId);
957 assertNotNull("Aitt Instance not null", aitt);
958 aitt.connect(brokerIp, port);
960 byte[] discoveryMessage = new byte[0];
961 messageCallbackMethod.invoke(aitt, Definitions.JAVA_SPECIFIC_DISCOVERY_TOPIC, discoveryMessage);
964 } catch (Exception e) {
965 fail("Failed testDiscoveryMessageCallbackEmptyPayload " + e);
970 public void testSubscribeCallbackVerifyTopic_P() {
972 shadowJniInterface.setInitReturn(true);
973 Aitt aitt = new Aitt(appContext, aittId);
974 aitt.connect(brokerIp, port);
976 aitt.subscribe(topic, aittMessage -> {
977 String receivedTopic = aittMessage.getTopic();
978 assertEquals("Received topic and subscribed topic are equal", receivedTopic, topic);
981 messageCallbackMethod.invoke(aitt, topic, message.getBytes(StandardCharsets.UTF_8));
984 } catch (Exception e) {
985 fail("Failed testSubscribeCallback " + e);
990 public void testSubscribeCallbackVerifyPayload_P() {
992 shadowJniInterface.setInitReturn(true);
993 Aitt aitt = new Aitt(appContext, aittId);
994 aitt.connect(brokerIp, port);
996 aitt.subscribe(topic, aittMessage -> {
997 String receivedMessage = new String(aittMessage.getPayload(), StandardCharsets.UTF_8);
998 assertEquals("Received message and sent message are equal", message, receivedMessage);
1001 messageCallbackMethod.invoke(aitt, topic, message.getBytes(StandardCharsets.UTF_8));
1004 } catch (Exception e) {
1005 fail("Failed testSubscribeCallback " + e);