1 package org.opendaylight.controller.sal.connect.netconf.listener;
3 import static org.hamcrest.CoreMatchers.hasItem;
4 import static org.junit.Assert.assertEquals;
5 import static org.junit.Assert.assertThat;
7 import com.google.common.collect.Lists;
10 import org.opendaylight.controller.sal.connect.netconf.util.NetconfMessageTransformUtil;
11 import org.opendaylight.yangtools.yang.common.QName;
13 public class NetconfSessionPreferencesTest {
16 public void testMerge() throws Exception {
17 final List<String> caps1 = Lists.newArrayList(
18 "namespace:1?module=module1&revision=2012-12-12",
19 "namespace:2?module=module2&revision=2012-12-12",
20 "urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?module=ietf-netconf-monitoring&revision=2010-10-04",
21 "urn:ietf:params:netconf:base:1.0",
22 "urn:ietf:params:netconf:capability:rollback-on-error:1.0"
24 final NetconfSessionPreferences sessionCaps1 = NetconfSessionPreferences.fromStrings(caps1);
25 assertCaps(sessionCaps1, 2, 3);
27 final List<String> caps2 = Lists.newArrayList(
28 "namespace:3?module=module3&revision=2012-12-12",
29 "namespace:4?module=module4&revision=2012-12-12",
32 final NetconfSessionPreferences sessionCaps2 = NetconfSessionPreferences.fromStrings(caps2);
33 assertCaps(sessionCaps2, 1, 2);
35 final NetconfSessionPreferences merged = sessionCaps1.replaceModuleCaps(sessionCaps2);
36 assertCaps(merged, 2, 2 + 1 /*Preserved monitoring*/);
37 for (final QName qName : sessionCaps2.getModuleBasedCaps()) {
38 assertThat(merged.getModuleBasedCaps(), hasItem(qName));
40 assertThat(merged.getModuleBasedCaps(), hasItem(NetconfMessageTransformUtil.IETF_NETCONF_MONITORING));
42 assertThat(merged.getNonModuleCaps(), hasItem("urn:ietf:params:netconf:base:1.0"));
43 assertThat(merged.getNonModuleCaps(), hasItem("urn:ietf:params:netconf:capability:rollback-on-error:1.0"));
47 public void testCapabilityNoRevision() throws Exception {
48 final List<String> caps1 = Lists.newArrayList(
49 "namespace:2?module=module2",
50 "namespace:2?module=module2&revision=2012-12-12",
51 "namespace:2?module=module1&RANDOMSTRING;revision=2013-12-12",
52 "namespace:2?module=module2&RANDOMSTRING;revision=2013-12-12" // This one should be ignored(same as first), since revision is in wrong format
55 final NetconfSessionPreferences sessionCaps1 = NetconfSessionPreferences.fromStrings(caps1);
56 assertCaps(sessionCaps1, 0, 3);
59 private void assertCaps(final NetconfSessionPreferences sessionCaps1, final int nonModuleCaps, final int moduleCaps) {
60 assertEquals(nonModuleCaps, sessionCaps1.getNonModuleCaps().size());
61 assertEquals(moduleCaps, sessionCaps1.getModuleBasedCaps().size());