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