diff --git a/core/api/src/test/java/org/onosproject/cluster/RoleInfoTest.java b/core/api/src/test/java/org/onosproject/cluster/RoleInfoTest.java
index 3f5453e..9a14926 100644
--- a/core/api/src/test/java/org/onosproject/cluster/RoleInfoTest.java
+++ b/core/api/src/test/java/org/onosproject/cluster/RoleInfoTest.java
@@ -45,7 +45,8 @@
     public void testEquality() {
         new EqualsTester()
         .addEqualityGroup(RI1, new RoleInfo(new NodeId("n1"), Lists.newArrayList(N2, N3)))
-        .addEqualityGroup(RI3);
+        .addEqualityGroup(RI3)
+        .testEquals();
     }
 
     @Test
diff --git a/core/api/src/test/java/org/onosproject/net/resource/ContinuousResourceIdTest.java b/core/api/src/test/java/org/onosproject/net/resource/ContinuousResourceIdTest.java
index 347762a..ecf145d 100644
--- a/core/api/src/test/java/org/onosproject/net/resource/ContinuousResourceIdTest.java
+++ b/core/api/src/test/java/org/onosproject/net/resource/ContinuousResourceIdTest.java
@@ -43,7 +43,8 @@
                 .resource(BW2.bps()).id();
 
         new EqualsTester()
-                .addEqualityGroup(id1, sameAsId1);
+                .addEqualityGroup(id1, sameAsId1)
+                .testEquals();
     }
 
     @Test
diff --git a/core/api/src/test/java/org/onosproject/net/resource/DiscreteResourceIdTest.java b/core/api/src/test/java/org/onosproject/net/resource/DiscreteResourceIdTest.java
index 3dc4275..0bd833f 100644
--- a/core/api/src/test/java/org/onosproject/net/resource/DiscreteResourceIdTest.java
+++ b/core/api/src/test/java/org/onosproject/net/resource/DiscreteResourceIdTest.java
@@ -42,9 +42,11 @@
 
         new EqualsTester()
                 .addEqualityGroup(id1, sameAsId1)
-                .addEqualityGroup(id2);
+                .addEqualityGroup(id2)
+                .testEquals();
     }
 
+
     @Test
     public void testSimpleTypeName() {
         DiscreteResourceId id = Resources.discrete(D1, P1, VLAN1).id();
diff --git a/drivers/oplink/src/main/java/org/onosproject/drivers/oplink/OplinkOpticalLambdaQuery.java b/drivers/oplink/src/main/java/org/onosproject/drivers/oplink/OplinkOpticalLambdaQuery.java
index 2245919..6bde0f6 100644
--- a/drivers/oplink/src/main/java/org/onosproject/drivers/oplink/OplinkOpticalLambdaQuery.java
+++ b/drivers/oplink/src/main/java/org/onosproject/drivers/oplink/OplinkOpticalLambdaQuery.java
@@ -40,10 +40,12 @@
  */
 public class OplinkOpticalLambdaQuery extends AbstractHandlerBehaviour implements LambdaQuery {
 
+    @SuppressWarnings("MathRoundIntLong")
     private static final int MIN_CHANNEL = (int) Math.round(
-            START_CENTER_FREQ.subtract(CENTER_FREQUENCY).asHz() / CHANNEL_SPACING.frequency().asHz());
+            (START_CENTER_FREQ.subtract(CENTER_FREQUENCY).asHz() / CHANNEL_SPACING.frequency().asHz()));
+    @SuppressWarnings("MathRoundIntLong")
     private static final int MAX_CHANNEL = (int) Math.round(
-            STOP_CENTER_FREQ.subtract(CENTER_FREQUENCY).asHz() / CHANNEL_SPACING.frequency().asHz());
+            (STOP_CENTER_FREQ.subtract(CENTER_FREQUENCY).asHz() / CHANNEL_SPACING.frequency().asHz()));
 
     @Override
     public Set<OchSignal> queryLambdas(PortNumber port) {
diff --git a/utils/misc/src/test/java/org/onlab/graph/DisjointPathPairTest.java b/utils/misc/src/test/java/org/onlab/graph/DisjointPathPairTest.java
index 620fe40..7ab78c1 100644
--- a/utils/misc/src/test/java/org/onlab/graph/DisjointPathPairTest.java
+++ b/utils/misc/src/test/java/org/onlab/graph/DisjointPathPairTest.java
@@ -53,7 +53,8 @@
     public void testSwappingPrimarySecondaryDoesntImpactEquality() {
         new EqualsTester()
             .addEqualityGroup(new DisjointPathPair<>(ABC, ADC),
-                              new DisjointPathPair<>(ADC, ABC));
+                              new DisjointPathPair<>(ADC, ABC))
+            .testEquals();
     }
 
 }
diff --git a/utils/misc/src/test/java/org/onlab/packet/VlanIdTest.java b/utils/misc/src/test/java/org/onlab/packet/VlanIdTest.java
index 672362f..59e24e5 100644
--- a/utils/misc/src/test/java/org/onlab/packet/VlanIdTest.java
+++ b/utils/misc/src/test/java/org/onlab/packet/VlanIdTest.java
@@ -26,14 +26,16 @@
     @Test
     public void testEquality() {
         VlanId vlan1 = VlanId.vlanId("None");
-        VlanId vlan2 = VlanId.vlanId((short) -1);
+        VlanId vlan2 = VlanId.vlanId((short) -10);
         VlanId vlan3 = VlanId.vlanId((short) 100);
-        VlanId vlan4 = VlanId.vlanId((short) 100);
+        VlanId vlan4 = VlanId.vlanId((short) 200);
 
         new EqualsTester().addEqualityGroup(VlanId.vlanId(), vlan1)
-        .addEqualityGroup(vlan1, vlan2)
-        .addEqualityGroup(vlan3, vlan4)
-        .addEqualityGroup(VlanId.vlanId((short) 10));
+            .addEqualityGroup(vlan2)
+            .addEqualityGroup(vlan3)
+            .addEqualityGroup(vlan4)
+            .addEqualityGroup(VlanId.vlanId((short) 10))
+            .testEquals();
 
     }
 
diff --git a/utils/misc/src/test/java/org/onlab/util/CounterTest.java b/utils/misc/src/test/java/org/onlab/util/CounterTest.java
index e62672d..491b632 100644
--- a/utils/misc/src/test/java/org/onlab/util/CounterTest.java
+++ b/utils/misc/src/test/java/org/onlab/util/CounterTest.java
@@ -96,7 +96,8 @@
                 .addEqualityGroup(tt, same)
                 .addEqualityGroup(400)
                 .addEqualityGroup("")
-                .addEqualityGroup(diff);
+                .addEqualityGroup(diff)
+                .testEquals();
 
     }
 
