ResourceId to instance-identifier string converter methods

part of ONOS-7503

Change-Id: I5c0b0c0c38f51ea1a94208c0b7cb9d4be1db060f
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 b1c237b..0c9623e 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
@@ -15,10 +15,15 @@
  */
 package org.onosproject.d.config;
 
+import static org.hamcrest.Matchers.*;
 import static org.junit.Assert.*;
 import static org.onosproject.d.config.DeviceResourceIds.DCS_NAMESPACE;
+import static org.onosproject.d.config.DeviceResourceIds.DEVICES_ID;
+import static org.onosproject.d.config.DeviceResourceIds.toResourceId;
+import static org.onosproject.d.config.ResourceIds.fromInstanceIdentifier;
 
 import org.junit.Test;
+import org.onosproject.net.DeviceId;
 import org.onosproject.yang.model.ResourceId;
 
 public class ResourceIdsTest {
@@ -29,6 +34,64 @@
             .build();
 
     @Test
+    public void testFromInstanceIdentifier() {
+
+        ResourceId eth0 = ResourceId.builder()
+                .addBranchPointSchema("interfaces", "ietf-interfaces")
+                .addBranchPointSchema("interface", "ietf-interfaces")
+                .addKeyLeaf("name", "ietf-interfaces", "eth0")
+                .build();
+        assertThat(ResourceIds.fromInstanceIdentifier("/ietf-interfaces:interfaces/interface[name=\"eth0\"]"),
+                   is(eth0));
+
+        assertThat("fromInstanceIdentifier return path relative to virtual root",
+                   ResourceIds.fromInstanceIdentifier("/org.onosproject.dcs:devices"),
+                   is(ResourceIds.relativize(ResourceIds.ROOT_ID, DEVICES_ID)));
+
+        assertThat(ResourceIds.prefixDcsRoot(
+                     ResourceIds.fromInstanceIdentifier("/org.onosproject.dcs:devices")),
+                   is(DEVICES_ID));
+
+        assertThat(ResourceIds.fromInstanceIdentifier("/"),
+                    is(nullValue()));
+
+        DeviceId deviceId = DeviceId.deviceId("test:device-identifier");
+        assertThat(ResourceIds.prefixDcsRoot(
+                 fromInstanceIdentifier("/org.onosproject.dcs:devices/device[device-id=\"test:device-identifier\"]")),
+                   is(toResourceId(deviceId)));
+
+    }
+
+    @Test
+    public void testToInstanceIdentifier() {
+
+        assertThat(ResourceIds.toInstanceIdentifier(ResourceIds.ROOT_ID),
+                   is("/"));
+        assertThat(ResourceIds.toInstanceIdentifier(DEVICES_ID),
+                   is("/org.onosproject.dcs:devices"));
+
+        DeviceId deviceId = DeviceId.deviceId("test:device-identifier");
+        assertThat(ResourceIds.toInstanceIdentifier(toResourceId(deviceId)),
+                   is("/org.onosproject.dcs:devices/device[device-id=\"test:device-identifier\"]"));
+
+        assertThat(ResourceIds.toInstanceIdentifier(ResourceIds.relativize(DEVICES_ID, toResourceId(deviceId))),
+                   is("/org.onosproject.dcs:device[device-id=\"test:device-identifier\"]"));
+
+        ResourceId eth0 = ResourceId.builder()
+                .addBranchPointSchema("interfaces", "ietf-interfaces")
+                .addBranchPointSchema("interface", "ietf-interfaces")
+                .addKeyLeaf("name", "ietf-interfaces", "eth0")
+                .build();
+        assertThat(ResourceIds.toInstanceIdentifier(eth0),
+                   is("/ietf-interfaces:interfaces/interface[name=\"eth0\"]"));
+
+
+        assertThat(ResourceIds.toInstanceIdentifier(ResourceIds.concat(toResourceId(deviceId), eth0)),
+                   is("/org.onosproject.dcs:devices/device[device-id=\"test:device-identifier\"]"
+                           + "/ietf-interfaces:interfaces/interface[name=\"eth0\"]"));
+    }
+
+    @Test
     public void testConcat() {
         ResourceId devices = ResourceId.builder()
             .addBranchPointSchema(DeviceResourceIds.DEVICES_NAME,