View Javadoc

1   package com.atlassian.plugin.manager;
2   
3   import static com.atlassian.plugin.manager.StateTracker.State.*;
4   import static com.atlassian.plugin.manager.StateTracker.State.SHUTDOWN;
5   import static com.atlassian.plugin.manager.StateTracker.State.SHUTTING_DOWN;
6   import static com.atlassian.plugin.manager.StateTracker.State.STARTED;
7   import static com.atlassian.plugin.manager.StateTracker.State.STARTING;
8   
9   import com.atlassian.plugin.manager.StateTracker.State;
10  import com.atlassian.plugin.manager.StateTracker;
11  
12  import junit.framework.TestCase;
13  
14  public class TestStateTracker extends TestCase
15  {
16      public void testStandardTransitions() throws Exception
17      {
18          new StateTracker().setState(STARTING).setState(STARTED).setState(SHUTTING_DOWN).setState(SHUTDOWN).setState(STARTING);
19      }
20  
21      public void testIllegalNotStartedTransitions() throws Exception
22      {
23          assertIllegalState(new StateTracker(), NOT_STARTED, STARTED, SHUTDOWN);
24      }
25  
26      public void testIllegalStartingTransitions() throws Exception
27      {
28          assertIllegalState(new StateTracker().setState(STARTING), NOT_STARTED, STARTING, SHUTTING_DOWN, SHUTDOWN);
29      }
30  
31      public void testIllegalStartedTransitions() throws Exception
32      {
33          assertIllegalState(new StateTracker().setState(STARTING).setState(STARTED), STARTED, NOT_STARTED, STARTING, SHUTDOWN);
34      }
35  
36      public void testIllegalWarmRestartingTransitions() throws Exception
37      {
38          assertIllegalState(new StateTracker().setState(STARTING).setState(STARTED).setState(WARM_RESTARTING), NOT_STARTED, STARTING, SHUTDOWN, SHUTTING_DOWN);
39      }
40  
41      public void testIllegalWarmRestartTransitions() throws Exception
42      {
43          assertIllegalState(new StateTracker().setState(STARTING).setState(STARTED).setState(WARM_RESTARTING).setState(STARTED), STARTED, NOT_STARTED, STARTING, SHUTDOWN);
44      }
45  
46      public void testIllegalShuttingDownTransitions() throws Exception
47      {
48          assertIllegalState(new StateTracker().setState(STARTING).setState(STARTED).setState(SHUTTING_DOWN), NOT_STARTED, STARTING, STARTED,
49              SHUTTING_DOWN);
50      }
51  
52      public void testIllegalShutdownTransitions() throws Exception
53      {
54          assertIllegalState(new StateTracker().setState(STARTING).setState(STARTED).setState(SHUTTING_DOWN).setState(SHUTDOWN), NOT_STARTED, STARTED,
55              SHUTTING_DOWN, SHUTDOWN);
56      }
57  
58      void assertIllegalState(final StateTracker tracker, final State... states)
59      {
60          for (final State state : states)
61          {
62              try
63              {
64                  final State oldState = tracker.get();
65                  tracker.setState(state);
66                  fail(oldState + " should not be allowed to transition to: " + state);
67              }
68              catch (final IllegalStateException expected)
69              {}
70          }
71      }
72  }