Refactor tests to use shared mock implementations

Change-Id: Iba4e44b7bb88f8a31add9475a9155f85375ae61a
diff --git a/core/api/src/test/java/org/onosproject/net/intent/IntentDataTest.java b/core/api/src/test/java/org/onosproject/net/intent/IntentDataTest.java
index b7f6d79..a953149 100644
--- a/core/api/src/test/java/org/onosproject/net/intent/IntentDataTest.java
+++ b/core/api/src/test/java/org/onosproject/net/intent/IntentDataTest.java
@@ -15,60 +15,23 @@
  */
 package org.onosproject.net.intent;
 
-import java.util.Collections;
-import java.util.concurrent.atomic.AtomicLong;
-
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.onosproject.core.IdGenerator;
-import org.onosproject.net.NetTestTools;
 import org.onosproject.store.Timestamp;
 
 import com.google.common.testing.EqualsTester;
 
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.is;
+import static org.onosproject.net.intent.IntentTestsMocks.MockIntent;
+import static org.onosproject.net.intent.IntentTestsMocks.MockTimestamp;
 
 /**
  * Unit tests for intent data objects.
  */
 public class IntentDataTest {
-    private static class MockIntent extends Intent {
-        private static AtomicLong counter = new AtomicLong(0);
-
-        private final Long number;
-
-        public MockIntent(Long number) {
-            super(NetTestTools.APP_ID, Collections.emptyList());
-            this.number = number;
-        }
-
-        public Long number() {
-            return number;
-        }
-
-        public static Long nextId() {
-            return counter.getAndIncrement();
-        }
-    }
-
-    private static class MockTimestamp implements Timestamp {
-        final int value;
-
-        MockTimestamp(int value) {
-            this.value = value;
-        }
-
-        @Override
-        public int compareTo(Timestamp o) {
-            if (!(o instanceof MockTimestamp)) {
-                return -1;
-            }
-            MockTimestamp that = (MockTimestamp) o;
-            return (this.value > that.value ? -1 : (this.value == that.value ? 0 : 1));
-        }
-    }
 
     private Timestamp timestamp1;
     private Timestamp timestamp2;
diff --git a/core/api/src/test/java/org/onosproject/net/intent/IntentTestsMocks.java b/core/api/src/test/java/org/onosproject/net/intent/IntentTestsMocks.java
index d78c62c..700df0e 100644
--- a/core/api/src/test/java/org/onosproject/net/intent/IntentTestsMocks.java
+++ b/core/api/src/test/java/org/onosproject/net/intent/IntentTestsMocks.java
@@ -36,6 +36,7 @@
 import org.onosproject.net.ElementId;
 import org.onosproject.net.Link;
 import org.onosproject.net.NetTestTools;
+import org.onosproject.net.NetworkResource;
 import org.onosproject.net.Path;
 import org.onosproject.net.flow.FlowId;
 import org.onosproject.net.flow.FlowRule;
@@ -60,6 +61,8 @@
 import org.onosproject.net.topology.TopologyVertex;
 import org.onosproject.store.Timestamp;
 
+import com.google.common.base.MoreObjects;
+
 /**
  * Common mocks used by the intent framework tests.
  */
@@ -384,6 +387,11 @@
             this.number = number;
         }
 
+        public MockIntent(Long number, Collection<NetworkResource> resources) {
+            super(NetTestTools.APP_ID, resources);
+            this.number = number;
+        }
+
         public Long number() {
             return number;
         }
@@ -391,6 +399,14 @@
         public static Long nextId() {
             return counter.getAndIncrement();
         }
