package org.opendaylight.netconf.mdsal.notification.impl;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
+import static org.junit.Assert.assertThrows;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;
-import com.google.common.collect.Lists;
import java.text.SimpleDateFormat;
import java.time.Instant;
import java.time.format.DateTimeParseException;
-import java.util.ArrayList;
import java.util.Date;
-import java.util.Iterator;
-import org.junit.Assert;
+import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.junit.MockitoJUnitRunner;
import org.opendaylight.mdsal.binding.dom.codec.impl.di.DefaultBindingDOMCodecFactory;
import org.opendaylight.mdsal.binding.generator.impl.DefaultBindingRuntimeGenerator;
+import org.opendaylight.netconf.api.messages.NotificationMessage;
import org.opendaylight.netconf.api.xml.XmlUtil;
import org.opendaylight.netconf.notifications.BaseNotificationPublisherRegistration;
-import org.opendaylight.netconf.notifications.NetconfNotification;
import org.opendaylight.netconf.notifications.NetconfNotificationCollector;
import org.opendaylight.netconf.notifications.NetconfNotificationListener;
-import org.opendaylight.netconf.notifications.NotificationListenerRegistration;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netconf.notification._1._0.rev080714.StreamNameType;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netmod.notification.rev080714.netconf.streams.Stream;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netmod.notification.rev080714.netconf.streams.StreamBuilder;
@Test
public void testEventTime() throws Exception {
//Testing values with SimpleDateFormat
- final ArrayList<String> checkWith = Lists.newArrayList(
+ final var iterator = List.of(
"2001-07-04T12:08:56.235-07:00",
"2015-10-23T09:42:27.671+00:00",
"1970-01-01T17:17:22.229+00:00",
"1937-01-01T23:59:59.870+00:20",
"1990-12-31T23:59:59.000+00:00",
"2015-10-23T23:59:59.200+00:00",
- "1985-04-12T23:59:59.520+00:00");
- final Iterator<String> iterator = checkWith.iterator();
+ "1985-04-12T23:59:59.520+00:00").iterator();
// Testing correct values
- for (final String time : Lists.newArrayList(
+ for (final String time : List.of(
"2001-07-04T12:08:56.235-07:00",
"2015-10-23T09:42:27.67175+00:00",
"1970-01-01T17:17:22.229568+00:00",
"2015-10-23T23:59:60.20001Z",
"1985-04-12T23:59:60.52Z"
)) {
- try {
- final Date apply = NetconfNotification.RFC3339_DATE_PARSER.apply(time);
- final Date parse =
- new SimpleDateFormat(RFC3339_DATE_FORMAT_WITH_MILLIS_BLUEPRINT).parse(iterator.next());
- assertEquals(parse.getTime(), apply.getTime());
- // Testing that we're consistent from formatting to parsing.
- final String dateString = NetconfNotification.RFC3339_DATE_FORMATTER.apply(apply);
- final Date date1 = NetconfNotification.RFC3339_DATE_PARSER.apply(dateString);
- final String dateString1 = NetconfNotification.RFC3339_DATE_FORMATTER.apply(date1);
- Assert.assertEquals(apply, date1);
- Assert.assertEquals(dateString, dateString1);
- } catch (final DateTimeParseException e) {
- fail("Failed to parse time value = " + time + " " + e);
- throw e;
- }
+ final var apply = NotificationMessage.RFC3339_DATE_PARSER.apply(time);
+ final var parse = new SimpleDateFormat(RFC3339_DATE_FORMAT_WITH_MILLIS_BLUEPRINT).parse(iterator.next());
+ assertEquals(parse, Date.from(apply));
+ // Testing that we're consistent from formatting to parsing.
+ final String dateString = NotificationMessage.RFC3339_DATE_FORMATTER.apply(apply);
+ final var date1 = NotificationMessage.RFC3339_DATE_PARSER.apply(dateString);
+ final String dateString1 = NotificationMessage.RFC3339_DATE_FORMATTER.apply(date1);
+ assertEquals(apply, date1);
+ assertEquals(dateString, dateString1);
}
// Testing that we're consistent from formatting to parsing.
- final Date date0 = Date.from(Instant.ofEpochMilli(0));
- final String dateString0 = NetconfNotification.RFC3339_DATE_FORMATTER.apply(date0);
- final Date date1 = NetconfNotification.RFC3339_DATE_PARSER.apply(dateString0);
- final String dateString1 = NetconfNotification.RFC3339_DATE_FORMATTER.apply(date1);
- Assert.assertEquals(date0, date1);
- Assert.assertEquals(dateString0, dateString1);
+ final var date0 = Instant.ofEpochMilli(0);
+ final String dateString0 = NotificationMessage.RFC3339_DATE_FORMATTER.apply(date0);
+ final var date1 = NotificationMessage.RFC3339_DATE_PARSER.apply(dateString0);
+ final String dateString1 = NotificationMessage.RFC3339_DATE_FORMATTER.apply(date1);
+ assertEquals(date0, date1);
+ assertEquals(dateString0, dateString1);
// Testing wrong values
- for (final String time : Lists.newArrayList(
+ for (final String time : List.of(
"0",
"205-10-23T09:42:27.67175+00:00",
"1970-01-01T17:60:22.229568+00:00",
"1937-01-01T32:00:27.87+00:20",
"2060-13-31T15:59:90-08:00",
- "1990-12-31T23:58:60Z"
- )) {
- try {
- NetconfNotification.RFC3339_DATE_PARSER.apply(time);
- } catch (final DateTimeParseException e) {
- continue;
- }
- fail("Should have thrown an exception; value= " + time);
+ "1990-12-31T23:58:60Z")) {
+ assertThrows(DateTimeParseException.class, () -> NotificationMessage.RFC3339_DATE_PARSER.apply(time));
}
}
final NetconfCapabilityChangeBuilder capabilityChangedBuilder = new NetconfCapabilityChangeBuilder();
final NetconfNotificationListener listener = mock(NetconfNotificationListener.class);
- doNothing().when(listener).onNotification(any(StreamNameType.class), any(NetconfNotification.class));
- final NotificationListenerRegistration notificationListenerRegistration = netconfNotificationManager
- .registerNotificationListener(NetconfNotificationManager.BASE_NETCONF_STREAM.getName(), listener);
+ doNothing().when(listener).onNotification(any(StreamNameType.class), any(NotificationMessage.class));
+
final NetconfCapabilityChange notification = capabilityChangedBuilder.build();
- baseNotificationPublisherRegistration.onCapabilityChanged(notification);
- verify(listener).onNotification(any(StreamNameType.class), any(NetconfNotification.class));
+ try (var reg = netconfNotificationManager.registerNotificationListener(
+ NetconfNotificationManager.BASE_NETCONF_STREAM.getName(), listener)) {
+ baseNotificationPublisherRegistration.onCapabilityChanged(notification);
- notificationListenerRegistration.close();
+ verify(listener).onNotification(any(StreamNameType.class), any(NotificationMessage.class));
+ }
baseNotificationPublisherRegistration.onCapabilityChanged(notification);
verifyNoMoreInteractions(listener);
final NetconfNotificationListener listener = mock(NetconfNotificationListener.class);
netconfNotificationManager.registerNotificationListener(testStream.getName(), listener);
- doNothing().when(listener).onNotification(eq(testStreamName), any(NetconfNotification.class));
+ doNothing().when(listener).onNotification(eq(testStreamName), any(NotificationMessage.class));
- final NetconfNotification notification = new NetconfNotification(
+ final NotificationMessage notification = new NotificationMessage(
XmlUtil.readXmlToDocument("<notification/>"));
netconfNotificationManager.onNotification(testStream.getName(), notification);
verify(streamListener).onStreamUnregistered(NetconfNotificationManager.BASE_NETCONF_STREAM.getName());
- try {
- baseNotificationPublisherRegistration.onCapabilityChanged(new NetconfCapabilityChangeBuilder().build());
- } catch (final IllegalStateException e) {
- // Exception should be thrown after manager is closed
- return;
- }
-
- fail("Publishing into a closed manager should fail");
+ final var change = new NetconfCapabilityChangeBuilder().build();
+ assertThrows(IllegalStateException.class,
+ () -> baseNotificationPublisherRegistration.onCapabilityChanged(change));
}
@Test