diff options
author | Ashlee Young <ashlee@onosfw.com> | 2015-09-09 22:15:21 -0700 |
---|---|---|
committer | Ashlee Young <ashlee@onosfw.com> | 2015-09-09 22:15:21 -0700 |
commit | 13d05bc8458758ee39cb829098241e89616717ee (patch) | |
tree | 22a4d1ce65f15952f07a3df5af4b462b4697cb3a /framework/src/onos/apps/aaa/src/test/java/org/onosproject/aaa/StateMachineTest.java | |
parent | 6139282e1e93c2322076de4b91b1c85d0bc4a8b3 (diff) |
ONOS checkin based on commit tag e796610b1f721d02f9b0e213cf6f7790c10ecd60
Change-Id: Ife8810491034fe7becdba75dda20de4267bd15cd
Diffstat (limited to 'framework/src/onos/apps/aaa/src/test/java/org/onosproject/aaa/StateMachineTest.java')
-rw-r--r-- | framework/src/onos/apps/aaa/src/test/java/org/onosproject/aaa/StateMachineTest.java | 270 |
1 files changed, 270 insertions, 0 deletions
diff --git a/framework/src/onos/apps/aaa/src/test/java/org/onosproject/aaa/StateMachineTest.java b/framework/src/onos/apps/aaa/src/test/java/org/onosproject/aaa/StateMachineTest.java new file mode 100644 index 00000000..2fe44ab9 --- /dev/null +++ b/framework/src/onos/apps/aaa/src/test/java/org/onosproject/aaa/StateMachineTest.java @@ -0,0 +1,270 @@ +/* + * + * Copyright 2015 AT&T Foundry + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package org.onosproject.aaa; + +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + + +public class StateMachineTest { + StateMachine stateMachine = null; + + @Before + public void setUp() { + System.out.println("Set Up."); + StateMachine.bitSet.clear(); + stateMachine = new StateMachine("session0", null); + } + + @After + public void tearDown() { + System.out.println("Tear Down."); + StateMachine.bitSet.clear(); + stateMachine = null; + } + + @Test + /** + * Test all the basic inputs from state to state: IDLE -> STARTED -> PENDING -> AUTHORIZED -> IDLE + */ + public void basic() throws StateMachineException { + System.out.println("======= BASIC =======."); + Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_IDLE); + + stateMachine.start(); + Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_STARTED); + + stateMachine.requestAccess(); + Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_PENDING); + + stateMachine.authorizeAccess(); + Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_AUTHORIZED); + + stateMachine.logoff(); + Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_IDLE); + } + + @Test + /** + * Test all inputs from an IDLE state (starting with the ones that are not impacting the current state) + */ + public void testIdleState() throws StateMachineException { + System.out.println("======= IDLE STATE TEST =======."); + stateMachine.requestAccess(); + Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_IDLE); + + stateMachine.authorizeAccess(); + Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_IDLE); + + stateMachine.denyAccess(); + Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_IDLE); + + stateMachine.logoff(); + Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_IDLE); + + stateMachine.start(); + Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_STARTED); + } + + @Test + /** + * Test all inputs from an STARTED state (starting with the ones that are not impacting the current state) + */ + public void testStartedState() throws StateMachineException { + System.out.println("======= STARTED STATE TEST =======."); + stateMachine.start(); + + stateMachine.authorizeAccess(); + Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_STARTED); + + stateMachine.denyAccess(); + Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_STARTED); + + stateMachine.logoff(); + Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_STARTED); + + stateMachine.start(); + Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_STARTED); + + stateMachine.requestAccess(); + Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_PENDING); + } + + @Test + /** + * Test all inputs from a PENDING state (starting with the ones that are not impacting the current state). + * The next valid state for this test is AUTHORIZED + */ + public void testPendingStateToAuthorized() throws StateMachineException { + System.out.println("======= PENDING STATE TEST (AUTHORIZED) =======."); + stateMachine.start(); + stateMachine.requestAccess(); + + stateMachine.logoff(); + Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_PENDING); + + stateMachine.start(); + Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_PENDING); + + stateMachine.requestAccess(); + Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_PENDING); + + stateMachine.authorizeAccess(); + Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_AUTHORIZED); + + stateMachine.denyAccess(); + Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_AUTHORIZED); + } + + @Test + /** + * Test all inputs from an PENDING state (starting with the ones that are not impacting the current state). + * The next valid state for this test is UNAUTHORIZED + */ + public void testPendingStateToUnauthorized() throws StateMachineException { + System.out.println("======= PENDING STATE TEST (DENIED) =======."); + stateMachine.start(); + stateMachine.requestAccess(); + + stateMachine.logoff(); + Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_PENDING); + + stateMachine.start(); + Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_PENDING); + + stateMachine.requestAccess(); + Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_PENDING); + + stateMachine.denyAccess(); + Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_UNAUTHORIZED); + + stateMachine.authorizeAccess(); + Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_UNAUTHORIZED); + } + + @Test + /** + * Test all inputs from an AUTHORIZED state (starting with the ones that are not impacting the current state). + */ + public void testAuthorizedState() throws StateMachineException { + System.out.println("======= AUTHORIZED STATE TEST =======."); + stateMachine.start(); + stateMachine.requestAccess(); + stateMachine.authorizeAccess(); + + stateMachine.start(); + Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_AUTHORIZED); + + stateMachine.requestAccess(); + Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_AUTHORIZED); + + stateMachine.authorizeAccess(); + Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_AUTHORIZED); + + stateMachine.denyAccess(); + Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_AUTHORIZED); + + stateMachine.logoff(); + Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_IDLE); + } + + @Test + /** + * Test all inputs from an UNAUTHORIZED state (starting with the ones that are not impacting the current state). + */ + public void testUnauthorizedState() throws StateMachineException { + System.out.println("======= UNAUTHORIZED STATE TEST =======."); + stateMachine.start(); + stateMachine.requestAccess(); + stateMachine.denyAccess(); + + stateMachine.start(); + Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_UNAUTHORIZED); + + stateMachine.requestAccess(); + Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_UNAUTHORIZED); + + stateMachine.authorizeAccess(); + Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_UNAUTHORIZED); + + stateMachine.denyAccess(); + Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_UNAUTHORIZED); + + stateMachine.logoff(); + Assert.assertEquals(stateMachine.getState(), StateMachine.STATE_IDLE); + } + + + @Test + public void testIdentifierAvailability() throws StateMachineException { + System.out.println("======= IDENTIFIER TEST =======."); + byte identifier = stateMachine.getIdentifier(); + System.out.println("State: " + stateMachine.getState()); + System.out.println("Identifier: " + Byte.toUnsignedInt(identifier)); + Assert.assertEquals(-1, identifier); + stateMachine.start(); + + + StateMachine sm247 = null; + StateMachine sm3 = null; + + + //create 255 others state machines + for (int i = 1; i <= 255; i++) { + StateMachine sm = new StateMachine("session" + i, null); + sm.start(); + byte id = sm.getIdentifier(); + Assert.assertEquals(i, Byte.toUnsignedInt(id)); + if (i == 3) { + sm3 = sm; + System.out.println("SM3: " + sm3.toString()); + } + if (i == 247) { + sm247 = sm; + System.out.println("SM247: " + sm247.toString()); + } + } + + //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 + sm247.requestAccess(); + sm247.authorizeAccess(); + sm247.logoff(); + sm247 = null; + + sm3.requestAccess(); + sm3.authorizeAccess(); + sm3.logoff(); + sm3 = null; + + StateMachine otherSM3 = new StateMachine("session3b", null); + otherSM3.start(); + otherSM3.requestAccess(); + byte id3 = otherSM3.getIdentifier(); + Assert.assertEquals(3, Byte.toUnsignedInt(id3)); + + StateMachine otherSM247 = new StateMachine("session247b", null); + otherSM247.start(); + otherSM247.requestAccess(); + byte id247 = otherSM247.getIdentifier(); + Assert.assertEquals(247, Byte.toUnsignedInt(id247)); + + } +} |