/******************************************************************************* * Copyright (c) 2008, 2010 VMware Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * VMware Inc. - initial contribution *******************************************************************************/ package org.eclipse.virgo.kernel.deployer.hot; import static org.easymock.EasyMock.createMock; import static org.easymock.EasyMock.eq; import static org.easymock.EasyMock.expect; import static org.easymock.EasyMock.isA; import static org.easymock.EasyMock.replay; import static org.easymock.EasyMock.verify; import java.io.File; import org.junit.Before; import org.junit.Test; import org.eclipse.virgo.kernel.deployer.core.ApplicationDeployer; import org.eclipse.virgo.kernel.deployer.core.DeploymentIdentity; import org.eclipse.virgo.kernel.deployer.core.ApplicationDeployer.DeploymentOptions; import org.eclipse.virgo.kernel.deployer.hot.HotDeploymentFileSystemListener; import org.eclipse.virgo.medic.test.eventlog.MockEventLogger; import org.eclipse.virgo.util.io.FileSystemEvent; public class HotDeployerFileSystemListenerTests { private HotDeploymentFileSystemListener listener; private ApplicationDeployer deployer; private DeploymentIdentity deploymentIdentity; @Before public void initialise() { deployer = createMock(ApplicationDeployer.class); listener = new HotDeploymentFileSystemListener(deployer, new MockEventLogger()); deploymentIdentity = createMock(DeploymentIdentity.class); } @Test public void appCreated() throws Exception { File app = new File("path/to/app"); expect(deployer.deploy(eq(app.toURI()), isA(DeploymentOptions.class))).andReturn(deploymentIdentity); replay(deployer); listener.onChange("path/to/app", FileSystemEvent.CREATED); verify(deployer); } @Test public void newAppDuringStartup() throws Exception { File app = new File("path/to/app"); expect(deployer.isDeployed(app.toURI())).andReturn(false); expect(deployer.deploy(eq(app.toURI()), isA(DeploymentOptions.class))).andReturn(deploymentIdentity); replay(deployer); listener.onChange("path/to/app", FileSystemEvent.INITIAL); verify(deployer); } @Test public void existingAppDuringStartup() throws Exception { File app = new File("path/to/app"); expect(deployer.isDeployed(app.toURI())).andReturn(true); replay(deployer); listener.onChange("path/to/app", FileSystemEvent.INITIAL); verify(deployer); } @Test public void appModified() throws Exception { File app = new File("path/to/app"); expect(deployer.deploy(eq(app.toURI()), isA(DeploymentOptions.class))).andReturn(deploymentIdentity); replay(deployer); listener.onChange("path/to/app", FileSystemEvent.MODIFIED); verify(deployer); } @Test public void appDeleted() throws Exception { File app = new File("path/to/app"); expect(deployer.getDeploymentIdentity(app.toURI())).andReturn(this.deploymentIdentity); deployer.undeploy(this.deploymentIdentity); replay(deployer); listener.onChange("path/to/app", FileSystemEvent.DELETED); verify(deployer); } @Test public void nonexistentAppDeleted() throws Exception { File app = new File("path/to/app"); expect(deployer.getDeploymentIdentity(app.toURI())).andReturn(null); replay(deployer); listener.onChange("path/to/app", FileSystemEvent.DELETED); verify(deployer); } }