diff --git a/core/api/src/test/java/org/onosproject/net/resource/DefaultLabelResourceTest.java b/core/api/src/test/java/org/onosproject/net/resource/DefaultLabelResourceTest.java
new file mode 100644
index 0000000..0e5ec27
--- /dev/null
+++ b/core/api/src/test/java/org/onosproject/net/resource/DefaultLabelResourceTest.java
@@ -0,0 +1,31 @@
+package org.onosproject.net.resource;
+
+import org.junit.Test;
+import org.onosproject.event.AbstractEventTest;
+
+import com.google.common.testing.EqualsTester;
+
+/**
+ * Tests of default label resource.
+ */
+public class DefaultLabelResourceTest extends AbstractEventTest {
+
+    @Test
+    public void testEquality() {
+        String deviceId1 = "of:001";
+        String deviceId2 = "of:002";
+        long labelResourceId1 = 100;
+        long labelResourceId2 = 200;
+        DefaultLabelResource h1 = new DefaultLabelResource(deviceId1,
+                                                           labelResourceId1);
+        DefaultLabelResource h2 = new DefaultLabelResource(deviceId1,
+                                                           labelResourceId1);
+        DefaultLabelResource h3 = new DefaultLabelResource(deviceId2,
+                                                           labelResourceId2);
+        DefaultLabelResource h4 = new DefaultLabelResource(deviceId2,
+                                                           labelResourceId2);
+
+        new EqualsTester().addEqualityGroup(h1, h2).addEqualityGroup(h3, h4)
+                .testEquals();
+    }
+}
diff --git a/core/api/src/test/java/org/onosproject/net/resource/LabelResourcePoolTest.java b/core/api/src/test/java/org/onosproject/net/resource/LabelResourcePoolTest.java
new file mode 100644
index 0000000..f4d91c1
--- /dev/null
+++ b/core/api/src/test/java/org/onosproject/net/resource/LabelResourcePoolTest.java
@@ -0,0 +1,23 @@
+package org.onosproject.net.resource;
+
+import org.junit.Test;
+import org.onosproject.event.AbstractEventTest;
+
+import com.google.common.testing.EqualsTester;
+
+/**
+ * Tests of the label resource pool.
+ */
+public class LabelResourcePoolTest extends AbstractEventTest {
+
+    @Test
+    public void testEquality() {
+        LabelResourcePool h1 = new LabelResourcePool("of:001", 0, 100);
+        LabelResourcePool h2 = new LabelResourcePool("of:001", 0, 100);
+        LabelResourcePool h3 = new LabelResourcePool("of:002", 0, 100);
+        LabelResourcePool h4 = new LabelResourcePool("of:002", 0, 100);
+        new EqualsTester().addEqualityGroup(h1, h2).addEqualityGroup(h3, h4)
+                .testEquals();
+    }
+
+}
diff --git a/core/api/src/test/java/org/onosproject/net/resource/LabelResourceRequestTest.java b/core/api/src/test/java/org/onosproject/net/resource/LabelResourceRequestTest.java
new file mode 100644
index 0000000..bc538b2
--- /dev/null
+++ b/core/api/src/test/java/org/onosproject/net/resource/LabelResourceRequestTest.java
@@ -0,0 +1,44 @@
+package org.onosproject.net.resource;
+
+import java.util.Collections;
+
+import org.junit.Test;
+import org.onosproject.event.AbstractEventTest;
+import org.onosproject.net.DeviceId;
+
+import com.google.common.collect.ImmutableSet;
+import com.google.common.testing.EqualsTester;
+
+/**
+ * Tests of the label resource request.
+ */
+public class LabelResourceRequestTest extends AbstractEventTest {
+
+    @Test
+    public void testEquality() {
+        DeviceId deviceId1 = DeviceId.deviceId("of:0001");
+        DeviceId deviceId2 = DeviceId.deviceId("of:0002");
+        long apply = 2;
+        ImmutableSet<LabelResource> releaseCollection = ImmutableSet
+                .copyOf(Collections.emptySet());
+        LabelResourceRequest h1 = new LabelResourceRequest(
+                                                           deviceId1,
+                                                           LabelResourceRequest.Type.APPLY,
+                                                           apply, null);
+        LabelResourceRequest h2 = new LabelResourceRequest(
+                                                           deviceId1,
+                                                           LabelResourceRequest.Type.APPLY,
+                                                           apply, null);
+        LabelResourceRequest h3 = new LabelResourceRequest(
+                                                           deviceId2,
+                                                           LabelResourceRequest.Type.RELEASE,
+                                                           0, releaseCollection);
+        LabelResourceRequest h4 = new LabelResourceRequest(
+                                                           deviceId2,
+                                                           LabelResourceRequest.Type.RELEASE,
+                                                           0, releaseCollection);
+
+        new EqualsTester().addEqualityGroup(h1, h2).addEqualityGroup(h3, h4)
+                .testEquals();
+    }
+}
