AAA App refactoring

- optimized lookup of state machines
- modified getter/setter method names to match ONOS project standards
- made StateMachine local members private and add accesor methods
- added unit tests for StateMachine lookups

Change-Id: I5704ddc4d8b1b3c887be1262f2edd78965e4a8bf
diff --git a/apps/aaa/src/test/java/org/onosproject/aaa/StateMachineTest.java b/apps/aaa/src/test/java/org/onosproject/aaa/StateMachineTest.java
index 2fe44ab..04837e8 100644
--- a/apps/aaa/src/test/java/org/onosproject/aaa/StateMachineTest.java
+++ b/apps/aaa/src/test/java/org/onosproject/aaa/StateMachineTest.java
@@ -21,6 +21,7 @@
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
+import static org.junit.Assert.*;
 
 
 public class StateMachineTest {
@@ -30,6 +31,7 @@
     public void setUp() {
         System.out.println("Set Up.");
         StateMachine.bitSet.clear();
+        StateMachine.initializeMaps();
         stateMachine = new StateMachine("session0", null);
     }
 
@@ -37,6 +39,7 @@
     public void tearDown() {
         System.out.println("Tear Down.");
         StateMachine.bitSet.clear();
+        StateMachine.destroyMaps();
         stateMachine = null;
     }
 
@@ -46,19 +49,19 @@
      */
     public void basic() throws StateMachineException {
         System.out.println("======= BASIC =======.");
-        Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_IDLE);
+        Assert.assertEquals(stateMachine.state(), StateMachine.STATE_IDLE);
 
         stateMachine.start();
-        Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_STARTED);
+        Assert.assertEquals(stateMachine.state(), StateMachine.STATE_STARTED);
 
         stateMachine.requestAccess();
-        Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_PENDING);
+        Assert.assertEquals(stateMachine.state(), StateMachine.STATE_PENDING);
 
         stateMachine.authorizeAccess();
-        Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_AUTHORIZED);
+        Assert.assertEquals(stateMachine.state(), StateMachine.STATE_AUTHORIZED);
 
         stateMachine.logoff();
-        Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_IDLE);
+        Assert.assertEquals(stateMachine.state(), StateMachine.STATE_IDLE);
     }
 
     @Test
@@ -68,19 +71,19 @@
     public void testIdleState() throws StateMachineException {
         System.out.println("======= IDLE STATE TEST =======.");
         stateMachine.requestAccess();
-        Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_IDLE);
+        Assert.assertEquals(stateMachine.state(), StateMachine.STATE_IDLE);
 
         stateMachine.authorizeAccess();
-        Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_IDLE);
+        Assert.assertEquals(stateMachine.state(), StateMachine.STATE_IDLE);
 
         stateMachine.denyAccess();
-        Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_IDLE);
+        Assert.assertEquals(stateMachine.state(), StateMachine.STATE_IDLE);
 
         stateMachine.logoff();
-        Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_IDLE);
+        Assert.assertEquals(stateMachine.state(), StateMachine.STATE_IDLE);
 
         stateMachine.start();
-        Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_STARTED);
+        Assert.assertEquals(stateMachine.state(), StateMachine.STATE_STARTED);
     }
 
     @Test
@@ -92,19 +95,19 @@
         stateMachine.start();
 
         stateMachine.authorizeAccess();
-        Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_STARTED);
+        Assert.assertEquals(stateMachine.state(), StateMachine.STATE_STARTED);
 
         stateMachine.denyAccess();
-        Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_STARTED);
+        Assert.assertEquals(stateMachine.state(), StateMachine.STATE_STARTED);
 
         stateMachine.logoff();
-        Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_STARTED);
+        Assert.assertEquals(stateMachine.state(), StateMachine.STATE_STARTED);
 
         stateMachine.start();
-        Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_STARTED);
+        Assert.assertEquals(stateMachine.state(), StateMachine.STATE_STARTED);
 
         stateMachine.requestAccess();
