Refactor Unit Tests handling of Metrics and web server removal

- Created a new base class for Unit tests (UnitTest.java).
  This handles destruction of Metrics in an @After method
  so individual tests don't need to know about the Metrics
  lifecycle.

- Added @After methods to REST unit test base classes
  to shut down the web server.

- Removed dependencies on PowerMock for tests that are not using mocking

Change-Id: Ib46e8675998c0520977e59b749cbba89456100ab
diff --git a/src/test/java/net/onrc/onos/core/topology/TopologyManagerTest.java b/src/test/java/net/onrc/onos/core/topology/TopologyManagerTest.java
index ae0a936..9bdffd5 100644
--- a/src/test/java/net/onrc/onos/core/topology/TopologyManagerTest.java
+++ b/src/test/java/net/onrc/onos/core/topology/TopologyManagerTest.java
@@ -1,45 +1,47 @@
 package net.onrc.onos.core.topology;
 
-import static org.easymock.EasyMock.anyObject;
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.eq;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.replay;
-import static org.easymock.EasyMock.verify;
-import static org.junit.Assert.*;
-import static org.hamcrest.Matchers.*;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.concurrent.CopyOnWriteArrayList;
-
 import net.floodlightcontroller.core.IFloodlightProviderService.Role;
 import net.floodlightcontroller.util.MACAddress;
 import net.onrc.onos.core.datagrid.IDatagridService;
 import net.onrc.onos.core.datagrid.IEventChannel;
 import net.onrc.onos.core.datagrid.IEventChannelListener;
-import net.onrc.onos.core.metrics.OnosMetrics;
 import net.onrc.onos.core.registry.IControllerRegistryService;
 import net.onrc.onos.core.util.Dpid;
 import net.onrc.onos.core.util.OnosInstanceId;
 import net.onrc.onos.core.util.PortNumber;
 import net.onrc.onos.core.util.SwitchPort;
 import net.onrc.onos.core.util.TestUtils;
-
-import com.codahale.metrics.MetricFilter;
+import net.onrc.onos.core.util.UnitTest;
 import org.easymock.EasyMock;
-import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
+
+import static org.easymock.EasyMock.anyObject;
+import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.eq;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.verify;
+import static org.hamcrest.Matchers.containsInAnyOrder;
+import static org.hamcrest.Matchers.hasItem;
+import static org.hamcrest.Matchers.not;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
+
 /**
  * Unit tests for the TopologyManager class in the Topology module.
  * These test cases only check the sanity of functions in the TopologyManager.
  * Note that we do not test the eventHandler functions in the TopologyManager class.
  * DatagridService, DataStoreService, eventChannel, and controllerRegistryService are mocked out.
  */
-public class TopologyManagerTest {
+public class TopologyManagerTest extends UnitTest {
     private TopologyManager theTopologyManager;
     private final String eventChannelName = "onos.topology";
     private IEventChannel<byte[], TopologyEvent> eventChannel;
@@ -128,11 +130,6 @@
         TestUtils.setField(theTopologyManager, "datastore", dataStoreService);
     }
 
-    @After
-    public void tearDown() throws Exception {
-        OnosMetrics.removeMatching(MetricFilter.ALL);
-    }
-
     /**
      * Test the Switch discovered and Port discovered functions.
      */