Improving the test coverage, integration test for the serviceStateMBean
diff --git a/org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/BundleStateTests.java b/org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/BundleStateTest.java
similarity index 98%
rename from org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/BundleStateTests.java
rename to org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/BundleStateTest.java
index b3670b6..b107027 100644
--- a/org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/BundleStateTests.java
+++ b/org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/BundleStateTest.java
@@ -48,9 +48,7 @@
* Integration tests for the {@link BundleState} implementation of {@link CustomBundleStateMBean} and {@link BundleStateMBean}
*
*/
-public final class BundleStateTests extends AbstractOSGiMBeanTest{
-
- protected String mBeanObjectName = BundleStateMBean.OBJECTNAME;
+public final class BundleStateTest extends AbstractOSGiMBeanTest{
private CompositeData bundleInfo;
private String location;
@@ -77,6 +75,10 @@
private Object[] keysArray;
private Bundle bundle;
+ public BundleStateTest() {
+ super.mBeanObjectName = BundleStateMBean.OBJECTNAME;
+ }
+
@Before
public void before(){
this.bundleInfo = null;
@@ -118,7 +120,7 @@
while (iter.hasNext()) {
key = iter.next();
keysArray = ((Collection<?>) key).toArray();
- bundleInfo = (CompositeData) table.get(keysArray);
+ bundleInfo = table.get(keysArray);
symbolicName = (String) bundleInfo.get(BundleStateMBean.SYMBOLIC_NAME);
version = (String) bundleInfo.get(BundleStateMBean.VERSION);
bundle = bc.getBundle((Long) keysArray[0]);
diff --git a/org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/BundleWiringStateTests.java b/org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/BundleWiringStateTest.java
similarity index 74%
rename from org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/BundleWiringStateTests.java
rename to org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/BundleWiringStateTest.java
index ef12075..e291deb 100644
--- a/org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/BundleWiringStateTests.java
+++ b/org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/BundleWiringStateTest.java
@@ -11,13 +11,21 @@
package org.eclipse.gemini.mgmt.framework;
import org.eclipse.gemini.mgmt.AbstractOSGiMBeanTest;
+import org.junit.Test;
/**
* Integration tests for the {@link BundleWiringState} implementation of {@link CustomBundleWiringStateMBean}
*
*/
-public final class BundleWiringStateTests extends AbstractOSGiMBeanTest {
+public final class BundleWiringStateTest extends AbstractOSGiMBeanTest {
- protected String mBeanObjectName = CustomBundleWiringStateMBean.OBJECTNAME;
+ public BundleWiringStateTest() {
+ super.mBeanObjectName = CustomBundleWiringStateMBean.OBJECTNAME;
+ }
+
+ @Test
+ public void somethingTest(){
+
+ }
}
diff --git a/org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/FrameworkTests.java b/org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/FrameworkTest.java
similarity index 77%
rename from org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/FrameworkTests.java
rename to org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/FrameworkTest.java
index 0aae3e4..e15565b 100644
--- a/org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/FrameworkTests.java
+++ b/org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/FrameworkTest.java
@@ -11,14 +11,22 @@
package org.eclipse.gemini.mgmt.framework;
import org.eclipse.gemini.mgmt.AbstractOSGiMBeanTest;
+import org.junit.Test;
import org.osgi.jmx.framework.FrameworkMBean;
/**
* Integration tests for the {@link Framework} implementation of {@link FrameworkMBean}
*
*/
-public final class FrameworkTests extends AbstractOSGiMBeanTest {
-
- protected String mBeanObjectName = FrameworkMBean.OBJECTNAME;
+public final class FrameworkTest extends AbstractOSGiMBeanTest {
+
+ public FrameworkTest() {
+ super.mBeanObjectName = FrameworkMBean.OBJECTNAME;
+ }
+
+ @Test
+ public void somethingTest(){
+
+ }
}
diff --git a/org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/PackageStateTests.java b/org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/PackageStateTest.java
similarity index 76%
rename from org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/PackageStateTests.java
rename to org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/PackageStateTest.java
index 46615c7..7efce9d 100644
--- a/org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/PackageStateTests.java
+++ b/org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/PackageStateTest.java
@@ -11,14 +11,21 @@
package org.eclipse.gemini.mgmt.framework;
import org.eclipse.gemini.mgmt.AbstractOSGiMBeanTest;
+import org.junit.Test;
import org.osgi.jmx.framework.PackageStateMBean;
/**
* Integration tests for the {@link PackageState} implementation {@link PackageStateMBean}
*
*/
-public final class PackageStateTests extends AbstractOSGiMBeanTest {
-
- protected String mBeanObjectName = PackageStateMBean.OBJECTNAME;
+public final class PackageStateTest extends AbstractOSGiMBeanTest {
+ public PackageStateTest() {
+ super.mBeanObjectName = PackageStateMBean.OBJECTNAME;
+ }
+
+ @Test
+ public void somethingTest(){
+
+ }
}
diff --git a/org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/ServiceStateTest.java b/org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/ServiceStateTest.java
new file mode 100644
index 0000000..0ac68b2
--- /dev/null
+++ b/org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/ServiceStateTest.java
@@ -0,0 +1,91 @@
+/*******************************************************************************
+ * Copyright (c) 2011 VMware Inc.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * VMware Inc. - initial contribution
+ *******************************************************************************/
+package org.eclipse.gemini.mgmt.framework;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertArrayEquals;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.Set;
+
+import javax.management.openmbean.CompositeData;
+import javax.management.openmbean.TabularData;
+
+import org.eclipse.gemini.mgmt.AbstractOSGiMBeanTest;
+import org.junit.Before;
+import org.junit.Test;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.Constants;
+import org.osgi.framework.FrameworkUtil;
+import org.osgi.framework.ServiceReference;
+import org.osgi.jmx.framework.ServiceStateMBean;
+
+/**
+ * Integration tests for the {@link ServiceState} implementation of {@link CustomServiceStateMBean} and {@link ServiceStateMBean}
+ *
+ */
+public final class ServiceStateTest extends AbstractOSGiMBeanTest {
+
+ private CompositeData serviceInfo;
+ private Object key;
+ private Object[] keysArray;
+ private long providingBundle;
+ private long serviceId;
+ private Long[] usingBundles;
+
+ public ServiceStateTest() {
+ super.mBeanObjectName = ServiceStateMBean.OBJECTNAME;
+ }
+
+ @Before
+ public void before(){
+ this.serviceInfo = null;
+ this.key = null;
+ this.keysArray = null;
+ this.providingBundle = -1;
+ this.serviceId = -1;
+ this.usingBundles = null;
+ }
+
+ @Test
+ public void listTest() throws Exception {
+ TabularData table = jmxInvokeBundleState("listServices", new Object[]{}, new String[]{});
+ Set<?> keys = table.keySet();
+ Iterator<?> iter = keys.iterator();
+ BundleContext bc = FrameworkUtil.getBundle(ServiceState.class).getBundleContext();
+ while (iter.hasNext()) {
+ key = iter.next();
+ keysArray = ((Collection<?>) key).toArray();
+ serviceInfo = table.get(keysArray);
+
+ this.providingBundle = (Long) serviceInfo.get(ServiceStateMBean.BUNDLE_IDENTIFIER);
+ this.serviceId = (Long) serviceInfo.get(ServiceStateMBean.IDENTIFIER);
+ this.usingBundles = (Long[]) serviceInfo.get(ServiceStateMBean.USING_BUNDLES);
+
+ ServiceReference<?> serviceReference = bc.getAllServiceReferences(null, "(" + Constants.SERVICE_ID + "=" + this.serviceId + ")")[0];
+
+ assertEquals(providingBundle, serviceReference.getBundle().getBundleId());
+ assertEquals(serviceId, ((Long) serviceReference.getProperty(Constants.SERVICE_ID)).longValue());
+ Bundle[] usingBundles2 = serviceReference.getUsingBundles();
+ if(usingBundles2 == null){
+ assertEquals(0, this.usingBundles.length);
+ } else {
+ Long[] usingBundlesIds = new Long[usingBundles2.length];
+ for (int i = 0; i < usingBundles2.length; i++) {
+ usingBundlesIds[i] = usingBundles2[i].getBundleId();
+ }
+ assertArrayEquals(this.usingBundles, usingBundlesIds);
+ }
+ }
+ }
+
+}
diff --git a/org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/ServiceStateTests.java b/org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/ServiceStateTests.java
deleted file mode 100644
index 69c7420..0000000
--- a/org.eclipse.gemini.mgmt.tests/src/org/eclipse/gemini/mgmt/framework/ServiceStateTests.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2011 VMware Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VMware Inc. - initial contribution
- *******************************************************************************/
-package org.eclipse.gemini.mgmt.framework;
-
-import org.eclipse.gemini.mgmt.AbstractOSGiMBeanTest;
-import org.osgi.jmx.framework.ServiceStateMBean;
-
-/**
- * Integration tests for the {@link ServiceState} implementation of {@link CustomServiceStateMBean} and {@link ServiceStateMBean}
- *
- */
-public final class ServiceStateTests extends AbstractOSGiMBeanTest {
-
- protected String mBeanObjectName = ServiceStateMBean.OBJECTNAME;
-
-}
diff --git a/org.eclipse.gemini.mgmt/src/main/java/org/eclipse/gemini/mgmt/framework/internal/OSGiService.java b/org.eclipse.gemini.mgmt/src/main/java/org/eclipse/gemini/mgmt/framework/internal/OSGiService.java
index 9afe179..f57ba98 100644
--- a/org.eclipse.gemini.mgmt/src/main/java/org/eclipse/gemini/mgmt/framework/internal/OSGiService.java
+++ b/org.eclipse.gemini.mgmt/src/main/java/org/eclipse/gemini/mgmt/framework/internal/OSGiService.java
@@ -109,6 +109,9 @@
*/
public static long[] getBundlesUsing(ServiceReference<?> serviceRef) {
Bundle[] bundles = serviceRef.getUsingBundles();
+ if(bundles == null){
+ return new long[0];
+ }
long[] ids = new long[bundles.length];
for (int i = 0; i < bundles.length; i++) {
ids[i] = bundles[i].getBundleId();