diff --git a/core/store/primitives/src/test/java/org/onosproject/store/primitives/resources/impl/AtomixConsistentMapTest.java b/core/store/primitives/src/test/java/org/onosproject/store/primitives/resources/impl/AtomixConsistentMapTest.java
index 130662b..5d4ef11 100644
--- a/core/store/primitives/src/test/java/org/onosproject/store/primitives/resources/impl/AtomixConsistentMapTest.java
+++ b/core/store/primitives/src/test/java/org/onosproject/store/primitives/resources/impl/AtomixConsistentMapTest.java
@@ -71,7 +71,7 @@
      */
     @Test
     public void testBasicMapOperations() throws Throwable {
-        basicMapOperationTests(3);
+        basicMapOperationTests();
     }
 
     /**
@@ -79,7 +79,7 @@
      */
     @Test
     public void testMapComputeOperations() throws Throwable {
-        mapComputeOperationTests(3);
+        mapComputeOperationTests();
     }
 
     /**
@@ -87,7 +87,7 @@
      */
     @Test
     public void testMapListeners() throws Throwable {
-        mapListenerTests(3);
+        mapListenerTests();
     }
 
     /**
@@ -95,7 +95,7 @@
      */
     @Test
     public void testTransactionCommit() throws Throwable {
-        transactionCommitTests(3);
+        transactionCommitTests();
     }
 
     /**
@@ -103,10 +103,10 @@
      */
     @Test
     public void testTransactionRollback() throws Throwable {
-        transactionRollbackTests(3);
+        transactionRollbackTests();
     }
 
-    protected void basicMapOperationTests(int clusterSize) throws Throwable {
+    protected void basicMapOperationTests() throws Throwable {
         final byte[] rawFooValue = Tools.getBytesUtf8("Hello foo!");
         final byte[] rawBarValue = Tools.getBytesUtf8("Hello bar!");
 
@@ -235,7 +235,7 @@
         }).join();
     }
 