-        Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_PENDING);
+        Assert.assertEquals(stateMachine.state(), StateMachine.STATE_PENDING);
     }
 
     @Test
@@ -118,19 +121,19 @@
         stateMachine.requestAccess();
 
         stateMachine.logoff();
-        Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_PENDING);
+        Assert.assertEquals(stateMachine.state(), StateMachine.STATE_PENDING);
 
         stateMachine.start();
-        Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_PENDING);
+        Assert.assertEquals(stateMachine.state(), StateMachine.STATE_PENDING);
 
         stateMachine.requestAccess();
-        Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_PENDING);
+        Assert.assertEquals(stateMachine.state(), StateMachine.STATE_PENDING);
 
         stateMachine.authorizeAccess();
-        Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_AUTHORIZED);
+        Assert.assertEquals(stateMachine.state(), StateMachine.STATE_AUTHORIZED);
 
         stateMachine.denyAccess();
-        Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_AUTHORIZED);
+        Assert.assertEquals(stateMachine.state(), StateMachine.STATE_AUTHORIZED);
     }
 
     @Test
@@ -144,19 +147,19 @@
         stateMachine.requestAccess();
 
         stateMachine.logoff();
-        Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_PENDING);
+        Assert.assertEquals(stateMachine.state(), StateMachine.STATE_PENDING);
 
         stateMachine.start();
-        Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_PENDING);
+        Assert.assertEquals(stateMachine.state(), StateMachine.STATE_PENDING);
 
         stateMachine.requestAccess();
-        Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_PENDING);
+        Assert.assertEquals(stateMachine.state(), StateMachine.STATE_PENDING);
 
         stateMachine.denyAccess();
-        Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_UNAUTHORIZED);
+        Assert.assertEquals(stateMachine.state(), StateMachine.STATE_UNAUTHORIZED);
 
         stateMachine.authorizeAccess();
-        Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_UNAUTHORIZED);
+        Assert.assertEquals(stateMachine.state(), StateMachine.STATE_UNAUTHORIZED);
     }
 
     @Test
@@ -170,19 +173,19 @@
         stateMachine.authorizeAccess();
 
         stateMachine.start();
-        Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_AUTHORIZED);
+        Assert.assertEquals(stateMachine.state(), StateMachine.STATE_AUTHORIZED);
 
         stateMachine.requestAccess();
-        Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_AUTHORIZED);
+        Assert.assertEquals(stateMachine.state(), StateMachine.STATE_AUTHORIZED);
 
         stateMachine.authorizeAccess();
-        Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_AUTHORIZED);
+        Assert.assertEquals(stateMachine.state(), StateMachine.STATE_AUTHORIZED);
 
         stateMachine.denyAccess();
-        Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_AUTHORIZED);
+        Assert.assertEquals(stateMachine.state(), StateMachine.STATE_AUTHORIZED);
 
         stateMachine.logoff();
-        Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_IDLE);
+        Assert.assertEquals(stateMachine.state(), StateMachine.STATE_IDLE);
     }
 
     @Test
@@ -196,27 +199,27 @@
         stateMachine.denyAccess();
 
         stateMachine.start();
-        Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_UNAUTHORIZED);
+        Assert.assertEquals(stateMachine.state(), StateMachine.STATE_UNAUTHORIZED);
 
         stateMachine.requestAccess();
-        Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_UNAUTHORIZED);
+        Assert.assertEquals(stateMachine.state(), StateMachine.STATE_UNAUTHORIZED);
 
         stateMachine.authorizeAccess();
-        Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_UNAUTHORIZED);
+        Assert.assertEquals(stateMachine.state(), StateMachine.STATE_UNAUTHORIZED);
 
         stateMachine.denyAccess();
-        Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_UNAUTHORIZED);
+        Assert.assertEquals(stateMachine.state(), StateMachine.STATE_UNAUTHORIZED);
 
         stateMachine.logoff();
