package org.ourgrid.acceptance.util.broker; import org.easymock.classextension.EasyMock; import org.ourgrid.acceptance.util.BrokerAcceptanceUtil; import org.ourgrid.broker.BrokerServerModule; import org.ourgrid.broker.communication.receiver.LocalWorkerProviderClientReceiver; import org.ourgrid.common.interfaces.LocalWorkerProvider; import org.ourgrid.common.interfaces.Worker; import org.ourgrid.common.interfaces.to.GridProcessHandle; import org.ourgrid.common.specification.OurGridSpecificationConstants; import org.ourgrid.common.specification.worker.WorkerSpecification; import org.ourgrid.matchers.MessageStartsWithMatcher; import org.ourgrid.worker.WorkerConstants; import br.edu.ufcg.lsd.commune.container.ObjectDeployment; import br.edu.ufcg.lsd.commune.container.logging.CommuneLogger; import br.edu.ufcg.lsd.commune.context.ModuleContext; import br.edu.ufcg.lsd.commune.identification.ContainerID; import br.edu.ufcg.lsd.commune.identification.DeploymentID; import br.edu.ufcg.lsd.commune.testinfra.AcceptanceTestUtil; public class Req_330_Util extends BrokerAcceptanceUtil { public Req_330_Util(ModuleContext context) { super(context); } public DeploymentID createWorkerDeploymentID(String workerPublicKey, WorkerSpecification workerSpec) { String workerName = workerSpec.getAttribute(OurGridSpecificationConstants.ATT_USERNAME); String workerServer = workerSpec.getAttribute(OurGridSpecificationConstants.ATT_SERVERNAME); DeploymentID workerDeploymentID = new DeploymentID(new ContainerID(workerName, workerServer, WorkerConstants.MODULE_NAME, workerPublicKey), WorkerConstants.WORKER); return workerDeploymentID; } public void notifyWorkerFailure(String workerPublicKey, WorkerSpecification workerSpec, BrokerServerModule component, LocalWorkerProvider lwp, boolean isDisposed, DeploymentID deploymentID, boolean hasJobs, GridProcessHandle handle){ //Mock logger CommuneLogger oldLogger = component.getLogger(); CommuneLogger newLogger = EasyMock.createMock(CommuneLogger.class); component.setLogger(newLogger); ObjectDeployment bcOD = getBrokerControlDeployment(component); Worker workerMock = EasyMock.createMock(Worker.class); EasyMock.reset(lwp); if(!isDisposed){ lwp.disposeWorker(deploymentID.getServiceID()); newLogger.debug("Worker dispose: " + deploymentID.getServiceID()); if (hasJobs) { newLogger.debug(MessageStartsWithMatcher.eqMatcher( "Grid process FAILED " + handle + ". Job ended: false")); } newLogger.info("Stub to be released: " + deploymentID.getServiceID()); } else{ newLogger.warn("A peer notified a worker [" + deploymentID.getContainerID() + "] failure, " + "but it is not working to this broker."); } // Get peer bound object LocalWorkerProviderClientReceiver workerMonitor = getWorkerMonitor(component); ObjectDeployment wmOD = getWorkerMonitorDeployment(component); AcceptanceTestUtil.setExecutionContext(component, wmOD, bcOD.getDeploymentID()); EasyMock.replay(workerMock); EasyMock.replay(newLogger); workerMonitor.doNotifyFailure(workerMock, deploymentID); EasyMock.verify(workerMock); EasyMock.verify(newLogger); component.setLogger(oldLogger); } public void notifyWorkerFailure(String workerPublicKey, WorkerSpecification workerSpec, BrokerServerModule component, LocalWorkerProvider lwp, boolean isDisposed, DeploymentID deploymentID){ notifyWorkerFailure(workerPublicKey, workerSpec, component, lwp, isDisposed, deploymentID, false, null); } public void notifyWorkerRecovery(BrokerServerModule component, DeploymentID deploymentID){ ObjectDeployment bcOD = getBrokerControlDeployment(component); Worker workerMock = EasyMock.createMock(Worker.class); // Get peer bound object LocalWorkerProviderClientReceiver workerMonitor = getWorkerMonitor(component); ObjectDeployment wmOD = getWorkerMonitorDeployment(component); AcceptanceTestUtil.setExecutionContext(component, wmOD, bcOD.getDeploymentID()); EasyMock.replay(workerMock); workerMonitor.doNotifyRecovery(workerMock, deploymentID); //AcceptanceTestUtil.notifyRecovery(component, deploymentID); EasyMock.verify(workerMock); } }