From 20f8e1e0f0fdea212dd72cb6b75dfb6e2bd91828 Mon Sep 17 00:00:00 2001 From: coderfengyun Date: Mon, 17 Feb 2014 14:22:18 +0800 Subject: [PATCH] add all tests about handle the status of the test plan --- .../master/api/TestPlanController.java | 7 +- .../master/repository/AbstractRepositoty.java | 2 + .../master/repository/TestPlanRepository.java | 26 +++++- .../infrastructure/TestPlanService.java | 23 ++--- .../repository/Test_TestPlanRepository.java | 43 +++++++++ .../test/service/Test_TestPlanService.java | 91 +++++++++++++++++++ 6 files changed, 169 insertions(+), 23 deletions(-) create mode 100644 src/test/java/org/bench4q/master/test/service/Test_TestPlanService.java diff --git a/src/main/java/org/bench4q/master/api/TestPlanController.java b/src/main/java/org/bench4q/master/api/TestPlanController.java index a94a4af7..edc5d6e5 100644 --- a/src/main/java/org/bench4q/master/api/TestPlanController.java +++ b/src/main/java/org/bench4q/master/api/TestPlanController.java @@ -277,10 +277,9 @@ public class TestPlanController extends BaseController { } List testPlanDBs = this.testPlanService.loadTestPlans(this .getPrincipal()); - if (testPlanDBs == null) { - return buildTestPlanResponseModel(false, "exception", null); - } - return buildTestPlanResponseModel(true, null, testPlanDBs); + return testPlanDBs == null ? buildTestPlanResponseModel(false, + "exception", null) : buildTestPlanResponseModel(true, null, + testPlanDBs); } @RequestMapping(value = "/queryTestPlan/{runId}", method = RequestMethod.GET) diff --git a/src/main/java/org/bench4q/master/repository/AbstractRepositoty.java b/src/main/java/org/bench4q/master/repository/AbstractRepositoty.java index 03c73ef9..30f45675 100644 --- a/src/main/java/org/bench4q/master/repository/AbstractRepositoty.java +++ b/src/main/java/org/bench4q/master/repository/AbstractRepositoty.java @@ -1,11 +1,13 @@ package org.bench4q.master.repository; +import org.apache.log4j.Logger; import org.bench4q.master.helper.SessionHelper; import org.hibernate.Session; import org.springframework.beans.factory.annotation.Autowired; public abstract class AbstractRepositoty { private SessionHelper sessionHelper; + protected Logger logger = Logger.getLogger(AbstractRepositoty.class); protected SessionHelper getSessionHelper() { return sessionHelper; diff --git a/src/main/java/org/bench4q/master/repository/TestPlanRepository.java b/src/main/java/org/bench4q/master/repository/TestPlanRepository.java index c312905d..d0b0ed6e 100644 --- a/src/main/java/org/bench4q/master/repository/TestPlanRepository.java +++ b/src/main/java/org/bench4q/master/repository/TestPlanRepository.java @@ -5,7 +5,9 @@ import java.util.UUID; import org.bench4q.master.entity.TestPlanDB; import org.bench4q.master.entity.User; +import org.bench4q.master.exception.ExceptionLog; import org.hibernate.Session; +import org.hibernate.Transaction; import org.hibernate.criterion.Restrictions; import org.springframework.stereotype.Component; @@ -23,7 +25,7 @@ public class TestPlanRepository extends AbstractRepositoty { return result; } - public List loadTestPlans(User user) { + public List loadEntities(User user) { Session session = this.getSessionHelper().openSession(); try { @SuppressWarnings("unchecked") @@ -31,12 +33,26 @@ public class TestPlanRepository extends AbstractRepositoty { .add(Restrictions.eq("user", user)).list(); return ret; } catch (Exception e) { - e.printStackTrace(); + logger.error(ExceptionLog.getStackTrace(e)); return null; } finally { - if (session != null) { - session.close(); - } + releaseSession(session); + } + } + + public boolean updateEntity(TestPlanDB testPlanDB) { + Session session = this.getSessionHelper().openSession(); + Transaction transaction = session.beginTransaction(); + try { + session.merge(testPlanDB); + transaction.commit(); + return true; + } catch (Exception e) { + transaction.rollback(); + logger.error(ExceptionLog.getStackTrace(e)); + return false; + } finally { + releaseSession(session); } } } diff --git a/src/main/java/org/bench4q/master/service/infrastructure/TestPlanService.java b/src/main/java/org/bench4q/master/service/infrastructure/TestPlanService.java index 071019ac..ece531e3 100644 --- a/src/main/java/org/bench4q/master/service/infrastructure/TestPlanService.java +++ b/src/main/java/org/bench4q/master/service/infrastructure/TestPlanService.java @@ -178,20 +178,7 @@ public class TestPlanService { } public List loadTestPlans(User user) { - Session session = this.getSessionHelper().openSession(); - try { - @SuppressWarnings("unchecked") - List ret = session.createCriteria(TestPlanDB.class) - .add(Restrictions.eq("user", user)).list(); - return ret; - } catch (Exception e) { - e.printStackTrace(); - return null; - } finally { - if (session != null) { - session.close(); - } - } + return this.getTestPlanRepository().loadEntities(user); } public boolean removeTestPlanInDB(int testPlanId) { @@ -279,6 +266,10 @@ public class TestPlanService { updateStatus(TestPlanStatus.Complete, testPlanRunID, 0); } + public void handleTestPlanNotStart(UUID testPlanRunID) { + updateStatus(TestPlanStatus.NotStart, testPlanRunID, 0); + } + private void updateStatus(TestPlanStatus status, UUID testPlanRunID, int failTimes) { Session session = this.getSessionHelper().openSession(); @@ -328,4 +319,8 @@ public class TestPlanService { return this.getBusinessMapFactory().toModel( this.getTestPlanRepository().getTestPlan(runId)); } + + public String getTestPlanStatus(UUID runId) { + return this.getTestPlan(runId).getCurrentStatus(); + } } diff --git a/src/test/java/org/bench4q/master/test/repository/Test_TestPlanRepository.java b/src/test/java/org/bench4q/master/test/repository/Test_TestPlanRepository.java index eb970fb5..74601010 100644 --- a/src/test/java/org/bench4q/master/test/repository/Test_TestPlanRepository.java +++ b/src/test/java/org/bench4q/master/test/repository/Test_TestPlanRepository.java @@ -4,7 +4,11 @@ import static org.junit.Assert.*; import java.util.UUID; +import org.bench4q.master.entity.TestPlanDB; import org.bench4q.master.repository.TestPlanRepository; +import org.bench4q.master.repository.UserRepository; +import org.bench4q.share.enums.master.TestPlanStatus; +import org.junit.After; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; @@ -15,6 +19,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @ContextConfiguration(locations = { "classpath:repository-test-context.xml" }) public class Test_TestPlanRepository { private TestPlanRepository testPlanRepository; + private UserRepository userRepository; private TestPlanRepository getTestPlanRepository() { return testPlanRepository; @@ -25,6 +30,15 @@ public class Test_TestPlanRepository { this.testPlanRepository = testPlanRepository; } + private UserRepository getUserRepository() { + return userRepository; + } + + @Autowired + private void setUserRepository(UserRepository userRepository) { + this.userRepository = userRepository; + } + @Test public void testGetEntity() { fail("Not yet implemented"); @@ -35,4 +49,33 @@ public class Test_TestPlanRepository { assertNotNull(this.getTestPlanRepository().getTestPlan( UUID.fromString("4c894c8d-712b-44e0-97f8-84667591953a"))); } + + @Test + public void testLoadEntities() { + assertTrue(this.getTestPlanRepository() + .loadEntities(this.getUserRepository().getUser("admin")).size() > 0); + } + + @Test + public void testUpdateEntity() { + TestPlanDB testPlanDB = this.getTestPlanRepository().getTestPlan( + UUID.fromString("4c894c8d-712b-44e0-97f8-84667591953a")); + assertNotNull(testPlanDB); + assertEquals(TestPlanStatus.NotStart.name(), + testPlanDB.getCurrentStatus()); + testPlanDB.setCurrentStatus(TestPlanStatus.Complete.name()); + this.getTestPlanRepository().updateEntity(testPlanDB); + TestPlanDB afterModify = this.getTestPlanRepository().getTestPlan( + UUID.fromString("4c894c8d-712b-44e0-97f8-84667591953a")); + assertEquals(TestPlanStatus.Complete.name(), + afterModify.getCurrentStatus()); + } + + @After + public void restoreStatus() { + TestPlanDB testPlanDB = this.getTestPlanRepository().getTestPlan( + UUID.fromString("4c894c8d-712b-44e0-97f8-84667591953a")); + testPlanDB.setCurrentStatus(TestPlanStatus.NotStart.name()); + this.getTestPlanRepository().updateEntity(testPlanDB); + } } diff --git a/src/test/java/org/bench4q/master/test/service/Test_TestPlanService.java b/src/test/java/org/bench4q/master/test/service/Test_TestPlanService.java new file mode 100644 index 00000000..7f8e1ad6 --- /dev/null +++ b/src/test/java/org/bench4q/master/test/service/Test_TestPlanService.java @@ -0,0 +1,91 @@ +package org.bench4q.master.test.service; + +import static org.junit.Assert.*; + +import java.util.UUID; + +import org.bench4q.master.service.infrastructure.TestPlanService; +import org.bench4q.master.service.infrastructure.UserService; +import org.bench4q.share.enums.master.TestPlanStatus; +import org.junit.After; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(locations = { "classpath:service-test-context.xml" }) +public class Test_TestPlanService { + private TestPlanService testPlanService; + private UserService userService; + public UUID testUUID = UUID + .fromString("4c894c8d-712b-44e0-97f8-84667591953a"); + + public TestPlanService getTestPlanService() { + return testPlanService; + } + + @Autowired + private void setTestPlanService(TestPlanService testPlanService) { + this.testPlanService = testPlanService; + } + + private UserService getUserService() { + return userService; + } + + @Autowired + private void setUserService(UserService userService) { + this.userService = userService; + } + + @Test + public void testLoadTestPlans() { + assertTrue(this.getTestPlanService() + .loadTestPlans(this.getUserService().getUserByName("admin")) + .size() > 0); + } + + @Test + public void testHandleTestPlanComplete() { + this.getTestPlanService().handleTestPlanComplete(testUUID); + assertEquals(TestPlanStatus.Complete.name(), + testPlanService.getTestPlanStatus(testUUID)); + } + + @Test + public void testHandleTestPlanPendingNoEnoughMaxLoad() { + this.getTestPlanService() + .handleTestPlanPendingNoEnoughMaxLoad(testUUID); + assertEquals(TestPlanStatus.PendingNoEnoughMaxLoad.name(), + testPlanService.getTestPlanStatus(testUUID)); + } + + @Test + public void testHandleTestPlanPendingNoEnoughCurrentLoad() { + this.getTestPlanService().handleTestPlanPendingNoEnoughCurrentLoad( + testUUID); + assertEquals(TestPlanStatus.PendingNoEnoughCurrentLoad.name(), + testPlanService.getTestPlanStatus(testUUID)); + } + + @Test + public void testHandleTestPlanError() { + this.getTestPlanService().handleTestPlanError(testUUID); + assertEquals(TestPlanStatus.Error.name(), + testPlanService.getTestPlanStatus(testUUID)); + } + + @Test + public void testHandleTestPlanRunning() { + this.getTestPlanService().handleTestPlanRunning(testUUID); + assertEquals(TestPlanStatus.InRunning.name(), this.getTestPlanService() + .getTestPlanStatus(testUUID)); + } + + @After + public void cleanUp() { + this.getTestPlanService().handleTestPlanNotStart(testUUID); + } +}