You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by li...@apache.org on 2009/12/02 19:22:15 UTC
svn commit: r886236 - in
/incubator/aries/trunk/blueprint/blueprint-itests/src/test/java/org/apache/aries/blueprint/itests:
AbstractIntegrationTest.java BlueprintContainerBTCustomizerTest.java
BlueprintContainerTest.java
Author: linsun
Date: Wed Dec 2 18:22:14 2009
New Revision: 886236
URL: http://svn.apache.org/viewvc?rev=886236&view=rev
Log:
itest for ARIES-51
Added:
incubator/aries/trunk/blueprint/blueprint-itests/src/test/java/org/apache/aries/blueprint/itests/BlueprintContainerBTCustomizerTest.java (with props)
Modified:
incubator/aries/trunk/blueprint/blueprint-itests/src/test/java/org/apache/aries/blueprint/itests/AbstractIntegrationTest.java
incubator/aries/trunk/blueprint/blueprint-itests/src/test/java/org/apache/aries/blueprint/itests/BlueprintContainerTest.java
Modified: incubator/aries/trunk/blueprint/blueprint-itests/src/test/java/org/apache/aries/blueprint/itests/AbstractIntegrationTest.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/blueprint/blueprint-itests/src/test/java/org/apache/aries/blueprint/itests/AbstractIntegrationTest.java?rev=886236&r1=886235&r2=886236&view=diff
==============================================================================
--- incubator/aries/trunk/blueprint/blueprint-itests/src/test/java/org/apache/aries/blueprint/itests/AbstractIntegrationTest.java (original)
+++ incubator/aries/trunk/blueprint/blueprint-itests/src/test/java/org/apache/aries/blueprint/itests/AbstractIntegrationTest.java Wed Dec 2 18:22:14 2009
@@ -18,6 +18,18 @@
*/
package org.apache.aries.blueprint.itests;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.text.SimpleDateFormat;
+import java.util.Currency;
+
+import org.apache.aries.blueprint.sample.Bar;
+import org.apache.aries.blueprint.sample.Foo;
import org.ops4j.pax.exam.CoreOptions;
import static org.ops4j.pax.exam.CoreOptions.options;
import static org.ops4j.pax.exam.CoreOptions.wrappedBundle;
@@ -97,7 +109,6 @@
protected Bundle installBundle(String groupId, String artifactId) throws Exception {
MavenArtifactProvisionOption mvnUrl = mavenBundle(groupId, artifactId);
- System.out.println("***linsun: mvnUrl.getURL() " + mvnUrl.getURL());
return bundleContext.installBundle(mvnUrl.getURL());
}
@@ -128,4 +139,60 @@
return options;
}
+
+ protected void testBlueprintContainer(Bundle bundle) throws Exception {
+ testBlueprintContainer(bundleContext, bundle);
+ }
+
+
+ protected void testBlueprintContainer(BundleContext bc, Bundle bundle) throws Exception {
+ BlueprintContainer blueprintContainer = getBlueprintContainerForBundle(
+ bc == null ? bundleContext : bc, "org.apache.aries.blueprint.sample",
+ 5000);
+ assertNotNull(blueprintContainer);
+
+ Object obj = blueprintContainer.getComponentInstance("bar");
+ assertNotNull(obj);
+ assertEquals(Bar.class, obj.getClass());
+ Bar bar = (Bar) obj;
+ assertNotNull(bar.getContext());
+ assertEquals("Hello FooBar", bar.getValue());
+ assertNotNull(bar.getList());
+ assertEquals(2, bar.getList().size());
+ assertEquals("a list element", bar.getList().get(0));
+ assertEquals(Integer.valueOf(5), bar.getList().get(1));
+ obj = blueprintContainer.getComponentInstance("foo");
+ assertNotNull(obj);
+ assertEquals(Foo.class, obj.getClass());
+ Foo foo = (Foo) obj;
+ assertEquals(5, foo.getA());
+ assertEquals(10, foo.getB());
+ assertSame(bar, foo.getBar());
+ assertEquals(Currency.getInstance("PLN"), foo.getCurrency());
+ assertEquals(new SimpleDateFormat("yyyy.MM.dd").parse("2009.04.17"),
+ foo.getDate());
+
+ assertTrue(foo.isInitialized());
+ assertFalse(foo.isDestroyed());
+
+ obj = getOsgiService(bc == null ? bundleContext : bc, Foo.class, null, 5000);
+ assertNotNull(obj);
+ assertSame(foo, obj);
+
+ bundle.stop();
+
+ Thread.sleep(1000);
+
+ try {
+ blueprintContainer = getBlueprintContainerForBundle(bc == null ? bundleContext : bc,
+ "org.apache.aries.blueprint.sample", 1);
+ fail("BlueprintContainer should have been unregistered");
+ } catch (Exception e) {
+ // Expected, as the module container should have been unregistered
+ }
+
+ assertTrue(foo.isInitialized());
+ assertTrue(foo.isDestroyed());
+ }
+
}
Added: incubator/aries/trunk/blueprint/blueprint-itests/src/test/java/org/apache/aries/blueprint/itests/BlueprintContainerBTCustomizerTest.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/blueprint/blueprint-itests/src/test/java/org/apache/aries/blueprint/itests/BlueprintContainerBTCustomizerTest.java?rev=886236&view=auto
==============================================================================
--- incubator/aries/trunk/blueprint/blueprint-itests/src/test/java/org/apache/aries/blueprint/itests/BlueprintContainerBTCustomizerTest.java (added)
+++ incubator/aries/trunk/blueprint/blueprint-itests/src/test/java/org/apache/aries/blueprint/itests/BlueprintContainerBTCustomizerTest.java Wed Dec 2 18:22:14 2009
@@ -0,0 +1,146 @@
+/*
+ * 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.blueprint.itests;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+import static org.ops4j.pax.exam.CoreOptions.equinox;
+import static org.ops4j.pax.exam.CoreOptions.options;
+import static org.ops4j.pax.exam.CoreOptions.systemProperty;
+
+import java.io.InputStream;
+import java.net.URL;
+import java.text.SimpleDateFormat;
+import java.util.Currency;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.Map;
+
+import org.apache.aries.blueprint.sample.Bar;
+import org.apache.aries.blueprint.sample.Foo;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.ops4j.pax.exam.CoreOptions;
+import org.ops4j.pax.exam.Option;
+import org.ops4j.pax.exam.junit.JUnit4TestRunner;
+import org.ops4j.pax.exam.options.MavenArtifactProvisionOption;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.Constants;
+import org.osgi.framework.ServiceReference;
+import org.osgi.service.blueprint.container.BlueprintContainer;
+import org.osgi.service.cm.Configuration;
+import org.osgi.service.cm.ConfigurationAdmin;
+import org.osgi.service.framework.CompositeBundle;
+import org.osgi.service.framework.CompositeBundleFactory;
+
+/**
+ * This test is based on the BlueprintContainerTest. The difference is that in this test,
+ * the blueprint sample is installed into a child framework that is associated with a composite
+ * bundle created from CompositeBundleFactory. This test only runs when the CompositeBundleFactory
+ * service is avail in the OSGi service registry.
+ *
+ */
+@RunWith(JUnit4TestRunner.class)
+public class BlueprintContainerBTCustomizerTest extends AbstractIntegrationTest {
+
+ @Test
+ public void test() throws Exception {
+ // Create a config to check the property placeholder
+ ConfigurationAdmin ca = getOsgiService(ConfigurationAdmin.class);
+ Configuration cf = ca.getConfiguration("blueprint-sample-placeholder", null);
+ Hashtable props = new Hashtable();
+ props.put("key.b", "10");
+ cf.update(props);
+
+
+ ServiceReference sr = bundleContext.getServiceReference("org.osgi.service.framework.CompositeBundleFactory");
+ if (sr != null) {
+ // install blueprint.sample into the composite context
+ CompositeBundleFactory cbf = (CompositeBundleFactory)bundleContext.getService(sr);
+
+ Map<String, String> frameworkConfig = new HashMap<String, String>();
+ // turn on the line below to enable telnet localhost 10000 to the child framework osgi console
+ // frameworkConfig.put("osgi.console", "10000");
+
+ // construct composite bundle information
+ Map<String, String> compositeManifest = new HashMap<String, String>();
+ compositeManifest.put(Constants.BUNDLE_SYMBOLICNAME, "test-composite");
+ compositeManifest.put(Constants.BUNDLE_VERSION, "1.0.0");
+ // this import-package is used by the blueprint.sample
+ compositeManifest.put(Constants.IMPORT_PACKAGE, "org.osgi.service.blueprint.container");
+ // this export-package is used by pax junit runner as it needs to see the blueprint sample package
+ // for the test after the blueprint sample is started.
+ compositeManifest.put(Constants.EXPORT_PACKAGE, "org.apache.aries.blueprint.sample");
+
+ CompositeBundle cb = cbf.installCompositeBundle(frameworkConfig, "test-composite", compositeManifest);
+
+ BundleContext compositeBundleContext = cb.getCompositeFramework().getBundleContext();
+ // install the blueprint sample onto the framework associated with the composite bundle
+ MavenArtifactProvisionOption mapo = CoreOptions.mavenBundle().groupId("org.apache.aries.blueprint").artifactId("org.apache.aries.blueprint.sample").version( "1.0.0-incubating-SNAPSHOT");
+ // let's use input stream to avoid invoking mvn url handler which isn't avail in the child framework.
+ InputStream is = new URL(mapo.getURL()).openStream();
+ Bundle bundle = compositeBundleContext.installBundle(mapo.getURL(), is);
+ assertNotNull(bundle);
+
+ // start the composite bundle then the blueprint sample
+ cb.start();
+ Thread.sleep(5000);
+ bundle.start();
+
+ // do the test
+ testBlueprintContainer(compositeBundleContext, bundle);
+
+ }
+ }
+
+ @org.ops4j.pax.exam.junit.Configuration
+ public static Option[] configuration() {
+ Option[] options = options(
+ // Log
+ mavenBundle("org.ops4j.pax.logging", "pax-logging-api"),
+ mavenBundle("org.ops4j.pax.logging", "pax-logging-service"),
+ // Felix Config Admin
+ mavenBundle("org.apache.felix", "org.apache.felix.configadmin"),
+ // Felix mvn url handler
+ mavenBundle("org.ops4j.pax.url", "pax-url-mvn"),
+
+
+ // this is how you set the default log level when using pax logging (logProfile)
+ systemProperty("org.ops4j.pax.logging.DefaultServiceLog.level").value("DEBUG"),
+
+ // Bundles
+ mavenBundle("org.apache.aries", "org.apache.aries.util"),
+ mavenBundle("org.apache.aries.blueprint", "org.apache.aries.blueprint"),
+ // don't install the blueprint sample here as it will be installed onto the same framework as the blueprint core bundle
+ //mavenBundle("org.apache.aries.blueprint", "org.apache.aries.blueprint.sample").noStart(),
+ mavenBundle("org.osgi", "org.osgi.compendium"),
+ //org.ops4j.pax.exam.container.def.PaxRunnerOptions.vmOption("-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"),
+
+ equinox().version("3.5.0")
+ );
+ options = updateOptions(options);
+ return options;
+ }
+
+}
Propchange: incubator/aries/trunk/blueprint/blueprint-itests/src/test/java/org/apache/aries/blueprint/itests/BlueprintContainerBTCustomizerTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/aries/trunk/blueprint/blueprint-itests/src/test/java/org/apache/aries/blueprint/itests/BlueprintContainerBTCustomizerTest.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: incubator/aries/trunk/blueprint/blueprint-itests/src/test/java/org/apache/aries/blueprint/itests/BlueprintContainerBTCustomizerTest.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: incubator/aries/trunk/blueprint/blueprint-itests/src/test/java/org/apache/aries/blueprint/itests/BlueprintContainerTest.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/blueprint/blueprint-itests/src/test/java/org/apache/aries/blueprint/itests/BlueprintContainerTest.java?rev=886236&r1=886235&r2=886236&view=diff
==============================================================================
--- incubator/aries/trunk/blueprint/blueprint-itests/src/test/java/org/apache/aries/blueprint/itests/BlueprintContainerTest.java (original)
+++ incubator/aries/trunk/blueprint/blueprint-itests/src/test/java/org/apache/aries/blueprint/itests/BlueprintContainerTest.java Wed Dec 2 18:22:14 2009
@@ -59,50 +59,9 @@
assertNotNull(bundle);
bundle.start();
-
- BlueprintContainer blueprintContainer = getBlueprintContainerForBundle("org.apache.aries.blueprint.sample", 5000);
- assertNotNull(blueprintContainer);
-
- Object obj = blueprintContainer.getComponentInstance("bar");
- assertNotNull(obj);
- assertEquals(Bar.class, obj.getClass());
- Bar bar = (Bar) obj;
- assertNotNull(bar.getContext());
- assertEquals("Hello FooBar", bar.getValue());
- assertNotNull(bar.getList());
- assertEquals(2, bar.getList().size());
- assertEquals("a list element", bar.getList().get(0));
- assertEquals(Integer.valueOf(5), bar.getList().get(1));
- obj = blueprintContainer.getComponentInstance("foo");
- assertNotNull(obj);
- assertEquals(Foo.class, obj.getClass());
- Foo foo = (Foo) obj;
- assertEquals(5, foo.getA());
- assertEquals(10, foo.getB());
- assertSame(bar, foo.getBar());
- assertEquals(Currency.getInstance("PLN"), foo.getCurrency());
- assertEquals(new SimpleDateFormat("yyyy.MM.dd").parse("2009.04.17"), foo.getDate());
-
- assertTrue(foo.isInitialized());
- assertFalse(foo.isDestroyed());
-
- obj = getOsgiService(Foo.class, 5000);
- assertNotNull(obj);
- assertSame(foo, obj);
-
- bundle.stop();
-
- Thread.sleep(1000);
-
- try {
- blueprintContainer = getBlueprintContainerForBundle("org.apache.aries.blueprint.sample", 1);
- fail("BlueprintContainer should have been unregistered");
- } catch (Exception e) {
- // Expected, as the module container should have been unregistered
- }
-
- assertTrue(foo.isInitialized());
- assertTrue(foo.isDestroyed());
+
+ // do the test
+ testBlueprintContainer(bundle);
}
@org.ops4j.pax.exam.junit.Configuration