Added some tests.
diff --git a/net/api/src/main/java/org/onlab/onos/net/provider/AbstractProviderRegistry.java b/net/api/src/main/java/org/onlab/onos/net/provider/AbstractProviderRegistry.java
index 6975447..02a486e 100644
--- a/net/api/src/main/java/org/onlab/onos/net/provider/AbstractProviderRegistry.java
+++ b/net/api/src/main/java/org/onlab/onos/net/provider/AbstractProviderRegistry.java
@@ -1,10 +1,13 @@
 package org.onlab.onos.net.provider;
 
+import com.google.common.collect.ImmutableSet;
+
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Set;
 
-import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
+import static com.google.common.base.Preconditions.checkState;
 
 /**
  * Base implementation of provider registry.
@@ -28,7 +31,7 @@
     @Override
     public synchronized S register(P provider) {
         checkNotNull(provider, "Provider cannot be null");
-        checkArgument(!services.containsKey(provider), "Provider %s already registered", provider.id());
+        checkState(!services.containsKey(provider.id()), "Provider %s already registered", provider.id());
         S service = createProviderService(provider);
         services.put(provider.id(), service);
         return service;
@@ -37,10 +40,16 @@
     @Override
     public synchronized void unregister(P provider) {
         checkNotNull(provider, "Provider cannot be null");
-        S service = services.get(provider);
+        S service = services.get(provider.id());
         if (service != null && service instanceof AbstractProviderService) {
             ((AbstractProviderService) service).invalidate();
-            services.remove(provider);
+            services.remove(provider.id());
         }
     }
+
+    @Override
+    public synchronized Set<ProviderId> getProviders() {
+        return ImmutableSet.copyOf(services.keySet());
+    }
+
 }
diff --git a/net/api/src/main/java/org/onlab/onos/net/provider/ProviderRegistry.java b/net/api/src/main/java/org/onlab/onos/net/provider/ProviderRegistry.java
index 93436fc..08975e2 100644
--- a/net/api/src/main/java/org/onlab/onos/net/provider/ProviderRegistry.java
+++ b/net/api/src/main/java/org/onlab/onos/net/provider/ProviderRegistry.java
@@ -1,5 +1,7 @@
 package org.onlab.onos.net.provider;
 
+import java.util.Set;
+
 /**
  * Registry for tracking information providers with the core.
  *
@@ -29,4 +31,11 @@
      */
     void unregister(P provider);
 
+    /**
+     * Returns a set of currently registered provider identities.
+     *
+     * @return set of provider identifiers
+     */
+    Set<ProviderId> getProviders();
+
 }