+
+        @Override
+        public String toString() {
+            return MoreObjects.toStringHelper(getClass())
+                    .add("id", id())
+                    .add("appId", appId())
+                    .toString();
+        }
     }
 
     public static class MockTimestamp implements Timestamp {
diff --git a/core/net/src/test/java/org/onosproject/net/intent/impl/IntentManagerTest.java b/core/net/src/test/java/org/onosproject/net/intent/impl/IntentManagerTest.java
index 642a66f..4be32c4 100644
--- a/core/net/src/test/java/org/onosproject/net/intent/impl/IntentManagerTest.java
+++ b/core/net/src/test/java/org/onosproject/net/intent/impl/IntentManagerTest.java
@@ -15,12 +15,14 @@
  */
 package org.onosproject.net.intent.impl;
 
-import com.google.common.collect.HashMultimap;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import com.google.common.collect.Multimap;
-import com.google.common.collect.Sets;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
 import org.hamcrest.Description;
 import org.hamcrest.TypeSafeMatcher;
 import org.junit.After;
@@ -44,26 +46,29 @@
 import org.onosproject.net.intent.IntentListener;
 import org.onosproject.net.intent.IntentService;
 import org.onosproject.net.intent.IntentState;
-import org.onosproject.net.intent.IntentTestsMocks;
 import org.onosproject.net.intent.Key;
 import org.onosproject.net.resource.LinkResourceAllocations;
 import org.onosproject.store.intent.impl.SimpleIntentStore;
 
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicLong;
+import com.google.common.collect.HashMultimap;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.google.common.collect.Multimap;
+import com.google.common.collect.Sets;
 
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.hasSize;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
 import static org.onlab.junit.TestTools.assertAfter;
 import static org.onlab.util.Tools.delay;
-import static org.onosproject.net.intent.IntentState.*;
+import static org.onosproject.net.intent.IntentState.FAILED;
+import static org.onosproject.net.intent.IntentState.INSTALLED;
+import static org.onosproject.net.intent.IntentState.WITHDRAWN;
+import static org.onosproject.net.intent.IntentTestsMocks.MockFlowRule;
+import static org.onosproject.net.intent.IntentTestsMocks.MockIntent;
 
 /**
  * Test intent manager and transitions.
@@ -146,25 +151,6 @@
         }
     }
 
-    private static class MockIntent extends Intent {
-        private static AtomicLong counter = new AtomicLong(0);
-
-        private final Long number;
-        // Nothing new here
-        public MockIntent(Long number) {
-            super(APPID, Collections.emptyList());
-            this.number = number;
-        }
-
-        public Long number() {
-            return number;
-        }
-
-        public static Long nextId() {
-            return counter.getAndIncrement();
-        }
-    }
-
     private static class MockInstallableIntent extends MockIntent {
         public MockInstallableIntent(Long number) {
             super(number);
@@ -195,7 +181,7 @@
     private static class TestIntentInstaller implements IntentInstaller<MockInstallableIntent> {
         @Override
         public List<Collection<org.onosproject.net.flow.FlowRuleOperation>> install(MockInstallableIntent intent) {
-            FlowRule fr = new IntentTestsMocks.MockFlowRule(intent.number().intValue());
+            FlowRule fr = new MockFlowRule(intent.number().intValue());
             Set<FlowRuleOperation> rules = ImmutableSet.of(
                     new FlowRuleOperation(fr, FlowRuleOperation.Type.ADD));
             return Lists.newArrayList(ImmutableSet.of(rules));
@@ -203,7 +189,7 @@
 
         @Override
         public List<Collection<FlowRuleOperation>> uninstall(MockInstallableIntent intent) {
-            FlowRule fr = new IntentTestsMocks.MockFlowRule(intent.number().intValue());
+            FlowRule fr = new MockFlowRule(intent.number().intValue());
             Set<FlowRuleOperation> rules = ImmutableSet.of(
                     new FlowRuleOperation(fr, FlowRuleOperation.Type.REMOVE));
             return Lists.newArrayList(ImmutableSet.of(rules));
@@ -212,8 +198,8 @@
         @Override
         public List<Collection<FlowRuleOperation>> replace(MockInstallableIntent oldIntent,
                                                            MockInstallableIntent newIntent) {
-            FlowRule fr = new IntentTestsMocks.MockFlowRule(oldIntent.number().intValue());
-            FlowRule fr2 = new IntentTestsMocks.MockFlowRule(newIntent.number().intValue());
+            FlowRule fr = new MockFlowRule(oldIntent.number().intValue());
+            FlowRule fr2 = new MockFlowRule(newIntent.number().intValue());
             Set<FlowRuleOperation> rules = ImmutableSet.of(
                     new FlowRuleOperation(fr, FlowRuleOperation.Type.REMOVE),
                     new FlowRuleOperation(fr2, FlowRuleOperation.Type.ADD));
diff --git a/web/api/src/test/java/org/onosproject/rest/IntentsResourceTest.java b/web/api/src/test/java/org/onosproject/rest/IntentsResourceTest.java
index 7a2ce15..bb81c77 100644
--- a/web/api/src/test/java/org/onosproject/rest/IntentsResourceTest.java
+++ b/web/api/src/test/java/org/onosproject/rest/IntentsResourceTest.java
@@ -15,10 +15,8 @@
  */
 package org.onosproject.rest;
 
-import java.util.Collection;
 import java.util.Collections;
 import java.util.HashSet;
-import java.util.concurrent.atomic.AtomicLong;
 
 import org.hamcrest.Description;
 import org.hamcrest.TypeSafeMatcher;
@@ -39,11 +37,11 @@
 import org.onosproject.net.intent.Intent;
 import org.onosproject.net.intent.IntentService;
 import org.onosproject.net.intent.Key;
+import org.onosproject.net.intent.MockIdGenerator;
 
 import com.eclipsesource.json.JsonArray;
 import com.eclipsesource.json.JsonObject;
 import com.eclipsesource.json.JsonValue;
-import com.google.common.base.MoreObjects;
 import com.sun.jersey.api.client.UniformInterfaceException;
 import com.sun.jersey.api.client.WebResource;
 
@@ -57,6 +55,7 @@
 import static org.hamcrest.Matchers.notNullValue;
 import static org.junit.Assert.assertThat;
 import static org.junit.Assert.fail;
+import static org.onosproject.net.intent.IntentTestsMocks.MockIntent;
 
 /**
  * Unit tests for Intents REST APIs.
@@ -69,37 +68,6 @@
     private static final ApplicationId APP_ID = new DefaultApplicationId(1, "test");
     private IdGenerator mockGenerator;
 
-    /**
-     * Mock ID generator.  This should be refactored to share the one in
-     * the core/api tests.
-     */
-    public class MockIdGenerator implements IdGenerator {
-        private AtomicLong nextId = new AtomicLong(0);
-
-        @Override
-        public long getNewId() {
-            return nextId.getAndIncrement();
-        }
-    }
-
-    /**
-     * Mock compilable intent class.
-     */
-    private static class MockIntent extends Intent {
-
-        public MockIntent(Collection<NetworkResource> resources) {
-            super(APP_ID, resources);
-        }
-
-        @Override
-        public String toString() {
-            return MoreObjects.toStringHelper(getClass())
-                    .add("id", id())
-                    .add("appId", appId())
-                    .toString();
-        }
-    }
-
     private class MockResource implements NetworkResource {
         int id;
 
@@ -305,12 +273,12 @@
     public void testIntentsArray() {
         replay(mockIntentService);
 
-        final Intent intent1 = new MockIntent(Collections.emptyList());
+        final Intent intent1 = new MockIntent(1L, Collections.emptyList());
         final HashSet<NetworkResource> resources = new HashSet<>();
         resources.add(new MockResource(1));
         resources.add(new MockResource(2));
         resources.add(new MockResource(3));
-        final Intent intent2 = new MockIntent(resources);
+        final Intent intent2 = new MockIntent(2L, resources);
 
         intents.add(intent1);
         intents.add(intent2);
@@ -340,7 +308,7 @@
         resources.add(new MockResource(1));
         resources.add(new MockResource(2));
         resources.add(new MockResource(3));
-        final Intent intent = new MockIntent(resources);
+        final Intent intent = new MockIntent(3L, resources);
 
         intents.add(intent);