/******************************************************************************* * 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.model.management.internal; import static org.easymock.EasyMock.createMock; 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 static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import java.util.Collections; import java.util.HashSet; import java.util.Set; import javax.management.MalformedObjectNameException; import javax.management.ObjectName; import org.eclipse.virgo.kernel.model.Artifact; import org.eclipse.virgo.kernel.model.ArtifactState; import org.eclipse.virgo.kernel.model.StubCompositeArtifact; import org.eclipse.virgo.kernel.model.management.RuntimeArtifactModelObjectNameCreator; import org.eclipse.virgo.kernel.model.management.internal.DelegatingManageableArtifact; import org.eclipse.virgo.nano.serviceability.Assert.FatalAssertionException; import org.eclipse.virgo.test.stubs.region.StubRegion; import org.junit.Test; import org.osgi.framework.Version; public class DelegatingManageableArtifactTests { @Test(expected = FatalAssertionException.class) public void nullCreator() { new DelegatingManageableArtifact(null, new StubCompositeArtifact()); } @Test(expected = FatalAssertionException.class) public void nullArtifact() { new DelegatingManageableArtifact(createMock(RuntimeArtifactModelObjectNameCreator.class), null); } @Test public void success() throws MalformedObjectNameException, NullPointerException { RuntimeArtifactModelObjectNameCreator creator = createMock(RuntimeArtifactModelObjectNameCreator.class); Artifact artifact = createMock(Artifact.class); DelegatingManageableArtifact manageableArtifact = new DelegatingManageableArtifact(creator, artifact); expect(artifact.getDependents()).andReturn(getArtifacts()); expect(creator.createArtifactModel(isA(Artifact.class))).andReturn(new ObjectName("domain:key=value1,region=global")); expect(creator.createArtifactModel(isA(Artifact.class))).andReturn(new ObjectName("domain:key=value2,region=global")); expect(creator.createArtifactModel(isA(Artifact.class))).andReturn(new ObjectName("domain:key=value3,region=global")); expect(creator.createArtifactModel(isA(Artifact.class))).andReturn(new ObjectName("domain:key=value3,region=other")); expect(artifact.getName()).andReturn("test-name"); expect(artifact.getState()).andReturn(ArtifactState.ACTIVE); expect(artifact.getRegion()).andReturn(new StubRegion("test-region", null)); expect(artifact.getType()).andReturn("test-type"); expect(artifact.getVersion()).andReturn(Version.emptyVersion); expect(artifact.getProperties()).andReturn(Collections.<String, String> emptyMap()); expect(artifact.refresh()).andReturn(true); artifact.start(); artifact.stop(); artifact.uninstall(); replay(creator, artifact); assertEquals(4, manageableArtifact.getDependents().length); manageableArtifact.getName(); assertEquals("ACTIVE", manageableArtifact.getState()); assertEquals("test-region", manageableArtifact.getRegion()); assertEquals("test-type", manageableArtifact.getType()); assertEquals("0.0.0", manageableArtifact.getVersion()); assertEquals(0, manageableArtifact.getProperties().size()); assertTrue(manageableArtifact.refresh()); manageableArtifact.start(); manageableArtifact.stop(); manageableArtifact.uninstall(); verify(creator, artifact); } private Set<Artifact> getArtifacts() { Set<Artifact> artifacts = new HashSet<Artifact>(); for (int i = 0; i < 3; i++) { artifacts.add(new StubCompositeArtifact()); } artifacts.add(new StubCompositeArtifact("foo", "bar", new StubRegion("global", null))); return artifacts; } }