I'm not sure I follow. What test does this? Alasdair
2009/12/1 adam wojtuniak <[email protected]>: > 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] >> > -- Alasdair Nottingham [email protected]
