IDs for MatchAction objects using block allocation

Modified MatchActionId and MatchActionOperationsId to
use longs as IDs and to use ID block allocation to
create them.

Change-Id: I757b353a94a498f624df345cbc16975714db15b3
diff --git a/src/test/java/net/onrc/onos/core/matchaction/MatchActionIdGeneratorTest.java b/src/test/java/net/onrc/onos/core/matchaction/MatchActionIdGeneratorTest.java
new file mode 100644
index 0000000..cb4ed35
--- /dev/null
+++ b/src/test/java/net/onrc/onos/core/matchaction/MatchActionIdGeneratorTest.java
@@ -0,0 +1,47 @@
+package net.onrc.onos.core.matchaction;
+
+import net.onrc.onos.core.util.IdBlock;
+import net.onrc.onos.core.util.IdBlockAllocator;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.replay;
+import static org.hamcrest.Matchers.is;
+import static org.junit.Assert.assertThat;
+
+/**
+ * Tests MatchActionIdGeneratorWithIdBlockAllocator.
+ */
+public class MatchActionIdGeneratorTest {
+    private IdBlockAllocator allocator;
+
+    @Before
+    public void setUp() {
+        allocator = createMock(IdBlockAllocator.class);
+
+    }
+
+    /**
+     * Tests generated MatchActionId sequences using two {@link net.onrc.onos.core.util.IdBlock blocks}.
+     */
+    @Test
+    public void testIds() {
+        expect(allocator.allocateUniqueIdBlock())
+                .andReturn(new IdBlock(0, 3))
+                .andReturn(new IdBlock(4, 3));
+
+        replay(allocator);
+        final MatchActionIdGeneratorWithIdBlockAllocator matchActionIdGenerator =
+            new MatchActionIdGeneratorWithIdBlockAllocator(allocator);
+
+        assertThat(matchActionIdGenerator.getNewId(), is(new MatchActionId(0L)));
+        assertThat(matchActionIdGenerator.getNewId(), is(new MatchActionId(1L)));
+        assertThat(matchActionIdGenerator.getNewId(), is(new MatchActionId(2L)));
+
+        assertThat(matchActionIdGenerator.getNewId(), is(new MatchActionId(4L)));
+        assertThat(matchActionIdGenerator.getNewId(), is(new MatchActionId(5L)));
+        assertThat(matchActionIdGenerator.getNewId(), is(new MatchActionId(6L)));
+    }
+}
diff --git a/src/test/java/net/onrc/onos/core/matchaction/MatchActionModuleTest.java b/src/test/java/net/onrc/onos/core/matchaction/MatchActionModuleTest.java
index 0a4e8d3..37fb579 100644
--- a/src/test/java/net/onrc/onos/core/matchaction/MatchActionModuleTest.java
+++ b/src/test/java/net/onrc/onos/core/matchaction/MatchActionModuleTest.java
@@ -33,19 +33,20 @@
              operationsIteration <= iterations;
              operationsIteration++) {
             final MatchActionOperationsId id =
-                    MatchActionOperationsId.createNewOperationsId();
+                    new MatchActionOperationsId(1L);
             assertThat(id, is(notNullValue()));
             final MatchActionOperations operations =
-                    MatchActionOperations.createMatchActionsOperations(id);
+                    new MatchActionOperations(id);
             assertThat(operations, is(notNullValue()));
 
             for (int entriesIteration = 1;
                  entriesIteration <= iterations;
                  entriesIteration++) {
 
-                final String entryId = "MA" +
-                        Integer.toString(operationsIteration) +
-                        Integer.toString(entriesIteration);
+                final MatchActionId entryId =
+                        new MatchActionId(
+                        (operationsIteration * 10) +
+                        entriesIteration);
                 final MatchAction matchAction =
                         new MatchAction(entryId, null, null, null);
                 final MatchActionOperationEntry entry =
@@ -74,7 +75,7 @@
         //  Make sure that the returned list cannot be modified
         Throwable errorThrown = null;
         try {
-            matchActions.add(new MatchAction("", null, null, null));
+            matchActions.add(new MatchAction(new MatchActionId(1L), null, null, null));
         } catch (UnsupportedOperationException e) {
             errorThrown = e;
         }
@@ -90,9 +91,9 @@
 
         // Create two MatchAction objects using the same ID
         final MatchAction matchAction =
-                new MatchAction("ID", null, null, null);
+                new MatchAction(new MatchActionId(111L), null, null, null);
         final MatchAction duplicateMatchAction =
-                new MatchAction("ID", null, null, null);
+                new MatchAction(new MatchActionId(111L), null, null, null);
 
         // create Operation Entries for the two MatchAction objects
         final MatchActionOperationEntry entry =
@@ -104,10 +105,10 @@
 
         // Create an Operations object to execute the first MatchAction
         final MatchActionOperationsId id =
-                MatchActionOperationsId.createNewOperationsId();
+                new MatchActionOperationsId(11L);
         assertThat(id, is(notNullValue()));
         final MatchActionOperations operations =
-                MatchActionOperations.createMatchActionsOperations(id);
+                new MatchActionOperations(id);
         operations.addOperation(entry);
 
         // Create a module to use to execute the Operations.
@@ -120,10 +121,10 @@
 
         // Now add the duplicate entry.  This should fail.
         final MatchActionOperationsId idForDuplicate =
-                MatchActionOperationsId.createNewOperationsId();
+                new MatchActionOperationsId(22L);
         assertThat(idForDuplicate, is(notNullValue()));
         final MatchActionOperations operationsForDuplicate =
-                MatchActionOperations.createMatchActionsOperations(idForDuplicate);
+                new MatchActionOperations(idForDuplicate);
         operationsForDuplicate.addOperation(duplicateEntry);
 
         final boolean resultForDuplicate =
diff --git a/src/test/java/net/onrc/onos/core/matchaction/MatchActionOperationsIdGeneratorTest.java b/src/test/java/net/onrc/onos/core/matchaction/MatchActionOperationsIdGeneratorTest.java
new file mode 100644
index 0000000..e95f1df
--- /dev/null
+++ b/src/test/java/net/onrc/onos/core/matchaction/MatchActionOperationsIdGeneratorTest.java
@@ -0,0 +1,49 @@
+package net.onrc.onos.core.matchaction;
+
+import net.onrc.onos.core.util.IdBlock;
+import net.onrc.onos.core.util.IdBlockAllocator;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.replay;
+import static org.hamcrest.Matchers.is;
+import static org.junit.Assert.assertThat;
+
+/**
+ * Tests MatchActionOperationsIdGeneratorWithIdBlockAllocator.
+ */
+public class MatchActionOperationsIdGeneratorTest {
+
+    private IdBlockAllocator allocator;
+
+    @Before
+    public void setUp() {
+        allocator = createMock(IdBlockAllocator.class);
+
+    }
+
+    /**
+     * Tests generated MatchActionOperationsId sequences using two {@link net.onrc.onos.core.util.IdBlock blocks}.
+     */
+    @Test
+    public void testIds() {
+        expect(allocator.allocateUniqueIdBlock())
+                .andReturn(new IdBlock(0, 3))
+                .andReturn(new IdBlock(4, 3));
+
+        replay(allocator);
+        final MatchActionOperationsIdGeneratorWithIdBlockAllocator generator =
+                new MatchActionOperationsIdGeneratorWithIdBlockAllocator(allocator);
+
+        assertThat(generator.getNewId(), is(new MatchActionOperationsId(0L)));
+        assertThat(generator.getNewId(), is(new MatchActionOperationsId(1L)));
+        assertThat(generator.getNewId(), is(new MatchActionOperationsId(2L)));
+
+        assertThat(generator.getNewId(), is(new MatchActionOperationsId(4L)));
+        assertThat(generator.getNewId(), is(new MatchActionOperationsId(5L)));
+        assertThat(generator.getNewId(), is(new MatchActionOperationsId(6L)));
+    }
+}
+
diff --git a/src/test/java/net/onrc/onos/core/matchaction/MatchActionOperationsTest.java b/src/test/java/net/onrc/onos/core/matchaction/MatchActionOperationsTest.java
index fd96de4..b01f1c8 100644
--- a/src/test/java/net/onrc/onos/core/matchaction/MatchActionOperationsTest.java
+++ b/src/test/java/net/onrc/onos/core/matchaction/MatchActionOperationsTest.java
@@ -21,16 +21,16 @@
     @Test
     public void testMatchActionoperationsCreate() {
         final MatchActionOperationsId id1 =
-            MatchActionOperationsId.createNewOperationsId();
+            new MatchActionOperationsId(1L);
         final MatchActionOperations operations1 =
-            MatchActionOperations.createMatchActionsOperations(id1);
+            new MatchActionOperations(id1);
         assertThat(id1, is(notNullValue()));
         assertThat(id1, is(equalTo(operations1.getOperationsId())));
 
         final MatchActionOperationsId id2 =
-            MatchActionOperationsId.createNewOperationsId();
+            new MatchActionOperationsId(2L);
         final MatchActionOperations operations2 =
-            MatchActionOperations.createMatchActionsOperations(id2);
+            new MatchActionOperations(id2);
         assertThat(id2, is(notNullValue()));
         assertThat(id2, is(equalTo(operations2.getOperationsId())));
 
@@ -45,11 +45,11 @@
     @Test
     public void testMatchActionOperationsIdEquals() {
         final MatchActionOperationsId id1 =
-                MatchActionOperationsId.createNewOperationsId();
+                new MatchActionOperationsId(1L);
         final MatchActionOperationsId id2 =
-                MatchActionOperationsId.createNewOperationsId();
+                new MatchActionOperationsId(2L);
         final MatchActionOperationsId id1Copy =
-                MatchActionOperationsId.createNewOperationsId();
+                new MatchActionOperationsId(1L);
 
 
         // Check that null does not match
@@ -73,7 +73,7 @@
     @Test
     public void testMatchActionOperationsIdHashCode() {
         final MatchActionOperationsId id1 =
-                MatchActionOperationsId.createNewOperationsId();
-        assertThat(id1.hashCode(), is(equalTo(id1.getId().hashCode())));
+                new MatchActionOperationsId(22L);
+        assertThat(id1.hashCode(), is(equalTo(22)));
     }
 }
diff --git a/src/test/java/net/onrc/onos/core/matchaction/MatchActionTest.java b/src/test/java/net/onrc/onos/core/matchaction/MatchActionTest.java
index cb32096..2684f19 100644
--- a/src/test/java/net/onrc/onos/core/matchaction/MatchActionTest.java
+++ b/src/test/java/net/onrc/onos/core/matchaction/MatchActionTest.java
@@ -22,7 +22,7 @@
         builder.setDstTcpPort((short) 80);
         List<Action> actions = new LinkedList<Action>();
         actions.add(new ModifyDstMacAction(MACAddress.valueOf("00:01:02:03:04:05")));
-        MatchAction ma = new MatchAction("1", port, builder.build(), actions);
+        MatchAction ma = new MatchAction(new MatchActionId(1L), port, builder.build(), actions);
 
         assertEquals(actions, ma.getActions());
         assertEquals("1", ma.getId().toString());
diff --git a/src/test/java/net/onrc/onos/core/matchaction/TestOperationsCreation.java b/src/test/java/net/onrc/onos/core/matchaction/TestOperationsCreation.java
index fc33f14..2278949 100644
--- a/src/test/java/net/onrc/onos/core/matchaction/TestOperationsCreation.java
+++ b/src/test/java/net/onrc/onos/core/matchaction/TestOperationsCreation.java
@@ -23,12 +23,13 @@
     public void testOperationsCreation() {
         //  Create the MatchActionOperations
         final MatchActionOperationsId operationsId =
-            MatchActionOperationsId.createNewOperationsId();
+            new MatchActionOperationsId(1L);
         final MatchActionOperations operations =
-                MatchActionOperations.createMatchActionsOperations(operationsId);
+                new MatchActionOperations(operationsId);
 
         //  Create one MatchActionEntry and add it to the Operations
-        final String matchActionId1 = "MA1";
+
+        final MatchActionId matchActionId1 = new MatchActionId(1L);
         final MatchAction action1 = new MatchAction(matchActionId1, null, null, null);
 
         final MatchActionOperationEntry entry1 =
@@ -47,7 +48,8 @@
         assertThat(loadedEntry1, is(notNullValue()));
 
         final MatchAction loadedAction1 = loadedEntry1.getTarget();
-        assertThat(loadedAction1.getId().toString(), is(equalTo(matchActionId1)));
+        assertThat(loadedAction1.getId().toString(),
+                   is(equalTo(matchActionId1.toString())));
 
         final MatchActionOperations.Operator loadedOperator1 = loadedEntry1.getOperator();
         assertThat(loadedOperator1, is(equalTo(MatchActionOperations.Operator.ADD)));