-    public void mapComputeOperationTests(int clusterSize) throws Throwable {
+    public void mapComputeOperationTests() throws Throwable {
         final byte[] value1 = Tools.getBytesUtf8("value1");
         final byte[] value2 = Tools.getBytesUtf8("value2");
         final byte[] value3 = Tools.getBytesUtf8("value3");
@@ -273,7 +273,7 @@
     }
 
 
-    protected void mapListenerTests(int clusterSize) throws Throwable {
+    protected void mapListenerTests() throws Throwable {
         final byte[] value1 = Tools.getBytesUtf8("value1");
         final byte[] value2 = Tools.getBytesUtf8("value2");
         final byte[] value3 = Tools.getBytesUtf8("value3");
@@ -333,7 +333,7 @@
         map.removeListener(listener).join();
     }
 
-    protected void transactionCommitTests(int clusterSize) throws Throwable {
+    protected void transactionCommitTests() throws Throwable {
         final byte[] value1 = Tools.getBytesUtf8("value1");
         final byte[] value2 = Tools.getBytesUtf8("value2");
 
@@ -428,7 +428,7 @@
 
     }
 
-    protected void transactionRollbackTests(int clusterSize) throws Throwable {
+    protected void transactionRollbackTests() throws Throwable {
         final byte[] value1 = Tools.getBytesUtf8("value1");
         final byte[] value2 = Tools.getBytesUtf8("value2");
 
diff --git a/core/store/primitives/src/test/java/org/onosproject/store/primitives/resources/impl/AtomixLeaderElectorTest.java b/core/store/primitives/src/test/java/org/onosproject/store/primitives/resources/impl/AtomixLeaderElectorTest.java
index 82b7ed8..00df1fc 100644
--- a/core/store/primitives/src/test/java/org/onosproject/store/primitives/resources/impl/AtomixLeaderElectorTest.java
+++ b/core/store/primitives/src/test/java/org/onosproject/store/primitives/resources/impl/AtomixLeaderElectorTest.java
@@ -60,10 +60,10 @@
 
     @Test
     public void testRun() throws Throwable {
-        leaderElectorRunTests(3);
+        leaderElectorRunTests();
     }
 
-    private void leaderElectorRunTests(int numServers) throws Throwable {
+    private void leaderElectorRunTests() throws Throwable {
         Atomix client1 = createAtomixClient();
         AtomixLeaderElector elector1 = client1.getResource("test-elector-run",
                                                            AtomixLeaderElector.class).join();
@@ -87,10 +87,10 @@
 
     @Test
     public void testWithdraw() throws Throwable {
-        leaderElectorWithdrawTests(3);
+        leaderElectorWithdrawTests();
     }
 
-    private void leaderElectorWithdrawTests(int numServers) throws Throwable {
+    private void leaderElectorWithdrawTests() throws Throwable {
         Atomix client1 = createAtomixClient();
         AtomixLeaderElector elector1 = client1.getResource("test-elector-withdraw",
                                                            AtomixLeaderElector.class).join();
@@ -125,10 +125,10 @@
 
     @Test
     public void testAnoint() throws Throwable {
-        leaderElectorAnointTests(3);
+        leaderElectorAnointTests();
     }
 
-    private void leaderElectorAnointTests(int numServers) throws Throwable {
+    private void leaderElectorAnointTests() throws Throwable {
         Atomix client1 = createAtomixClient();
         AtomixLeaderElector elector1 = client1.getResource("test-elector-anoint",
                                                            AtomixLeaderElector.class).join();
@@ -181,10 +181,10 @@
 
     @Test
     public void testPromote() throws Throwable {
-        leaderElectorPromoteTests(3);
+        leaderElectorPromoteTests();
     }
 
-    private void leaderElectorPromoteTests(int numServers) throws Throwable {
+    private void leaderElectorPromoteTests() throws Throwable {
         AtomixClient client1 = createAtomixClient();
         AtomixLeaderElector elector1 = client1.getResource("test-elector-promote",
                                                            AtomixLeaderElector.class).join();
@@ -241,10 +241,10 @@
 
     @Test
     public void testLeaderSessionClose() throws Throwable {
-        leaderElectorLeaderSessionCloseTests(3);
+        leaderElectorLeaderSessionCloseTests();
     }
 
-    private void leaderElectorLeaderSessionCloseTests(int numServers) throws Throwable {
+    private void leaderElectorLeaderSessionCloseTests() throws Throwable {
         AtomixClient client1 = createAtomixClient();
         AtomixLeaderElector elector1 = client1.getResource("test-elector-leader-session-close",
                                                            AtomixLeaderElector.class).join();
@@ -265,10 +265,10 @@
 
     @Test
     public void testNonLeaderSessionClose() throws Throwable {
-        leaderElectorNonLeaderSessionCloseTests(3);
+        leaderElectorNonLeaderSessionCloseTests();
     }
 
-    private void leaderElectorNonLeaderSessionCloseTests(int numServers) throws Throwable {
+    private void leaderElectorNonLeaderSessionCloseTests() throws Throwable {
         Atomix client1 = createAtomixClient();
         AtomixLeaderElector elector1 = client1.getResource("test-elector-non-leader-session-close",
                                                            AtomixLeaderElector.class).join();
@@ -289,10 +289,10 @@
 
     @Test
     public void testQueries() throws Throwable {
-        leaderElectorQueryTests(3);
+        leaderElectorQueryTests();
     }
 
-    private void leaderElectorQueryTests(int numServers) throws Throwable {
+    private void leaderElectorQueryTests() throws Throwable {
         Atomix client1 = createAtomixClient();
         Atomix client2 = createAtomixClient();
         AtomixLeaderElector elector1 = client1.getResource("test-elector-query",
diff --git a/core/store/primitives/src/test/java/org/onosproject/store/primitives/resources/impl/AtomixLongTest.java b/core/store/primitives/src/test/java/org/onosproject/store/primitives/resources/impl/AtomixLongTest.java
index b1a5b7c..eb835cd 100644
--- a/core/store/primitives/src/test/java/org/onosproject/store/primitives/resources/impl/AtomixLongTest.java
+++ b/core/store/primitives/src/test/java/org/onosproject/store/primitives/resources/impl/AtomixLongTest.java
@@ -48,10 +48,10 @@
 
     @Test
     public void testBasicOperations() throws Throwable {
-        basicOperationsTest(3);
+        basicOperationsTest();
     }
 
-    protected void basicOperationsTest(int clusterSize) throws Throwable {
+    protected void basicOperationsTest() throws Throwable {
         Atomix atomix = createAtomixClient();
         AtomixCounter along = new AtomixCounter("test-long-basic-operations",
                                                 atomix.getLong("test-long").join());
