T-API notification JUnit test
[transportpce.git] / nbinotifications / src / test / java / org / opendaylight / transportpce / nbinotifications / consumer / SubscriberTest.java
index c32142f23b57e047cca5707190ddbb77b0927351..326c4ecdd9522dbdbf4edeec7c405a08b40954a6 100644 (file)
@@ -24,23 +24,29 @@ import org.opendaylight.transportpce.nbinotifications.utils.NotificationServiceD
 import org.opendaylight.transportpce.test.AbstractTest;
 import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NotificationAlarmService;
 import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NotificationProcessService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.NotificationTapiService;
 import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.get.notifications.alarm.service.output.NotificationsAlarmService;
 import org.opendaylight.yang.gen.v1.nbi.notifications.rev211013.get.notifications.process.service.output.NotificationsProcessService;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev181210.get.notification.list.output.Notification;
 
 public class SubscriberTest extends AbstractTest {
     private static final String TOPIC = "topic";
     private static final int PARTITION = 0;
     private MockConsumer<String, NotificationsProcessService> mockConsumer;
     private MockConsumer<String, NotificationsAlarmService> mockConsumerAlarm;
+    private MockConsumer<String, Notification> mockConsumerTapi;
     private Subscriber<NotificationProcessService, NotificationsProcessService> subscriberService;
     private Subscriber<NotificationAlarmService, NotificationsAlarmService> subscriberAlarmService;
+    private Subscriber<NotificationTapiService, Notification> subscriberTapiService;
 
     @Before
     public void setUp() {
         mockConsumer = new MockConsumer<>(OffsetResetStrategy.EARLIEST);
         mockConsumerAlarm = new MockConsumer<>(OffsetResetStrategy.EARLIEST);
+        mockConsumerTapi = new MockConsumer<>(OffsetResetStrategy.EARLIEST);
         subscriberService = new Subscriber<>(mockConsumer);
         subscriberAlarmService = new Subscriber<>(mockConsumerAlarm);
+        subscriberTapiService = new Subscriber<>(mockConsumerTapi);
     }
 
     @Test
@@ -82,4 +88,24 @@ public class SubscriberTest extends AbstractTest {
         assertEquals("There should be 1 record", 1, result.size());
         assertTrue("Consumer should be closed", mockConsumerAlarm.closed());
     }
+
+    @Test
+    public void subscribeTapiAlarmShouldBeSuccessful() {
+        // from https://www.baeldung.com/kafka-mockconsumer
+        ConsumerRecord<String, Notification> record = new ConsumerRecord<>(
+            TOPIC, PARTITION, 0L, "key", NotificationServiceDataUtils.buildReceivedTapiAlarmEvent());
+        mockConsumerTapi.schedulePollTask(() -> {
+            mockConsumerTapi.rebalance(Collections.singletonList(new TopicPartition(TOPIC, PARTITION)));
+            mockConsumerTapi.addRecord(record);
+        });
+
+        Map<TopicPartition, Long> startOffsets = new HashMap<>();
+        TopicPartition tp = new TopicPartition(TOPIC, PARTITION);
+        startOffsets.put(tp, 0L);
+        mockConsumerTapi.updateBeginningOffsets(startOffsets);
+        List<Notification> result = subscriberTapiService.subscribe(TOPIC,
+            NotificationTapiService.QNAME);
+        assertEquals("There should be 1 record", 1, result.size());
+        assertTrue("Consumer should be closed", mockConsumerTapi.closed());
+    }
 }