View Javadoc

1   package cz.cuni.amis.pogamut.base.agent.impl;
2   
3   import java.util.logging.Level;
4   
5   import junit.framework.Assert;
6   
7   import org.junit.Test;
8   
9   import cz.cuni.amis.pogamut.base.agent.IAgentId;
10  import cz.cuni.amis.pogamut.base.agent.MockAgent;
11  import cz.cuni.amis.pogamut.base.agent.module.MockModule;
12  import cz.cuni.amis.pogamut.base.agent.state.level1.IAgentStateDown;
13  import cz.cuni.amis.pogamut.base.agent.state.level1.IAgentStateUp;
14  import cz.cuni.amis.pogamut.base.agent.state.level2.IAgentStateFailed;
15  import cz.cuni.amis.pogamut.base.agent.state.level2.IAgentStateInstantiated;
16  import cz.cuni.amis.pogamut.base.agent.state.level2.IAgentStatePaused;
17  import cz.cuni.amis.pogamut.base.agent.state.level2.IAgentStateRunning;
18  import cz.cuni.amis.pogamut.base.agent.state.level2.IAgentStateStopped;
19  import cz.cuni.amis.pogamut.base.agent.state.level3.IAgentStateResumed;
20  import cz.cuni.amis.pogamut.base.agent.state.level3.IAgentStateStarted;
21  import cz.cuni.amis.pogamut.base.agent.state.level3.IAgentStateStartedPaused;
22  import cz.cuni.amis.pogamut.base.component.bus.ComponentBus;
23  import cz.cuni.amis.pogamut.base.component.bus.IComponentBus;
24  import cz.cuni.amis.pogamut.base.component.bus.event.impl.FatalErrorEvent;
25  import cz.cuni.amis.pogamut.base.component.controller.ComponentState;
26  import cz.cuni.amis.pogamut.base.component.stub.component.ComponentStub;
27  import cz.cuni.amis.pogamut.base.utils.logging.AgentLogger;
28  
29  import cz.cuni.amis.tests.BaseTest;
30  				
31  public class Test07_AbstractAgent_StartPaused_WithModule_FatalErrors extends BaseTest {
32  
33  	@Test
34  	public void test() {
35  		IAgentId agentId = new AgentId("Test");
36  		AgentLogger logger = new AgentLogger(agentId);
37  		logger.setLevel(Level.ALL);
38  		logger.addDefaultConsoleHandler();
39  		IComponentBus bus = new ComponentBus(logger);
40  		MockAgent agent = new MockAgent(agentId, bus, logger);
41  		MockModule module = new MockModule(agent);
42  		ComponentStub stub = new ComponentStub(logger, bus);
43  		
44  		Assert.assertTrue("agent not in down-state", agent.inState(IAgentStateDown.class));
45  		Assert.assertTrue("agent not in instantiated-state", agent.inState(IAgentStateInstantiated.class));
46  		Assert.assertTrue("module not in instantiated-state", module.getState().getFlag() == ComponentState.INSTANTIATED);
47  		
48  		for (int i = 0; i < 10; ++i) {
49  			agent.startPaused();
50  			Assert.assertTrue("agent not in up-state", agent.inState(IAgentStateUp.class));
51  			Assert.assertTrue("agent not in paused-state", agent.inState(IAgentStatePaused.class));
52  			Assert.assertTrue("agent not in started-paused-state", agent.inState(IAgentStateStartedPaused.class));
53  			Assert.assertTrue("module not in paused-state", module.getState().getFlag() == ComponentState.PAUSED);
54  			
55  			bus.event(new FatalErrorEvent(stub, "failure"));
56  			Assert.assertTrue("agent not in down-state", agent.inState(IAgentStateDown.class));
57  			Assert.assertTrue("agent not in stopped-state", agent.inState(IAgentStateFailed.class));
58  			Assert.assertTrue("module not in stopped-state", module.getState().getFlag() == ComponentState.KILLED);
59  		}
60  		
61  		agent.startPaused();
62  		Assert.assertTrue("agent not in up-state", agent.inState(IAgentStateUp.class));
63  		Assert.assertTrue("agent not in paused-state", agent.inState(IAgentStatePaused.class));
64  		Assert.assertTrue("agent not in started-paused-state", agent.inState(IAgentStateStartedPaused.class));
65  		Assert.assertTrue("module not in paused-state", module.getState().getFlag() == ComponentState.PAUSED);
66  		
67  		for (int i = 0; i < 10; ++i) {
68  			agent.resume();
69  			Assert.assertTrue("agent not in up-state", agent.inState(IAgentStateUp.class));
70  			Assert.assertTrue("agent not in resumed-state", agent.inState(IAgentStateResumed.class));
71  			Assert.assertTrue("module not in running-state", module.getState().getFlag() == ComponentState.RUNNING);
72  			
73  			agent.pause();
74  			Assert.assertTrue("agent not in up-state", agent.inState(IAgentStateUp.class));
75  			Assert.assertTrue("agent not in paused-state", agent.inState(IAgentStatePaused.class));
76  			Assert.assertTrue("module not in paused-state", module.getState().getFlag() == ComponentState.PAUSED);
77  		}
78  		
79  		for (int i = 0; i < 10; ++i) {
80  			bus.event(new FatalErrorEvent(stub, "failure"));
81  			Assert.assertTrue("agent not in down-state", agent.inState(IAgentStateDown.class));
82  			Assert.assertTrue("agent not in stopped-state", agent.inState(IAgentStateFailed.class));
83  			Assert.assertTrue("module not in killed-state", module.getState().getFlag() == ComponentState.KILLED);
84  			
85  			//left purposefully to start() only!
86  			agent.start();
87  			Assert.assertTrue("agent not in up-state", agent.inState(IAgentStateUp.class));
88  			Assert.assertTrue("agent not in started-state", agent.inState(IAgentStateStarted.class));
89  			Assert.assertTrue("agent not in running-state", agent.inState(IAgentStateRunning.class));
90  			Assert.assertTrue("module not in running-state", module.getState().getFlag() == ComponentState.RUNNING);
91  		}
92  		
93  		bus.event(new FatalErrorEvent(stub, "failure"));
94  		Assert.assertTrue("agent not in down-state", agent.inState(IAgentStateDown.class));
95  		Assert.assertTrue("agent not in stopped-state", agent.inState(IAgentStateFailed.class));
96  		Assert.assertTrue("module not in killed-state", module.getState().getFlag() == ComponentState.KILLED);
97  		
98  		agent.startPaused();
99  		Assert.assertTrue("agent not in up-state", agent.inState(IAgentStateUp.class));
100 		Assert.assertTrue("agent not in paused-state", agent.inState(IAgentStatePaused.class));
101 		Assert.assertTrue("agent not in started-paused-state", agent.inState(IAgentStateStartedPaused.class));
102 		Assert.assertTrue("module not in paused-state", module.getState().getFlag() == ComponentState.PAUSED);
103 		
104 		for (int i = 0; i < 10; ++i) {
105 			agent.resume();
106 			Assert.assertTrue("agent not in up-state", agent.inState(IAgentStateUp.class));
107 			Assert.assertTrue("agent not in resumed-state", agent.inState(IAgentStateResumed.class));
108 			Assert.assertTrue("module not in running-state", module.getState().getFlag() == ComponentState.RUNNING);
109 			
110 			agent.pause();
111 			Assert.assertTrue("agent not in up-state", agent.inState(IAgentStateUp.class));
112 			Assert.assertTrue("agent not in paused-state", agent.inState(IAgentStatePaused.class));
113 			Assert.assertTrue("module not in paused-state", module.getState().getFlag() == ComponentState.PAUSED);
114 			
115 			bus.event(new FatalErrorEvent(stub, "failure"));
116 			Assert.assertTrue("agent not in down-state", agent.inState(IAgentStateDown.class));
117 			Assert.assertTrue("agent not in stopped-state", agent.inState(IAgentStateFailed.class));
118 			Assert.assertTrue("module not in killed-state", module.getState().getFlag() == ComponentState.KILLED);
119 			
120 			agent.startPaused();
121 			Assert.assertTrue("agent not in up-state", agent.inState(IAgentStateUp.class));
122 			Assert.assertTrue("agent not in paused-state", agent.inState(IAgentStatePaused.class));
123 			Assert.assertTrue("agent not in started-paused-state", agent.inState(IAgentStateStartedPaused.class));
124 			Assert.assertTrue("module not in paused-state", module.getState().getFlag() == ComponentState.PAUSED);
125 		}
126 		
127 		agent.stop();
128 		Assert.assertTrue("agent not in down-state", agent.inState(IAgentStateDown.class));
129 		Assert.assertTrue("agent not in stopped-state", agent.inState(IAgentStateStopped.class));
130 		Assert.assertTrue("module not in stopped-state", module.getState().getFlag() == ComponentState.STOPPED);
131 		
132 		System.out.println("---/// TEST OK ///---");		
133 	}
134 	
135 }