/* * Copyright © 2020 Orange, Inc. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ package org.opendaylight.transportpce.nbinotifications.producer; import static org.junit.Assert.assertEquals; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; import java.util.Map; import org.apache.kafka.clients.producer.MockProducer; import org.apache.kafka.common.serialization.StringSerializer; import org.junit.Before; import org.junit.Test; import org.opendaylight.transportpce.common.converter.JsonStringConverter; import org.opendaylight.transportpce.nbinotifications.serialization.ConfigConstants; import org.opendaylight.transportpce.nbinotifications.serialization.NotificationAlarmServiceSerializer; import org.opendaylight.transportpce.nbinotifications.serialization.NotificationServiceSerializer; 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.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.codec.gson.JSONCodecFactorySupplier; public class PublisherTest extends AbstractTest { private JsonStringConverter converterService; private JsonStringConverter converterAlarm; private Publisher publisherService; private Publisher publisherAlarm; private MockProducer mockProducer; private MockProducer mockAlarmProducer; @Before public void setUp() { converterService = new JsonStringConverter<>(getDataStoreContextUtil().getBindingDOMCodecServices()); converterAlarm = new JsonStringConverter<>(getDataStoreContextUtil().getBindingDOMCodecServices()); NotificationServiceSerializer serializerService = new NotificationServiceSerializer(); NotificationAlarmServiceSerializer serializerAlarm = new NotificationAlarmServiceSerializer(); Map properties = Map.of(ConfigConstants.CONVERTER, converterService); Map propertiesAlarm = Map.of(ConfigConstants.CONVERTER, converterAlarm); serializerService.configure(properties, false); serializerAlarm.configure(propertiesAlarm, false); mockProducer = new MockProducer<>(true, new StringSerializer(), serializerService); mockAlarmProducer = new MockProducer<>(true, new StringSerializer(), serializerAlarm); publisherService = new Publisher<>("test", mockProducer); publisherAlarm = new Publisher<>("test", mockAlarmProducer); } @Test public void sendEventServiceShouldBeSuccessful() throws IOException { String json = Files.readString(Paths.get("src/test/resources/event.json")); NotificationProcessService notificationProcessService = converterService .createDataObjectFromJsonString(YangInstanceIdentifier.of(NotificationProcessService.QNAME), json, JSONCodecFactorySupplier.RFC7951); publisherService.sendEvent(notificationProcessService, notificationProcessService.getConnectionType().name()); assertEquals("We should have one message", 1, mockProducer.history().size()); assertEquals("Key should be test", "test", mockProducer.history().get(0).key()); } @Test public void sendEventAlarmShouldBeSuccessful() throws IOException { String json = Files.readString(Paths.get("src/test/resources/event_alarm_service.json")); NotificationAlarmService notificationAlarmService = converterAlarm .createDataObjectFromJsonString(YangInstanceIdentifier.of(NotificationAlarmService.QNAME), json, JSONCodecFactorySupplier.RFC7951); publisherAlarm.sendEvent(notificationAlarmService, "alarm" + notificationAlarmService.getConnectionType().getName()); assertEquals("We should have one message", 1, mockAlarmProducer.history().size()); assertEquals("Key should be test", "test", mockAlarmProducer.history().get(0).key()); } }