ONOS-7007 dealing with root relative path
- workarounds to deal with root relative ResourceId used by DynamicConfigEvent
- fix issue, where duplicate KeyLeaf was getting added
Change-Id: I957044f8da3d71e064663011c8bd8fceeb1cf44e
diff --git a/apps/config/src/test/java/org/onosproject/d/config/DeviceResourceIdsTest.java b/apps/config/src/test/java/org/onosproject/d/config/DeviceResourceIdsTest.java
index 83baf5a..5a497d6 100644
--- a/apps/config/src/test/java/org/onosproject/d/config/DeviceResourceIdsTest.java
+++ b/apps/config/src/test/java/org/onosproject/d/config/DeviceResourceIdsTest.java
@@ -15,19 +15,29 @@
*/
package org.onosproject.d.config;
+import static org.hamcrest.Matchers.contains;
+import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.instanceOf;
+import static org.hamcrest.Matchers.is;
import static org.junit.Assert.*;
import static org.onosproject.d.config.DeviceResourceIds.DCS_NAMESPACE;
import static org.onosproject.d.config.DeviceResourceIds.DEVICES_NAME;
+import static org.onosproject.d.config.DeviceResourceIds.DEVICE_ID_KL_NAME;
+import static org.onosproject.d.config.DeviceResourceIds.DEVICE_NAME;
import static org.onosproject.d.config.DeviceResourceIds.ROOT_NAME;
import org.junit.Before;
import org.junit.Test;
import org.onosproject.net.DeviceId;
+import org.onosproject.yang.model.KeyLeaf;
+import org.onosproject.yang.model.ListKey;
+import org.onosproject.yang.model.NodeKey;
import org.onosproject.yang.model.ResourceId;
+import org.onosproject.yang.model.SchemaId;
public class DeviceResourceIdsTest {
- static final DeviceId DID_A = DeviceId.deviceId("test:A");
+ static final DeviceId DID_A = DeviceId.deviceId("test:a");
static final ResourceId DEVICES = ResourceId.builder()
.addBranchPointSchema(ROOT_NAME, DCS_NAMESPACE)
@@ -52,6 +62,12 @@
.build();
assertEquals(DID_A, DeviceResourceIds.toDeviceId(ridAchild));
+
+ NodeKey<?> nodeKey = ridA.nodeKeys().get(2);
+ assertThat(nodeKey, is(instanceOf(ListKey.class)));
+ assertThat(nodeKey.schemaId(), is(equalTo(new SchemaId(DEVICE_NAME, DCS_NAMESPACE))));
+ ListKey listKey = (ListKey) nodeKey;
+ assertThat(listKey.keyLeafs(), is(contains(new KeyLeaf(DEVICE_ID_KL_NAME, DCS_NAMESPACE, DID_A.toString()))));
}
@Test
@@ -61,4 +77,36 @@
assertFalse(DeviceResourceIds.isRootOrDevicesNode(ridA));
}
+ @Test
+ public void testDeviceSubtreeTest() {
+ ResourceId absDevice = ResourceId.builder()
+ .addBranchPointSchema(ROOT_NAME, DCS_NAMESPACE)
+ .addBranchPointSchema(DEVICES_NAME, DCS_NAMESPACE)
+ .addBranchPointSchema(DEVICE_NAME, DCS_NAMESPACE)
+ .addKeyLeaf(DEVICE_ID_KL_NAME, DCS_NAMESPACE, DID_A.toString())
+ .build();
+
+ NodeKey<?> deviceKey = absDevice.nodeKeys().get(2);
+ assertThat(deviceKey, is(instanceOf(ListKey.class)));
+ assertThat(deviceKey.schemaId().namespace(), is(equalTo(DCS_NAMESPACE)));
+ assertThat(deviceKey.schemaId().name(), is(equalTo(DEVICE_NAME)));
+ assertTrue(DeviceResourceIds.isUnderDeviceRootNode(absDevice));
+ }
+
+ @Test
+ public void testDeviceSubtreeEventTest() {
+ // root relative ResourceId used by DynamicConfigEvent
+ ResourceId evtDevice = ResourceId.builder()
+ .addBranchPointSchema(DEVICES_NAME, DCS_NAMESPACE)
+ .addBranchPointSchema(DEVICE_NAME, DCS_NAMESPACE)
+ .addKeyLeaf(DEVICE_ID_KL_NAME, DCS_NAMESPACE, DID_A.toString())
+ .build();
+
+ NodeKey<?> deviceKey = evtDevice.nodeKeys().get(1);
+ assertThat(deviceKey, is(instanceOf(ListKey.class)));
+ assertThat(deviceKey.schemaId().namespace(), is(equalTo(DCS_NAMESPACE)));
+ assertThat(deviceKey.schemaId().name(), is(equalTo(DEVICE_NAME)));
+ assertTrue(DeviceResourceIds.isUnderDeviceRootNode(evtDevice));
+ }
+
}
diff --git a/apps/config/src/test/java/org/onosproject/d/config/ResourceIdsTest.java b/apps/config/src/test/java/org/onosproject/d/config/ResourceIdsTest.java
index 73f682c..b1c237b 100644
--- a/apps/config/src/test/java/org/onosproject/d/config/ResourceIdsTest.java
+++ b/apps/config/src/test/java/org/onosproject/d/config/ResourceIdsTest.java
@@ -35,12 +35,12 @@
DCS_NAMESPACE)
.build();
- assertEquals(DEVICES, ResourceIds.concat(DeviceResourceIds.ROOT_ID, devices));
+ assertEquals(DEVICES, ResourceIds.concat(ResourceIds.ROOT_ID, devices));
}
@Test
public void testRelativize() {
- ResourceId relDevices = ResourceIds.relativize(DeviceResourceIds.ROOT_ID, DEVICES);
+ ResourceId relDevices = ResourceIds.relativize(ResourceIds.ROOT_ID, DEVICES);
assertEquals(DeviceResourceIds.DEVICES_NAME,
relDevices.nodeKeys().get(0).schemaId().name());
assertEquals(DCS_NAMESPACE,