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


Reply via email to