refactor agentService over

This commit is contained in:
coderfengyun 2014-02-21 09:45:36 +08:00
parent 1063dc1256
commit 170dc73e44
3 changed files with 37 additions and 86 deletions

View File

@ -73,13 +73,6 @@ public class TestPlanRepository extends AbstractRepositoty {
@SuppressWarnings("unchecked")
List<TestPlanDB> ret = session.createCriteria(TestPlanDB.class)
.add(Restrictions.eq("user", user)).list();
// @SuppressWarnings("unchecked")
// List<TestPlanDB> ret3 = session.createCriteria(TestPlanDB.class)
// .list();
// @SuppressWarnings("unchecked")
// List<TestPlanDB> ret2 = session.createSQLQuery(
// "select * from testPlan where userId = " + user.getId())
// .list();
return ret;
} catch (Exception e) {
logger.error(ExceptionLog.getStackTrace(e));

View File

@ -2,14 +2,9 @@ package org.bench4q.master.domain.service;
import java.util.List;
import org.apache.log4j.Logger;
import org.bench4q.master.domain.entity.Agent;
import org.bench4q.master.domain.repository.AgentRepository;
import org.bench4q.master.helper.SessionHelper;
import org.bench4q.master.testplan.highavailable.HighAvailablePool;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@ -19,25 +14,14 @@ public class AgentService {
public static int AGENT_STATUS_InRun = 2;
public static int AGENT_STATUS_BackUp = 3;
public static int AGENT_STATUS_BreakDown = 4;
private SessionHelper sessionHelper;
private AgentRepository agentRepository;
private Object AGENT_LOCK;
private HighAvailablePool highAvailablePool;
private static Logger logger = Logger.getLogger(AgentService.class);
public AgentService() {
this.setAgentLock(new Object());
}
private SessionHelper getSessionHelper() {
return sessionHelper;
}
@Autowired
private void setSessionHelper(SessionHelper sessionHelper) {
this.sessionHelper = sessionHelper;
}
private HighAvailablePool getHighAvailablePool() {
return highAvailablePool;
}
@ -88,29 +72,15 @@ public class AgentService {
}
public boolean backLoadToAgent(String hostName, int backLoad) {
Session session = this.getSessionHelper().openSession();
Transaction transaction = session.beginTransaction();
try {
Agent agent = (Agent) session.createCriteria(Agent.class)
.add(Restrictions.eq("hostName", hostName)).uniqueResult();
if (!isValidBackLoad(agent, backLoad) || agent == null) {
return false;
}
agent.setRemainLoad(agent.getRemainLoad() + backLoad);
session.merge(agent);
transaction.commit();
logger.info("The agent with hostname " + agent.getHostName()
+ " remainload is " + agent.getRemainLoad());
return true;
} catch (Exception e) {
e.printStackTrace();
transaction.rollback();
Agent agent = this.getAgentRepository().getAgentBy(hostName);
if (agent == null) {
return false;
} finally {
if (session != null) {
session.close();
}
}
if (!isValidBackLoad(agent, backLoad)) {
return false;
}
agent.setRemainLoad(agent.getRemainLoad() + backLoad);
return this.getAgentRepository().update(agent);
}
private boolean isValidBackLoad(Agent agentToOperate, int backLoad) {
@ -120,7 +90,7 @@ public class AgentService {
public boolean getLoadFromAgent(String hostName, int requireLoad) {
Agent agent = this.getAgentRepository().getAgentBy(hostName);
if (agent == null || !isValidRequireLoad(agent, requireLoad)) {
if (!isValidRequireLoad(agent, requireLoad) || agent == null) {
return false;
}
agent.setRemainLoad(agent.getRemainLoad() - requireLoad);
@ -133,54 +103,22 @@ public class AgentService {
}
public boolean resetAgent(Agent agentInParam) {
Session session = this.getSessionHelper().openSession();
Transaction transaction = session.beginTransaction();
try {
Agent agentFromDB = (Agent) session
.createCriteria(Agent.class)
.add(Restrictions.eq("hostName", agentInParam.getHostName()))
.uniqueResult();
if (agentFromDB == null) {
return false;
}
agentFromDB.setRemainLoad(agentFromDB.getMaxLoad());
session.merge(agentFromDB);
logger.info("agent with hostname " + agentFromDB.getHostName()
+ "remain load is " + agentFromDB.getRemainLoad());
transaction.commit();
return true;
} catch (Exception e) {
transaction.rollback();
Agent agentInRepo = this.getAgentRepository().getAgentBy(
agentInParam.getHostName());
if (agentInRepo == null) {
return false;
} finally {
if (session != null) {
session.close();
}
}
agentInRepo.setRemainLoad(agentInRepo.getMaxLoad());
return this.getAgentRepository().update(agentInRepo);
}
public boolean updateAgentStatus(int currentStatus, String hostName) {
Session session = this.getSessionHelper().openSession();
Transaction transaction = session.beginTransaction();
try {
Agent agentFromDB = (Agent) session.createCriteria(Agent.class)
.add(Restrictions.eq("hostName", hostName)).uniqueResult();
if (agentFromDB == null) {
return false;
}
agentFromDB.setCurrentStatus(currentStatus);
session.merge(agentFromDB);
transaction.commit();
return true;
} catch (Exception e) {
transaction.rollback();
Agent agent = this.getAgentRepository().getAgentBy(hostName);
if (agent == null) {
return false;
} finally {
if (session != null) {
session.close();
}
}
agent.setCurrentStatus(currentStatus);
return this.getAgentRepository().update(agent);
}
}

View File

@ -152,4 +152,24 @@ public class Test_AgentService {
getAgentForTest().getMaxLoad()
- getAgentForTest().getRemainLoad());
}
@Test
public void testResetAgent() {
assertTrue(this.getAgentService().getLoadFromAgent(hostNameForTest,
getAgentForTest().getRemainLoad() - 10));
assertEquals(10, getAgentForTest().getRemainLoad());
assertTrue(this.getAgentService().resetAgent(getAgentForTest()));
assertEquals(getAgentForTest().getMaxLoad(), getAgentForTest()
.getRemainLoad());
}
@Test
public void testUpdateAgentStatus() {
assertEquals(AgentService.AGENT_STATUS_Idel, getAgentForTest()
.getCurrentStatus());
assertTrue(this.getAgentService().updateAgentStatus(
AgentService.AGENT_STATUS_BreakDown, hostNameForTest));
assertEquals(AgentService.AGENT_STATUS_BreakDown, getAgentForTest()
.getCurrentStatus());
}
}