Search in sources :

Example 16 with DOMNotification

use of org.opendaylight.mdsal.dom.api.DOMNotification in project netconf by opendaylight.

the class SchemalessMessageTransformerTest method toNotification.

@Test
public void toNotification() throws Exception {
    final Document payload = XmlUtil.readXmlToDocument(getClass().getResourceAsStream("/notification-payload.xml"));
    final NetconfMessage netconfMessage = new NetconfMessage(payload);
    final DOMNotification domNotification = transformer.toNotification(netconfMessage);
    assertEquals(domNotification.getType().lastNodeIdentifier(), SchemalessMessageTransformer.SCHEMALESS_NOTIFICATION_PAYLOAD.getNodeType());
    final QName qName = QName.create("org:opendaylight:notification:test:ns:yang:user-notification", "user-visited-page");
    final DOMSourceAnyxmlNode dataContainerChild = (DOMSourceAnyxmlNode) domNotification.getBody().findChildByArg(new NodeIdentifier(qName)).get();
    final Diff diff = XMLUnit.compareXML(payload, dataContainerChild.body().getNode().getOwnerDocument());
    assertTrue(diff.toString(), diff.similar());
}
Also used : DOMSourceAnyxmlNode(org.opendaylight.yangtools.yang.data.api.schema.DOMSourceAnyxmlNode) DOMNotification(org.opendaylight.mdsal.dom.api.DOMNotification) Diff(org.custommonkey.xmlunit.Diff) NetconfMessage(org.opendaylight.netconf.api.NetconfMessage) QName(org.opendaylight.yangtools.yang.common.QName) NodeIdentifier(org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier) Document(org.w3c.dom.Document) Test(org.junit.Test)

Example 17 with DOMNotification

use of org.opendaylight.mdsal.dom.api.DOMNotification in project netconf by opendaylight.

the class NotificationListenerTest method notifi_leafTest.

@Test
public void notifi_leafTest() {
    final Absolute schemaPathNotifi = Absolute.of(QName.create(MODULE, "notifi-leaf"));
    final DOMNotification notificationData = mock(DOMNotification.class);
    final LeafNode<String> leaf = mockLeaf(QName.create(MODULE, "lf"));
    final ContainerNode notifiBody = mockCont(schemaPathNotifi.lastNodeIdentifier(), leaf);
    when(notificationData.getType()).thenReturn(schemaPathNotifi);
    when(notificationData.getBody()).thenReturn(notifiBody);
    final String result = prepareJson(notificationData, schemaPathNotifi);
    assertTrue(result.contains("ietf-restconf:notification"));
    assertTrue(result.contains("event-time"));
    assertTrue(result.contains("notifi-module:notifi-leaf"));
    assertTrue(result.contains("lf" + '"' + ":" + '"' + "value"));
}
Also used : DOMNotification(org.opendaylight.mdsal.dom.api.DOMNotification) ContainerNode(org.opendaylight.yangtools.yang.data.api.schema.ContainerNode) Absolute(org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute) Test(org.junit.Test)

Example 18 with DOMNotification

use of org.opendaylight.mdsal.dom.api.DOMNotification in project netconf by opendaylight.

the class NotificationListenerTest method notifi_list_Test.

@Test
public void notifi_list_Test() {
    final Absolute schemaPathNotifi = Absolute.of(QName.create(MODULE, "notifi-list"));
    final ContainerNode notifiBody = mockCont(schemaPathNotifi.lastNodeIdentifier(), ImmutableNodes.mapNodeBuilder().withNodeIdentifier(NodeIdentifier.create(QName.create(MODULE, "lst"))).withChild(mockMapEntry(QName.create(MODULE, "lst"), mockLeaf(QName.create(MODULE, "lf")))).build());
    final DOMNotification notificationData = mock(DOMNotification.class);
    when(notificationData.getType()).thenReturn(schemaPathNotifi);
    when(notificationData.getBody()).thenReturn(notifiBody);
    final String result = prepareJson(notificationData, schemaPathNotifi);
    assertTrue(result.contains("ietf-restconf:notification"));
    assertTrue(result.contains("event-time"));
    assertTrue(result.contains("notifi-module:notifi-list"));
    assertTrue(result.contains("lst"));
    assertTrue(result.contains("lf" + '"' + ":" + '"' + "value"));
}
Also used : DOMNotification(org.opendaylight.mdsal.dom.api.DOMNotification) ContainerNode(org.opendaylight.yangtools.yang.data.api.schema.ContainerNode) Absolute(org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute) Test(org.junit.Test)

Example 19 with DOMNotification

use of org.opendaylight.mdsal.dom.api.DOMNotification in project netconf by opendaylight.

the class XmlNotificationListenerTest method notifi_list_Test.

