From: <jh...@hy...> - 2009-09-01 15:59:36
|
Author: jhickey Date: 2009-09-01 08:59:25 -0700 (Tue, 01 Sep 2009) New Revision: 13683 URL: http://svn.hyperic.org/?view=rev&root=Hyperic+HQ&revision=13683 Added: trunk/src/org/hyperic/hq/bizapp/server/mdb/ServerRestartHandlerEJBImpl.java trunk/src/org/hyperic/hq/control/server/session/ServerRestartHandler.java trunk/unittest/src/org/hyperic/hq/control/ trunk/unittest/src/org/hyperic/hq/control/server/ trunk/unittest/src/org/hyperic/hq/control/server/session/ trunk/unittest/src/org/hyperic/hq/control/server/session/ServerRestartHandlerTest.java Modified: trunk/src/org/hyperic/hq/appdef/server/session/Server.java trunk/src/org/hyperic/hq/control/ControlEvent.java trunk/src/org/hyperic/hq/control/server/session/ControlActionGroupJob.java trunk/src/org/hyperic/hq/control/server/session/ControlHistoryDAO.java trunk/src/org/hyperic/hq/control/server/session/ControlManagerEJBImpl.java trunk/src/org/hyperic/hq/control/server/session/ControlScheduleManagerEJBImpl.java trunk/src/org/hyperic/hq/control/server/session/PagerProcessor_control_schedule.java trunk/src/org/hyperic/hq/product/TrackEvent.java Log: HHQ-3340 Control and Event Tracking Fixes Modified: trunk/src/org/hyperic/hq/appdef/server/session/Server.java =================================================================== --- trunk/src/org/hyperic/hq/appdef/server/session/Server.java 2009-09-01 08:42:57 UTC (rev 13682) +++ trunk/src/org/hyperic/hq/appdef/server/session/Server.java 2009-09-01 15:59:25 UTC (rev 13683) @@ -133,7 +133,7 @@ _services = services; } - void addService(Service s) { + public void addService(Service s) { _services.add(s); } Added: trunk/src/org/hyperic/hq/bizapp/server/mdb/ServerRestartHandlerEJBImpl.java =================================================================== --- trunk/src/org/hyperic/hq/bizapp/server/mdb/ServerRestartHandlerEJBImpl.java (rev 0) +++ trunk/src/org/hyperic/hq/bizapp/server/mdb/ServerRestartHandlerEJBImpl.java 2009-09-01 15:59:25 UTC (rev 13683) @@ -0,0 +1,101 @@ +/* Copyright 2009 SpringSource Inc. All Rights Reserved. */ + +package org.hyperic.hq.bizapp.server.mdb; + +import javax.ejb.MessageDrivenBean; +import javax.ejb.MessageDrivenContext; +import javax.jms.JMSException; +import javax.jms.Message; +import javax.jms.MessageListener; +import javax.jms.ObjectMessage; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.hyperic.hq.appdef.server.session.ConfigManagerEJBImpl; +import org.hyperic.hq.appdef.server.session.ServerManagerEJBImpl; +import org.hyperic.hq.autoinventory.server.session.AutoinventoryManagerEJBImpl; +import org.hyperic.hq.control.ControlEvent; +import org.hyperic.hq.control.shared.ControlConstants; +import org.hyperic.hq.control.server.session.ServerRestartHandler; +import org.hyperic.hq.measurement.server.session.TrackerManagerEJBImpl; + +/** + * + * + * @ejb:bean name="ServerRestartHandler" + * jndi-name="ejb/bizapp/ServerRestartHandler" + * local-jndi-name="ServerRestartHandler" transaction-type="Container" + * acknowledge-mode="Auto-acknowledge" + * destination-type="javax.jms.Topic" + * + * @ejb:transaction type="REQUIRED" + * + * @jboss:destination-jndi-name name="topic/eventsTopic" + */ +public class ServerRestartHandlerEJBImpl implements MessageDrivenBean, MessageListener { + + private ServerRestartHandler serverRestartHandler; + + private Log log = LogFactory.getLog(ServerRestartHandlerEJBImpl.class); + + public void onMessage(Message message) { + if (message instanceof ObjectMessage) { + try { + final Object messageObject = ((ObjectMessage) message).getObject(); + if (messageObject instanceof ControlEvent) { + ControlEvent event = (ControlEvent) messageObject; + if ((event.getAction().equals("restart") || event.getAction().equals("start")) && + event.getStatus().equals(ControlConstants.STATUS_COMPLETED) && event.getResource().isServer()) + { + try { + serverRestartHandler.serverRestarted(event.getResource()); + } catch (Exception e) { + log.error("Error processing possible server restart event", e); + } + } + } + } catch (JMSException e) { + log.error("Error processing possible server restart event", e); + } + } + } + + /** + * @see javax.ejb.MessageDrivenBean#ejbCreate() + * @ejb:create-method + */ + public void ejbCreate() { + serverRestartHandler = new ServerRestartHandler(ServerManagerEJBImpl.getOne(), + ConfigManagerEJBImpl.getOne(), + AutoinventoryManagerEJBImpl.getOne(), + TrackerManagerEJBImpl.getOne()); + } + + /** + * @see javax.ejb.MessageDrivenBean#ejbPostCreate() + */ + public void ejbPostCreate() { + } + + /** + * @see javax.ejb.MessageDrivenBean#ejbActivate() + */ + public void ejbActivate() { + } + + /** + * @see javax.ejb.MessageDrivenBean#ejbPassivate() + */ + public void ejbPassivate() { + } + + /** + * @see javax.ejb.MessageDrivenBean#ejbRemove() + * @ejb:remove-method + */ + public void ejbRemove() { + } + + public void setMessageDrivenContext(MessageDrivenContext ctx) { + } +} Property changes on: trunk/src/org/hyperic/hq/bizapp/server/mdb/ServerRestartHandlerEJBImpl.java ___________________________________________________________________ Name: svn:eol-style + native Modified: trunk/src/org/hyperic/hq/control/ControlEvent.java =================================================================== --- trunk/src/org/hyperic/hq/control/ControlEvent.java 2009-09-01 08:42:57 UTC (rev 13682) +++ trunk/src/org/hyperic/hq/control/ControlEvent.java 2009-09-01 15:59:25 UTC (rev 13683) @@ -46,6 +46,7 @@ private boolean scheduled; private long dateScheduled; private String status; + private String message; /** Creates a new instance of ControlEvent */ public ControlEvent(String subject, int resourcetype, Integer resourceId, @@ -68,8 +69,8 @@ public String getAction() { return this.action; } - - /** Setter for property action. + + /** Setter for property action. * @param action New value of property action. * */ @@ -178,5 +179,21 @@ public String getLevelString() { return getStatus(); - } + } + + /** + * + * @return The message associated with the result (status) of the control action + */ + public String getMessage() { + return message; + } + + /** + * + * @param message The message associated with the result (status) of the control action + */ + public void setMessage(String message) { + this.message = message; + } } Modified: trunk/src/org/hyperic/hq/control/server/session/ControlActionGroupJob.java =================================================================== --- trunk/src/org/hyperic/hq/control/server/session/ControlActionGroupJob.java 2009-09-01 08:42:57 UTC (rev 13682) +++ trunk/src/org/hyperic/hq/control/server/session/ControlActionGroupJob.java 2009-09-01 15:59:25 UTC (rev 13683) @@ -202,7 +202,7 @@ cv.getScheduled().booleanValue(), cv.getDateScheduled(), status); - + event.setMessage(errMsg); Messenger sender = new Messenger(); sender.publishMessage(EventConstants.EVENTS_TOPIC, event); } catch (Exception e) { Modified: trunk/src/org/hyperic/hq/control/server/session/ControlHistoryDAO.java =================================================================== --- trunk/src/org/hyperic/hq/control/server/session/ControlHistoryDAO.java 2009-09-01 08:42:57 UTC (rev 13682) +++ trunk/src/org/hyperic/hq/control/server/session/ControlHistoryDAO.java 2009-09-01 15:59:25 UTC (rev 13683) @@ -79,6 +79,7 @@ h.setDescription(description); h.setAction(action); h.setArgs(args); + h.setMessage(message); save(h); return h; } Modified: trunk/src/org/hyperic/hq/control/server/session/ControlManagerEJBImpl.java =================================================================== --- trunk/src/org/hyperic/hq/control/server/session/ControlManagerEJBImpl.java 2009-09-01 08:42:57 UTC (rev 13682) +++ trunk/src/org/hyperic/hq/control/server/session/ControlManagerEJBImpl.java 2009-09-01 15:59:25 UTC (rev 13683) @@ -189,6 +189,17 @@ _controlScheduleManager.doSingleAction(id, subject, action, args, null); } + + /** + * Execute a single control action on a given entity. + * + * @ejb:interface-method view-type="local" + */ + public void doAction(AuthzSubject subject, AppdefEntityID id, + String action) throws PluginException, PermissionException { + String args = null; + doAction(subject, id, action, args); + } /** * Schedule a new control action. @@ -550,6 +561,7 @@ cLocal.getScheduled().booleanValue(), cLocal.getDateScheduled(), status); + event.setMessage(msg); Messenger sender = new Messenger(); sender.publishMessage(EventConstants.EVENTS_TOPIC, event); } Modified: trunk/src/org/hyperic/hq/control/server/session/ControlScheduleManagerEJBImpl.java =================================================================== --- trunk/src/org/hyperic/hq/control/server/session/ControlScheduleManagerEJBImpl.java 2009-09-01 08:42:57 UTC (rev 13682) +++ trunk/src/org/hyperic/hq/control/server/session/ControlScheduleManagerEJBImpl.java 2009-09-01 15:59:25 UTC (rev 13683) @@ -51,10 +51,10 @@ import org.hyperic.hq.appdef.shared.AppdefManagerLocal; import org.hyperic.hq.authz.server.session.AuthzSubject; import org.hyperic.hq.authz.shared.PermissionException; +import org.hyperic.hq.authz.shared.PermissionManager; +import org.hyperic.hq.authz.shared.PermissionManagerFactory; import org.hyperic.hq.common.ApplicationException; import org.hyperic.hq.common.SystemException; -import org.hyperic.hq.control.server.session.ControlHistory; -import org.hyperic.hq.control.server.session.ControlSchedule; import org.hyperic.hq.control.shared.ControlConstants; import org.hyperic.hq.control.shared.ControlFrequencyValue; import org.hyperic.hq.control.shared.ControlScheduleManagerLocal; @@ -253,14 +253,13 @@ break; } catch (PermissionException e) { i.remove(); - } + } } // This will remove stale data and update fire times which // may result in the list being out of order. We should // probably sort a second time - PageList list = schedulePager.seek(pending, 0, rows); - list.setTotalSize(pending.size()); + PageList list = schedulePager.seek(pending, 0, rows); return list; } finally { @@ -535,6 +534,13 @@ public void deleteJobHistory(AuthzSubject subject, Integer[] ids) throws ApplicationException { + // SpringSource: require admin privileges + PermissionManager pm = PermissionManagerFactory.getInstance(); + if (!pm.hasAdminPermission(subject.getId())) { + throw new PermissionException("Admin permission is required to delete job history"); + } + // END SpringSource + ControlHistoryDAO hdao = getControlHistoryDAO(); for (int i=0; i<ids.length; i++) { @@ -815,6 +821,16 @@ } } } + + private String truncateText(int maxSize, String text){ + String truncatedText = text; + if (text != null){ + if (text.length() > maxSize){ + truncatedText = text.substring(0,maxSize-3) + "..."; + } + } + return truncatedText; + } /** * Create a control history entry @@ -837,9 +853,10 @@ String errorMessage) { return getControlHistoryDAO().create(id, groupId, batchId, subjectName, - action, args, scheduled, startTime, - stopTime, scheduleTime, status, - description, errorMessage); + action, truncateText(500, args), scheduled, + startTime, stopTime, scheduleTime, + status, truncateText(500, description), + truncateText(500, errorMessage)); } /** @@ -862,7 +879,7 @@ local.setEndTime(endTime); local.setStatus(status); - local.setMessage(message); + local.setMessage(truncateText(500,message)); } /** Modified: trunk/src/org/hyperic/hq/control/server/session/PagerProcessor_control_schedule.java =================================================================== --- trunk/src/org/hyperic/hq/control/server/session/PagerProcessor_control_schedule.java 2009-09-01 08:42:57 UTC (rev 13682) +++ trunk/src/org/hyperic/hq/control/server/session/PagerProcessor_control_schedule.java 2009-09-01 15:59:25 UTC (rev 13683) @@ -33,10 +33,11 @@ import org.hyperic.hq.control.shared.ControlConstants; import org.hyperic.hq.scheduler.shared.SchedulerLocal; import org.hyperic.hq.scheduler.shared.SchedulerUtil; -import org.hyperic.util.pager.PagerProcessor; +import org.hyperic.util.pager.PagerEventHandler; +import org.hyperic.util.pager.PagerProcessorExt; import org.quartz.Trigger; -public class PagerProcessor_control_schedule implements PagerProcessor { +public class PagerProcessor_control_schedule implements PagerProcessorExt { protected static Log log = LogFactory.getLog( PagerProcessor_control_schedule.class.getName() ); @@ -89,4 +90,16 @@ } return o; } + + public PagerEventHandler getEventHandler() { + return null; + } + + public Object processElement(Object o1, Object o2) { + return processElement(o1); + } + + public boolean skipNulls() { + return true; + } } Added: trunk/src/org/hyperic/hq/control/server/session/ServerRestartHandler.java =================================================================== --- trunk/src/org/hyperic/hq/control/server/session/ServerRestartHandler.java (rev 0) +++ trunk/src/org/hyperic/hq/control/server/session/ServerRestartHandler.java 2009-09-01 15:59:25 UTC (rev 13683) @@ -0,0 +1,111 @@ +/* Copyright 2009 SpringSource Inc. All Rights Reserved. */ + +package org.hyperic.hq.control.server.session; + +import java.util.Iterator; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.hyperic.hq.appdef.server.session.Server; +import org.hyperic.hq.appdef.server.session.Service; +import org.hyperic.hq.appdef.shared.AppdefEntityID; +import org.hyperic.hq.appdef.shared.ConfigManagerLocal; +import org.hyperic.hq.appdef.shared.ServerManagerLocal; +import org.hyperic.hq.autoinventory.shared.AutoinventoryManagerLocal; +import org.hyperic.hq.measurement.shared.TrackerManagerLocal; +import org.hyperic.hq.product.ProductPlugin; +import org.hyperic.util.config.ConfigResponse; + +/** + * Handles a server restarted event by re-enabling Config/Log tracking of the + * server and its services (to re-subscribe JMX NotificationListeners). This + * handler will also perform a runtime scan (auto-discovery) for services in the + * server, as there may be new ones after server is restarted (like in the case + * of a tc Server config change that results in a new DataSource) + * + * + * @author Jennifer Hickey + * + */ +public class ServerRestartHandler { + + private final Log log = LogFactory.getLog(ServerRestartHandler.class.getName()); + + private final ServerManagerLocal serverManager; + + private final ConfigManagerLocal configManager; + + private final AutoinventoryManagerLocal autoInvManager; + + private final TrackerManagerLocal trackerManager; + + private long startDelay = 15l; + + public ServerRestartHandler(ServerManagerLocal serverManager, + ConfigManagerLocal configManager, + AutoinventoryManagerLocal autoInvManager, + TrackerManagerLocal trackerManager) + { + this.serverManager = serverManager; + this.configManager = configManager; + this.autoInvManager = autoInvManager; + this.trackerManager = trackerManager; + } + + private void autoDiscover(final AppdefEntityID serverId) throws Exception { + try { + autoInvManager.toggleRuntimeScan(null, serverId, true); + } catch (Exception e) { + throw new Exception("Failure triggering auto-discovery", e); + } + } + + // Re-enable log tracking to re-subscribe MxNotificationPlugins now that + // server is back up + private void enableTrackers(final AppdefEntityID id) throws Exception { + try { + ConfigResponse response = configManager.getMergedConfigResponse(null, + ProductPlugin.TYPE_MEASUREMENT, + id, + true); + trackerManager.enableTrackers(null, id, response); + } catch (Exception e) { + log.error("Failure re-enabling log/config tracking for entity " + id, e); + } + } + + /** + * Handles a server restarted event + * + * @param serverId The id of the server that was started + * @throws Exception + */ + public void serverRestarted(AppdefEntityID serverId) throws Exception { + Server server = serverManager.findServerById(serverId.getId()); + try { + autoDiscover(serverId); + } finally { + // TODO some other way to delay b/w server start and MBean + // availability. This is bad. + try { + Thread.sleep(startDelay * 1000); + } catch (InterruptedException e) { + // do nothing + } + enableTrackers(serverId); + for (Iterator services = server.getServices().iterator(); services.hasNext();) { + enableTrackers(((Service) services.next()).getEntityId()); + } + } + } + + /** + * + * @param startDelay The amount of time in seconds to wait for server to be + * started before re-enabling its JMX subscriptions + */ + public void setStartDelay(long startDelay) { + this.startDelay = startDelay; + } + +} Property changes on: trunk/src/org/hyperic/hq/control/server/session/ServerRestartHandler.java ___________________________________________________________________ Name: svn:eol-style + native Modified: trunk/src/org/hyperic/hq/product/TrackEvent.java =================================================================== --- trunk/src/org/hyperic/hq/product/TrackEvent.java 2009-09-01 08:42:57 UTC (rev 13682) +++ trunk/src/org/hyperic/hq/product/TrackEvent.java 2009-09-01 15:59:25 UTC (rev 13683) @@ -43,7 +43,7 @@ //maxlen as defined in schema (sql/events/EventLog.hbm.xml) //events are also encoded and stored on disk with a max size of 4000 //see AgentDListProvider.RECSIZE - public static final int MESSAGE_MAXLEN = 4000; + public static final int MESSAGE_MAXLEN = 3500; public static final int SOURCE_MAXLEN = 100; private AppdefEntityID id; // The appdef id. Added: trunk/unittest/src/org/hyperic/hq/control/server/session/ServerRestartHandlerTest.java =================================================================== --- trunk/unittest/src/org/hyperic/hq/control/server/session/ServerRestartHandlerTest.java (rev 0) +++ trunk/unittest/src/org/hyperic/hq/control/server/session/ServerRestartHandlerTest.java 2009-09-01 15:59:25 UTC (rev 13683) @@ -0,0 +1,183 @@ +package org.hyperic.hq.control.server.session; + +import junit.framework.TestCase; + +import org.easymock.EasyMock; +import org.hyperic.hq.appdef.server.session.Server; +import org.hyperic.hq.appdef.server.session.Service; +import org.hyperic.hq.appdef.shared.AppdefEntityConstants; +import org.hyperic.hq.appdef.shared.AppdefEntityID; +import org.hyperic.hq.appdef.shared.ConfigManagerLocal; +import org.hyperic.hq.appdef.shared.ServerManagerLocal; +import org.hyperic.hq.autoinventory.shared.AutoinventoryManagerLocal; +import org.hyperic.hq.measurement.shared.TrackerManagerLocal; +import org.hyperic.hq.product.ProductPlugin; +import org.hyperic.util.config.ConfigResponse; + +/** + * Unit test of the {@link ServerRestartHandler} + * @author jhickey + * + */ +public class ServerRestartHandlerTest + extends TestCase +{ + + private ServerRestartHandler serverRestartHandler; + + private AutoinventoryManagerLocal autoInvManager; + + private ServerManagerLocal serverManager; + + private ConfigManagerLocal configManager; + + private TrackerManagerLocal trackerManager; + + private static final AppdefEntityID SERVER_ID = new AppdefEntityID(2, 3); + + private void replay() { + EasyMock.replay(autoInvManager, serverManager, configManager, trackerManager); + } + + public void setUp() throws Exception { + super.setUp(); + this.autoInvManager = EasyMock.createMock(AutoinventoryManagerLocal.class); + this.serverManager = EasyMock.createMock(ServerManagerLocal.class); + this.configManager = EasyMock.createMock(ConfigManagerLocal.class); + this.trackerManager = EasyMock.createMock(TrackerManagerLocal.class); + this.serverRestartHandler = new ServerRestartHandler(serverManager, + configManager, + autoInvManager, + trackerManager); + this.serverRestartHandler.setStartDelay(0); + } + + /** + * Verifies successful behavior of restart handler + * @throws Exception + */ + public void testRestartServer() throws Exception { + Server server = new Server(); + Service service = new Service(); + Integer serviceId = Integer.valueOf(889); + service.setId(serviceId); + AppdefEntityID serviceEntityId = new AppdefEntityID(AppdefEntityConstants.APPDEF_TYPE_SERVICE, serviceId); + server.addService(service); + EasyMock.expect(serverManager.findServerById(SERVER_ID.getId())).andReturn(server); + autoInvManager.toggleRuntimeScan(null, SERVER_ID, true); + ConfigResponse response = new ConfigResponse(); + EasyMock.expect(configManager.getMergedConfigResponse(null, ProductPlugin.TYPE_MEASUREMENT, SERVER_ID, true)) + .andReturn(response); + + trackerManager.enableTrackers(null, SERVER_ID, response); + EasyMock.expect(configManager.getMergedConfigResponse(null, + ProductPlugin.TYPE_MEASUREMENT, + serviceEntityId, + true)).andReturn(response); + + trackerManager.enableTrackers(null, serviceEntityId, response); + replay(); + serverRestartHandler.serverRestarted(SERVER_ID); + verify(); + } + + /** + * Verifies an Exception is thrown and trackers still enabled if failure + * occurs during auto-discovery + * @throws Exception + */ + public void testRestartServerFailedAutoDiscovery() throws Exception { + Server server = new Server(); + Service service = new Service(); + Integer serviceId = Integer.valueOf(889); + service.setId(serviceId); + AppdefEntityID serviceEntityId = new AppdefEntityID(AppdefEntityConstants.APPDEF_TYPE_SERVICE, serviceId); + server.addService(service); + EasyMock.expect(serverManager.findServerById(SERVER_ID.getId())).andReturn(server); + autoInvManager.toggleRuntimeScan(null, SERVER_ID, true); + EasyMock.expectLastCall().andThrow(new RuntimeException("No!")); + ConfigResponse response = new ConfigResponse(); + EasyMock.expect(configManager.getMergedConfigResponse(null, ProductPlugin.TYPE_MEASUREMENT, SERVER_ID, true)) + .andReturn(response); + + trackerManager.enableTrackers(null, SERVER_ID, response); + EasyMock.expect(configManager.getMergedConfigResponse(null, + ProductPlugin.TYPE_MEASUREMENT, + serviceEntityId, + true)).andReturn(response); + + trackerManager.enableTrackers(null, serviceEntityId, response); + replay(); + try { + serverRestartHandler.serverRestarted(SERVER_ID); + fail("Expected an Exception to be thrown on failed auto-discovery"); + } catch (Exception e) { + verify(); + } + } + + /** + * Verifies that nothing blows up and service trackers are still enabled if + * failure occurs enabling server trackers + * @throws Exception + */ + public void testRestartServerFailedServerConfigLogTrackEnable() throws Exception { + Server server = new Server(); + Service service = new Service(); + Integer serviceId = Integer.valueOf(889); + service.setId(serviceId); + AppdefEntityID serviceEntityId = new AppdefEntityID(AppdefEntityConstants.APPDEF_TYPE_SERVICE, serviceId); + server.addService(service); + ConfigResponse response = new ConfigResponse(); + EasyMock.expect(serverManager.findServerById(SERVER_ID.getId())).andReturn(server); + autoInvManager.toggleRuntimeScan(null, SERVER_ID, true); + EasyMock.expect(configManager.getMergedConfigResponse(null, ProductPlugin.TYPE_MEASUREMENT, SERVER_ID, true)) + .andThrow(new RuntimeException("No")); + EasyMock.expect(configManager.getMergedConfigResponse(null, + ProductPlugin.TYPE_MEASUREMENT, + serviceEntityId, + true)).andReturn(response); + + trackerManager.enableTrackers(null, serviceEntityId, response); + replay(); + + serverRestartHandler.serverRestarted(SERVER_ID); + verify(); + + } + + /** + * Verifies that nothing blows up if failure occurs enabling service + * trackers + * @throws Exception + */ + public void testRestartServerFailedServiceConfigLogTrackEnable() throws Exception { + Server server = new Server(); + Service service = new Service(); + Integer serviceId = Integer.valueOf(889); + service.setId(serviceId); + AppdefEntityID serviceEntityId = new AppdefEntityID(AppdefEntityConstants.APPDEF_TYPE_SERVICE, serviceId); + server.addService(service); + EasyMock.expect(serverManager.findServerById(SERVER_ID.getId())).andReturn(server); + autoInvManager.toggleRuntimeScan(null, SERVER_ID, true); + + ConfigResponse response = new ConfigResponse(); + EasyMock.expect(configManager.getMergedConfigResponse(null, ProductPlugin.TYPE_MEASUREMENT, SERVER_ID, true)) + .andReturn(response); + + trackerManager.enableTrackers(null, SERVER_ID, response); + EasyMock.expect(configManager.getMergedConfigResponse(null, + ProductPlugin.TYPE_MEASUREMENT, + serviceEntityId, + true)).andThrow(new RuntimeException("No")); + replay(); + serverRestartHandler.serverRestarted(SERVER_ID); + verify(); + + } + + private void verify() { + EasyMock.verify(autoInvManager, serverManager, configManager, trackerManager); + } + +} Property changes on: trunk/unittest/src/org/hyperic/hq/control/server/session/ServerRestartHandlerTest.java ___________________________________________________________________ Name: svn:eol-style + native |