From 43cb4fb4cf9d34077ce97a8bc7800be1a45ee154 Mon Sep 17 00:00:00 2001 From: fanfuxiaoran <495538672@qq.com> Date: Wed, 12 Mar 2014 17:22:32 +0800 Subject: [PATCH] fix the bug when save monitor result --- .../bench4q/master/domain/entity/Monitor.java | 2 +- .../domain/repository/TestPlanRepository.java | 8 ++- .../domain/testplan/TestMoniorResultSave.java | 26 ++++--- .../domain/testplan/TestMonitorSampler.java | 2 +- .../communication/MonitorMessenger.java | 58 ++++------------ .../MonitorModelTest/MonitorModelTest.java | 68 +++++++++++++++++++ .../communication/Test_MonitorMessenger.java | 2 +- 7 files changed, 108 insertions(+), 58 deletions(-) create mode 100644 src/test/java/MonitorModelTest/MonitorModelTest.java diff --git a/src/main/java/org/bench4q/master/domain/entity/Monitor.java b/src/main/java/org/bench4q/master/domain/entity/Monitor.java index 4fb3c086..08f59573 100644 --- a/src/main/java/org/bench4q/master/domain/entity/Monitor.java +++ b/src/main/java/org/bench4q/master/domain/entity/Monitor.java @@ -98,7 +98,7 @@ public class Monitor extends Observable { } - private void collectResult(MonitorMain monitorMain) { + private void collectResult( MonitorMain monitorMain) { this.setChanged(); this.notifyObservers(monitorMain); } diff --git a/src/main/java/org/bench4q/master/domain/repository/TestPlanRepository.java b/src/main/java/org/bench4q/master/domain/repository/TestPlanRepository.java index ba0b9d13..3bce23ef 100644 --- a/src/main/java/org/bench4q/master/domain/repository/TestPlanRepository.java +++ b/src/main/java/org/bench4q/master/domain/repository/TestPlanRepository.java @@ -118,7 +118,7 @@ public class TestPlanRepository extends AbstractRepositoty { return ret; } catch (Exception e) { logger.error("loadEntities"); - logger.error(e,e.fillInStackTrace()); + logger.error(e, e.fillInStackTrace()); return null; } finally { releaseSession(session); @@ -162,14 +162,18 @@ public class TestPlanRepository extends AbstractRepositoty { } } - public void doUpdateEntity(Session session, TestPlan testPlan) { + public boolean doUpdateEntity(Session session, TestPlan testPlan) { Transaction transaction = session.beginTransaction(); try { session.update(testPlan); 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/domain/testplan/TestMoniorResultSave.java b/src/main/java/org/bench4q/master/domain/testplan/TestMoniorResultSave.java index da35db82..f7034eca 100644 --- a/src/main/java/org/bench4q/master/domain/testplan/TestMoniorResultSave.java +++ b/src/main/java/org/bench4q/master/domain/testplan/TestMoniorResultSave.java @@ -72,18 +72,24 @@ public class TestMoniorResultSave implements Observer { monitor, createDatetime); if (monitorResults == null) return false; + if (monitorResults.size() == 0) { + System.out.println("size is 0 "); + return false; + } + for (MonitorResult monitorResult : monitorResults) { if (session == null) - ; + return false; monitorResultToAdd.add(monitorResult); } - this.getTestPlanRepository().doUpdateEntity(session, testPlan); - return true; + System.out.println("monitor ressult size:" + monitorResultToAdd.size()); + return this.getTestPlanRepository().doUpdateEntity(session, + testPlan); } catch (Exception e) { e.printStackTrace(); return false; } finally { - if (session != null) { + if (session.isConnected()) { session.close(); } } @@ -96,13 +102,15 @@ public class TestMoniorResultSave implements Observer { IllegalAccessException, JAXBException { List monitorResults = new LinkedList(); - MonitorResult monitorResult = new MonitorResult(); - monitorResult.setTestPlanDB(testPlan); - monitorResult.setMonitor(monitor); - monitorResult.setCreateDatetime(createDatetime); + Field[] fields = monitorMain.getClass().getDeclaredFields(); - monitorResult.setHostNameUnderMonitor(monitor.getHostName()); + for (int i = 0; i < fields.length; i++) { + MonitorResult monitorResult = new MonitorResult(); + monitorResult.setTestPlanDB(testPlan); + monitorResult.setMonitor(monitor); + monitorResult.setCreateDatetime(createDatetime); + monitorResult.setHostNameUnderMonitor(monitor.getHostName()); fields[i].setAccessible(true); monitorResult.setType(fields[i].getName()); monitorResult.setContent(MarshalHelper.marshal(fields[i].getType(), diff --git a/src/main/java/org/bench4q/master/domain/testplan/TestMonitorSampler.java b/src/main/java/org/bench4q/master/domain/testplan/TestMonitorSampler.java index 0afab76e..01b2b7b8 100644 --- a/src/main/java/org/bench4q/master/domain/testplan/TestMonitorSampler.java +++ b/src/main/java/org/bench4q/master/domain/testplan/TestMonitorSampler.java @@ -18,7 +18,7 @@ public class TestMonitorSampler { public MonitorMain getMonitorResult( String hostName, int port) { return this.monitorMessenger - .monitorModel( hostName, port); + .monitorModel(hostName, port); } } diff --git a/src/main/java/org/bench4q/master/infrastructure/communication/MonitorMessenger.java b/src/main/java/org/bench4q/master/infrastructure/communication/MonitorMessenger.java index a7079797..0339a33c 100644 --- a/src/main/java/org/bench4q/master/infrastructure/communication/MonitorMessenger.java +++ b/src/main/java/org/bench4q/master/infrastructure/communication/MonitorMessenger.java @@ -2,7 +2,6 @@ package org.bench4q.master.infrastructure.communication; import java.io.IOException; import java.util.Date; -import java.util.UUID; import javax.xml.bind.JAXBException; @@ -17,6 +16,7 @@ import org.bench4q.share.models.monitor.MonitorMain; import org.bench4q.share.models.monitor.MemoryModel; import org.bench4q.share.models.monitor.NetworkInterfaceModel; import org.bench4q.share.models.monitor.PhysicalDiskModel; +import org.bench4q.share.models.monitor.ProcessModel; import org.bench4q.share.models.monitor.ProcessorModel; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -50,35 +50,11 @@ public class MonitorMessenger { return hostName + ":" + port + relativePath; } - public PhysicalDiskModel physicalDiskModel(UUID testPlanRunId, - String hostName, int port) { - return getMonitorModel( hostName, port, - PhysicalDiskModel.class, "physicalDisk"); + public PhysicalDiskModel physicalDisk(String hostName, int port) { + return getMonitorModel(hostName, port, PhysicalDiskModel.class, + "physicalDisk"); } - public T getMonitorMainModel(String hostName, - int port) { - try { - Date sampleDate = new Date(); - HttpResponse httpResponse = this.getHttpRequester().sendGet( - buildUrl(hostName, port, "/monitor/" + "all"), null, null); - if (HttpRequester.isInvalidResponse(httpResponse)) { - logger.info("The httpResponses is invalid "); - return null; - } - @SuppressWarnings("unchecked") - T model = (T) MarshalHelper.unmarshal(MonitorMain.class, - httpResponse.getContent()); - model.setSamplingTime(sampleDate); - return model; - } catch (IOException e) { - logger.error(ExceptionLog.getStackTrace(e)); - return null; - } catch (JAXBException e) { - logger.error(ExceptionLog.getStackTrace(e)); - return null; - } - } private T getMonitorModel(String hostName, int port, Class resultClass, String monitorTarget) { @@ -106,32 +82,26 @@ public class MonitorMessenger { } public MemoryModel memory(String hostName, int port) { - return getMonitorModel( hostName, port, - MemoryModel.class, "memory"); + return getMonitorModel(hostName, port, MemoryModel.class, "memory"); } - public ProcessorModel processor( String hostName, - int port) { - return this.getMonitorModel( hostName, port, - ProcessorModel.class, "processor"); + public ProcessorModel processor(String hostName, int port) { + return this.getMonitorModel(hostName, port, ProcessorModel.class, + "processor"); } - public NetworkInterfaceModel networkInterface( - String hostName, int port) { + public NetworkInterfaceModel networkInterface(String hostName, int port) { return this.getMonitorModel(hostName, port, NetworkInterfaceModel.class, "network"); } - public ProcessorModel processorModel( String hostName, - int port) { - return this.getMonitorModel(hostName, port, - ProcessorModel.class, "process"); + public ProcessModel process(String hostName, int port) { + return this.getMonitorModel(hostName, port, ProcessModel.class, + "process"); } - public MonitorMain monitorModel( String hostName, - int port) { - return this.getMonitorModel( hostName, port, - MonitorMain.class, "all"); + public MonitorMain monitorModel(String hostName, int port) { + return this.getMonitorModel(hostName, port, MonitorMain.class, "all"); } } diff --git a/src/test/java/MonitorModelTest/MonitorModelTest.java b/src/test/java/MonitorModelTest/MonitorModelTest.java new file mode 100644 index 00000000..ff776dbd --- /dev/null +++ b/src/test/java/MonitorModelTest/MonitorModelTest.java @@ -0,0 +1,68 @@ +package MonitorModelTest; +import static org.junit.Assert.*; + +import org.bench4q.master.infrastructure.communication.MonitorMessenger; +import org.bench4q.share.models.master.MonitorModel; +import org.junit.Assert; +import org.junit.Before; +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 MonitorModelTest { + private MonitorModel monitor; + private MonitorMessenger monitorMessenger; + + public MonitorMessenger getMonitorMessenger() { + return monitorMessenger; + } + + @Autowired + public void setMonitorMessenger(MonitorMessenger monitorMessenger) { + this.monitorMessenger = monitorMessenger; + } + + @Before + public void setUp() { + this.monitor = new MonitorModel(); + monitor.setHostName("127.0.0.1"); + monitor.setPort(5556); + } + + @Test + public void testMemeoryModel() { + assertTrue(this.monitor.getHostName().equals("127.0.0.1")); + assertTrue(this.monitor.getPort() == 5556); + Assert.assertNotNull(this.getMonitorMessenger().memory( + monitor.getHostName(), monitor.getPort())); + + } + @Test + public void testProcessorModel() { + Assert.assertNotNull(this.getMonitorMessenger().processor( + monitor.getHostName(), monitor.getPort())); + + } + @Test + public void testProcessModel() { + Assert.assertNotNull(this.getMonitorMessenger().process( + monitor.getHostName(), monitor.getPort())); + + } + @Test + public void testPhysicalDiskModel() { + Assert.assertNotNull(this.getMonitorMessenger().physicalDisk( + monitor.getHostName(), monitor.getPort())); + + } + @Test + public void testMonitorMain() { + Assert.assertNotNull(this.getMonitorMessenger().monitorModel( + monitor.getHostName(), monitor.getPort())); + + } +} diff --git a/src/test/java/org/bench4q/master/test/communication/Test_MonitorMessenger.java b/src/test/java/org/bench4q/master/test/communication/Test_MonitorMessenger.java index b2522741..a1a398cf 100644 --- a/src/test/java/org/bench4q/master/test/communication/Test_MonitorMessenger.java +++ b/src/test/java/org/bench4q/master/test/communication/Test_MonitorMessenger.java @@ -34,7 +34,7 @@ public class Test_MonitorMessenger { @Test public void test_getMonitorModel() { - Assert.assertNotNull(this.getMonitorMessenger().getMonitorMainModel( + Assert.assertNotNull(this.getMonitorMessenger().monitorModel( monitor.getHostName(), monitor.getPort())); } }