diff --git a/src/main/java/org/bench4q/master/infrastructure/communication/AgentMessenger.java b/src/main/java/org/bench4q/master/infrastructure/communication/AgentMessenger.java index aec561ba..193325f3 100644 --- a/src/main/java/org/bench4q/master/infrastructure/communication/AgentMessenger.java +++ b/src/main/java/org/bench4q/master/infrastructure/communication/AgentMessenger.java @@ -8,7 +8,6 @@ import javax.xml.bind.JAXBException; import org.apache.log4j.Logger; import org.bench4q.master.domain.entity.Agent; import org.bench4q.master.exception.ExceptionLog; -import org.bench4q.master.testplan.highavailable.HighAvailablePool; import org.bench4q.master.testplan.highavailable.faultolerence.FaultTolerenceFactory; import org.bench4q.share.communication.HttpRequester; import org.bench4q.share.communication.HttpRequester.HttpResponse; @@ -27,7 +26,6 @@ import org.springframework.stereotype.Component; @Component public class AgentMessenger { private HttpRequester httpRequester; - private HighAvailablePool haPool; private Logger logger = Logger.getLogger(AgentMessenger.class); public HttpRequester getHttpRequester() { @@ -39,15 +37,6 @@ public class AgentMessenger { this.httpRequester = httpRequester; } - private HighAvailablePool getHaPool() { - return haPool; - } - - @Autowired - private void setHaPool(HighAvailablePool haPool) { - this.haPool = haPool; - } - public RunScenarioResultModel run(Agent agent, RunScenarioModel runScenarioModel) throws IOException { HttpResponse httpResponse; @@ -62,16 +51,13 @@ public class AgentMessenger { RunScenarioResultModel.class, httpResponse.getContent()); } catch (JAXBException e) { logger.error(ExceptionLog.getStackTrace(e)); - handleBreakDown(agent); + FaultTolerenceFactory.getRunAgentFault(agent, runScenarioModel) + .doTolerance(); return null; } } - private void handleBreakDown(Agent agent) { - this.getHaPool().timerTask(); - } - public AgentBriefStatusModel brief(Agent agent, UUID agentRunId) { HttpResponse httpResponse; try { @@ -89,8 +75,7 @@ public class AgentMessenger { } catch (Exception e) { logger.error(e.toString() + " When brief the agent with hostName " + agent.getHostName()); - handleBreakDown(agent); - FaultTolerenceFactory.getBriefFaultTolerance().doTolerance(); + FaultTolerenceFactory.getBriefFaultTolerance(agent).doTolerance(); return null; } } @@ -111,7 +96,7 @@ public class AgentMessenger { } catch (Exception e) { logger.error(e.toString() + " when stop the agent with hostName " + agent.getHostName()); - handleBreakDown(agent); + FaultTolerenceFactory.getStopAgentFault(agent, runId).doTolerance(); return null; } } @@ -133,7 +118,7 @@ public class AgentMessenger { AgentBehaviorsBriefModel.class, httpResponse.getContent()); } catch (Exception e) { logger.error(ExceptionLog.getStackTrace(e) + " When behaviorsBrief"); - handleBreakDown(agent); + FaultTolerenceFactory.getBriefFaultTolerance(agent).doTolerance(); return null; } } @@ -151,7 +136,7 @@ public class AgentMessenger { AgentPageBriefModel.class, httpResponse.getContent()); } catch (Exception e) { logger.error(ExceptionLog.getStackTrace(e)); - handleBreakDown(agent); + FaultTolerenceFactory.getBriefFaultTolerance(agent).doTolerance(); return null; } } @@ -169,7 +154,7 @@ public class AgentMessenger { AgentPagesBriefModel.class, httpResponse.getContent()); } catch (Exception e) { logger.error(ExceptionLog.getStackTrace(e)); - handleBreakDown(agent); + FaultTolerenceFactory.getBriefFaultTolerance(agent).doTolerance(); return null; } diff --git a/src/main/java/org/bench4q/master/testplan/highavailable/faultolerence/BriefAgentFault.java b/src/main/java/org/bench4q/master/testplan/highavailable/faultolerence/BriefAgentFault.java index 2258ff3d..5784fba9 100644 --- a/src/main/java/org/bench4q/master/testplan/highavailable/faultolerence/BriefAgentFault.java +++ b/src/main/java/org/bench4q/master/testplan/highavailable/faultolerence/BriefAgentFault.java @@ -1,10 +1,14 @@ package org.bench4q.master.testplan.highavailable.faultolerence; +import org.bench4q.master.domain.entity.Agent; import org.bench4q.master.helper.ApplicationContextHelper; +import org.bench4q.master.infrastructure.communication.AgentMessenger; import org.bench4q.master.testplan.highavailable.HighAvailablePool; public class BriefAgentFault implements FaultTolerance { private HighAvailablePool haPool; + private AgentMessenger agentMessenger; + private Agent agent; private HighAvailablePool getHaPool() { return haPool; @@ -14,12 +18,39 @@ public class BriefAgentFault implements FaultTolerance { this.haPool = haPool; } - BriefAgentFault() { + private AgentMessenger getAgentMessenger() { + return agentMessenger; + } + + private void setAgentMessenger(AgentMessenger agentMessenger) { + this.agentMessenger = agentMessenger; + } + + private Agent getAgent() { + return agent; + } + + private void setAgent(Agent agent) { + this.agent = agent; + } + + BriefAgentFault(Agent agent) { + this.setAgent(agent); this.setHaPool(ApplicationContextHelper.getContext().getBean( HighAvailablePool.class)); + this.setAgentMessenger(ApplicationContextHelper.getContext().getBean( + AgentMessenger.class)); } public void doTolerance() { + if (isLiving()) { + return; + } this.getHaPool().timerTask(); } + + private boolean isLiving() { + return this.getAgentMessenger().askLiving(this.getAgent().getHostName(), + this.getAgent().getPort()) != null; + } } diff --git a/src/main/java/org/bench4q/master/testplan/highavailable/faultolerence/FaultTolerenceFactory.java b/src/main/java/org/bench4q/master/testplan/highavailable/faultolerence/FaultTolerenceFactory.java index c8254bf4..973a946e 100644 --- a/src/main/java/org/bench4q/master/testplan/highavailable/faultolerence/FaultTolerenceFactory.java +++ b/src/main/java/org/bench4q/master/testplan/highavailable/faultolerence/FaultTolerenceFactory.java @@ -1,17 +1,22 @@ package org.bench4q.master.testplan.highavailable.faultolerence; +import java.util.UUID; + import org.bench4q.master.domain.entity.Agent; import org.bench4q.share.models.agent.RunScenarioModel; public class FaultTolerenceFactory { - private static final BriefAgentFault briefAgentFault = new BriefAgentFault(); - public static FaultTolerance getBriefFaultTolerance() { - return briefAgentFault; + public static FaultTolerance getBriefFaultTolerance(Agent agent) { + return new BriefAgentFault(agent); } public static FaultTolerance getRunAgentFault(Agent agent, RunScenarioModel runScenarioModel) { return new RunAgentFault(agent, runScenarioModel); } + + public static FaultTolerance getStopAgentFault(Agent agent, UUID runId) { + return new StopAgentFault(agent, runId); + } } diff --git a/src/main/java/org/bench4q/master/testplan/highavailable/faultolerence/StopAgentFault.java b/src/main/java/org/bench4q/master/testplan/highavailable/faultolerence/StopAgentFault.java index fc364006..e14514c0 100644 --- a/src/main/java/org/bench4q/master/testplan/highavailable/faultolerence/StopAgentFault.java +++ b/src/main/java/org/bench4q/master/testplan/highavailable/faultolerence/StopAgentFault.java @@ -1,24 +1,22 @@ -package org.bench4q.master.testplan.highavailable.faultolerence; - -import org.bench4q.master.testplan.highavailable.AgentRunBlotter; - -public class StopAgentFault implements FaultTolerance { - private AgentRunBlotter agentBlotter; - - public AgentRunBlotter getAgentBlotter() { - return agentBlotter; - } - - public void setAgentBlotter(AgentRunBlotter agentBlotter) { - this.agentBlotter = agentBlotter; - } - - public StopAgentFault(AgentRunBlotter agentRunBlotter) { - this.setAgentBlotter(agentRunBlotter); - } - - public void doTolerance() { - // TODO: fulfill this function - } - -} +package org.bench4q.master.testplan.highavailable.faultolerence; + +import java.util.UUID; + +import org.bench4q.master.domain.entity.Agent; +import org.bench4q.master.testplan.highavailable.AgentRunBlotter; + +public class StopAgentFault implements FaultTolerance { + + public StopAgentFault(Agent agent, UUID runId) { + // TODO Auto-generated constructor stub + } + + public StopAgentFault(AgentRunBlotter buildAgentRunBlotter) { + // TODO Auto-generated constructor stub + } + + public void doTolerance() { + // TODO: fulfill this function + } + +}