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