Yes but test is testing installBundle with location and inputstream. *FrameworkMBean.*installBundle(String location, String url), So I have to test it with inputstream. Cheers, Adam On Tue, Dec 1, 2009 at 4:18 PM, Alasdair Nottingham < [email protected]> wrote:
> Hi, > > Looking at this change the installBundle method does this: > > inputStream = createStream(url); > Bundle bundle = context.installBundle(location, inputStream); > > when I think it could just do this: > > Bundle bundle = context.installBundle(location); > > By doing it the following way you could install a directory as a > bundle if the framework is equinox. > > What do you think? > Alasdair > > 2009/11/30 <[email protected]>: > > Author: awojtuniak > > Date: Mon Nov 30 22:41:08 2009 > > New Revision: 885603 > > > > URL: http://svn.apache.org/viewvc?rev=885603&view=rev > > Log: > > ARIES-30 Framework MBean test case > > > > Added: > > > > incubator/aries/trunk/jmx/jmx-core/src/test/java/org/apache/aries/jmx/framework/FrameworkTest.java > (with props) > > Modified: > > > > incubator/aries/trunk/jmx/jmx-core/src/main/java/org/apache/aries/jmx/framework/Framework.java > > > > Modified: > incubator/aries/trunk/jmx/jmx-core/src/main/java/org/apache/aries/jmx/framework/Framework.java > > URL: > http://svn.apache.org/viewvc/incubator/aries/trunk/jmx/jmx-core/src/main/java/org/apache/aries/jmx/framework/Framework.java?rev=885603&r1=885602&r2=885603&view=diff > > > ============================================================================== > > --- > incubator/aries/trunk/jmx/jmx-core/src/main/java/org/apache/aries/jmx/framework/Framework.java > (original) > > +++ > incubator/aries/trunk/jmx/jmx-core/src/main/java/org/apache/aries/jmx/framework/Framework.java > Mon Nov 30 22:41:08 2009 > > @@ -88,16 +88,27 @@ > > * @see > org.osgi.jmx.framework.FrameworkMBean#installBundle(java.lang.String, > java.lang.String) > > */ > > public long installBundle(String location, String url) throws > IOException { > > - InputStream inputStream; > > + InputStream inputStream = null; > > try { > > - inputStream = new URL(url).openStream(); > > + inputStream = createStream(url); > > Bundle bundle = context.installBundle(location, inputStream); > > return bundle.getBundleId(); > > } catch (BundleException e) { > > + if (inputStream != null) { > > + try { > > + inputStream.close(); > > + } catch (IOException ioe) { > > + > > + } > > + } > > throw new IOException("Can't install bundle with location" + > location); > > } > > } > > > > + public InputStream createStream(String url) throws IOException { > > + return new URL(url).openStream(); > > + } > > + > > /** > > * @see > org.osgi.jmx.framework.FrameworkMBean#installBundles(java.lang.String[]) > > */ > > @@ -170,12 +181,7 @@ > > try { > > refreshPackages(bundleIdentifiers[i]); > > } catch (Throwable t) { > > - long[] completed = new long[i]; > > - System.arraycopy(bundleIdentifiers, 0, completed, 0, i); > > - long[] remaining = new long[completed.length - i - 1]; > > - System.arraycopy(bundleIdentifiers, i + 1, remaining, 0, > remaining.length); > > - return new BatchActionResult(completed, t.toString(), > remaining, bundleIdentifiers[i]) > > - .toCompositeData(); > > + return createFailedBatchActionResult(bundleIdentifiers, > i, t); > > } > > } > > return new > BatchActionResult(bundleIdentifiers).toCompositeData(); > > @@ -241,12 +247,7 @@ > > try { > > setBundleStartLevel(bundleIdentifiers[i], newlevels[i]); > > } catch (Throwable t) { > > - long[] completed = new long[i]; > > - System.arraycopy(bundleIdentifiers, 0, completed, 0, i); > > - long[] remaining = new long[completed.length - i - 1]; > > - System.arraycopy(bundleIdentifiers, i + 1, remaining, 0, > remaining.length); > > - return new BatchActionResult(completed, t.toString(), > remaining, bundleIdentifiers[i]) > > - .toCompositeData(); > > + return createFailedBatchActionResult(bundleIdentifiers, > i, t); > > } > > } > > return new > BatchActionResult(bundleIdentifiers).toCompositeData(); > > @@ -304,12 +305,7 @@ > > try { > > startBundle(bundleIdentifiers[i]); > > } catch (Throwable t) { > > - long[] completed = new long[i]; > > - System.arraycopy(bundleIdentifiers, 0, completed, 0, i); > > - long[] remaining = new long[completed.length - i - 1]; > > - System.arraycopy(bundleIdentifiers, i + 1, remaining, 0, > remaining.length); > > - return new BatchActionResult(completed, t.toString(), > remaining, bundleIdentifiers[i]) > > - .toCompositeData(); > > + return createFailedBatchActionResult(bundleIdentifiers, > i, t); > > } > > } > > return new > BatchActionResult(bundleIdentifiers).toCompositeData(); > > @@ -340,12 +336,7 @@ > > try { > > stopBundle(bundleIdentifiers[i]); > > } catch (Throwable t) { > > - long[] completed = new long[i]; > > - System.arraycopy(bundleIdentifiers, 0, completed, 0, i); > > - long[] remaining = new long[completed.length - i - 1]; > > - System.arraycopy(bundleIdentifiers, i + 1, remaining, 0, > remaining.length); > > - return new BatchActionResult(completed, t.toString(), > remaining, bundleIdentifiers[i]) > > - .toCompositeData(); > > + return createFailedBatchActionResult(bundleIdentifiers, > i, t); > > } > > } > > return new > BatchActionResult(bundleIdentifiers).toCompositeData(); > > @@ -355,7 +346,7 @@ > > * @see org.osgi.jmx.framework.FrameworkMBean#uninstallBundle(long) > > */ > > public void uninstallBundle(long bundleIdentifier) throws IOException > { > > - Bundle bundle = context.getBundle(bundleIdentifier); > > + Bundle bundle = getBundle(bundleIdentifier); > > if (bundle != null) { > > try { > > bundle.uninstall(); > > @@ -364,8 +355,6 @@ > > } > > } > > > > - throw new IllegalArgumentException("Can't find bundle with id " > + bundleIdentifier); > > - > > } > > > > /** > > @@ -379,12 +368,7 @@ > > try { > > uninstallBundle(bundleIdentifiers[i]); > > } catch (Throwable t) { > > - long[] completed = new long[i]; > > - System.arraycopy(bundleIdentifiers, 0, completed, 0, i); > > - long[] remaining = new long[completed.length - i - 1]; > > - System.arraycopy(bundleIdentifiers, i + 1, remaining, 0, > remaining.length); > > - return new BatchActionResult(completed, t.toString(), > remaining, bundleIdentifiers[i]) > > - .toCompositeData(); > > + return createFailedBatchActionResult(bundleIdentifiers, > i, t); > > } > > } > > return new > BatchActionResult(bundleIdentifiers).toCompositeData(); > > @@ -408,10 +392,10 @@ > > * @see org.osgi.jmx.framework.FrameworkMBean#updateBundle(long, > java.lang.String) > > */ > > public void updateBundle(long bundleIdentifier, String url) throws > IOException { > > - Bundle bundle = getBundle(0); > > + Bundle bundle = getBundle(bundleIdentifier); > > InputStream inputStream = null; > > try { > > - inputStream = new URL(url).openStream(); > > + inputStream = createStream(url); > > bundle.update(inputStream); > > } catch (BundleException be) { > > if (inputStream != null) { > > @@ -437,12 +421,7 @@ > > try { > > updateBundle(bundleIdentifiers[i]); > > } catch (Throwable t) { > > - long[] completed = new long[i]; > > - System.arraycopy(bundleIdentifiers, 0, completed, 0, i); > > - long[] remaining = new long[completed.length - i - 1]; > > - System.arraycopy(bundleIdentifiers, i + 1, remaining, 0, > remaining.length); > > - return new BatchActionResult(completed, t.toString(), > remaining, bundleIdentifiers[i]) > > - .toCompositeData(); > > + return createFailedBatchActionResult(bundleIdentifiers, > i, t); > > } > > } > > return new > BatchActionResult(bundleIdentifiers).toCompositeData(); > > @@ -463,12 +442,7 @@ > > try { > > updateBundle(bundleIdentifiers[i], urls[i]); > > } catch (Throwable t) { > > - long[] completed = new long[i]; > > - System.arraycopy(bundleIdentifiers, 0, completed, 0, i); > > - long[] remaining = new long[completed.length - i - 1]; > > - System.arraycopy(bundleIdentifiers, i + 1, remaining, 0, > remaining.length); > > - return new BatchActionResult(completed, t.toString(), > remaining, bundleIdentifiers[i]) > > - .toCompositeData(); > > + return createFailedBatchActionResult(bundleIdentifiers, > i, t); > > } > > } > > return new > BatchActionResult(bundleIdentifiers).toCompositeData(); > > @@ -488,6 +462,22 @@ > > } > > > > /** > > + * Create {...@link BatchActionResult}, when the operation fail. > > + * > > + * @param bundleIdentifiers bundle ids for operation. > > + * @param i index of loop pointing on which operation fails. > > + * @param t Throwable thrown by failed operation. > > + * @return created BatchActionResult instance. > > + */ > > + private CompositeData createFailedBatchActionResult(long[] > bundleIdentifiers, int i, Throwable t) { > > + long[] completed = new long[i]; > > + System.arraycopy(bundleIdentifiers, 0, completed, 0, i); > > + long[] remaining = new long[bundleIdentifiers.length - i - 1]; > > + System.arraycopy(bundleIdentifiers, i + 1, remaining, 0, > remaining.length); > > + return new BatchActionResult(completed, t.toString(), remaining, > bundleIdentifiers[i]).toCompositeData(); > > + } > > + > > + /** > > * Gets bundle with provided bundleId. > > * > > * @param bundleIdentifier bundle id. > > > > Added: > incubator/aries/trunk/jmx/jmx-core/src/test/java/org/apache/aries/jmx/framework/FrameworkTest.java > > URL: > http://svn.apache.org/viewvc/incubator/aries/trunk/jmx/jmx-core/src/test/java/org/apache/aries/jmx/framework/FrameworkTest.java?rev=885603&view=auto > > > ============================================================================== > > --- > incubator/aries/trunk/jmx/jmx-core/src/test/java/org/apache/aries/jmx/framework/FrameworkTest.java > (added) > > +++ > incubator/aries/trunk/jmx/jmx-core/src/test/java/org/apache/aries/jmx/framework/FrameworkTest.java > Mon Nov 30 22:41:08 2009 > > @@ -0,0 +1,510 @@ > > +/** > > + * Licensed to the Apache Software Foundation (ASF) under one or more > > + * contributor license agreements. See the NOTICE file distributed > with > > + * this work for additional information regarding copyright ownership. > > + * The ASF licenses this file to You under the Apache License, Version > 2.0 > > + * (the "License"); you may not use this file except in compliance with > > + * the License. You may obtain a copy of the License at > > + * > > + * http://www.apache.org/licenses/LICENSE-2.0 > > + * > > + * Unless required by applicable law or agreed to in writing, software > > + * distributed under the License is distributed on an "AS IS" BASIS, > > + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or > implied. > > + * See the License for the specific language governing permissions and > > + * limitations under the License. > > + */ > > +package org.apache.aries.jmx.framework; > > + > > +import java.io.IOException; > > +import java.io.InputStream; > > + > > +import javax.management.openmbean.CompositeData; > > + > > +import org.junit.Assert; > > + > > +import org.apache.aries.jmx.codec.BatchActionResult; > > +import org.apache.aries.jmx.codec.BatchInstallResult; > > +import org.junit.Before; > > +import org.junit.Test; > > +import org.mockito.Mock; > > +import org.mockito.Mockito; > > +import org.mockito.MockitoAnnotations; > > +import org.osgi.framework.Bundle; > > +import org.osgi.framework.BundleContext; > > +import org.osgi.framework.BundleException; > > +import org.osgi.jmx.framework.FrameworkMBean; > > +import org.osgi.service.packageadmin.PackageAdmin; > > +import org.osgi.service.startlevel.StartLevel; > > + > > +/** > > + * {...@link FrameworkMBean} test case. > > + * > > + * > > + * @version $Rev$ $Date$ > > + */ > > +public class FrameworkTest { > > + > > + @Mock > > + private StartLevel startLevel; > > + @Mock > > + private PackageAdmin admin; > > + @Mock > > + private BundleContext context; > > + private Framework mbean; > > + > > + @Before > > + public void setUp() throws Exception { > > + MockitoAnnotations.initMocks(this); > > + mbean = new Framework(context, startLevel, admin); > > + } > > + > > + @Test > > + public void testGetFrameworkStartLevel() throws IOException { > > + Mockito.when(startLevel.getStartLevel()).thenReturn(1); > > + int level = mbean.getFrameworkStartLevel(); > > + Assert.assertEquals(1, level); > > + } > > + > > + @Test > > + public void testGetInitialBundleStartLevel() throws IOException { > > + > Mockito.when(startLevel.getInitialBundleStartLevel()).thenReturn(2); > > + int level = mbean.getInitialBundleStartLevel(); > > + Mockito.verify(startLevel).getInitialBundleStartLevel(); > > + Assert.assertEquals(2, level); > > + } > > + > > + @Test > > + public void testInstallBundleString() throws Exception { > > + Bundle bundle = Mockito.mock(Bundle.class); > > + > Mockito.when(context.installBundle("file:test.jar")).thenReturn(bundle); > > + Mockito.when(bundle.getBundleId()).thenReturn(new Long(2)); > > + long bundleId = mbean.installBundle("file:test.jar"); > > + Assert.assertEquals(2, bundleId); > > + Mockito.reset(context); > > + > Mockito.when(context.installBundle("file:test2.jar")).thenThrow(new > BundleException("location doesn't exist")); > > + > > + try { > > + mbean.installBundle("file:test2.jar"); > > + Assert.fail("Shouldn't go to this stage, location doesn't > exist"); > > + } catch (IOException e) { > > + // ok > > + } > > + > > + } > > + > > + @Test > > + public void testInstallBundleStringString() throws Exception { > > + Framework partialMock = new FrameworkPartialMock(context, > startLevel, admin); > > + Bundle bundle = Mockito.mock(Bundle.class); > > + Mockito.when(context.installBundle(Mockito.anyString(), > Mockito.any(InputStream.class))).thenReturn(bundle); > > + Mockito.when(bundle.getBundleId()).thenReturn(new Long(2)); > > + Framework spiedMBean = Mockito.spy(partialMock); > > + InputStream stream = Mockito.mock(InputStream.class); > > + > Mockito.when(spiedMBean.createStream("test.jar")).thenReturn(stream); > > + long bundleId = spiedMBean.installBundle("file:test.jar", > "test.jar"); > > + Assert.assertEquals(2, bundleId); > > + Mockito.reset(context); > > + > > Mockito.when(spiedMBean.createStream(Mockito.anyString())).thenReturn(stream); > > + Mockito.when(context.installBundle(Mockito.anyString(), > Mockito.any(InputStream.class))).thenThrow( > > + new BundleException("location doesn't exist")); > > + > > + try { > > + spiedMBean.installBundle("file:test2.jar", "test.jar"); > > + Assert.fail("Shouldn't go to this stage, location doesn't > exist"); > > + } catch (IOException e) { > > + // ok > > + } > > + } > > + > > + @Test > > + public void testInstallBundlesStringArray() throws Exception { > > + String[] locations = new String[] { "file:test.jar" }; > > + Bundle bundle = Mockito.mock(Bundle.class); > > + > Mockito.when(context.installBundle("file:test.jar")).thenReturn(bundle); > > + Mockito.when(bundle.getBundleId()).thenReturn(new Long(2)); > > + CompositeData data = mbean.installBundles(locations); > > + BatchInstallResult batch = BatchInstallResult.from(data); > > + Assert.assertNotNull(batch); > > + Assert.assertEquals(2, batch.getCompleted()[0]); > > + Assert.assertTrue(batch.isSuccess()); > > + Assert.assertNull(batch.getError()); > > + Assert.assertNull(batch.getRemainingLocationItems()); > > + Mockito.reset(context); > > + > Mockito.when(context.installBundle("file:test.jar")).thenThrow(new > BundleException("location doesn't exist")); > > + > > + /* > > + * this one is not passing bug in api bundleInError should be > String CompositeData data2 = > > + * mbean.installBundles(locations); BatchInstallResult batch2 = > BatchInstallResult.from(data2); > > + * Assert.assertNotNull(batch2); > Assert.assertNull(batch2.getCompleted()); > > + * Assert.assertFalse(batch2.isSuccess()); > Assert.assertNotNull(batch2.getError()); > > + * Assert.assertEquals("file:test.jar", > batch2.getBundleInError()); > > + * Assert.assertNull(batch2.getRemainingLocationItems()); > > + */ > > + > > + } > > + > > + @Test > > + public void testInstallBundlesStringArrayStringArray() throws > Exception { > > + Framework partialMock = new FrameworkPartialMock(context, > startLevel, admin); > > + Bundle bundle = Mockito.mock(Bundle.class); > > + Mockito.when(context.installBundle(Mockito.anyString(), > Mockito.any(InputStream.class))).thenReturn(bundle); > > + Mockito.when(bundle.getBundleId()).thenReturn(new Long(2)); > > + Framework spiedMBean = Mockito.spy(partialMock); > > + InputStream stream = Mockito.mock(InputStream.class); > > + > > Mockito.when(spiedMBean.createStream(Mockito.anyString())).thenReturn(stream); > > + CompositeData data = spiedMBean.installBundles(new String[] { > "file:test.jar" }, new String[] { "test.jar" }); > > + Assert.assertNotNull(data); > > + BatchInstallResult batch = BatchInstallResult.from(data); > > + Assert.assertEquals(2, batch.getCompleted()[0]); > > + Assert.assertTrue(batch.isSuccess()); > > + Assert.assertNull(batch.getError()); > > + Assert.assertNull(batch.getRemainingLocationItems()); > > + Mockito.reset(context); > > + > > Mockito.when(spiedMBean.createStream(Mockito.anyString())).thenReturn(stream); > > + Mockito.when(context.installBundle(Mockito.anyString(), > Mockito.any(InputStream.class))).thenThrow( > > + new BundleException("location doesn't exist")); > > + > > + /* > > + * this one is not passing bug in api bundleInError should be > String CompositeData data2 = > > + * spiedMBean.installBundles(new String[]{"file:test.jar"}, new > String[]{"test.jar"}); BatchInstallResult batch2 > > + * = BatchInstallResult.from(data2); > Assert.assertNotNull(batch2); Assert.assertNull(batch2.getCompleted()); > > + * Assert.assertFalse(batch2.isSuccess()); > Assert.assertNotNull(batch2.getError()); > > + * Assert.assertEquals("file:test.jar", > batch2.getBundleInError()); > > + * Assert.assertNull(batch2.getRemainingLocationItems()); > > + */ > > + > > + } > > + > > + @Test > > + public void testRefreshPackagesLong() throws Exception { > > + Bundle bundle = Mockito.mock(Bundle.class); > > + Mockito.when(context.getBundle(1)).thenReturn(bundle); > > + > > + mbean.refreshPackages(1); > > + Mockito.verify(admin).refreshPackages((Bundle[]) Mockito.any()); > > + > > + try { > > + mbean.refreshPackages(2); > > + Assert.fail("Shouldn't happen illegal argument"); > > + } catch (IllegalArgumentException iae) { > > + // expected > > + } > > + } > > + > > + @Test > > + public void testRefreshPackagesLongArray() throws IOException { > > + Bundle bundle = Mockito.mock(Bundle.class); > > + Mockito.when(context.getBundle(1)).thenReturn(bundle); > > + > > + mbean.refreshPackages(new long[] { 1 }); > > + Mockito.verify(admin).refreshPackages((Bundle[]) Mockito.any()); > > + > > + CompositeData data = mbean.refreshPackages(new long[] { 2 }); > > + // shouldn't found bundle whith id 2 > > + Assert.assertNotNull(data); > > + BatchActionResult batch = BatchActionResult.from(data); > > + Assert.assertEquals(0, batch.getCompleted().length); > > + Assert.assertFalse(batch.isSuccess()); > > + Assert.assertNotNull(batch.getError()); > > + Assert.assertNotNull(batch.getRemainingItems()); > > + Assert.assertEquals(2, batch.getBundleInError()); > > + > > + } > > + > > + @Test > > + public void testResolveBundle() throws IOException { > > + Bundle bundle = Mockito.mock(Bundle.class); > > + Mockito.when(context.getBundle(1)).thenReturn(bundle); > > + > > + mbean.resolveBundle(1); > > + Mockito.verify(admin).resolveBundles(new Bundle[] { bundle }); > > + } > > + > > + @Test > > + public void testResolveBundles() throws IOException { > > + Bundle bundle = Mockito.mock(Bundle.class); > > + Mockito.when(context.getBundle(1)).thenReturn(bundle); > > + > > + mbean.resolveBundles(new long[] { 1 }); > > + Mockito.verify(admin).resolveBundles(new Bundle[] { bundle }); > > + } > > + > > + @Test > > + public void testRestartFramework() throws Exception { > > + Bundle bundle = Mockito.mock(Bundle.class); > > + Mockito.when(context.getBundle(0)).thenReturn(bundle); > > + mbean.restartFramework(); > > + Mockito.verify(bundle).update(); > > + } > > + > > + @Test > > + public void testSetBundleStartLevel() throws IOException { > > + Bundle bundle = Mockito.mock(Bundle.class); > > + Mockito.when(context.getBundle(2)).thenReturn(bundle); > > + mbean.setBundleStartLevel(2, 1); > > + Mockito.verify(startLevel).setBundleStartLevel(bundle, 1); > > + } > > + > > + @Test > > + public void testSetBundleStartLevels() throws IOException { > > + Bundle bundle = Mockito.mock(Bundle.class); > > + Mockito.when(context.getBundle(2)).thenReturn(bundle); > > + CompositeData data = mbean.setBundleStartLevels(new long[] { 2 > }, new int[] { 2 }); > > + Mockito.verify(startLevel).setBundleStartLevel(bundle, 2); > > + BatchActionResult batch = BatchActionResult.from(data); > > + Assert.assertEquals(2, batch.getCompleted()[0]); > > + Assert.assertTrue(batch.isSuccess()); > > + Assert.assertNull(batch.getError()); > > + Assert.assertNull(batch.getRemainingItems()); > > + > > + CompositeData data2 = mbean.setBundleStartLevels(new long[] { 2 > }, new int[] { 2, 4 }); > > + BatchActionResult batch2 = BatchActionResult.from(data2); > > + Assert.assertNull(batch2.getCompleted()); > > + Assert.assertFalse(batch2.isSuccess()); > > + Assert.assertNotNull(batch2.getError()); > > + Assert.assertNull(batch2.getRemainingItems()); > > + > > + } > > + > > + @Test > > + public void testSetFrameworkStartLevel() throws IOException { > > + Bundle bundle = Mockito.mock(Bundle.class); > > + Mockito.when(context.getBundle(0)).thenReturn(bundle); > > + mbean.setFrameworkStartLevel(1); > > + Mockito.verify(startLevel).setStartLevel(1); > > + > > + } > > + > > + @Test > > + public void testSetInitialBundleStartLevel() throws IOException { > > + mbean.setInitialBundleStartLevel(5); > > + Mockito.verify(startLevel).setInitialBundleStartLevel(5); > > + } > > + > > + @Test > > + public void testShutdownFramework() throws Exception { > > + Bundle bundle = Mockito.mock(Bundle.class); > > + Mockito.when(context.getBundle(0)).thenReturn(bundle); > > + mbean.shutdownFramework(); > > + Mockito.verify(bundle).stop(); > > + } > > + > > + @Test > > + public void testStartBundle() throws Exception { > > + Bundle bundle = Mockito.mock(Bundle.class); > > + Mockito.when(context.getBundle(5)).thenReturn(bundle); > > + mbean.startBundle(5); > > + Mockito.verify(bundle).start(); > > + > > + Mockito.reset(context); > > + Mockito.when(context.getBundle(6)).thenReturn(bundle); > > + Mockito.doThrow(new BundleException("")).when(bundle).start(); > > + > > + try { > > + mbean.startBundle(6); > > + Assert.fail("Shouldn't go to this stage, BundleException was > thrown"); > > + } catch (IOException ioe) { > > + //expected > > + } > > + } > > + > > + @Test > > + public void testStartBundles() throws Exception { > > + Bundle bundle = Mockito.mock(Bundle.class); > > + Mockito.when(context.getBundle(5)).thenReturn(bundle); > > + CompositeData data = mbean.startBundles(new long[] { 5 }); > > + Mockito.verify(bundle).start(); > > + > > + BatchActionResult batch = BatchActionResult.from(data); > > + Assert.assertEquals(5, batch.getCompleted()[0]); > > + Assert.assertTrue(batch.isSuccess()); > > + Assert.assertNull(batch.getError()); > > + Assert.assertNull(batch.getRemainingItems()); > > + > > + CompositeData data2 = mbean.startBundles(null); > > + > > + BatchActionResult batch2 = BatchActionResult.from(data2); > > + Assert.assertNull(batch2.getCompleted()); > > + Assert.assertFalse(batch2.isSuccess()); > > + Assert.assertNotNull(batch2.getError()); > > + Assert.assertNull(batch2.getRemainingItems()); > > + } > > + > > + @Test > > + public void testStopBundle() throws Exception { > > + Bundle bundle = Mockito.mock(Bundle.class); > > + Mockito.when(context.getBundle(5)).thenReturn(bundle); > > + mbean.stopBundle(5); > > + Mockito.verify(bundle).stop(); > > + } > > + > > + @Test > > + public void testStopBundles() throws Exception { > > + Bundle bundle = Mockito.mock(Bundle.class); > > + Mockito.when(context.getBundle(5)).thenReturn(bundle); > > + CompositeData data = mbean.stopBundles(new long[] { 5 }); > > + Mockito.verify(bundle).stop(); > > + > > + BatchActionResult batch = BatchActionResult.from(data); > > + Assert.assertEquals(5, batch.getCompleted()[0]); > > + Assert.assertTrue(batch.isSuccess()); > > + Assert.assertNull(batch.getError()); > > + Assert.assertNull(batch.getRemainingItems()); > > + > > + CompositeData data2 = mbean.stopBundles(null); > > + > > + BatchActionResult batch2 = BatchActionResult.from(data2); > > + Assert.assertNull(batch2.getCompleted()); > > + Assert.assertFalse(batch2.isSuccess()); > > + Assert.assertNotNull(batch2.getError()); > > + Assert.assertNull(batch2.getRemainingItems()); > > + } > > + > > + @Test > > + public void testUninstallBundle() throws Exception { > > + Bundle bundle = Mockito.mock(Bundle.class); > > + Mockito.when(context.getBundle(5)).thenReturn(bundle); > > + mbean.uninstallBundle(5); > > + Mockito.verify(bundle).uninstall(); > > + } > > + > > + @Test > > + public void testUninstallBundles() throws Exception { > > + Bundle bundle = Mockito.mock(Bundle.class); > > + Mockito.when(context.getBundle(5)).thenReturn(bundle); > > + CompositeData data = mbean.uninstallBundles(new long[] { 5 }); > > + Mockito.verify(bundle).uninstall(); > > + BatchActionResult batch = BatchActionResult.from(data); > > + Assert.assertEquals(5, batch.getCompleted()[0]); > > + Assert.assertTrue(batch.isSuccess()); > > + Assert.assertNull(batch.getError()); > > + Assert.assertNull(batch.getRemainingItems()); > > + > > + CompositeData data2 = mbean.uninstallBundles(null); > > + > > + BatchActionResult batch2 = BatchActionResult.from(data2); > > + Assert.assertNull(batch2.getCompleted()); > > + Assert.assertFalse(batch2.isSuccess()); > > + Assert.assertNotNull(batch2.getError()); > > + Assert.assertNull(batch2.getRemainingItems()); > > + } > > + > > + @Test > > + public void testUpdateBundleLong() throws Exception { > > + Bundle bundle = Mockito.mock(Bundle.class); > > + Mockito.when(context.getBundle(5)).thenReturn(bundle); > > + mbean.updateBundle(5); > > + Mockito.verify(bundle).update(); > > + } > > + > > + @Test > > + public void testUpdateBundleLongString() throws Exception { > > + Framework partialMock = new FrameworkPartialMock(context, > startLevel, admin); > > + Framework spiedMBean = Mockito.spy(partialMock); > > + InputStream stream = Mockito.mock(InputStream.class); > > + > > Mockito.when(spiedMBean.createStream(Mockito.anyString())).thenReturn(stream); > > + Bundle bundle = Mockito.mock(Bundle.class); > > + Mockito.when(context.getBundle(5)).thenReturn(bundle); > > + spiedMBean.updateBundle(5, "file:test.jar"); > > + Mockito.verify(bundle).update(stream); > > + } > > + > > + @Test > > + public void testUpdateBundlesLongArray() throws Exception { > > + Bundle bundle = Mockito.mock(Bundle.class); > > + Mockito.when(context.getBundle(5)).thenReturn(bundle); > > + CompositeData data = mbean.updateBundles(new long[] { 5 }); > > + Mockito.verify(bundle).update(); > > + BatchActionResult batch = BatchActionResult.from(data); > > + Assert.assertEquals(5, batch.getCompleted()[0]); > > + Assert.assertTrue(batch.isSuccess()); > > + Assert.assertNull(batch.getError()); > > + Assert.assertNull(batch.getRemainingItems()); > > + > > + CompositeData data2 = mbean.updateBundles(null); > > + > > + BatchActionResult batch2 = BatchActionResult.from(data2); > > + Assert.assertNull(batch2.getCompleted()); > > + Assert.assertFalse(batch2.isSuccess()); > > + Assert.assertNotNull(batch2.getError()); > > + Assert.assertNull(batch2.getRemainingItems()); > > + > > + Mockito.reset(bundle); > > + CompositeData data3 = mbean.updateBundles(new long[] { 6 }); > > + Mockito.when(context.getBundle(6)).thenReturn(bundle); > > + Mockito.doThrow(new BundleException("")).when(bundle).update(); > > + BatchActionResult batch3 = BatchActionResult.from(data3); > > + Assert.assertEquals(0, batch3.getCompleted().length); > > + Assert.assertFalse(batch3.isSuccess()); > > + Assert.assertNotNull(batch3.getError()); > > + Assert.assertEquals(6, batch3.getBundleInError()); > > + > > + Bundle bundle6 = Mockito.mock(Bundle.class); > > + Bundle bundle8 = Mockito.mock(Bundle.class); > > + Bundle bundle7 = Mockito.mock(Bundle.class); > > + Mockito.when(context.getBundle(6)).thenReturn(bundle6); > > + Mockito.when(context.getBundle(8)).thenReturn(bundle8); > > + Mockito.when(context.getBundle(7)).thenReturn(bundle7); > > + Mockito.doThrow(new BundleException("")).when(bundle8).update(); > > + CompositeData data4 = mbean.updateBundles(new long[] { 6, 8, 7 > }); > > + BatchActionResult batch4 = BatchActionResult.from(data4); > > + Mockito.verify(bundle6).update(); > > + Assert.assertEquals(1, batch4.getCompleted().length); > > + // should contain only bundleid 6 > > + Assert.assertEquals(6, batch4.getCompleted()[0]); > > + Assert.assertFalse(batch4.isSuccess()); > > + Assert.assertNotNull(batch4.getError()); > > + Assert.assertEquals(8, batch4.getBundleInError()); > > + Assert.assertEquals(1, batch4.getRemainingItems().length); > > + // should contain only bundleid 7 > > + Assert.assertEquals(7, batch4.getRemainingItems()[0]); > > + } > > + > > + @Test > > + public void testUpdateBundlesLongArrayStringArray() throws Exception > { > > + Framework partialMock = new FrameworkPartialMock(context, > startLevel, admin); > > + Framework spiedMBean = Mockito.spy(partialMock); > > + InputStream stream = Mockito.mock(InputStream.class); > > + > > Mockito.when(spiedMBean.createStream(Mockito.anyString())).thenReturn(stream); > > + Bundle bundle = Mockito.mock(Bundle.class); > > + Mockito.when(context.getBundle(5)).thenReturn(bundle); > > + CompositeData data = spiedMBean.updateBundles(new long[] { 5 }, > new String[] { "file:test.jar" }); > > + Mockito.verify(bundle).update(stream); > > + BatchActionResult batch = BatchActionResult.from(data); > > + Assert.assertEquals(5, batch.getCompleted()[0]); > > + Assert.assertTrue(batch.isSuccess()); > > + Assert.assertNull(batch.getError()); > > + Assert.assertNull(batch.getRemainingItems()); > > + > > + CompositeData data2 = spiedMBean.updateBundles(new long[] { 2, 4 > }, new String[] { "file:test.jar" }); > > + BatchActionResult batch2 = BatchActionResult.from(data2); > > + Assert.assertFalse(batch2.isSuccess()); > > + Assert.assertNotNull(batch2.getError()); > > + Assert.assertNotNull(batch2.getError()); > > + Assert.assertNull(batch2.getRemainingItems()); > > + } > > + > > + @Test > > + public void testUpdateFramework() throws Exception { > > + Bundle bundle = Mockito.mock(Bundle.class); > > + Mockito.when(context.getBundle(0)).thenReturn(bundle); > > + mbean.restartFramework(); > > + Mockito.verify(bundle).update(); > > + } > > + > > + /** > > + * Mocking {...@link Framework} method createStream. > > + */ > > + private class FrameworkPartialMock extends Framework { > > + > > + public FrameworkPartialMock(BundleContext context, StartLevel > startLevel, PackageAdmin packageAdmin) { > > + super(context, startLevel, packageAdmin); > > + } > > + > > + public InputStream createStream(String url) throws IOException { > > + return null; > > + } > > + } > > + > > +} > > > > Propchange: > incubator/aries/trunk/jmx/jmx-core/src/test/java/org/apache/aries/jmx/framework/FrameworkTest.java > > > ------------------------------------------------------------------------------ > > svn:eol-style = native > > > > Propchange: > incubator/aries/trunk/jmx/jmx-core/src/test/java/org/apache/aries/jmx/framework/FrameworkTest.java > > > ------------------------------------------------------------------------------ > > svn:keywords = Revision Date > > > > > > > > > > -- > Alasdair Nottingham > [email protected] >
