[ODTN]Add UnitTest for OPENCONFIG Handler

Change-Id: Ifc07c45abbc2d8d81f7d50f8ba2c8a3188ae377a
diff --git a/apps/odtn/api/src/test/java/org/onosproject/odtn/utils/openconfig/OpenConfigAssignmentHandlerTest.java b/apps/odtn/api/src/test/java/org/onosproject/odtn/utils/openconfig/OpenConfigAssignmentHandlerTest.java
new file mode 100755
index 0000000..97f3ac1
--- /dev/null
+++ b/apps/odtn/api/src/test/java/org/onosproject/odtn/utils/openconfig/OpenConfigAssignmentHandlerTest.java
@@ -0,0 +1,218 @@
+/*
+ * Copyright 2018-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.odtn.utils.openconfig;
+
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.List;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.onosproject.yang.model.ResourceId;
+import org.onosproject.yang.runtime.AnnotatedNodeInfo;
+
+import org.onosproject.yang.gen.v1.openconfigterminaldevice.rev20170708.openconfigterminaldevice.terminallogicalchanassignmenttop.logicalchannelassignments.assignment.DefaultConfig;
+import org.onosproject.yang.gen.v1.openconfigterminaldevice.rev20170708.openconfigterminaldevice.terminallogicalchanassignmenttop.logicalchannelassignments.DefaultAssignment;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * UnitTest class for OpenConfigAssignmentHandler.
+ */
+public class OpenConfigAssignmentHandlerTest {
+    // parent Handler
+    OpenConfigLogicalChannelAssignmentsHandler parent;
+
+    // expected ResourceId
+    ResourceId rid;
+
+    /**
+     * Set up method for UnitTest.
+     */
+    @Before
+    public void setUp() {
+        // parent Handler set up
+        // create <terminal-device xmlns="http://openconfig.net/yang/terminal-device">
+        //        </terminal-device>
+        OpenConfigTerminalDeviceHandler terminalDevice = new OpenConfigTerminalDeviceHandler();
+
+        // add <logical-channels></logical-channels>
+        OpenConfigLogicalChannelsHandler logicalChannels =
+            new OpenConfigLogicalChannelsHandler(terminalDevice);
+
+        // add <channel><index>1</index></channel>
+        OpenConfigChannelHandler channel =
+            new OpenConfigChannelHandler(1, logicalChannels);
+
+        // add <logical-channel-assignments></logical-channel-assignments>
+        parent = new OpenConfigLogicalChannelAssignmentsHandler(channel);
+
+        // expected ResourceId set up
+        rid = ResourceId.builder()
+        .addBranchPointSchema("terminal-device", "http://openconfig.net/yang/terminal-device")
+        .addBranchPointSchema("logical-channels", "http://openconfig.net/yang/terminal-device")
+        .addBranchPointSchema("channel", "http://openconfig.net/yang/terminal-device")
+        .addKeyLeaf("index", "http://openconfig.net/yang/terminal-device", 1)
+        .addBranchPointSchema("logical-channel-assignments", "http://openconfig.net/yang/terminal-device")
+        .addBranchPointSchema("assignment", "http://openconfig.net/yang/terminal-device")
+        .addKeyLeaf("index", "http://openconfig.net/yang/terminal-device", 2)
+        .build();
+    }
+
+    /**
+     * UnitTest method for getModelObject.
+     */
+    @Test
+    public void testGetModelObject() {
+        // test Handler
+        OpenConfigAssignmentHandler assignment = new OpenConfigAssignmentHandler(2, parent);
+
+        // expected ModelObject
+        DefaultAssignment modelObject = new DefaultAssignment();
+        modelObject.index(2);
+
+        assertEquals("[NG]getModelObject:Return is not an expected ModelObject.\n",
+                     modelObject, assignment.getModelObject());
+    }
+
+    /**
+     * UnitTest method for setResourceId.
+     */
+    @Test
+    public void testSetResourceId() {
+        // call setResourceId
+        OpenConfigAssignmentHandler assignment = new OpenConfigAssignmentHandler(2, parent);
+
+        // get resourceId
+        ResourceId resourceId = null;
+        try {
+            Field field = OpenConfigObjectHandler.class.getDeclaredField("resourceId");
+            field.setAccessible(true);
+            resourceId = (ResourceId) field.get(assignment);
+        } catch (NoSuchFieldException e) {
+            Assert.fail("[NG]setResourceId:ResourceId does not exist.\n" + e);
+        } catch (IllegalAccessException e) {
+            Assert.fail("[NG]setResourceId:Access to ResourceId is illegal.\n" + e);
+        }
+
+        assertEquals("[NG]setResourceId:Set ResourceId is not an expected one.\n",
+                     rid, resourceId);
+    }
+
+    /**
+     * UnitTest method for getResourceId.
+     */
+    @Test
+    public void testGetResourceId() {
+        // test Handler
+        OpenConfigAssignmentHandler assignment = new OpenConfigAssignmentHandler(2, parent);
+
+        assertEquals("[NG]getResourceId:Return is not an expected ResourceId.\n",
+                     rid, assignment.getResourceId());
+    }
+
+    /**
+     * UnitTest method for getResourceIdBuilder.
+     */
+    @Test
+    public void testGetResourceIdBuilder() {
+        // test Handler
+        OpenConfigAssignmentHandler assignment = new OpenConfigAssignmentHandler(2, parent);
+
+        assertEquals("[NG]getResourceIdBuilder:Return is not an expected ResourceIdBuilder.\n",
+                     rid, assignment.getResourceIdBuilder().build());
+    }
+
+    /**
+     * UnitTest method for addAnnotation.
+     */
+    @Test
+    public void testAddAnnotation() {
+        // test Handler
+        OpenConfigAssignmentHandler assignment = new OpenConfigAssignmentHandler(2, parent);
+
+        // call addAnnotation
+        assignment.addAnnotation("name", "value");
+
+        // get annotatedNodeInfos
+        List<AnnotatedNodeInfo> annotatedNodeInfos = new ArrayList<AnnotatedNodeInfo>();
+        try {
+            Field field = OpenConfigObjectHandler.class.getDeclaredField("annotatedNodeInfos");
+            field.setAccessible(true);
+            annotatedNodeInfos = (List<AnnotatedNodeInfo>) field.get(assignment);
+        } catch (NoSuchFieldException e) {
+            Assert.fail("[NG]addAnnotation:List of AnnotatedNodeInfo does not exist.\n" + e);
+        } catch (IllegalAccessException e) {
+            Assert.fail("[NG]addAnnotation:Access to list of AnnotatedNodeInfo is illegal.\n" + e);
+        }
+
+        assertEquals("[NG]addAnnotation:List size of AnnotatedNodeInfo is invalid.\n",
+                     1, annotatedNodeInfos.size());
+        assertEquals("[NG]addAnnotation:ResourceId of AnnotatedNodeInfo is not an expected one.\n",
+                     rid, annotatedNodeInfos.get(0).resourceId());
+        assertEquals("[NG]addAnnotation:List size of Annotation is invalid.\n",
+                     1, annotatedNodeInfos.get(0).annotations().size());
+        assertEquals("[NG]addAnnotation:Name of Annotation is not an expected one.\n",
+                     "name", annotatedNodeInfos.get(0).annotations().get(0).name());
+        assertEquals("[NG]addAnnotation:Value of Annotation is not an expected one.\n",
+                     "value", annotatedNodeInfos.get(0).annotations().get(0).value());
+    }
+
+    /**
+     * UnitTest method for getAnnotatedNodeInfoList.
+     */
+    @Test
+    public void testGetAnnotatedNodeInfoList() {
+        // test Handler
+        OpenConfigAssignmentHandler assignment = new OpenConfigAssignmentHandler(2, parent);
+
+        // set list of AnnotatedNodeInfo
+        assignment.addAnnotation("name", "value");
+
+        assertEquals("[NG]getAnnotatedNodeInfoList:List size of AnnotatedNodeInfo is invalid.\n",
+                     1, assignment.getAnnotatedNodeInfoList().size());
+        assertEquals("[NG]getAnnotatedNodeInfoList:ResourceId of AnnotatedNodeInfo is not an expected one.\n",
+                     rid, assignment.getAnnotatedNodeInfoList().get(0).resourceId());
+        assertEquals("[NG]getAnnotatedNodeInfoList:List size of Annotation is invalid.\n",
+                     1, assignment.getAnnotatedNodeInfoList().get(0).annotations().size());
+        assertEquals("[NG]getAnnotatedNodeInfoList:Name of Annotation is not an expected one.\n",
+                     "name", assignment.getAnnotatedNodeInfoList().get(0).annotations().get(0).name());
+        assertEquals("[NG]getAnnotatedNodeInfoList:Value of Annotation is not an expected one.\n",
+                     "value", assignment.getAnnotatedNodeInfoList().get(0).annotations().get(0).value());
+    }
+
+    /**
+     * UnitTest method for addConfig.
+     */
+    @Test
+    public void testAddConfig() {
+        // test Handler
+        OpenConfigAssignmentHandler assignment = new OpenConfigAssignmentHandler(2, parent);
+
+        // call addConfig
+        OpenConfigConfigOfAssignmentHandler configOfAssignment =
+            new OpenConfigConfigOfAssignmentHandler(assignment);
+
+        // expected ModelObject
+        DefaultAssignment modelObject = new DefaultAssignment();
+        modelObject.index(2);
+        DefaultConfig config = new DefaultConfig();
+        modelObject.config(config);
+
+        assertEquals("[NG]addConfig:ModelObject(Config added) is not an expected one.\n",
+                     modelObject, assignment.getModelObject());
+    }
+}
diff --git a/apps/odtn/api/src/test/java/org/onosproject/odtn/utils/openconfig/OpenConfigChannelHandlerTest.java b/apps/odtn/api/src/test/java/org/onosproject/odtn/utils/openconfig/OpenConfigChannelHandlerTest.java
new file mode 100755
index 0000000..999ac36
--- /dev/null
+++ b/apps/odtn/api/src/test/java/org/onosproject/odtn/utils/openconfig/OpenConfigChannelHandlerTest.java
@@ -0,0 +1,231 @@
+/*
+ * Copyright 2018-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.odtn.utils.openconfig;
+
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.List;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.onosproject.yang.model.ResourceId;
+import org.onosproject.yang.runtime.AnnotatedNodeInfo;
+
+import org.onosproject.yang.gen.v1.openconfigterminaldevice.rev20170708.openconfigterminaldevice.terminallogicalchanneltop.logicalchannels.channel.DefaultConfig;
+import org.onosproject.yang.gen.v1.openconfigterminaldevice.rev20170708.openconfigterminaldevice.terminallogicalchanneltop.logicalchannels.DefaultChannel;
+import org.onosproject.yang.gen.v1.openconfigterminaldevice.rev20170708.openconfigterminaldevice.terminallogicalchanassignmenttop.DefaultLogicalChannelAssignments;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * UnitTest class for OpenConfigChannelHandler.
+ */
+public class OpenConfigChannelHandlerTest {
+    // parent Handler
+    OpenConfigLogicalChannelsHandler parent;
+
+    // expected ResourceId
+    ResourceId rid;
+
+    /**
+     * Set up method for UnitTest.
+     */
+    @Before
+    public void setUp() {
+        // parent Handler set up
+        // create <terminal-device xmlns="http://openconfig.net/yang/terminal-device">
+        //        </terminal-device>
+        OpenConfigTerminalDeviceHandler terminalDevice = new OpenConfigTerminalDeviceHandler();
+
+        // add <logical-channels></logical-channels>
+        parent = new OpenConfigLogicalChannelsHandler(terminalDevice);
+
+        // expected ResourceId set up
+        rid = ResourceId.builder()
+        .addBranchPointSchema("terminal-device", "http://openconfig.net/yang/terminal-device")
+        .addBranchPointSchema("logical-channels", "http://openconfig.net/yang/terminal-device")
+        .addBranchPointSchema("channel", "http://openconfig.net/yang/terminal-device")
+        .addKeyLeaf("index", "http://openconfig.net/yang/terminal-device", 1)
+        .build();
+    }
+
+    /**
+     * UnitTest method for getModelObject.
+     */
+    @Test
+    public void testGetModelObject() {
+        // test Handler
+        OpenConfigChannelHandler channel = new OpenConfigChannelHandler(1, parent);
+
+        // expected ModelObject
+        DefaultChannel modelObject = new DefaultChannel();
+        modelObject.index(1);
+
+        assertEquals("[NG]getModelObject:Return is not an expected ModelObject.\n",
+                     modelObject, channel.getModelObject());
+    }
+
+    /**
+     * UnitTest method for setResourceId.
+     */
+    @Test
+    public void testSetResourceId() {
+        // call setResourceId
+        OpenConfigChannelHandler channel = new OpenConfigChannelHandler(1, parent);
+
+        // get resourceId
+        ResourceId resourceId = null;
+        try {
+            Field field = OpenConfigObjectHandler.class.getDeclaredField("resourceId");
+            field.setAccessible(true);
+            resourceId = (ResourceId) field.get(channel);
+        } catch (NoSuchFieldException e) {
+            Assert.fail("[NG]setResourceId:ResourceId does not exist.\n" + e);
+        } catch (IllegalAccessException e) {
+            Assert.fail("[NG]setResourceId:Access to ResourceId is illegal.\n" + e);
+        }
+
+        assertEquals("[NG]setResourceId:Set ResourceId is not an expected one.\n",
+                     rid, resourceId);
+    }
+
+    /**
+     * UnitTest method for getResourceId.
+     */
+    @Test
+    public void testGetResourceId() {
+        // test Handler
+        OpenConfigChannelHandler channel = new OpenConfigChannelHandler(1, parent);
+
+        assertEquals("[NG]getResourceId:Return is not an expected ResourceId.\n",
+                     rid, channel.getResourceId());
+    }
+
+    /**
+     * UnitTest method for getResourceIdBuilder.
+     */
+    @Test
+    public void testGetResourceIdBuilder() {
+        // test Handler
+        OpenConfigChannelHandler channel = new OpenConfigChannelHandler(1, parent);
+
+        assertEquals("[NG]getResourceIdBuilder:Return is not an expected ResourceIdBuilder.\n",
+                     rid, channel.getResourceIdBuilder().build());
+    }
+
+    /**
+     * UnitTest method for addAnnotation.
+     */
+    @Test
+    public void testAddAnnotation() {
+        // test Handler
+        OpenConfigChannelHandler channel = new OpenConfigChannelHandler(1, parent);
+
+        // call addAnnotation
+        channel.addAnnotation("name", "value");
+
+        // get annotatedNodeInfos
+        List<AnnotatedNodeInfo> annotatedNodeInfos = new ArrayList<AnnotatedNodeInfo>();
+        try {
+            Field field = OpenConfigObjectHandler.class.getDeclaredField("annotatedNodeInfos");
+            field.setAccessible(true);
+            annotatedNodeInfos = (List<AnnotatedNodeInfo>) field.get(channel);
+        } catch (NoSuchFieldException e) {
+            Assert.fail("[NG]addAnnotation:List of AnnotatedNodeInfo does not exist.\n" + e);
+        } catch (IllegalAccessException e) {
+            Assert.fail("[NG]addAnnotation:Access to list of AnnotatedNodeInfo is illegal.\n" + e);
+        }
+
+        assertEquals("[NG]addAnnotation:List size of AnnotatedNodeInfo is invalid.\n",
+                     1, annotatedNodeInfos.size());
+        assertEquals("[NG]addAnnotation:ResourceId of AnnotatedNodeInfo is not an expected one.\n",
+                     rid, annotatedNodeInfos.get(0).resourceId());
+        assertEquals("[NG]addAnnotation:List size of Annotation is invalid.\n",
+                     1, annotatedNodeInfos.get(0).annotations().size());
+        assertEquals("[NG]addAnnotation:Name of Annotation is not an expected one.\n",
+                     "name", annotatedNodeInfos.get(0).annotations().get(0).name());
+        assertEquals("[NG]addAnnotation:Value of Annotation is not an expected one.\n",
+                     "value", annotatedNodeInfos.get(0).annotations().get(0).value());
+    }
+
+    /**
+     * UnitTest method for getAnnotatedNodeInfoList.
+     */
+    @Test
+    public void testGetAnnotatedNodeInfoList() {
+        // test Handler
+        OpenConfigChannelHandler channel = new OpenConfigChannelHandler(1, parent);
+
+        // set list of AnnotatedNodeInfo
+        channel.addAnnotation("name", "value");
+
+        assertEquals("[NG]getAnnotatedNodeInfoList:List size of AnnotatedNodeInfo is invalid.\n",
+                     1, channel.getAnnotatedNodeInfoList().size());
+        assertEquals("[NG]getAnnotatedNodeInfoList:ResourceId of AnnotatedNodeInfo is not an expected one.\n",
+                     rid, channel.getAnnotatedNodeInfoList().get(0).resourceId());
+        assertEquals("[NG]getAnnotatedNodeInfoList:List size of Annotation is invalid.\n",
+                     1, channel.getAnnotatedNodeInfoList().get(0).annotations().size());
+        assertEquals("[NG]getAnnotatedNodeInfoList:Name of Annotation is not an expected one.\n",
+                     "name", channel.getAnnotatedNodeInfoList().get(0).annotations().get(0).name());
+        assertEquals("[NG]getAnnotatedNodeInfoList:Value of Annotation is not an expected one.\n",
+                     "value", channel.getAnnotatedNodeInfoList().get(0).annotations().get(0).value());
+    }
+
+    /**
+     * UnitTest method for addConfig.
+     */
+    @Test
+    public void testAddConfig() {
+        // test Handler
+        OpenConfigChannelHandler channel = new OpenConfigChannelHandler(1, parent);
+
+        // call addConfig
+        OpenConfigConfigOfChannelHandler configOfChannel =
+            new OpenConfigConfigOfChannelHandler(channel);
+
+        // expected ModelObject
+        DefaultChannel modelObject = new DefaultChannel();
+        modelObject.index(1);
+        DefaultConfig config = new DefaultConfig();
+        modelObject.config(config);
+
+        assertEquals("[NG]addConfig:ModelObject(Config added) is not an expected one.\n",
+                     modelObject, channel.getModelObject());
+    }
+
+    /**
+     * UnitTest method for addLogicalChannelAssignments.
+     */
+    @Test
+    public void testAddLogicalChannelAssignments() {
+        // test Handler
+        OpenConfigChannelHandler channel = new OpenConfigChannelHandler(1, parent);
+
+        // call addLogicalChannelAssignments
+        OpenConfigLogicalChannelAssignmentsHandler logicalChannelAssignments =
+            new OpenConfigLogicalChannelAssignmentsHandler(channel);
+
+        // expected ModelObject
+        DefaultChannel modelObject = new DefaultChannel();
+        modelObject.index(1);
+        DefaultLogicalChannelAssignments logicalChannel = new DefaultLogicalChannelAssignments();
+        modelObject.logicalChannelAssignments(logicalChannel);
+
+        assertEquals(
+        "[NG]addLogicalChannelAssignments:ModelObject(LogicalChannelAssignments added) is not an expected one.\n",
+        modelObject, channel.getModelObject());
+    }
+}
diff --git a/apps/odtn/api/src/test/java/org/onosproject/odtn/utils/openconfig/OpenConfigComponentHandlerTest.java b/apps/odtn/api/src/test/java/org/onosproject/odtn/utils/openconfig/OpenConfigComponentHandlerTest.java
new file mode 100755
index 0000000..64c3f5e
--- /dev/null
+++ b/apps/odtn/api/src/test/java/org/onosproject/odtn/utils/openconfig/OpenConfigComponentHandlerTest.java
@@ -0,0 +1,226 @@
+/*
+ * Copyright 2018-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.odtn.utils.openconfig;
+
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.List;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.onosproject.yang.model.ResourceId;
+import org.onosproject.yang.runtime.AnnotatedNodeInfo;
+
+import org.onosproject.yang.gen.v1.openconfigplatform.rev20180603.openconfigplatform.platformcomponenttop.components.component.DefaultConfig;
+import org.onosproject.yang.gen.v1.openconfigplatform.rev20180603.openconfigplatform.platformcomponenttop.components.DefaultComponent;
+import org.onosproject.yang.gen.v1.openconfigplatformtransceiver.rev20180515.openconfigplatformtransceiver.components.component.DefaultAugmentedOcPlatformComponent;
+import org.onosproject.yang.gen.v1.openconfigplatformtransceiver.rev20180515.openconfigplatformtransceiver.porttransceivertop.DefaultTransceiver;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * UnitTest class for OpenConfigComponentHandler.
+ */
+public class OpenConfigComponentHandlerTest {
+    // parent Handler
+    OpenConfigComponentsHandler parent;
+
+    // expected ResourceId
+    ResourceId rid;
+
+    /**
+     * Set up method for UnitTest.
+     */
+    @Before
+    public void setUp() {
+        // parent Handler set up
+        // create <components xmlns="http://openconfig.net/yang/platform"></components>
+        parent = new OpenConfigComponentsHandler();
+
+        // expected ResourceId set up
+        rid = ResourceId.builder()
+        .addBranchPointSchema("components", "http://openconfig.net/yang/platform")
+        .addBranchPointSchema("component", "http://openconfig.net/yang/platform")
+        .addKeyLeaf("name", "http://openconfig.net/yang/platform", "name")
+        .build();
+    }
+
+    /**
+     * UnitTest method for getModelObject.
+     */
+    @Test
+    public void testGetModelObject() {
+        // test Handler
+        OpenConfigComponentHandler component = new OpenConfigComponentHandler("name", parent);
+
+        // expected ModelObject
+        DefaultComponent modelObject = new DefaultComponent();
+        modelObject.name("name");
+
+        assertEquals("[NG]getModelObject:Return is not an expected ModelObject.\n",
+                     modelObject, component.getModelObject());
+    }
+
+    /**
+     * UnitTest method for setResourceId.
+     */
+    @Test
+    public void testSetResourceId() {
+        // call setResourceId
+        OpenConfigComponentHandler component = new OpenConfigComponentHandler("name", parent);
+
+        // get resourceId
+        ResourceId resourceId = null;
+        try {
+            Field field = OpenConfigObjectHandler.class.getDeclaredField("resourceId");
+            field.setAccessible(true);
+            resourceId = (ResourceId) field.get(component);
+        } catch (NoSuchFieldException e) {
+            Assert.fail("[NG]setResourceId:ResourceId does not exist.\n" + e);
+        } catch (IllegalAccessException e) {
+            Assert.fail("[NG]setResourceId:Access to ResourceId is illegal.\n" + e);
+        }
+
+        assertEquals("[NG]setResourceId:Set ResourceId is not an expected one.\n",
+                     rid, resourceId);
+    }
+
+    /**
+     * UnitTest method for getResourceId.
+     */
+    @Test
+    public void testGetResourceId() {
+        // test Handler
+        OpenConfigComponentHandler component = new OpenConfigComponentHandler("name", parent);
+
+        assertEquals("[NG]getResourceId:Return is not an expected ResourceId.\n",
+                     rid, component.getResourceId());
+    }
+
+    /**
+     * UnitTest method for getResourceIdBuilder.
+     */
+    @Test
+    public void testGetResourceIdBuilder() {
+        // test Handler
+        OpenConfigComponentHandler component = new OpenConfigComponentHandler("name", parent);
+
+        assertEquals("[NG]getResourceIdBuilder:Return is not an expected ResourceIdBuilder.\n",
+                     rid, component.getResourceIdBuilder().build());
+    }
+
+    /**
+     * UnitTest method for addAnnotation.
+     */
+    @Test
+    public void testAddAnnotation() {
+        // test Handler
+        OpenConfigComponentHandler component = new OpenConfigComponentHandler("name", parent);
+
+        // call addAnnotation
+        component.addAnnotation("name", "value");
+
+        // get annotatedNodeInfos
+        List<AnnotatedNodeInfo> annotatedNodeInfos = new ArrayList<AnnotatedNodeInfo>();
+        try {
+            Field field = OpenConfigObjectHandler.class.getDeclaredField("annotatedNodeInfos");
+            field.setAccessible(true);
+            annotatedNodeInfos = (List<AnnotatedNodeInfo>) field.get(component);
+        } catch (NoSuchFieldException e) {
+            Assert.fail("[NG]addAnnotation:List of AnnotatedNodeInfo does not exist.\n" + e);
+        } catch (IllegalAccessException e) {
+            Assert.fail("[NG]addAnnotation:Access to list of AnnotatedNodeInfo is illegal.\n" + e);
+        }
+
+        assertEquals("[NG]addAnnotation:List size of AnnotatedNodeInfo is invalid.\n",
+                     1, annotatedNodeInfos.size());
+        assertEquals("[NG]addAnnotation:ResourceId of AnnotatedNodeInfo is not an expected one.\n",
+                     rid, annotatedNodeInfos.get(0).resourceId());
+        assertEquals("[NG]addAnnotation:List size of Annotation is invalid.\n",
+                     1, annotatedNodeInfos.get(0).annotations().size());
+        assertEquals("[NG]addAnnotation:Name of Annotation is not an expected one.\n",
+                     "name", annotatedNodeInfos.get(0).annotations().get(0).name());
+        assertEquals("[NG]addAnnotation:Value of Annotation is not an expected one.\n",
+                     "value", annotatedNodeInfos.get(0).annotations().get(0).value());
+    }
+
+    /**
+     * UnitTest method for getAnnotatedNodeInfoList.
+     */
+    @Test
+    public void testGetAnnotatedNodeInfoList() {
+        // test Handler
+        OpenConfigComponentHandler component = new OpenConfigComponentHandler("name", parent);
+
+        // set list of AnnotatedNodeInfo
+        component.addAnnotation("name", "value");
+
+        assertEquals("[NG]getAnnotatedNodeInfoList:List size of AnnotatedNodeInfo is invalid.\n",
+                     1, component.getAnnotatedNodeInfoList().size());
+        assertEquals("[NG]getAnnotatedNodeInfoList:ResourceId of AnnotatedNodeInfo is not an expected one.\n",
+                     rid, component.getAnnotatedNodeInfoList().get(0).resourceId());
+        assertEquals("[NG]getAnnotatedNodeInfoList:List size of Annotation is invalid.\n",
+                     1, component.getAnnotatedNodeInfoList().get(0).annotations().size());
+        assertEquals("[NG]getAnnotatedNodeInfoList:Name of Annotation is not an expected one.\n",
+                     "name", component.getAnnotatedNodeInfoList().get(0).annotations().get(0).name());
+        assertEquals("[NG]getAnnotatedNodeInfoList:Value of Annotation is not an expected one.\n",
+                     "value", component.getAnnotatedNodeInfoList().get(0).annotations().get(0).value());
+    }
+
+    /**
+     * UnitTest method for addTransceiver.
+     */
+    @Test
+    public void testAddTransceiver() {
+        // test Handler
+        OpenConfigComponentHandler component = new OpenConfigComponentHandler("name", parent);
+
+        // call addTransceiver
+        OpenConfigTransceiverHandler transceiver = new OpenConfigTransceiverHandler(component);
+
+        // expected ModelObject
+        DefaultComponent modelObject = new DefaultComponent();
+        modelObject.name("name");
+        DefaultTransceiver trans = new DefaultTransceiver();
+        DefaultAugmentedOcPlatformComponent augmentedOcPlatformComponent = new DefaultAugmentedOcPlatformComponent();
+        augmentedOcPlatformComponent.transceiver(trans);
+        modelObject.addAugmentation(augmentedOcPlatformComponent);
+
+        assertEquals("[NG]addTransceiver:ModelObject(Transceiver added) is not an expected one.\n",
+                     modelObject, component.getModelObject());
+    }
+
+    /**
+     * UnitTest method for addConfig.
+     */
+    @Test
+    public void testAddConfig() {
+        // test Handler
+        OpenConfigComponentHandler component = new OpenConfigComponentHandler("name", parent);
+
+        // call addConfig
+        OpenConfigConfigOfComponentHandler config = new OpenConfigConfigOfComponentHandler(component);
+
+        // expected ModelObject
+        DefaultComponent modelObject = new DefaultComponent();
+        modelObject.name("name");
+        DefaultConfig con = new DefaultConfig();
+        modelObject.config(con);
+
+        assertEquals("[NG]addConfig:ModelObject(Config added) is not an expected one.\n",
+                     modelObject, component.getModelObject());
+    }
+}
diff --git a/apps/odtn/api/src/test/java/org/onosproject/odtn/utils/openconfig/OpenConfigComponentsHandlerTest.java b/apps/odtn/api/src/test/java/org/onosproject/odtn/utils/openconfig/OpenConfigComponentsHandlerTest.java
new file mode 100755
index 0000000..9045c16
--- /dev/null
+++ b/apps/odtn/api/src/test/java/org/onosproject/odtn/utils/openconfig/OpenConfigComponentsHandlerTest.java
@@ -0,0 +1,191 @@
+/*
+ * Copyright 2018-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.odtn.utils.openconfig;
+
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.List;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.onosproject.yang.model.ResourceId;
+import org.onosproject.yang.runtime.AnnotatedNodeInfo;
+
+import org.onosproject.yang.gen.v1.openconfigplatform.rev20180603.openconfigplatform.platformcomponenttop.components.DefaultComponent;
+import org.onosproject.yang.gen.v1.openconfigplatform.rev20180603.openconfigplatform.platformcomponenttop.DefaultComponents;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * UnitTest class for OpenConfigComponentsHandler.
+ */
+public class OpenConfigComponentsHandlerTest {
+    // expected ResourceId
+    ResourceId rid;
+
+    /**
+     * Set up method for UnitTest.
+     */
+    @Before
+    public void setUp() {
+        // expected ResourceId set up
+        rid = ResourceId.builder()
+        .addBranchPointSchema("components", "http://openconfig.net/yang/platform")
+        .build();
+    }
+
+    /**
+     * UnitTest method for getModelObject.
+     */
+    @Test
+    public void testGetModelObject() {
+        // test Handler
+        OpenConfigComponentsHandler components = new OpenConfigComponentsHandler();
+
+        // expected ModelObject
+        DefaultComponents modelObject = new DefaultComponents();
+
+        assertEquals("[NG]getModelObject:Return is not an expected ModelObject.\n",
+                     modelObject, components.getModelObject());
+    }
+
+    /**
+     * UnitTest method for setResourceId.
+     */
+    @Test
+    public void testSetResourceId() {
+        // call setResourceId
+        OpenConfigComponentsHandler components = new OpenConfigComponentsHandler();
+
+        // get resourceId
+        ResourceId resourceId = null;
+        try {
+            Field field = OpenConfigObjectHandler.class.getDeclaredField("resourceId");
+            field.setAccessible(true);
+            resourceId = (ResourceId) field.get(components);
+        } catch (NoSuchFieldException e) {
+            Assert.fail("[NG]setResourceId:ResourceId does not exist.\n" + e);
+        } catch (IllegalAccessException e) {
+            Assert.fail("[NG]setResourceId:Access to ResourceId is illegal.\n" + e);
+        }
+
+        assertEquals("[NG]setResourceId:Set ResourceId is not an expected one.\n",
+                     rid, resourceId);
+    }
+
+    /**
+     * UnitTest method for getResourceId.
+     */
+    @Test
+    public void testGetResourceId() {
+        // test Handler
+        OpenConfigComponentsHandler components = new OpenConfigComponentsHandler();
+
+        assertEquals("[NG]getResourceId:Return is not an expected ResourceId.\n",
+                     rid, components.getResourceId());
+    }
+
+    /**
+     * UnitTest method for getResourceIdBuilder.
+     */
+    @Test
+    public void testGetResourceIdBuilder() {
+        // test Handler
+        OpenConfigComponentsHandler components = new OpenConfigComponentsHandler();
+
+        assertEquals("[NG]getResourceIdBuilder:Return is not an expected ResourceIdBuilder.\n",
+                     rid, components.getResourceIdBuilder().build());
+    }
+
+    /**
+     * UnitTest method for addAnnotation.
+     */
+    @Test
+    public void testAddAnnotation() {
+        // test Handler
+        OpenConfigComponentsHandler components = new OpenConfigComponentsHandler();
+
+        // call addAnnotation
+        components.addAnnotation("name", "value");
+
+        // get annotatedNodeInfos
+        List<AnnotatedNodeInfo> annotatedNodeInfos = new ArrayList<AnnotatedNodeInfo>();
+        try {
+            Field field = OpenConfigObjectHandler.class.getDeclaredField("annotatedNodeInfos");
+            field.setAccessible(true);
+            annotatedNodeInfos = (List<AnnotatedNodeInfo>) field.get(components);
+        } catch (NoSuchFieldException e) {
+            Assert.fail("[NG]addAnnotation:List of AnnotatedNodeInfo does not exist.\n" + e);
+        } catch (IllegalAccessException e) {
+            Assert.fail("[NG]addAnnotation:Access to list of AnnotatedNodeInfo is illegal.\n" + e);
+        }
+
+        assertEquals("[NG]addAnnotation:List size of AnnotatedNodeInfo is invalid.\n",
+                     1, annotatedNodeInfos.size());
+        assertEquals("[NG]addAnnotation:ResourceId of AnnotatedNodeInfo is not an expected one.\n",
+                     rid, annotatedNodeInfos.get(0).resourceId());
+        assertEquals("[NG]addAnnotation:List size of Annotation is invalid.\n",
+                     1, annotatedNodeInfos.get(0).annotations().size());
+        assertEquals("[NG]addAnnotation:Name of Annotation is not an expected one.\n",
+                     "name", annotatedNodeInfos.get(0).annotations().get(0).name());
+        assertEquals("[NG]addAnnotation:Value of Annotation is not an expected one.\n",
+                     "value", annotatedNodeInfos.get(0).annotations().get(0).value());
+    }
+
+    /**
+     * UnitTest method for getAnnotatedNodeInfoList.
+     */
+    @Test
+    public void testGetAnnotatedNodeInfoList() {
+        // test Handler
+        OpenConfigComponentsHandler components = new OpenConfigComponentsHandler();
+
+        // set list of AnnotatedNodeInfo
+        components.addAnnotation("name", "value");
+
+        assertEquals("[NG]getAnnotatedNodeInfoList:List size of AnnotatedNodeInfo is invalid.\n",
+                     1, components.getAnnotatedNodeInfoList().size());
+        assertEquals("[NG]getAnnotatedNodeInfoList:ResourceId of AnnotatedNodeInfo is not an expected one.\n",
+                     rid, components.getAnnotatedNodeInfoList().get(0).resourceId());
+        assertEquals("[NG]getAnnotatedNodeInfoList:List size of Annotation is invalid.\n",
+                     1, components.getAnnotatedNodeInfoList().get(0).annotations().size());
+        assertEquals("[NG]getAnnotatedNodeInfoList:Name of Annotation is not an expected one.\n",
+                     "name", components.getAnnotatedNodeInfoList().get(0).annotations().get(0).name());
+        assertEquals("[NG]getAnnotatedNodeInfoList:Value of Annotation is not an expected one.\n",
+                     "value", components.getAnnotatedNodeInfoList().get(0).annotations().get(0).value());
+    }
+
+    /**
+     * UnitTest method for addComponent.
+     */
+    @Test
+    public void testAddComponent() {
+        // test Handler
+        OpenConfigComponentsHandler components = new OpenConfigComponentsHandler();
+
+        // call addComponent
+        OpenConfigComponentHandler component = new OpenConfigComponentHandler("name", components);
+
+        // expected ModelObject
+        DefaultComponents modelObject = new DefaultComponents();
+        DefaultComponent comp = new DefaultComponent();
+        comp.name("name");
+        modelObject.addToComponent(comp);
+
+        assertEquals("[NG]addComponent:ModelObject(Component added) is not an expected one.\n",
+                     modelObject, components.getModelObject());
+    }
+}
diff --git a/apps/odtn/api/src/test/java/org/onosproject/odtn/utils/openconfig/OpenConfigConfigOfAssignmentHandlerTest.java b/apps/odtn/api/src/test/java/org/onosproject/odtn/utils/openconfig/OpenConfigConfigOfAssignmentHandlerTest.java
new file mode 100755
index 0000000..d941cdc
--- /dev/null
+++ b/apps/odtn/api/src/test/java/org/onosproject/odtn/utils/openconfig/OpenConfigConfigOfAssignmentHandlerTest.java
@@ -0,0 +1,277 @@
+/*
+ * Copyright 2018-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.odtn.utils.openconfig;
+
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.List;
+import org.junit.Assert;
+import java.math.BigDecimal;
+import org.junit.Before;
+import org.junit.Test;
+import org.onosproject.yang.model.ResourceId;
+import org.onosproject.yang.runtime.AnnotatedNodeInfo;
+
+import org.onosproject.yang.gen.v1.openconfigterminaldevice.rev20170708.openconfigterminaldevice.terminallogicalchanassignmenttop.logicalchannelassignments.assignment.DefaultConfig;
+import org.onosproject.yang.gen.v1.openconfigterminaldevice.rev20170708.openconfigterminaldevice.terminallogicalchanassignmentconfig.AssignmentTypeEnum;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * UnitTest class for OpenConfigConfigOfAssignmentHandler.
+ */
+public class OpenConfigConfigOfAssignmentHandlerTest {
+    // parent Handler
+    OpenConfigAssignmentHandler parent;
+
+    // expected ResourceId
+    ResourceId rid;
+
+    /**
+     * Set up method for UnitTest.
+     */
+    @Before
+    public void setUp() {
+        // parent Handler set up
+        // create <terminal-device xmlns="http://openconfig.net/yang/terminal-device">
+        //        </terminal-device>
+        OpenConfigTerminalDeviceHandler terminalDevice = new OpenConfigTerminalDeviceHandler();
+
+        // add <logical-channels></logical-channels>
+        OpenConfigLogicalChannelsHandler logicalChannels =
+            new OpenConfigLogicalChannelsHandler(terminalDevice);
+
+        // add <channel><index>1</index></channel>
+        OpenConfigChannelHandler channel =
+            new OpenConfigChannelHandler(1, logicalChannels);
+
+        // add <logical-channel-assignments></logical-channel-assignments>
+        OpenConfigLogicalChannelAssignmentsHandler logicalChannelAssignments =
+            new OpenConfigLogicalChannelAssignmentsHandler(channel);
+
+        // add <assignment><index>2</index></assignment>
+        parent = new OpenConfigAssignmentHandler(2, logicalChannelAssignments);
+
+        // expected ResourceId set up
+        rid = ResourceId.builder()
+        .addBranchPointSchema("terminal-device", "http://openconfig.net/yang/terminal-device")
+        .addBranchPointSchema("logical-channels", "http://openconfig.net/yang/terminal-device")
+        .addBranchPointSchema("channel", "http://openconfig.net/yang/terminal-device")
+        .addKeyLeaf("index", "http://openconfig.net/yang/terminal-device", 1)
+        .addBranchPointSchema("logical-channel-assignments", "http://openconfig.net/yang/terminal-device")
+        .addBranchPointSchema("assignment", "http://openconfig.net/yang/terminal-device")
+        .addKeyLeaf("index", "http://openconfig.net/yang/terminal-device", 2)
+        .addBranchPointSchema("config", "http://openconfig.net/yang/terminal-device")
+        .build();
+    }
+
+    /**
+     * UnitTest method for getModelObject.
+     */
+    @Test
+    public void testGetModelObject() {
+        // test Handler
+        OpenConfigConfigOfAssignmentHandler config = new OpenConfigConfigOfAssignmentHandler(parent);
+
+        // expected ModelObject
+        DefaultConfig modelObject = new DefaultConfig();
+
+        assertEquals("[NG]getModelObject:Return is not an expected ModelObject.\n",
+                     modelObject, config.getModelObject());
+    }
+
+    /**
+     * UnitTest method for setResourceId.
+     */
+    @Test
+    public void testSetResourceId() {
+        // call setResourceId
+        OpenConfigConfigOfAssignmentHandler config = new OpenConfigConfigOfAssignmentHandler(parent);
+
+        // get resourceId
+        ResourceId resourceId = null;
+        try {
+            Field field = OpenConfigObjectHandler.class.getDeclaredField("resourceId");
+            field.setAccessible(true);
+            resourceId = (ResourceId) field.get(config);
+        } catch (NoSuchFieldException e) {
+            Assert.fail("[NG]setResourceId:ResourceId does not exist.\n" + e);
+        } catch (IllegalAccessException e) {
+            Assert.fail("[NG]setResourceId:Access to ResourceId is illegal.\n" + e);
+        }
+
+        assertEquals("[NG]setResourceId:Set ResourceId is not an expected one.\n",
+                     rid, resourceId);
+    }
+
+    /**
+     * UnitTest method for getResourceId.
+     */
+    @Test
+    public void testGetResourceId() {
+        // test Handler
+        OpenConfigConfigOfAssignmentHandler config = new OpenConfigConfigOfAssignmentHandler(parent);
+
+        assertEquals("[NG]getResourceId:Return is not an expected ResourceId.\n",
+                     rid, config.getResourceId());
+    }
+
+    /**
+     * UnitTest method for getResourceIdBuilder.
+     */
+    @Test
+    public void testGetResourceIdBuilder() {
+        // test Handler
+        OpenConfigConfigOfAssignmentHandler config = new OpenConfigConfigOfAssignmentHandler(parent);
+
+        assertEquals("[NG]getResourceIdBuilder:Return is not an expected ResourceIdBuilder.\n",
+                     rid, config.getResourceIdBuilder().build());
+    }
+
+    /**
+     * UnitTest method for addAnnotation.
+     */
+    @Test
+    public void testAddAnnotation() {
+        // test Handler
+        OpenConfigConfigOfAssignmentHandler config = new OpenConfigConfigOfAssignmentHandler(parent);
+
+        // call addAnnotation
+        config.addAnnotation("name", "value");
+
+        // get annotatedNodeInfos
+        List<AnnotatedNodeInfo> annotatedNodeInfos = new ArrayList<AnnotatedNodeInfo>();
+        try {
+            Field field = OpenConfigObjectHandler.class.getDeclaredField("annotatedNodeInfos");
+            field.setAccessible(true);
+            annotatedNodeInfos = (List<AnnotatedNodeInfo>) field.get(config);
+        } catch (NoSuchFieldException e) {
+            Assert.fail("[NG]addAnnotation:List of AnnotatedNodeInfo does not exist.\n" + e);
+        } catch (IllegalAccessException e) {
+            Assert.fail("[NG]addAnnotation:Access to list of AnnotatedNodeInfo is illegal.\n" + e);
+        }
+
+        assertEquals("[NG]addAnnotation:List size of AnnotatedNodeInfo is invalid.\n",
+                     1, annotatedNodeInfos.size());
+        assertEquals("[NG]addAnnotation:ResourceId of AnnotatedNodeInfo is not an expected one.\n",
+                     rid, annotatedNodeInfos.get(0).resourceId());
+        assertEquals("[NG]addAnnotation:List size of Annotation is invalid.\n",
+                     1, annotatedNodeInfos.get(0).annotations().size());
+        assertEquals("[NG]addAnnotation:Name of Annotation is not an expected one.\n",
+                     "name", annotatedNodeInfos.get(0).annotations().get(0).name());
+        assertEquals("[NG]addAnnotation:Value of Annotation is not an expected one.\n",
+                     "value", annotatedNodeInfos.get(0).annotations().get(0).value());
+    }
+
+    /**
+     * UnitTest method for getAnnotatedNodeInfoList.
+     */
+    @Test
+    public void testGetAnnotatedNodeInfoList() {
+        // test Handler
+        OpenConfigConfigOfAssignmentHandler config = new OpenConfigConfigOfAssignmentHandler(parent);
+
+        // set list of AnnotatedNodeInfo
+        config.addAnnotation("name", "value");
+
+        assertEquals("[NG]getAnnotatedNodeInfoList:List size of AnnotatedNodeInfo is invalid.\n",
+                     1, config.getAnnotatedNodeInfoList().size());
+        assertEquals("[NG]getAnnotatedNodeInfoList:ResourceId of AnnotatedNodeInfo is not an expected one.\n",
+                     rid, config.getAnnotatedNodeInfoList().get(0).resourceId());
+        assertEquals("[NG]getAnnotatedNodeInfoList:List size of Annotation is invalid.\n",
+                     1, config.getAnnotatedNodeInfoList().get(0).annotations().size());
+        assertEquals("[NG]getAnnotatedNodeInfoList:Name of Annotation is not an expected one.\n",
+                     "name", config.getAnnotatedNodeInfoList().get(0).annotations().get(0).name());
+        assertEquals("[NG]getAnnotatedNodeInfoList:Value of Annotation is not an expected one.\n",
+                     "value", config.getAnnotatedNodeInfoList().get(0).annotations().get(0).value());
+    }
+
+    /**
+     * UnitTest method for addIndex.
+     */
+    @Test
+    public void testAddIndex() {
+        // test Handler
+        OpenConfigConfigOfAssignmentHandler config = new OpenConfigConfigOfAssignmentHandler(parent);
+
+        // call addIndex
+        config.addIndex(Long.valueOf(3));
+
+        // expected ModelObject
+        DefaultConfig modelObject = new DefaultConfig();
+        modelObject.index(3);
+
+        assertEquals("[NG]addIndex:ModelObject(Index added) is not an expected one.\n",
+                     modelObject, config.getModelObject());
+    }
+
+    /**
+     * UnitTest method for addAssignmentType.
+     */
+    @Test
+    public void testAddAssignmentType() {
+        // test Handler
+        OpenConfigConfigOfAssignmentHandler config = new OpenConfigConfigOfAssignmentHandler(parent);
+
+        // call addAssignmentType
+        config.addAssignmentType(AssignmentTypeEnum.LOGICAL_CHANNEL);
+
+        // expected ModelObject
+        DefaultConfig modelObject = new DefaultConfig();
+        modelObject.assignmentType(AssignmentTypeEnum.LOGICAL_CHANNEL);
+
+        assertEquals("[NG]addAssignmentType:ModelObject(AssignmentType added) is not an expected one.\n",
+                     modelObject, config.getModelObject());
+    }
+
+    /**
+     * UnitTest method for addLogicalChannel.
+     */
+    @Test
+    public void testAddLogicalChannel() {
+        // test Handler
+        OpenConfigConfigOfAssignmentHandler config = new OpenConfigConfigOfAssignmentHandler(parent);
+
+        // call addLogicalChannel
+        config.addLogicalChannel("name");
+
+        // expected ModelObject
+        DefaultConfig modelObject = new DefaultConfig();
+        modelObject.logicalChannel("name");
+
+        assertEquals("[NG]addLogicalChannel:ModelObject(LogicalChannel added) is not an expected one.\n",
+                     modelObject, config.getModelObject());
+    }
+
+    /**
+     * UnitTest method for addAllocation.
+     */
+    @Test
+    public void testAddAllocation() {
+        // test Handler
+        OpenConfigConfigOfAssignmentHandler config = new OpenConfigConfigOfAssignmentHandler(parent);
+
+        // call addAllocation
+        config.addAllocation(BigDecimal.valueOf(4));
+
+        // expected ModelObject
+        DefaultConfig modelObject = new DefaultConfig();
+        modelObject.allocation(BigDecimal.valueOf(4));
+
+        assertEquals("[NG]addAllocation:ModelObject(Allocation added) is not an expected one.\n",
+                     modelObject, config.getModelObject());
+    }
+}
diff --git a/apps/odtn/api/src/test/java/org/onosproject/odtn/utils/openconfig/OpenConfigConfigOfChannelHandlerTest.java b/apps/odtn/api/src/test/java/org/onosproject/odtn/utils/openconfig/OpenConfigConfigOfChannelHandlerTest.java
new file mode 100755
index 0000000..c12ef78
--- /dev/null
+++ b/apps/odtn/api/src/test/java/org/onosproject/odtn/utils/openconfig/OpenConfigConfigOfChannelHandlerTest.java
@@ -0,0 +1,207 @@
+/*
+ * Copyright 2018-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.odtn.utils.openconfig;
+
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.List;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.onosproject.yang.model.ResourceId;
+import org.onosproject.yang.runtime.AnnotatedNodeInfo;
+
+import org.onosproject.yang.gen.v1.openconfigterminaldevice.rev20170708.openconfigterminaldevice.terminallogicalchanneltop.logicalchannels.channel.DefaultConfig;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * UnitTest class for OpenConfigConfigOfChannelHandler.
+ */
+public class OpenConfigConfigOfChannelHandlerTest {
+    // parent Handler
+    OpenConfigChannelHandler parent;
+
+    // expected ResourceId
+    ResourceId rid;
+
+    /**
+     * Set up method for UnitTest.
+     */
+    @Before
+    public void setUp() {
+        // parent Handler set up
+        // create <terminal-device xmlns="http://openconfig.net/yang/terminal-device">
+        //        </terminal-device>
+        OpenConfigTerminalDeviceHandler terminalDevice = new OpenConfigTerminalDeviceHandler();
+
+        // add <logical-channels></logical-channels>
+        OpenConfigLogicalChannelsHandler logicalChannels =
+            new OpenConfigLogicalChannelsHandler(terminalDevice);
+
+        // add <channel><index>1</index></channel>
+        parent = new OpenConfigChannelHandler(1, logicalChannels);
+
+        // expected ResourceId set up
+        rid = ResourceId.builder()
+        .addBranchPointSchema("terminal-device", "http://openconfig.net/yang/terminal-device")
+        .addBranchPointSchema("logical-channels", "http://openconfig.net/yang/terminal-device")
+        .addBranchPointSchema("channel", "http://openconfig.net/yang/terminal-device")
+        .addKeyLeaf("index", "http://openconfig.net/yang/terminal-device", 1)
+        .addBranchPointSchema("config", "http://openconfig.net/yang/terminal-device")
+        .build();
+    }
+
+    /**
+     * UnitTest method for getModelObject.
+     */
+    @Test
+    public void testGetModelObject() {
+        // test Handler
+        OpenConfigConfigOfChannelHandler config = new OpenConfigConfigOfChannelHandler(parent);
+
+        // expected ModelObject
+        DefaultConfig modelObject = new DefaultConfig();
+
+        assertEquals("[NG]getModelObject:Return is not an expected ModelObject.\n",
+                     modelObject, config.getModelObject());
+    }
+
+    /**
+     * UnitTest method for setResourceId.
+     */
+    @Test
+    public void testSetResourceId() {
+        // call setResourceId
+        OpenConfigConfigOfChannelHandler config = new OpenConfigConfigOfChannelHandler(parent);
+
+        // get resourceId
+        ResourceId resourceId = null;
+        try {
+            Field field = OpenConfigObjectHandler.class.getDeclaredField("resourceId");
+            field.setAccessible(true);
+            resourceId = (ResourceId) field.get(config);
+        } catch (NoSuchFieldException e) {
+            Assert.fail("[NG]setResourceId:ResourceId does not exist.\n" + e);
+        } catch (IllegalAccessException e) {
+            Assert.fail("[NG]setResourceId:Access to ResourceId is illegal.\n" + e);
+        }
+
+        assertEquals("[NG]setResourceId:Set ResourceId is not an expected one.\n",
+                     rid, resourceId);
+    }
+
+    /**
+     * UnitTest method for getResourceId.
+     */
+    @Test
+    public void testGetResourceId() {
+        // test Handler
+        OpenConfigConfigOfChannelHandler config = new OpenConfigConfigOfChannelHandler(parent);
+
+        assertEquals("[NG]getResourceId:Return is not an expected ResourceId.\n",
+                     rid, config.getResourceId());
+    }
+
+    /**
+     * UnitTest method for getResourceIdBuilder.
+     */
+    @Test
+    public void testGetResourceIdBuilder() {
+        // test Handler
+        OpenConfigConfigOfChannelHandler config = new OpenConfigConfigOfChannelHandler(parent);
+
+        assertEquals("[NG]getResourceIdBuilder:Return is not an expected ResourceIdBuilder.\n",
+                     rid, config.getResourceIdBuilder().build());
+    }
+
+    /**
+     * UnitTest method for addAnnotation.
+     */
+    @Test
+    public void testAddAnnotation() {
+        // test Handler
+        OpenConfigConfigOfChannelHandler config = new OpenConfigConfigOfChannelHandler(parent);
+
+        // call addAnnotation
+        config.addAnnotation("name", "value");
+
+        // get annotatedNodeInfos
+        List<AnnotatedNodeInfo> annotatedNodeInfos = new ArrayList<AnnotatedNodeInfo>();
+        try {
+            Field field = OpenConfigObjectHandler.class.getDeclaredField("annotatedNodeInfos");
+            field.setAccessible(true);
+            annotatedNodeInfos = (List<AnnotatedNodeInfo>) field.get(config);
+        } catch (NoSuchFieldException e) {
+            Assert.fail("[NG]addAnnotation:List of AnnotatedNodeInfo does not exist.\n" + e);
+        } catch (IllegalAccessException e) {
+            Assert.fail("[NG]addAnnotation:Access to list of AnnotatedNodeInfo is illegal.\n" + e);
+        }
+
+        assertEquals("[NG]addAnnotation:List size of AnnotatedNodeInfo is invalid.\n",
+                     1, annotatedNodeInfos.size());
+        assertEquals("[NG]addAnnotation:ResourceId of AnnotatedNodeInfo is not an expected one.\n",
+                     rid, annotatedNodeInfos.get(0).resourceId());
+        assertEquals("[NG]addAnnotation:List size of Annotation is invalid.\n",
+                     1, annotatedNodeInfos.get(0).annotations().size());
+        assertEquals("[NG]addAnnotation:Name of Annotation is not an expected one.\n",
+                     "name", annotatedNodeInfos.get(0).annotations().get(0).name());
+        assertEquals("[NG]addAnnotation:Value of Annotation is not an expected one.\n",
+                     "value", annotatedNodeInfos.get(0).annotations().get(0).value());
+    }
+
+    /**
+     * UnitTest method for getAnnotatedNodeInfoList.
+     */
+    @Test
+    public void testGetAnnotatedNodeInfoList() {
+        // test Handler
+        OpenConfigConfigOfChannelHandler config = new OpenConfigConfigOfChannelHandler(parent);
+
+        // set list of AnnotatedNodeInfo
+        config.addAnnotation("name", "value");
+
+        assertEquals("[NG]getAnnotatedNodeInfoList:List size of AnnotatedNodeInfo is invalid.\n",
+                     1, config.getAnnotatedNodeInfoList().size());
+        assertEquals("[NG]getAnnotatedNodeInfoList:ResourceId of AnnotatedNodeInfo is not an expected one.\n",
+                     rid, config.getAnnotatedNodeInfoList().get(0).resourceId());
+        assertEquals("[NG]getAnnotatedNodeInfoList:List size of Annotation is invalid.\n",
+                     1, config.getAnnotatedNodeInfoList().get(0).annotations().size());
+        assertEquals("[NG]getAnnotatedNodeInfoList:Name of Annotation is not an expected one.\n",
+                     "name", config.getAnnotatedNodeInfoList().get(0).annotations().get(0).name());
+        assertEquals("[NG]getAnnotatedNodeInfoList:Value of Annotation is not an expected one.\n",
+                     "value", config.getAnnotatedNodeInfoList().get(0).annotations().get(0).value());
+    }
+
+    /**
+     * UnitTest method for addIndex.
+     */
+    @Test
+    public void testAddIndex() {
+        // test Handler
+        OpenConfigConfigOfChannelHandler config = new OpenConfigConfigOfChannelHandler(parent);
+
+        // call addIndex
+        config.addIndex(2);
+
+        // expected ModelObject
+        DefaultConfig modelObject = new DefaultConfig();
+        modelObject.index(2);
+
+        assertEquals("[NG]addIndex:ModelObject(Index added) is not an expected one.\n",
+                     modelObject, config.getModelObject());
+    }
+}
diff --git a/apps/odtn/api/src/test/java/org/onosproject/odtn/utils/openconfig/OpenConfigConfigOfComponentHandlerTest.java b/apps/odtn/api/src/test/java/org/onosproject/odtn/utils/openconfig/OpenConfigConfigOfComponentHandlerTest.java
new file mode 100755
index 0000000..299f381
--- /dev/null
+++ b/apps/odtn/api/src/test/java/org/onosproject/odtn/utils/openconfig/OpenConfigConfigOfComponentHandlerTest.java
@@ -0,0 +1,201 @@
+/*
+ * Copyright 2018-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.odtn.utils.openconfig;
+
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.List;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.onosproject.yang.model.ResourceId;
+import org.onosproject.yang.runtime.AnnotatedNodeInfo;
+
+import org.onosproject.yang.gen.v1.openconfigplatform.rev20180603.openconfigplatform.platformcomponenttop.components.component.DefaultConfig;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * UnitTest class for OpenConfigConfigOfComponentHandler.
+ */
+public class OpenConfigConfigOfComponentHandlerTest {
+    // parent Handler
+    OpenConfigComponentHandler parent;
+
+    // expected ResourceId
+    ResourceId rid;
+
+    /**
+     * Set up method for UnitTest.
+     */
+    @Before
+    public void setUp() {
+        // parent Handler set up
+        // create <components xmlns="http://openconfig.net/yang/platform"></components>
+        OpenConfigComponentsHandler components = new OpenConfigComponentsHandler();
+
+        // add <component><name>name</name></component>
+        parent = new OpenConfigComponentHandler("name", components);
+
+        // expected ResourceId set up
+        rid = ResourceId.builder()
+        .addBranchPointSchema("components", "http://openconfig.net/yang/platform")
+        .addBranchPointSchema("component", "http://openconfig.net/yang/platform")
+        .addKeyLeaf("name", "http://openconfig.net/yang/platform", "name")
+        .addBranchPointSchema("config", "http://openconfig.net/yang/platform")
+        .build();
+    }
+
+    /**
+     * UnitTest method for getModelObject.
+     */
+    @Test
+    public void testGetModelObject() {
+        // test Handler
+        OpenConfigConfigOfComponentHandler config = new OpenConfigConfigOfComponentHandler(parent);
+
+        // expected ModelObject
+        DefaultConfig modelObject = new DefaultConfig();
+
+        assertEquals("[NG]getModelObject:Return is not an expected ModelObject.\n",
+                     modelObject, config.getModelObject());
+    }
+
+    /**
+     * UnitTest method for setResourceId.
+     */
+    @Test
+    public void testSetResourceId() {
+        // call setResourceId
+        OpenConfigConfigOfComponentHandler config = new OpenConfigConfigOfComponentHandler(parent);
+
+        // get resourceId
+        ResourceId resourceId = null;
+        try {
+            Field field = OpenConfigObjectHandler.class.getDeclaredField("resourceId");
+            field.setAccessible(true);
+            resourceId = (ResourceId) field.get(config);
+        } catch (NoSuchFieldException e) {
+            Assert.fail("[NG]setResourceId:ResourceId does not exist.\n" + e);
+        } catch (IllegalAccessException e) {
+            Assert.fail("[NG]setResourceId:Access to ResourceId is illegal.\n" + e);
+        }
+
+        assertEquals("[NG]setResourceId:Set ResourceId is not an expected one.\n",
+                     rid, resourceId);
+    }
+
+    /**
+     * UnitTest method for getResourceId.
+     */
+    @Test
+    public void testGetResourceId() {
+        // test Handler
+        OpenConfigConfigOfComponentHandler config = new OpenConfigConfigOfComponentHandler(parent);
+
+        assertEquals("[NG]getResourceId:Return is not an expected ResourceId.\n",
+                     rid, config.getResourceId());
+    }
+
+    /**
+     * UnitTest method for getResourceIdBuilder.
+     */
+    @Test
+    public void testGetResourceIdBuilder() {
+        // test Handler
+        OpenConfigConfigOfComponentHandler config = new OpenConfigConfigOfComponentHandler(parent);
+
+        assertEquals("[NG]getResourceIdBuilder:Return is not an expected ResourceIdBuilder.\n",
+                     rid, config.getResourceIdBuilder().build());
+    }
+
+    /**
+     * UnitTest method for addAnnotation.
+     */
+    @Test
+    public void testAddAnnotation() {
+        // test Handler
+        OpenConfigConfigOfComponentHandler config = new OpenConfigConfigOfComponentHandler(parent);
+
+        // call addAnnotation
+        config.addAnnotation("name", "value");
+
+        // get annotatedNodeInfos
+        List<AnnotatedNodeInfo> annotatedNodeInfos = new ArrayList<AnnotatedNodeInfo>();
+        try {
+            Field field = OpenConfigObjectHandler.class.getDeclaredField("annotatedNodeInfos");
+            field.setAccessible(true);
+            annotatedNodeInfos = (List<AnnotatedNodeInfo>) field.get(config);
+        } catch (NoSuchFieldException e) {
+            Assert.fail("[NG]addAnnotation:List of AnnotatedNodeInfo does not exist.\n" + e);
+        } catch (IllegalAccessException e) {
+            Assert.fail("[NG]addAnnotation:Access to list of AnnotatedNodeInfo is illegal.\n" + e);
+        }
+
+        assertEquals("[NG]addAnnotation:List size of AnnotatedNodeInfo is invalid.\n",
+                     1, annotatedNodeInfos.size());
+        assertEquals("[NG]addAnnotation:ResourceId of AnnotatedNodeInfo is not an expected one.\n",
+                     rid, annotatedNodeInfos.get(0).resourceId());
+        assertEquals("[NG]addAnnotation:List size of Annotation is invalid.\n",
+                     1, annotatedNodeInfos.get(0).annotations().size());
+        assertEquals("[NG]addAnnotation:Name of Annotation is not an expected one.\n",
+                     "name", annotatedNodeInfos.get(0).annotations().get(0).name());
+        assertEquals("[NG]addAnnotation:Value of Annotation is not an expected one.\n",
+                     "value", annotatedNodeInfos.get(0).annotations().get(0).value());
+    }
+
+    /**
+     * UnitTest method for getAnnotatedNodeInfoList.
+     */
+    @Test
+    public void testAnnotatedNodeInfoList() {
+        // test Handler
+        OpenConfigConfigOfComponentHandler config = new OpenConfigConfigOfComponentHandler(parent);
+
+        // set list of AnnotatedNodeInfo
+        config.addAnnotation("name", "value");
+
+        assertEquals("[NG]getAnnotatedNodeInfoList:List size of AnnotatedNodeInfo is invalid.\n",
+                     1, config.getAnnotatedNodeInfoList().size());
+        assertEquals("[NG]getAnnotatedNodeInfoList:ResourceId of AnnotatedNodeInfo is not an expected one.\n",
+                     rid, config.getAnnotatedNodeInfoList().get(0).resourceId());
+        assertEquals("[NG]getAnnotatedNodeInfoList:List size of Annotation is invalid.\n",
+                     1, config.getAnnotatedNodeInfoList().get(0).annotations().size());
+        assertEquals("[NG]getAnnotatedNodeInfoList:Name of Annotation is not an expected one.\n",
+                     "name", config.getAnnotatedNodeInfoList().get(0).annotations().get(0).name());
+        assertEquals("[NG]getAnnotatedNodeInfoList:Value of Annotation is not an expected one.\n",
+                     "value", config.getAnnotatedNodeInfoList().get(0).annotations().get(0).value());
+    }
+
+    /**
+     * UnitTest method for addName.
+     */
+    @Test
+    public void testAddName() {
+        // test Handler
+        OpenConfigConfigOfComponentHandler config = new OpenConfigConfigOfComponentHandler(parent);
+
+        // call addName
+        config.addName("name");
+
+        // expected ModelObject
+        DefaultConfig modelObject = new DefaultConfig();
+        modelObject.name("name");
+
+        assertEquals("[NG]addName:ModelObject(Name added) is not an expected one.\n",
+                     modelObject, config.getModelObject());
+    }
+}
diff --git a/apps/odtn/api/src/test/java/org/onosproject/odtn/utils/openconfig/OpenConfigConfigOfTransceiverHandlerTest.java b/apps/odtn/api/src/test/java/org/onosproject/odtn/utils/openconfig/OpenConfigConfigOfTransceiverHandlerTest.java
new file mode 100755
index 0000000..1e11a16
--- /dev/null
+++ b/apps/odtn/api/src/test/java/org/onosproject/odtn/utils/openconfig/OpenConfigConfigOfTransceiverHandlerTest.java
@@ -0,0 +1,206 @@
+/*
+ * Copyright 2018-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.odtn.utils.openconfig;
+
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.List;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.onosproject.yang.model.ResourceId;
+import org.onosproject.yang.runtime.AnnotatedNodeInfo;
+
+import org.onosproject.yang.gen.v1.openconfigplatformtransceiver.rev20180515.openconfigplatformtransceiver.porttransceivertop.transceiver.DefaultConfig;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * UnitTest class for OpenConfigConfigOfTransceiverHandler.
+ */
+public class OpenConfigConfigOfTransceiverHandlerTest {
+    // parent Handler
+    OpenConfigTransceiverHandler parent;
+
+    // expected ResourceId
+    ResourceId rid;
+
+    /**
+     * Set up method for UnitTest.
+     */
+    @Before
+    public void setUp() {
+        // parent Handler set up
+        // create <components xmlns="http://openconfig.net/yang/platform"></components>
+        OpenConfigComponentsHandler components = new OpenConfigComponentsHandler();
+
+        // add <component><name>name</name></component>
+        OpenConfigComponentHandler component
+            = new OpenConfigComponentHandler("name", components);
+
+        // add <transceiver xmlns="http://openconfig.net/yang/platform/transceiver"></transceiver>
+        parent = new OpenConfigTransceiverHandler(component);
+
+        // expected ResourceId set up
+        rid = ResourceId.builder()
+        .addBranchPointSchema("components", "http://openconfig.net/yang/platform")
+        .addBranchPointSchema("component", "http://openconfig.net/yang/platform")
+        .addKeyLeaf("name", "http://openconfig.net/yang/platform", "name")
+        .addBranchPointSchema("transceiver", "http://openconfig.net/yang/platform/transceiver")
+        .addBranchPointSchema("config", "http://openconfig.net/yang/platform/transceiver")
+        .build();
+    }
+
+    /**
+     * UnitTest method for getModelObject.
+     */
+    @Test
+    public void testGetModelObject() {
+        // test Handler
+        OpenConfigConfigOfTransceiverHandler config = new OpenConfigConfigOfTransceiverHandler(parent);
+
+        // expected ModelObject
+        DefaultConfig modelObject = new DefaultConfig();
+
+        assertEquals("[NG]getModelObject:Return is not an expected ModelObject.\n",
+                     modelObject, config.getModelObject());
+    }
+
+    /**
+     * UnitTest method for setResourceId.
+     */
+    @Test
+    public void testSetResourceId() {
+        // call setResourceId
+        OpenConfigConfigOfTransceiverHandler config = new OpenConfigConfigOfTransceiverHandler(parent);
+
+        // get resourceId
+        ResourceId resourceId = null;
+        try {
+            Field field = OpenConfigObjectHandler.class.getDeclaredField("resourceId");
+            field.setAccessible(true);
+            resourceId = (ResourceId) field.get(config);
+        } catch (NoSuchFieldException e) {
+            Assert.fail("[NG]setResourceId:ResourceId does not exist.\n" + e);
+        } catch (IllegalAccessException e) {
+            Assert.fail("[NG]setResourceId:Access to ResourceId is illegal.\n" + e);
+        }
+
+        assertEquals("[NG]setResourceId:Set ResourceId is not an expected one.\n",
+                     rid, resourceId);
+    }
+
+    /**
+     * UnitTest method for getResourceId.
+     */
+    @Test
+    public void testGetResourceId() {
+        // test Handler
+        OpenConfigConfigOfTransceiverHandler config = new OpenConfigConfigOfTransceiverHandler(parent);
+
+        assertEquals("[NG]getResourceId:Return is not an expected ResourceId.\n",
+                     rid, config.getResourceId());
+    }
+
+    /**
+     * UnitTest method for getResourceIdBuilder.
+     */
+    @Test
+    public void testGetResourceIdBuilder() {
+        // test Handler
+        OpenConfigConfigOfTransceiverHandler config = new OpenConfigConfigOfTransceiverHandler(parent);
+
+        assertEquals("[NG]getResourceIdBuilder:Return is not an expected ResourceIdBuilder.\n",
+                     rid, config.getResourceIdBuilder().build());
+    }
+
+    /**
+     * UnitTest method for addAnnotation.
+     */
+    @Test
+    public void testAddAnnotation() {
+        // test Handler
+        OpenConfigConfigOfTransceiverHandler config = new OpenConfigConfigOfTransceiverHandler(parent);
+
+        // call addAnnotation
+        config.addAnnotation("name", "value");
+
+        // get annotatedNodeInfos
+        List<AnnotatedNodeInfo> annotatedNodeInfos = new ArrayList<AnnotatedNodeInfo>();
+        try {
+            Field field = OpenConfigObjectHandler.class.getDeclaredField("annotatedNodeInfos");
+            field.setAccessible(true);
+            annotatedNodeInfos = (List<AnnotatedNodeInfo>) field.get(config);
+        } catch (NoSuchFieldException e) {
+            Assert.fail("[NG]addAnnotation:List of AnnotatedNodeInfo does not exist.\n" + e);
+        } catch (IllegalAccessException e) {
+            Assert.fail("[NG]addAnnotation:Access to list of AnnotatedNodeInfo is illegal.\n" + e);
+        }
+
+        assertEquals("[NG]addAnnotation:List size of AnnotatedNodeInfo is invalid.\n",
+                     1, annotatedNodeInfos.size());
+        assertEquals("[NG]addAnnotation:ResourceId of AnnotatedNodeInfo is not an expected one.\n",
+                     rid, annotatedNodeInfos.get(0).resourceId());
+        assertEquals("[NG]addAnnotation:List size of Annotation is invalid.\n",
+                     1, annotatedNodeInfos.get(0).annotations().size());
+        assertEquals("[NG]addAnnotation:Name of Annotation is not an expected one.\n",
+                     "name", annotatedNodeInfos.get(0).annotations().get(0).name());
+        assertEquals("[NG]addAnnotation:Value of Annotation is not an expected one.\n",
+                     "value", annotatedNodeInfos.get(0).annotations().get(0).value());
+    }
+
+    /**
+     * UnitTest method for getAnnotatedNodeInfoList.
+     */
+    @Test
+    public void testGetAnnotatedNodeInfoList() {
+        // test Handler
+        OpenConfigConfigOfTransceiverHandler config = new OpenConfigConfigOfTransceiverHandler(parent);
+
+        // set list of AnnotatedNodeInfo
+        config.addAnnotation("name", "value");
+
+        assertEquals("[NG]getAnnotatedNodeInfoList:List size of AnnotatedNodeInfo is invalid.\n",
+                     1, config.getAnnotatedNodeInfoList().size());
+        assertEquals("[NG]getAnnotatedNodeInfoList:ResourceId of AnnotatedNodeInfo is not an expected one.\n",
+                     rid, config.getAnnotatedNodeInfoList().get(0).resourceId());
+        assertEquals("[NG]getAnnotatedNodeInfoList:List size of Annotation is invalid.\n",
+                     1, config.getAnnotatedNodeInfoList().get(0).annotations().size());
+        assertEquals("[NG]getAnnotatedNodeInfoList:Name of Annotation is not an expected one.\n",
+                     "name", config.getAnnotatedNodeInfoList().get(0).annotations().get(0).name());
+        assertEquals("[NG]getAnnotatedNodeInfoList:Value of Annotation is not an expected one.\n",
+                     "value", config.getAnnotatedNodeInfoList().get(0).annotations().get(0).value());
+    }
+
+    /**
+     * UnitTest method for addEnabled.
+     */
+    @Test
+    public void testAddEnabled() {
+        // test Handler
+        OpenConfigConfigOfTransceiverHandler config = new OpenConfigConfigOfTransceiverHandler(parent);
+
+        // call addEnabled
+        config.addEnabled(true);
+
+        // expected ModelObject
+        DefaultConfig modelObject = new DefaultConfig();
+        modelObject.enabled(true);
+
+        assertEquals("[NG]addEnabled:ModelObject(Enabled added) is not an expected one.\n",
+                     modelObject, config.getModelObject());
+    }
+}
diff --git a/apps/odtn/api/src/test/java/org/onosproject/odtn/utils/openconfig/OpenConfigLogicalChannelAssignmentsHandlerTest.java b/apps/odtn/api/src/test/java/org/onosproject/odtn/utils/openconfig/OpenConfigLogicalChannelAssignmentsHandlerTest.java
new file mode 100755
index 0000000..2593593
--- /dev/null
+++ b/apps/odtn/api/src/test/java/org/onosproject/odtn/utils/openconfig/OpenConfigLogicalChannelAssignmentsHandlerTest.java
@@ -0,0 +1,217 @@
+/*
+ * Copyright 2018-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.odtn.utils.openconfig;
+
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.List;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.onosproject.yang.model.ResourceId;
+import org.onosproject.yang.runtime.AnnotatedNodeInfo;
+
+import org.onosproject.yang.gen.v1.openconfigterminaldevice.rev20170708.openconfigterminaldevice.terminallogicalchanassignmenttop.DefaultLogicalChannelAssignments;
+import org.onosproject.yang.gen.v1.openconfigterminaldevice.rev20170708.openconfigterminaldevice.terminallogicalchanassignmenttop.logicalchannelassignments.DefaultAssignment;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * UnitTest class for OpenConfigLogicalChannelAssignmentsHandler.
+ */
+public class OpenConfigLogicalChannelAssignmentsHandlerTest {
+    // parent Handler
+    OpenConfigChannelHandler parent;
+
+    // expected ResourceId
+    ResourceId rid;
+
+    /**
+     * Set up method for UnitTest.
+     */
+    @Before
+    public void setUp() {
+        // parent Handler set up
+        // create <terminal-device xmlns="http://openconfig.net/yang/terminal-device">
+        //        </terminal-device>
+        OpenConfigTerminalDeviceHandler terminalDevice = new OpenConfigTerminalDeviceHandler();
+
+        // add <logical-channels></logical-channels>
+        OpenConfigLogicalChannelsHandler logicalChannels =
+            new OpenConfigLogicalChannelsHandler(terminalDevice);
+
+        // add <channel><index>1</index></channel>
+        parent = new OpenConfigChannelHandler(1, logicalChannels);
+
+        // expected ResourceId set up
+        rid = ResourceId.builder()
+        .addBranchPointSchema("terminal-device", "http://openconfig.net/yang/terminal-device")
+        .addBranchPointSchema("logical-channels", "http://openconfig.net/yang/terminal-device")
+        .addBranchPointSchema("channel", "http://openconfig.net/yang/terminal-device")
+        .addKeyLeaf("index", "http://openconfig.net/yang/terminal-device", 1)
+        .addBranchPointSchema("logical-channel-assignments", "http://openconfig.net/yang/terminal-device")
+        .build();
+    }
+
+    /**
+     * UnitTest method for getModelObject.
+     */
+    @Test
+    public void testGetModelObject() {
+        // test Handler
+        OpenConfigLogicalChannelAssignmentsHandler logicalChannelAssignments =
+            new OpenConfigLogicalChannelAssignmentsHandler(parent);
+
+        // expected ModelObject
+        DefaultLogicalChannelAssignments modelObject = new DefaultLogicalChannelAssignments();
+
+        assertEquals("[NG]getModelObject:Return is not an expected ModelObject.\n",
+                     modelObject, logicalChannelAssignments.getModelObject());
+    }
+
+    /**
+     * UnitTest method for setResourceId.
+     */
+    @Test
+    public void testSetResourceId() {
+        // call setResourceId
+        OpenConfigLogicalChannelAssignmentsHandler logicalChannelAssignments =
+            new OpenConfigLogicalChannelAssignmentsHandler(parent);
+
+        // get resourceId
+        ResourceId resourceId = null;
+        try {
+            Field field = OpenConfigObjectHandler.class.getDeclaredField("resourceId");
+            field.setAccessible(true);
+            resourceId = (ResourceId) field.get(logicalChannelAssignments);
+        } catch (NoSuchFieldException e) {
+            Assert.fail("[NG]setResourceId:ResourceId does not exist.\n" + e);
+        } catch (IllegalAccessException e) {
+            Assert.fail("[NG]setResourceId:Access to ResourceId is illegal.\n" + e);
+        }
+
+        assertEquals("[NG]setResourceId:Set ResourceId is not an expected one.\n",
+                     rid, resourceId);
+    }
+
+    /**
+     * UnitTest method for getResourceId.
+     */
+    @Test
+    public void testGetResourceId() {
+        // test Handler
+        OpenConfigLogicalChannelAssignmentsHandler logicalChannelAssignments =
+            new OpenConfigLogicalChannelAssignmentsHandler(parent);
+
+        assertEquals("[NG]getResourceId:Return is not an expected ResourceId.\n",
+                     rid, logicalChannelAssignments.getResourceId());
+    }
+
+    /**
+     * UnitTest method for getResourceIdBuilder.
+     */
+    @Test
+    public void testGetResourceIdBuilder() {
+        // test Handler
+        OpenConfigLogicalChannelAssignmentsHandler logicalChannelAssignments =
+            new OpenConfigLogicalChannelAssignmentsHandler(parent);
+
+        assertEquals("[NG]getResourceIdBuilder:Return is not an expected ResourceIdBuilder.\n",
+                     rid, logicalChannelAssignments.getResourceIdBuilder().build());
+    }
+
+    /**
+     * UnitTest method for addAnnotation.
+     */
+    @Test
+    public void testAddAnnotation() {
+        // test Handler
+        OpenConfigLogicalChannelAssignmentsHandler logicalChannelAssignments =
+            new OpenConfigLogicalChannelAssignmentsHandler(parent);
+
+        // call addAnnotation
+        logicalChannelAssignments.addAnnotation("name", "value");
+
+        // get annotatedNodeInfos
+        List<AnnotatedNodeInfo> annotatedNodeInfos = new ArrayList<AnnotatedNodeInfo>();
+        try {
+            Field field = OpenConfigObjectHandler.class.getDeclaredField("annotatedNodeInfos");
+            field.setAccessible(true);
+            annotatedNodeInfos = (List<AnnotatedNodeInfo>) field.get(logicalChannelAssignments);
+        } catch (NoSuchFieldException e) {
+            Assert.fail("[NG]addAnnotation:List of AnnotatedNodeInfo does not exist.\n" + e);
+        } catch (IllegalAccessException e) {
+            Assert.fail("[NG]addAnnotation:Access to list of AnnotatedNodeInfo is illegal.\n" + e);
+        }
+
+        assertEquals("[NG]addAnnotation:List size of AnnotatedNodeInfo is invalid.\n",
+                     1, annotatedNodeInfos.size());
+        assertEquals("[NG]addAnnotation:ResourceId of AnnotatedNodeInfo is not an expected one.\n",
+                     rid, annotatedNodeInfos.get(0).resourceId());
+        assertEquals("[NG]addAnnotation:List size of Annotation is invalid.\n",
+                     1, annotatedNodeInfos.get(0).annotations().size());
+        assertEquals("[NG]addAnnotation:Name of Annotation is not an expected one.\n",
+                     "name", annotatedNodeInfos.get(0).annotations().get(0).name());
+        assertEquals("[NG]addAnnotation:Value of Annotation is not an expected one.\n",
+                     "value", annotatedNodeInfos.get(0).annotations().get(0).value());
+    }
+
+    /**
+     * UnitTest method for getAnnotatedNodeInfoList.
+     */
+    @Test
+    public void testGetAnnotatedNodeInfoList() {
+        // test Handler
+        OpenConfigLogicalChannelAssignmentsHandler logicalChannelAssignments =
+            new OpenConfigLogicalChannelAssignmentsHandler(parent);
+
+        // set list of AnnotatedNodeInfo
+        logicalChannelAssignments.addAnnotation("name", "value");
+
+        assertEquals("[NG]getAnnotatedNodeInfoList:List size of AnnotatedNodeInfo is invalid.\n",
+                     1, logicalChannelAssignments.getAnnotatedNodeInfoList().size());
+        assertEquals("[NG]getAnnotatedNodeInfoList:ResourceId of AnnotatedNodeInfo is not an expected one.\n",
+                     rid, logicalChannelAssignments.getAnnotatedNodeInfoList().get(0).resourceId());
+        assertEquals("[NG]getAnnotatedNodeInfoList:List size of Annotation is invalid.\n",
+                     1, logicalChannelAssignments.getAnnotatedNodeInfoList().get(0).annotations().size());
+        assertEquals("[NG]getAnnotatedNodeInfoList:Name of Annotation is not an expected one.\n",
+                     "name", logicalChannelAssignments.getAnnotatedNodeInfoList().get(0).annotations().get(0).name());
+        assertEquals("[NG]getAnnotatedNodeInfoList:Value of Annotation is not an expected one.\n",
+                     "value", logicalChannelAssignments.getAnnotatedNodeInfoList().get(0).annotations().get(0).value());
+    }
+
+    /**
+     * UnitTest method for addAssignment.
+     */
+    @Test
+    public void testAddAssignment() {
+        // test Handler
+        OpenConfigLogicalChannelAssignmentsHandler logicalChannelAssignments =
+            new OpenConfigLogicalChannelAssignmentsHandler(parent);
+
+        // call addAssignment
+        OpenConfigAssignmentHandler assignment = new OpenConfigAssignmentHandler(2, logicalChannelAssignments);
+
+        // expected ModelObject
+        DefaultLogicalChannelAssignments modelObject = new DefaultLogicalChannelAssignments();
+        DefaultAssignment assign = new DefaultAssignment();
+        assign.index(2);
+        modelObject.addToAssignment(assign);
+
+        assertEquals("[NG]addAssignment:ModelObject(Assignment added) is not an expected one.\n",
+                     modelObject, logicalChannelAssignments.getModelObject());
+    }
+}
diff --git a/apps/odtn/api/src/test/java/org/onosproject/odtn/utils/openconfig/OpenConfigLogicalChannelsHandlerTest.java b/apps/odtn/api/src/test/java/org/onosproject/odtn/utils/openconfig/OpenConfigLogicalChannelsHandlerTest.java
new file mode 100755
index 0000000..21cfeaa
--- /dev/null
+++ b/apps/odtn/api/src/test/java/org/onosproject/odtn/utils/openconfig/OpenConfigLogicalChannelsHandlerTest.java
@@ -0,0 +1,200 @@
+/*
+ * Copyright 2018-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.odtn.utils.openconfig;
+
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.List;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.onosproject.yang.model.ResourceId;
+import org.onosproject.yang.runtime.AnnotatedNodeInfo;
+
+import org.onosproject.yang.gen.v1.openconfigterminaldevice.rev20170708.openconfigterminaldevice.terminallogicalchanneltop.DefaultLogicalChannels;
+import org.onosproject.yang.gen.v1.openconfigterminaldevice.rev20170708.openconfigterminaldevice.terminallogicalchanneltop.logicalchannels.DefaultChannel;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * UnitTest class for OpenConfigLogicalChannelsHandler.
+ */
+public class OpenConfigLogicalChannelsHandlerTest {
+    // parent Handler
+    OpenConfigTerminalDeviceHandler parent;
+
+    // expected ResourceId
+    ResourceId rid;
+
+    /**
+     * Set up method for UnitTest.
+     */
+    @Before
+    public void setUp() {
+        // parent Handler set up
+        // create <terminal-device xmlns="http://openconfig.net/yang/terminal-device">
+        //        </terminal-device>
+        parent = new OpenConfigTerminalDeviceHandler();
+
+        // expected ResourceId set up
+        rid = ResourceId.builder()
+        .addBranchPointSchema("terminal-device", "http://openconfig.net/yang/terminal-device")
+        .addBranchPointSchema("logical-channels", "http://openconfig.net/yang/terminal-device")
+        .build();
+    }
+
+    /**
+     * UnitTest method for getModelObject.
+     */
+    @Test
+    public void testGetModelObject() {
+        // test Handler
+        OpenConfigLogicalChannelsHandler logicalChannels = new OpenConfigLogicalChannelsHandler(parent);
+
+        // expected ModelObject
+        DefaultLogicalChannels modelObject = new DefaultLogicalChannels();
+
+        assertEquals("[NG]getModelObject:Return is not an expected ModelObject.\n",
+                     modelObject, logicalChannels.getModelObject());
+    }
+
+    /**
+     * UnitTest method for setResourceId.
+     */
+    @Test
+    public void testSetResourceId() {
+        // call setResourceId
+        OpenConfigLogicalChannelsHandler logicalChannels = new OpenConfigLogicalChannelsHandler(parent);
+
+        // get resourceId
+        ResourceId resourceId = null;
+        try {
+            Field field = OpenConfigObjectHandler.class.getDeclaredField("resourceId");
+            field.setAccessible(true);
+            resourceId = (ResourceId) field.get(logicalChannels);
+        } catch (NoSuchFieldException e) {
+            Assert.fail("[NG]setResourceId:ResourceId does not exist.\n" + e);
+        } catch (IllegalAccessException e) {
+            Assert.fail("[NG]setResourceId:Access to ResourceId is illegal.\n" + e);
+        }
+
+        assertEquals("[NG]setResourceId:Set ResourceId is not an expected one.\n",
+                     rid, resourceId);
+    }
+
+    /**
+     * UnitTest method for getResourceId.
+     */
+    @Test
+    public void testGetResourceId() {
+        // test Handler
+        OpenConfigLogicalChannelsHandler logicalChannels = new OpenConfigLogicalChannelsHandler(parent);
+
+        assertEquals("[NG]getResourceId:Return is not an expected ResourceId.\n",
+                     rid, logicalChannels.getResourceId());
+    }
+
+    /**
+     * UnitTest method for getResourceIdBuilder.
+     */
+    @Test
+    public void testGetResourceIdBuilder() {
+        // test Handler
+        OpenConfigLogicalChannelsHandler logicalChannels = new OpenConfigLogicalChannelsHandler(parent);
+
+        assertEquals("[NG]getResourceIdBuilder:Return is not an expected ResourceIdBuilder.\n",
+                     rid, logicalChannels.getResourceIdBuilder().build());
+    }
+
+    /**
+     * UnitTest method for addAnnotation.
+     */
+    @Test
+    public void testAddAnnotation() {
+        // test Handler
+        OpenConfigLogicalChannelsHandler logicalChannels = new OpenConfigLogicalChannelsHandler(parent);
+
+        // call addAnnotation
+        logicalChannels.addAnnotation("name", "value");
+
+        // get annotatedNodeInfos
+        List<AnnotatedNodeInfo> annotatedNodeInfos = new ArrayList<AnnotatedNodeInfo>();
+        try {
+            Field field = OpenConfigObjectHandler.class.getDeclaredField("annotatedNodeInfos");
+            field.setAccessible(true);
+            annotatedNodeInfos = (List<AnnotatedNodeInfo>) field.get(logicalChannels);
+        } catch (NoSuchFieldException e) {
+            Assert.fail("[NG]addAnnotation:List of AnnotatedNodeInfo does not exist.\n" + e);
+        } catch (IllegalAccessException e) {
+            Assert.fail("[NG]addAnnotation:Access to list of AnnotatedNodeInfo is illegal.\n" + e);
+        }
+
+        assertEquals("[NG]addAnnotation:List size of AnnotatedNodeInfo is invalid.\n",
+                     1, annotatedNodeInfos.size());
+        assertEquals("[NG]addAnnotation:ResourceId of AnnotatedNodeInfo is not an expected one.\n",
+                     rid, annotatedNodeInfos.get(0).resourceId());
+        assertEquals("[NG]addAnnotation:List size of Annotation is invalid.\n",
+                     1, annotatedNodeInfos.get(0).annotations().size());
+        assertEquals("[NG]addAnnotation:Name of Annotation is not an expected one.\n",
+                     "name", annotatedNodeInfos.get(0).annotations().get(0).name());
+        assertEquals("[NG]addAnnotation:Value of Annotation is not an expected one.\n",
+                     "value", annotatedNodeInfos.get(0).annotations().get(0).value());
+    }
+
+    /**
+     * UnitTest method for getAnnotatedNodeInfoList.
+     */
+    @Test
+    public void testGetAnnotatedNodeInfoList() {
+        // test Handler
+        OpenConfigLogicalChannelsHandler logicalChannels = new OpenConfigLogicalChannelsHandler(parent);
+
+        // set list of AnnotatedNodeInfo
+        logicalChannels.addAnnotation("name", "value");
+
+        assertEquals("[NG]getAnnotatedNodeInfoList:List size of AnnotatedNodeInfo is invalid.\n",
+                     1, logicalChannels.getAnnotatedNodeInfoList().size());
+        assertEquals("[NG]getAnnotatedNodeInfoList:ResourceId of AnnotatedNodeInfo is not an expected one.\n",
+                     rid, logicalChannels.getAnnotatedNodeInfoList().get(0).resourceId());
+        assertEquals("[NG]getAnnotatedNodeInfoList:List size of Annotation is invalid.\n",
+                     1, logicalChannels.getAnnotatedNodeInfoList().get(0).annotations().size());
+        assertEquals("[NG]getAnnotatedNodeInfoList:Name of Annotation is not an expected one.\n",
+                     "name", logicalChannels.getAnnotatedNodeInfoList().get(0).annotations().get(0).name());
+        assertEquals("[NG]getAnnotatedNodeInfoList:Value of Annotation is not an expected one.\n",
+                     "value", logicalChannels.getAnnotatedNodeInfoList().get(0).annotations().get(0).value());
+    }
+
+    /**
+     * UnitTest method for addChannel.
+     */
+    @Test
+    public void testAddChannel() {
+        // test Handler
+        OpenConfigLogicalChannelsHandler logicalChannels = new OpenConfigLogicalChannelsHandler(parent);
+
+        // call addChannel
+        OpenConfigChannelHandler channel = new OpenConfigChannelHandler(1, logicalChannels);
+
+        // expected ModelObject
+        DefaultLogicalChannels modelObject = new DefaultLogicalChannels();
+        DefaultChannel chan = new DefaultChannel();
+        chan.index(1);
+        modelObject.addToChannel(chan);
+
+        assertEquals("[NG]addChannel:ModelObject(Channel added) is not an expected one.\n",
+                     modelObject, logicalChannels.getModelObject());
+    }
+}
diff --git a/apps/odtn/api/src/test/java/org/onosproject/odtn/utils/openconfig/OpenConfigTerminalDeviceHandlerTest.java b/apps/odtn/api/src/test/java/org/onosproject/odtn/utils/openconfig/OpenConfigTerminalDeviceHandlerTest.java
new file mode 100755
index 0000000..d058dae
--- /dev/null
+++ b/apps/odtn/api/src/test/java/org/onosproject/odtn/utils/openconfig/OpenConfigTerminalDeviceHandlerTest.java
@@ -0,0 +1,190 @@
+/*
+ * Copyright 2018-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.odtn.utils.openconfig;
+
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.List;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.onosproject.yang.model.ResourceId;
+import org.onosproject.yang.runtime.AnnotatedNodeInfo;
+
+import org.onosproject.yang.gen.v1.openconfigterminaldevice.rev20170708.openconfigterminaldevice.terminaldevicetop.DefaultTerminalDevice;
+import org.onosproject.yang.gen.v1.openconfigterminaldevice.rev20170708.openconfigterminaldevice.terminallogicalchanneltop.DefaultLogicalChannels;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * UnitTest class for OpenConfigTerminalDeviceHandler.
+ */
+public class OpenConfigTerminalDeviceHandlerTest {
+    // expected ResourceId
+    ResourceId rid;
+
+    /**
+     * Set up method for UnitTest.
+     */
+    @Before
+    public void setUp() {
+        // expected ResourceId set up
+        rid = ResourceId.builder()
+        .addBranchPointSchema("terminal-device", "http://openconfig.net/yang/terminal-device")
+        .build();
+    }
+
+    /**
+     * UnitTest method for getModelObject.
+     */
+    @Test
+    public void testGetModelObject() {
+        // test Handler
+        OpenConfigTerminalDeviceHandler terminalDevice = new OpenConfigTerminalDeviceHandler();
+
+        // expected ModelObject
+        DefaultTerminalDevice modelObject = new DefaultTerminalDevice();
+
+        assertEquals("[NG]getModelObject:Return is not an expected ModelObject.\n",
+                     modelObject, terminalDevice.getModelObject());
+    }
+
+    /**
+     * UnitTest method for setResourceId.
+     */
+    @Test
+    public void testSetResourceId() {
+        // call setResourceId
+        OpenConfigTerminalDeviceHandler terminalDevice = new OpenConfigTerminalDeviceHandler();
+
+        // get resourceId
+        ResourceId resourceId = null;
+        try {
+            Field field = OpenConfigObjectHandler.class.getDeclaredField("resourceId");
+            field.setAccessible(true);
+            resourceId = (ResourceId) field.get(terminalDevice);
+        } catch (NoSuchFieldException e) {
+            Assert.fail("[NG]setResourceId:ResourceId does not exist.\n" + e);
+        } catch (IllegalAccessException e) {
+            Assert.fail("[NG]setResourceId:Access to ResourceId is illegal.\n" + e);
+        }
+
+        assertEquals("[NG]setResourceId:Set ResourceId is not an expected one.\n",
+                     rid, resourceId);
+    }
+
+    /**
+     * UnitTest method for getResourceId.
+     */
+    @Test
+    public void testGetResourceId() {
+        // test Handler
+        OpenConfigTerminalDeviceHandler terminalDevice = new OpenConfigTerminalDeviceHandler();
+
+        assertEquals("[NG]getResourceId:Return is not an expected ResourceId.\n",
+                     rid, terminalDevice.getResourceId());
+    }
+
+    /**
+     * UnitTest method for getResourceIdBuilder.
+     */
+    @Test
+    public void testGetResourceIdBuilder() {
+        // test Handler
+        OpenConfigTerminalDeviceHandler terminalDevice = new OpenConfigTerminalDeviceHandler();
+
+        assertEquals("[NG]getResourceIdBuilder:Return is not an expected ResourceIdBuilder.\n",
+                     rid, terminalDevice.getResourceIdBuilder().build());
+    }
+
+    /**
+     * UnitTest method for addAnnotation.
+     */
+    @Test
+    public void testAddAnnotation() {
+        // test Handler
+        OpenConfigTerminalDeviceHandler terminalDevice = new OpenConfigTerminalDeviceHandler();
+
+        // call addAnnotation
+        terminalDevice.addAnnotation("name", "value");
+
+        // get annotatedNodeInfos
+        List<AnnotatedNodeInfo> annotatedNodeInfos = new ArrayList<AnnotatedNodeInfo>();
+        try {
+            Field field = OpenConfigObjectHandler.class.getDeclaredField("annotatedNodeInfos");
+            field.setAccessible(true);
+            annotatedNodeInfos = (List<AnnotatedNodeInfo>) field.get(terminalDevice);
+        } catch (NoSuchFieldException e) {
+            Assert.fail("[NG]addAnnotation:List of AnnotatedNodeInfo does not exist.\n" + e);
+        } catch (IllegalAccessException e) {
+            Assert.fail("[NG]addAnnotation:Access to list of AnnotatedNodeInfo is illegal.\n" + e);
+        }
+
+        assertEquals("[NG]addAnnotation:List size of AnnotatedNodeInfo is invalid.\n",
+                     1, annotatedNodeInfos.size());
+        assertEquals("[NG]addAnnotation:ResourceId of AnnotatedNodeInfo is not an expected one.\n",
+                     rid, annotatedNodeInfos.get(0).resourceId());
+        assertEquals("[NG]addAnnotation:List size of Annotation is invalid.\n",
+                     1, annotatedNodeInfos.get(0).annotations().size());
+        assertEquals("[NG]addAnnotation:Name of Annotation is not an expected one.\n",
+                     "name", annotatedNodeInfos.get(0).annotations().get(0).name());
+        assertEquals("[NG]addAnnotation:Value of Annotation is not an expected one.\n",
+                     "value", annotatedNodeInfos.get(0).annotations().get(0).value());
+    }
+
+    /**
+     * UnitTest method for getAnnotatedNodeInfoList.
+     */
+    @Test
+    public void testAnnotatedNodeInfoList() {
+        // test Handler
+        OpenConfigTerminalDeviceHandler terminalDevice = new OpenConfigTerminalDeviceHandler();
+
+        // set list of AnnotatedNodeInfo
+        terminalDevice.addAnnotation("name", "value");
+
+        assertEquals("[NG]getAnnotatedNodeInfoList:List size of AnnotatedNodeInfo is invalid.\n",
+                     1, terminalDevice.getAnnotatedNodeInfoList().size());
+        assertEquals("[NG]getAnnotatedNodeInfoList:ResourceId of AnnotatedNodeInfo is not an expected one.\n",
+                     rid, terminalDevice.getAnnotatedNodeInfoList().get(0).resourceId());
+        assertEquals("[NG]getAnnotatedNodeInfoList:List size of Annotation is invalid.\n",
+                     1, terminalDevice.getAnnotatedNodeInfoList().get(0).annotations().size());
+        assertEquals("[NG]getAnnotatedNodeInfoList:Name of Annotation is not an expected one.\n",
+                     "name", terminalDevice.getAnnotatedNodeInfoList().get(0).annotations().get(0).name());
+        assertEquals("[NG]getAnnotatedNodeInfoList:Value of Annotation is not an expected one.\n",
+                     "value", terminalDevice.getAnnotatedNodeInfoList().get(0).annotations().get(0).value());
+    }
+
+    /**
+     * UnitTest method for addLogicalChannels.
+     */
+    @Test
+    public void testAddLogicalChannels() {
+        // test Handler
+        OpenConfigTerminalDeviceHandler terminalDevice = new OpenConfigTerminalDeviceHandler();
+
+        // call addLogicalChannels
+        OpenConfigLogicalChannelsHandler logicalChannels = new OpenConfigLogicalChannelsHandler(terminalDevice);
+
+        // expected ModelObject
+        DefaultTerminalDevice modelObject = new DefaultTerminalDevice();
+        DefaultLogicalChannels logicalChan = new DefaultLogicalChannels();
+        modelObject.logicalChannels(logicalChan);
+
+        assertEquals("[NG]addLogicalChannels:ModelObject(LogicalChannels added) is not an expected one.\n",
+                     modelObject, terminalDevice.getModelObject());
+    }
+}
diff --git a/apps/odtn/api/src/test/java/org/onosproject/odtn/utils/openconfig/OpenConfigTransceiverHandlerTest.java b/apps/odtn/api/src/test/java/org/onosproject/odtn/utils/openconfig/OpenConfigTransceiverHandlerTest.java
new file mode 100755
index 0000000..0a70a38
--- /dev/null
+++ b/apps/odtn/api/src/test/java/org/onosproject/odtn/utils/openconfig/OpenConfigTransceiverHandlerTest.java
@@ -0,0 +1,203 @@
+/*
+ * Copyright 2018-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.odtn.utils.openconfig;
+
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.List;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.onosproject.yang.model.ResourceId;
+import org.onosproject.yang.runtime.AnnotatedNodeInfo;
+
+import org.onosproject.yang.gen.v1.openconfigplatformtransceiver.rev20180515.openconfigplatformtransceiver.porttransceivertop.DefaultTransceiver;
+import org.onosproject.yang.gen.v1.openconfigplatformtransceiver.rev20180515.openconfigplatformtransceiver.porttransceivertop.transceiver.DefaultConfig;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * UnitTest class for OpenConfigTransceiverHandler.
+ */
+public class OpenConfigTransceiverHandlerTest {
+    // parent Handler
+    OpenConfigComponentHandler parent;
+
+    // expected ResourceId
+    ResourceId rid;
+
+    /**
+     * Set up method for UnitTest.
+     */
+    @Before
+    public void setUp() {
+        // parent Handler set up
+        // create <components xmlns="http://openconfig.net/yang/platform"></components>
+        OpenConfigComponentsHandler components = new OpenConfigComponentsHandler();
+
+        // add <component><name>name</name></component>
+        parent = new OpenConfigComponentHandler("name", components);
+
+        // expected ResourceId set up
+        rid = ResourceId.builder()
+        .addBranchPointSchema("components", "http://openconfig.net/yang/platform")
+        .addBranchPointSchema("component", "http://openconfig.net/yang/platform")
+        .addKeyLeaf("name", "http://openconfig.net/yang/platform", "name")
+        .addBranchPointSchema("transceiver", "http://openconfig.net/yang/platform/transceiver")
+        .build();
+    }
+
+    /**
+     * UnitTest method for getModelObject.
+     */
+    @Test
+    public void testGetModelObject() {
+        // test Handler
+        OpenConfigTransceiverHandler transceiver = new OpenConfigTransceiverHandler(parent);
+
+        // expected ModelObject
+        DefaultTransceiver modelObject = new DefaultTransceiver();
+
+        assertEquals("[NG]getModelObject:Return is not an expected ModelObject.\n",
+                     modelObject, transceiver.getModelObject());
+    }
+
+    /**
+     * UnitTest method for setResourceId.
+     */
+    @Test
+    public void testSetResourceId() {
+        // call setResourceId
+        OpenConfigTransceiverHandler transceiver = new OpenConfigTransceiverHandler(parent);
+
+        // get resourceId
+        ResourceId resourceId = null;
+        try {
+            Field field = OpenConfigObjectHandler.class.getDeclaredField("resourceId");
+            field.setAccessible(true);
+            resourceId = (ResourceId) field.get(transceiver);
+        } catch (NoSuchFieldException e) {
+            Assert.fail("[NG]setResourceId:ResourceId does not exist.\n" + e);
+        } catch (IllegalAccessException e) {
+            Assert.fail("[NG]setResourceId:Access to ResourceId is illegal.\n" + e);
+        }
+
+        assertEquals("[NG]setResourceId:Set ResourceId is not an expected one.\n",
+                     rid, resourceId);
+    }
+
+    /**
+     * UnitTest method for getResourceId.
+     */
+    @Test
+    public void testGetResourceId() {
+        // test Handler
+        OpenConfigTransceiverHandler transceiver = new OpenConfigTransceiverHandler(parent);
+
+        assertEquals("[NG]getResourceId:Return is not an expected ResourceId.\n",
+                     rid, transceiver.getResourceId());
+    }
+
+    /**
+     * UnitTest method for getResourceIdBuilder.
+     */
+    @Test
+    public void testGetResourceIdBuilder() {
+        // test Handler
+        OpenConfigTransceiverHandler transceiver = new OpenConfigTransceiverHandler(parent);
+
+        assertEquals("[NG]getResourceIdBuilder:Return is not an expected ResourceIdBuilder.\n",
+                     rid, transceiver.getResourceIdBuilder().build());
+    }
+
+    /**
+     * UnitTest method for addAnnotation.
+     */
+    @Test
+    public void testAddAnnotation() {
+        // test Handler
+        OpenConfigTransceiverHandler transceiver = new OpenConfigTransceiverHandler(parent);
+
+        // call addAnnotation
+        transceiver.addAnnotation("name", "value");
+
+        // get annotatedNodeInfos
+        List<AnnotatedNodeInfo> annotatedNodeInfos = new ArrayList<AnnotatedNodeInfo>();
+        try {
+            Field field = OpenConfigObjectHandler.class.getDeclaredField("annotatedNodeInfos");
+            field.setAccessible(true);
+            annotatedNodeInfos = (List<AnnotatedNodeInfo>) field.get(transceiver);
+        } catch (NoSuchFieldException e) {
+            Assert.fail("[NG]addAnnotation:List of AnnotatedNodeInfo does not exist.\n" + e);
+        } catch (IllegalAccessException e) {
+            Assert.fail("[NG]addAnnotation:Access to list of AnnotatedNodeInfo is illegal.\n" + e);
+        }
+
+        assertEquals("[NG]addAnnotation:List size of AnnotatedNodeInfo is invalid.\n",
+                     1, annotatedNodeInfos.size());
+        assertEquals("[NG]addAnnotation:ResourceId of AnnotatedNodeInfo is not an expected one.\n",
+                     rid, annotatedNodeInfos.get(0).resourceId());
+        assertEquals("[NG]addAnnotation:List size of Annotation is invalid.\n",
+                     1, annotatedNodeInfos.get(0).annotations().size());
+        assertEquals("[NG]addAnnotation:Name of Annotation is not an expected one.\n",
+                     "name", annotatedNodeInfos.get(0).annotations().get(0).name());
+        assertEquals("[NG]addAnnotation:Value of Annotation is not an expected one.\n",
+                     "value", annotatedNodeInfos.get(0).annotations().get(0).value());
+    }
+
+    /**
+     * UnitTest method for getAnnotatedNodeInfoList.
+     */
+    @Test
+    public void testAnnotatedNodeInfoList() {
+        // test Handler
+        OpenConfigTransceiverHandler transceiver = new OpenConfigTransceiverHandler(parent);
+
+        // set list of AnnotatedNodeInfo
+        transceiver.addAnnotation("name", "value");
+
+        assertEquals("[NG]getAnnotatedNodeInfoList:List size of AnnotatedNodeInfo is invalid.\n",
+                     1, transceiver.getAnnotatedNodeInfoList().size());
+        assertEquals("[NG]getAnnotatedNodeInfoList:ResourceId of AnnotatedNodeInfo is not an expected one.\n",
+                     rid, transceiver.getAnnotatedNodeInfoList().get(0).resourceId());
+        assertEquals("[NG]getAnnotatedNodeInfoList:List size of Annotation is invalid.\n",
+                     1, transceiver.getAnnotatedNodeInfoList().get(0).annotations().size());
+        assertEquals("[NG]getAnnotatedNodeInfoList:Name of Annotation is not an expected one.\n",
+                     "name", transceiver.getAnnotatedNodeInfoList().get(0).annotations().get(0).name());
+        assertEquals("[NG]getAnnotatedNodeInfoList:Value of Annotation is not an expected one.\n",
+                     "value", transceiver.getAnnotatedNodeInfoList().get(0).annotations().get(0).value());
+    }
+
+    /**
+     * UnitTest method for addConfig.
+     */
+    @Test
+    public void testAddConfig() {
+        // test Handler
+        OpenConfigTransceiverHandler transceiver = new OpenConfigTransceiverHandler(parent);
+
+        // call addConfig
+        OpenConfigConfigOfTransceiverHandler config = new OpenConfigConfigOfTransceiverHandler(transceiver);
+
+        // expected ModelObject
+        DefaultTransceiver modelObject = new DefaultTransceiver();
+        DefaultConfig con = new DefaultConfig();
+        modelObject.config(con);
+
+        assertEquals("[NG]addConfig:ModelObject(Config added) is not an expected one.\n",
+                     modelObject, transceiver.getModelObject());
+    }
+}