I'm really confused now, but the problem I thought was there isn't
there now, so either I misread the code, or it has been fixed.

I wasn't asking about tests, but the MBean implementation.

Problem closed.
Alasdair

2009/12/3 adam wojtuniak <[email protected]>:
> Its not because test are written this is because implementation of MBean is
> wirtten this way.
> It has to be this way. Implementation needs to use
> installBundle(location,stream). In the implemetation
> we have to create stream from url and put the stream to
> installBundle(..,..). In test I don't want to use real stream so I mocked
> it.
> I don't see anything odd in that. Later on I will provide integarationtest
> for JMX as well.
>
> Cheers,
> Adam
>
> On Thu, Dec 3, 2009 at 2:06 PM, Alasdair Nottingham <
> [email protected]> wrote:
>
>> It still seems strange to me that it has to be done the way it is done
>> because the tests are written this way.
>>
>> It just seems odd.
>>
>> Alasdair
>>
>> 2009/12/1 Lin Sun <[email protected]>:
>>  > Hi,
>> >
>> > I wonder if the inputStream is created from a file directory, equinox
>> > will actually ignore the inputstream and use the content of the
>> > directory.   This was what I observed when I last time used this
>> > method(context.installBundle(string, inputStream)).
>> >
>> > It would be great if we could have some itest on this. :)
>> >
>> > Lin
>> >
>> >
>> > On Tue, Dec 1, 2009 at 11:18 AM, 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]
>>
>



-- 
Alasdair Nottingham
[email protected]

Reply via email to