summaryrefslogtreecommitdiffstats
path: root/java/sca/modules/extensibility-equinox/src/test
diff options
context:
space:
mode:
authorrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2008-08-08 20:56:48 +0000
committerrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2008-08-08 20:56:48 +0000
commite30b75d984cf32851023d4550463c535a12f0980 (patch)
tree9327892f9a9d069d59aab4887026029c132801fe /java/sca/modules/extensibility-equinox/src/test
parentc5599cde7501da1348f80e91dabaefa40bb0bcb1 (diff)
Rename extensibility-eclipse to extensibility-equinox
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@684090 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/sca/modules/extensibility-equinox/src/test')
-rw-r--r--java/sca/modules/extensibility-equinox/src/test/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxOSGiHostTestCase.java94
-rw-r--r--java/sca/modules/extensibility-equinox/src/test/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscovererTestCase.java140
-rw-r--r--java/sca/modules/extensibility-equinox/src/test/resources/test-bundle.jarbin0 -> 11920 bytes
3 files changed, 234 insertions, 0 deletions
diff --git a/java/sca/modules/extensibility-equinox/src/test/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxOSGiHostTestCase.java b/java/sca/modules/extensibility-equinox/src/test/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxOSGiHostTestCase.java
new file mode 100644
index 0000000000..3b71406cbb
--- /dev/null
+++ b/java/sca/modules/extensibility-equinox/src/test/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxOSGiHostTestCase.java
@@ -0,0 +1,94 @@
+/*
+ * 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.tuscany.sca.extensibility.equinox;
+
+import java.util.Dictionary;
+import java.util.Enumeration;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+
+/**
+ *
+ */
+public class EquinoxOSGiHostTestCase {
+ @Test
+ public void testStartThenStop() {
+ EquinoxOSGiHost host = new EquinoxOSGiHost();
+ BundleContext context = host.start();
+ Assert.assertNotNull(context);
+ for (Bundle b : context.getBundles()) {
+ System.out.println(toString(b, false));
+ }
+ host.stop();
+ }
+
+ @Test
+ public void testStartTwice() {
+ EquinoxOSGiHost host = new EquinoxOSGiHost();
+ host.start();
+ try {
+ host.start();
+ Assert.fail();
+ } catch (IllegalStateException e) {
+ Assert.assertTrue(IllegalStateException.class.isInstance(e.getCause()));
+ } finally {
+ host.stop();
+ }
+ }
+
+ public static String toString(Bundle b, boolean verbose) {
+ StringBuffer sb = new StringBuffer();
+ sb.append(b.getBundleId()).append(" ").append(b.getSymbolicName());
+ int s = b.getState();
+ if ((s & Bundle.UNINSTALLED) != 0) {
+ sb.append(" UNINSTALLED");
+ }
+ if ((s & Bundle.INSTALLED) != 0) {
+ sb.append(" INSTALLED");
+ }
+ if ((s & Bundle.RESOLVED) != 0) {
+ sb.append(" RESOLVED");
+ }
+ if ((s & Bundle.STARTING) != 0) {
+ sb.append(" STARTING");
+ }
+ if ((s & Bundle.STOPPING) != 0) {
+ sb.append(" STOPPING");
+ }
+ if ((s & Bundle.ACTIVE) != 0) {
+ sb.append(" ACTIVE");
+ }
+
+ sb.append(" ").append(b.getLocation());
+ if (verbose) {
+ Dictionary<Object, Object> dict = b.getHeaders();
+ Enumeration<Object> keys = dict.keys();
+ while (keys.hasMoreElements()) {
+ Object key = keys.nextElement();
+ sb.append(" ").append(key).append("=").append(dict.get(key));
+ }
+ }
+ return sb.toString();
+ }
+}
diff --git a/java/sca/modules/extensibility-equinox/src/test/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscovererTestCase.java b/java/sca/modules/extensibility-equinox/src/test/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscovererTestCase.java
new file mode 100644
index 0000000000..7d10c39bf9
--- /dev/null
+++ b/java/sca/modules/extensibility-equinox/src/test/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscovererTestCase.java
@@ -0,0 +1,140 @@
+/*
+ * 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.tuscany.sca.extensibility.equinox;
+
+import java.io.BufferedInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+import java.util.jar.JarInputStream;
+import java.util.jar.Manifest;
+
+import junit.framework.Assert;
+
+import org.apache.tuscany.sca.extensibility.ServiceDeclaration;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+
+/**
+ *
+ */
+public class EquinoxServiceDiscovererTestCase {
+ private static EquinoxServiceDiscoverer discoverer;
+ private static Bundle testBundle;
+ private static EquinoxOSGiHost host;
+
+ private static String getState(Bundle b) {
+ StringBuffer sb = new StringBuffer();
+ int s = b.getState();
+ if ((s & Bundle.UNINSTALLED) != 0) {
+ sb.append("UNINSTALLED ");
+ }
+ if ((s & Bundle.INSTALLED) != 0) {
+ sb.append("INSTALLED ");
+ }
+ if ((s & Bundle.RESOLVED) != 0) {
+ sb.append("RESOLVED ");
+ }
+ if ((s & Bundle.STARTING) != 0) {
+ sb.append("STARTING ");
+ }
+ if ((s & Bundle.STOPPING) != 0) {
+ sb.append("STOPPING ");
+ }
+ if ((s & Bundle.ACTIVE) != 0) {
+ sb.append("ACTIVE ");
+ }
+ return sb.toString();
+
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @BeforeClass
+ public static void setUpBeforeClass() throws Exception {
+ host = new EquinoxOSGiHost();
+ BundleContext context = host.start();
+
+ InputStream is = EquinoxServiceDiscovererTestCase.class.getResourceAsStream("/test-bundle.jar");
+ testBundle = context.installBundle("test-bundle", is);
+ is.close();
+ discoverer = new EquinoxServiceDiscoverer(context);
+ File dep = new File("target/bundles");
+ List<Bundle> bundles = new ArrayList<Bundle>();
+ for (File f : dep.listFiles()) {
+ BufferedInputStream bis = new BufferedInputStream(new FileInputStream(f));
+ JarInputStream jis = new JarInputStream(bis);
+ Manifest manifest = jis.getManifest();
+ if (manifest == null || manifest.getMainAttributes().getValue("Bundle-Name") == null) {
+ bis.close();
+ continue;
+ }
+ bis.close();
+ bis = new BufferedInputStream(new FileInputStream(f));
+ Bundle b = context.installBundle(f.getName(), bis);
+ System.out.println("Installed "+b.getSymbolicName() + " [" + getState(b) + "]");
+ bundles.add(b);
+ bis.close();
+ }
+ for (Bundle b : bundles) {
+ b.start();
+ System.out.println("Started "+b.getSymbolicName() + " [" + getState(b) + "]");
+ // Get the Platform.getExtensionRegistry()
+ if ("org.eclipse.core.runtime".equals(b.getSymbolicName())) {
+ // The Platform class loaded by the bundle is different that the one
+ // on the classpath
+ Class<?> cls = b.loadClass("org.eclipse.core.runtime.Platform");
+ Method m = cls.getMethod("getExtensionRegistry");
+ Object reg = m.invoke(cls);
+ System.out.println(reg);
+ }
+ }
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @AfterClass
+ public static void tearDownAfterClass() throws Exception {
+ if (testBundle != null) {
+ // Uninstall the bundle to clean up the cache
+ testBundle.uninstall();
+ }
+ host.stop();
+ }
+
+ @Test
+ public void testDiscovery() {
+ Set<ServiceDeclaration> descriptors =
+ discoverer.discover("org.apache.tuscany.sca.endpointresolver.EndpointResolverFactory", false);
+ Assert.assertEquals(1, descriptors.size());
+ descriptors = discoverer.discover("notthere", false);
+ Assert.assertEquals(0, descriptors.size());
+ }
+
+}
diff --git a/java/sca/modules/extensibility-equinox/src/test/resources/test-bundle.jar b/java/sca/modules/extensibility-equinox/src/test/resources/test-bundle.jar
new file mode 100644
index 0000000000..a4dc54170e
--- /dev/null
+++ b/java/sca/modules/extensibility-equinox/src/test/resources/test-bundle.jar
Binary files differ