diff --git a/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/DistributedPrimitivesTest.java b/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/DistributedPrimitivesTest.java
index f5c9eec..e481e81 100644
--- a/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/DistributedPrimitivesTest.java
+++ b/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/DistributedPrimitivesTest.java
@@ -28,6 +28,7 @@
 import org.onosproject.core.CoreService;
 import org.onosproject.store.serializers.KryoNamespaces;
 import org.onosproject.store.service.EventuallyConsistentMap;
+import org.onosproject.store.service.LeaderElector;
 import org.onosproject.store.service.StorageService;
 import org.onosproject.store.service.WallClockTimestamp;
 import org.slf4j.Logger;
@@ -54,6 +55,7 @@
     protected StorageService storageService;
 
     private final Map<String, EventuallyConsistentMap<String, String>> maps = Maps.newConcurrentMap();
+    private final Map<String, LeaderElector> electors = Maps.newConcurrentMap();
 
     @Activate
     protected void activate() {
@@ -79,4 +81,17 @@
                 .withTimestampProvider((k, v) -> new WallClockTimestamp())
                 .build());
     }
+
+    /**
+     * Returns a leader elector session by name.
+     *
+     * @param name the leader elector name
+     * @return the leader elector
+     */
+    public LeaderElector getLeaderElector(String name) {
+        return electors.computeIfAbsent(name, n -> storageService.leaderElectorBuilder()
+                .withName(name)
+                .build()
+                .asLeaderElector());
+    }
 }
diff --git a/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/LeaderElectorTestCommand.java b/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/LeaderElectorTestCommand.java
index ef5e45c..22849e8 100644
--- a/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/LeaderElectorTestCommand.java
+++ b/apps/test/distributed-primitives/src/main/java/org/onosproject/distributedprimitives/cli/LeaderElectorTestCommand.java
@@ -21,8 +21,8 @@
 import org.onosproject.cluster.ClusterService;
 import org.onosproject.cluster.Leadership;
 import org.onosproject.cluster.NodeId;
+import org.onosproject.distributedprimitives.DistributedPrimitivesTest;
 import org.onosproject.store.service.LeaderElector;
-import org.onosproject.store.service.StorageService;
 
 import com.google.common.base.Joiner;
 
@@ -49,13 +49,10 @@
 
     @Override
     protected void execute() {
-        StorageService storageService = get(StorageService.class);
         ClusterService clusterService = get(ClusterService.class);
+        DistributedPrimitivesTest test = get(DistributedPrimitivesTest.class);
+        leaderElector = test.getLeaderElector(name);
         NodeId localNodeId = clusterService.getLocalNode().id();
-        leaderElector = storageService.leaderElectorBuilder()
-                .withName(name)
-                .build()
-                .asLeaderElector();
         if ("run".equals(operation)) {
             print(leaderElector.run(topic, localNodeId));
         } else if ("withdraw".equals(operation)) {