@Test
public void notifi_list_Test() throws Exception {
    final Absolute schemaPathNotifi = Absolute.of(QName.create(MODULE, "notifi-list"));
    final DOMNotification notificationData = mock(DOMNotification.class);
    final LeafNode<String> leaf = mockLeaf(QName.create(MODULE, "lf"));
    final MapEntryNode entry = mockMapEntry(QName.create(MODULE, "lst"), leaf);
    final ContainerNode notifiBody = mockCont(schemaPathNotifi.lastNodeIdentifier(), Builders.mapBuilder().withNodeIdentifier(NodeIdentifier.create(QName.create(MODULE, "lst"))).withChild(entry).build());
    when(notificationData.getType()).thenReturn(schemaPathNotifi);
    when(notificationData.getBody()).thenReturn(notifiBody);
    final String result = prepareXmlResult(notificationData, schemaPathNotifi);
    final String control = "<notification xmlns=\"urn:ietf:params:xml:ns:netconf:notification:1.0\">" + "<eventTime>2020-06-29T14:23:46.086855+02:00</eventTime><notifi-list xmlns=\"notifi:mod\">" + "<lst><lf>value</lf></lst></notifi-list></notification>";
    assertXmlMatches(result, control);
}
Also used : DOMNotification(org.opendaylight.mdsal.dom.api.DOMNotification) ContainerNode(org.opendaylight.yangtools.yang.data.api.schema.ContainerNode) Absolute(org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute) MapEntryNode(org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode) Test(org.junit.Test)

Example 20 with DOMNotification

use of org.opendaylight.mdsal.dom.api.DOMNotification in project netconf by opendaylight.

the class XmlNotificationListenerTest method notifi_cont_leafTest.

@Test
public void notifi_cont_leafTest() throws Exception {
    final Absolute schemaPathNotifi = Absolute.of(QName.create(MODULE, "notifi-cont"));
    final DOMNotification notificationData = mock(DOMNotification.class);
    final LeafNode<String> leaf = mockLeaf(QName.create(MODULE, "lf"));
    final ContainerNode cont = mockCont(QName.create(MODULE, "cont"), leaf);
    final ContainerNode notifiBody = mockCont(schemaPathNotifi.lastNodeIdentifier(), cont);
    when(notificationData.getType()).thenReturn(schemaPathNotifi);
    when(notificationData.getBody()).thenReturn(notifiBody);
    final String result = prepareXmlResult(notificationData, schemaPathNotifi);
    final String control = "<notification xmlns=\"urn:ietf:params:xml:ns:netconf:notification:1.0\">" + "<eventTime>2020-06-29T14:23:46.086855+02:00</eventTime><notifi-cont xmlns=\"notifi:mod\">" + "<cont><lf>value</lf></cont></notifi-cont></notification>";
    assertXmlMatches(result, control);
}
Also used : DOMNotification(org.opendaylight.mdsal.dom.api.DOMNotification) ContainerNode(org.opendaylight.yangtools.yang.data.api.schema.ContainerNode) Absolute(org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute) Test(org.junit.Test)

Aggregations

DOMNotification (org.opendaylight.mdsal.dom.api.DOMNotification)25 Test (org.junit.Test)24 ContainerNode (org.opendaylight.yangtools.yang.data.api.schema.ContainerNode)18 Absolute (org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute)16 AugmentationNode (org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode)3 CountDownLatch (java.util.concurrent.CountDownLatch)2 NetconfMessage (org.opendaylight.netconf.api.NetconfMessage)2 NetconfMessageTransformer (org.opendaylight.netconf.sal.connect.netconf.schema.mapping.NetconfMessageTransformer)2 EmptyMountPointContext (org.opendaylight.yangtools.rfc8528.data.util.EmptyMountPointContext)2 MapEntryNode (org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode)2 EffectiveModelContext (org.opendaylight.yangtools.yang.model.api.EffectiveModelContext)2 Diff (org.custommonkey.xmlunit.Diff)1 BindingNormalizedNodeSerializer (org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer)1 DOMNotificationListener (org.opendaylight.mdsal.dom.api.DOMNotificationListener)1 DOMNotificationSubscriptionListener (org.opendaylight.mdsal.dom.spi.DOMNotificationSubscriptionListener)1 VRFPREFIXTABLE (org.opendaylight.yang.gen.v1.http.cisco.com.ns.yang.cisco.ios.xr.ip._static.cfg.rev130722.VRFPREFIXTABLE)1 TwoLevelListChangedBuilder (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.mdsal.test.binding.rev140701.TwoLevelListChangedBuilder)1 Notification (org.opendaylight.yangtools.yang.binding.Notification)1 QName (org.opendaylight.yangtools.yang.common.QName)1 NodeIdentifier (org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier)1