-        Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_IDLE);
+        Assert.assertEquals(stateMachine.state(), StateMachine.STATE_IDLE);
     }
 
 
     @Test
     public void testIdentifierAvailability() throws StateMachineException {
         System.out.println("======= IDENTIFIER TEST =======.");
-        byte identifier = stateMachine.getIdentifier();
-        System.out.println("State: " + stateMachine.getState());
+        byte identifier = stateMachine.identifier();
+        System.out.println("State: " + stateMachine.state());
         System.out.println("Identifier: " + Byte.toUnsignedInt(identifier));
         Assert.assertEquals(-1, identifier);
         stateMachine.start();
@@ -230,7 +233,7 @@
         for (int i = 1; i <= 255; i++) {
                 StateMachine sm = new StateMachine("session" + i, null);
                 sm.start();
-                byte id = sm.getIdentifier();
+                byte id = sm.identifier();
                 Assert.assertEquals(i, Byte.toUnsignedInt(id));
                 if (i == 3) {
                     sm3 = sm;
@@ -244,27 +247,72 @@
 
         //simulate the state machine for a specific session and logoff so we can free up a spot for an identifier
         //let's choose identifier 247 then we free up 3
+        Assert.assertNotNull(sm247);
         sm247.requestAccess();
         sm247.authorizeAccess();
         sm247.logoff();
-        sm247 = null;
 
+        Assert.assertNotNull(sm3);
         sm3.requestAccess();
         sm3.authorizeAccess();
         sm3.logoff();
-        sm3 = null;
 
         StateMachine otherSM3 = new StateMachine("session3b", null);
         otherSM3.start();
         otherSM3.requestAccess();
-        byte id3 = otherSM3.getIdentifier();
+        byte id3 = otherSM3.identifier();
         Assert.assertEquals(3, Byte.toUnsignedInt(id3));
 
         StateMachine otherSM247 = new StateMachine("session247b", null);
         otherSM247.start();
         otherSM247.requestAccess();
-        byte id247 = otherSM247.getIdentifier();
+        byte id247 = otherSM247.identifier();
         Assert.assertEquals(247, Byte.toUnsignedInt(id247));
+    }
 
+    @Test
+    public void testSessionIdLookups() {
+        String sessionId1 = "session1";
+        String sessionId2 = "session2";
+        String sessionId3 = "session3";
+
+        StateMachine machine1ShouldBeNull =
+                StateMachine.lookupStateMachineBySessionId(sessionId1);
+        assertNull(machine1ShouldBeNull);
+        StateMachine machine2ShouldBeNull =
+                StateMachine.lookupStateMachineBySessionId(sessionId2);
+        assertNull(machine2ShouldBeNull);
+
+        StateMachine stateMachine1 = new StateMachine(sessionId1, null);
+        StateMachine stateMachine2 = new StateMachine(sessionId2, null);
+
+        assertEquals(stateMachine1,
+                     StateMachine.lookupStateMachineBySessionId(sessionId1));
+        assertEquals(stateMachine2,
+                     StateMachine.lookupStateMachineBySessionId(sessionId2));
+        assertNull(StateMachine.lookupStateMachineBySessionId(sessionId3));
+    }
+
+    @Test
+    public void testIdentifierLookups() throws StateMachineException {
+        String sessionId1 = "session1";
+        String sessionId2 = "session2";
+
+        StateMachine machine1ShouldBeNull =
+                StateMachine.lookupStateMachineById((byte) 1);
+        assertNull(machine1ShouldBeNull);
+        StateMachine machine2ShouldBeNull =
+                StateMachine.lookupStateMachineById((byte) 2);
+        assertNull(machine2ShouldBeNull);
+
+        StateMachine stateMachine1 = new StateMachine(sessionId1, null);
+        stateMachine1.start();
+        StateMachine stateMachine2 = new StateMachine(sessionId2, null);
+        stateMachine2.start();
+
+        assertEquals(stateMachine1,
+                     StateMachine.lookupStateMachineById(stateMachine1.identifier()));
+        assertEquals(stateMachine2,
+                     StateMachine.lookupStateMachineById(stateMachine2.identifier()));
     }
 }