use of com.android.internal.util.StateMachine.LogRec in project android_frameworks_base by AOSPA.
the class StateMachineTest method testStateMachine2.
@MediumTest
public void testStateMachine2() throws Exception {
StateMachine2 sm2 = new StateMachine2("sm2");
sm2.start();
if (sm2.isDbg())
tlog("testStateMachine2 E");
synchronized (sm2) {
// Send two messages
sm2.sendMessage(TEST_CMD_1);
sm2.sendMessage(TEST_CMD_2);
try {
// wait for the messages to be handled
sm2.wait();
} catch (InterruptedException e) {
tloge("testStateMachine2: exception while waiting " + e.getMessage());
}
}
assertEquals(4, sm2.getLogRecSize());
LogRec lr;
lr = sm2.getLogRec(0);
assertEquals(TEST_CMD_1, lr.getWhat());
assertEquals(sm2.mS1, lr.getState());
lr = sm2.getLogRec(1);
assertEquals(TEST_CMD_2, lr.getWhat());
assertEquals(sm2.mS1, lr.getState());
lr = sm2.getLogRec(2);
assertEquals(TEST_CMD_1, lr.getWhat());
assertEquals(sm2.mS2, lr.getState());
lr = sm2.getLogRec(3);
assertEquals(TEST_CMD_2, lr.getWhat());
assertEquals(sm2.mS2, lr.getState());
assertTrue(sm2.mDidEnter);
assertTrue(sm2.mDidExit);
if (sm2.isDbg())
tlog("testStateMachine2 X");
}
use of com.android.internal.util.StateMachine.LogRec in project android_frameworks_base by AOSPA.
the class StateMachineTest method testStateMachine5.
@MediumTest
public void testStateMachine5() throws Exception {
StateMachine5 sm5 = new StateMachine5("sm5");
sm5.start();
if (sm5.isDbg())
tlog("testStateMachine5 E");
synchronized (sm5) {
// Send 6 messages
sm5.sendMessage(TEST_CMD_1);
sm5.sendMessage(TEST_CMD_2);
sm5.sendMessage(TEST_CMD_3);
sm5.sendMessage(TEST_CMD_4);
sm5.sendMessage(TEST_CMD_5);
sm5.sendMessage(TEST_CMD_6);
try {
// wait for the messages to be handled
sm5.wait();
} catch (InterruptedException e) {
tloge("testStateMachine5: exception while waiting " + e.getMessage());
}
}
assertEquals(6, sm5.getLogRecSize());
assertEquals(1, sm5.mParentState1EnterCount);
assertEquals(1, sm5.mParentState1ExitCount);
assertEquals(1, sm5.mChildState1EnterCount);
assertEquals(1, sm5.mChildState1ExitCount);
assertEquals(1, sm5.mChildState2EnterCount);
assertEquals(1, sm5.mChildState2ExitCount);
assertEquals(2, sm5.mParentState2EnterCount);
assertEquals(2, sm5.mParentState2ExitCount);
assertEquals(1, sm5.mChildState3EnterCount);
assertEquals(1, sm5.mChildState3ExitCount);
assertEquals(2, sm5.mChildState4EnterCount);
assertEquals(2, sm5.mChildState4ExitCount);
assertEquals(1, sm5.mChildState5EnterCount);
assertEquals(1, sm5.mChildState5ExitCount);
LogRec lr;
lr = sm5.getLogRec(0);
assertEquals(TEST_CMD_1, lr.getWhat());
assertEquals(sm5.mChildState1, lr.getState());
assertEquals(sm5.mChildState1, lr.getOriginalState());
lr = sm5.getLogRec(1);
assertEquals(TEST_CMD_2, lr.getWhat());
assertEquals(sm5.mChildState2, lr.getState());
assertEquals(sm5.mChildState2, lr.getOriginalState());
lr = sm5.getLogRec(2);
assertEquals(TEST_CMD_3, lr.getWhat());
assertEquals(sm5.mChildState5, lr.getState());
assertEquals(sm5.mChildState5, lr.getOriginalState());
lr = sm5.getLogRec(3);
assertEquals(TEST_CMD_4, lr.getWhat());
assertEquals(sm5.mChildState3, lr.getState());
assertEquals(sm5.mChildState3, lr.getOriginalState());
lr = sm5.getLogRec(4);
assertEquals(TEST_CMD_5, lr.getWhat());
assertEquals(sm5.mChildState4, lr.getState());
assertEquals(sm5.mChildState4, lr.getOriginalState());
lr = sm5.getLogRec(5);
assertEquals(TEST_CMD_6, lr.getWhat());
assertEquals(sm5.mParentState2, lr.getState());
assertEquals(sm5.mParentState2, lr.getOriginalState());
if (sm5.isDbg())
tlog("testStateMachine5 X");
}
use of com.android.internal.util.StateMachine.LogRec in project android_frameworks_base by AOSPA.
the class StateMachineTest method testStateMachineQuit.
@SmallTest
public void testStateMachineQuit() throws Exception {
if (WAIT_FOR_DEBUGGER)
Debug.waitForDebugger();
StateMachineQuitTest smQuitTest = new StateMachineQuitTest("smQuitTest");
smQuitTest.start();
if (smQuitTest.isDbg())
tlog("testStateMachineQuit E");
synchronized (smQuitTest) {
// Send 6 message we'll quit on the first but all 6 should be processed before quitting.
for (int i = 1; i <= 6; i++) {
smQuitTest.sendMessage(smQuitTest.obtainMessage(i));
}
try {
// wait for the messages to be handled
smQuitTest.wait();
} catch (InterruptedException e) {
tloge("testStateMachineQuit: exception while waiting " + e.getMessage());
}
}
dumpLogRecs(smQuitTest.mLogRecs);
assertEquals(8, smQuitTest.mLogRecs.size());
LogRec lr;
Iterator<LogRec> itr = smQuitTest.mLogRecs.iterator();
for (int i = 1; i <= 6; i++) {
lr = itr.next();
assertEquals(i, lr.getWhat());
assertEquals(smQuitTest.mS1, lr.getState());
assertEquals(smQuitTest.mS1, lr.getOriginalState());
}
lr = itr.next();
assertEquals(EXIT, lr.getInfo());
assertEquals(smQuitTest.mS1, lr.getState());
lr = itr.next();
assertEquals(ON_QUITTING, lr.getInfo());
if (smQuitTest.isDbg())
tlog("testStateMachineQuit X");
}
use of com.android.internal.util.StateMachine.LogRec in project android_frameworks_base by AOSPA.
the class StateMachineTest method testHsm1.
@MediumTest
public void testHsm1() throws Exception {
if (DBG)
tlog("testHsm1 E");
Hsm1 sm = Hsm1.makeHsm1();
// Send messages
sm.sendMessage(Hsm1.CMD_1);
sm.sendMessage(Hsm1.CMD_2);
synchronized (sm) {
// Wait for the last state machine to notify its done
try {
sm.wait();
} catch (InterruptedException e) {
tloge("testHsm1: exception while waiting " + e.getMessage());
}
}
dumpLogRecs(sm);
assertEquals(7, sm.getLogRecCount());
LogRec lr = sm.getLogRec(0);
assertEquals(Hsm1.CMD_1, lr.getWhat());
assertEquals(sm.mS1, lr.getState());
assertEquals(sm.mS1, lr.getOriginalState());
lr = sm.getLogRec(1);
assertEquals(Hsm1.CMD_2, lr.getWhat());
assertEquals(sm.mP1, lr.getState());
assertEquals(sm.mS1, lr.getOriginalState());
lr = sm.getLogRec(2);
assertEquals(Hsm1.CMD_2, lr.getWhat());
assertEquals(sm.mS2, lr.getState());
assertEquals(sm.mS2, lr.getOriginalState());
lr = sm.getLogRec(3);
assertEquals(Hsm1.CMD_3, lr.getWhat());
assertEquals(sm.mS2, lr.getState());
assertEquals(sm.mS2, lr.getOriginalState());
lr = sm.getLogRec(4);
assertEquals(Hsm1.CMD_3, lr.getWhat());
assertEquals(sm.mP2, lr.getState());
assertEquals(sm.mP2, lr.getOriginalState());
lr = sm.getLogRec(5);
assertEquals(Hsm1.CMD_4, lr.getWhat());
assertEquals(sm.mP2, lr.getState());
assertEquals(sm.mP2, lr.getOriginalState());
lr = sm.getLogRec(6);
assertEquals(Hsm1.CMD_5, lr.getWhat());
assertEquals(sm.mP2, lr.getState());
assertEquals(sm.mP2, lr.getOriginalState());
if (DBG)
tlog("testStateMachineSharedThread X");
}
use of com.android.internal.util.StateMachine.LogRec in project android_frameworks_base by AOSPA.
the class StateMachineTest method testStateMachineSharedThread.
@MediumTest
public void testStateMachineSharedThread() throws Exception {
if (DBG)
tlog("testStateMachineSharedThread E");
// Create and start the handler thread
HandlerThread smThread = new HandlerThread("testStateMachineSharedThread");
smThread.start();
// Create the state machines
StateMachineSharedThread[] sms = new StateMachineSharedThread[10];
for (int i = 0; i < sms.length; i++) {
sms[i] = new StateMachineSharedThread("smSharedThread", smThread.getLooper(), sms.length);
sms[i].start();
}
synchronized (waitObject) {
// Send messages to each of the state machines
for (StateMachineSharedThread sm : sms) {
for (int i = 1; i <= 4; i++) {
sm.sendMessage(i);
}
}
// Wait for the last state machine to notify its done
try {
waitObject.wait();
} catch (InterruptedException e) {
tloge("testStateMachineSharedThread: exception while waiting " + e.getMessage());
}
}
for (StateMachineSharedThread sm : sms) {
assertEquals(4, sm.getLogRecCount());
for (int i = 0; i < sm.getLogRecSize(); i++) {
LogRec lr = sm.getLogRec(i);
assertEquals(i + 1, lr.getWhat());
assertEquals(sm.mS1, lr.getState());
assertEquals(sm.mS1, lr.getOriginalState());
}
}
if (DBG)
tlog("testStateMachineSharedThread X");
}
Aggregations