You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by mn...@apache.org on 2010/01/18 17:29:27 UTC

svn commit: r900450 - in /incubator/aries/trunk/application: ./ application-itests/ application-itests/src/main/java/ application-itests/src/test/java/org/apache/aries/application/runtime/itests/ application-itests/src/test/java/org/apache/aries/sample...

Author: mnuttall
Date: Mon Jan 18 16:29:26 2010
New Revision: 900450

URL: http://svn.apache.org/viewvc?rev=900450&view=rev
Log:
Aries-89: Flesh out application itests

Added:
    incubator/aries/trunk/application/application-itests/src/test/java/org/apache/aries/sample/
    incubator/aries/trunk/application/application-itests/src/test/java/org/apache/aries/sample/impl/
    incubator/aries/trunk/application/application-itests/src/test/java/org/apache/aries/sample/impl/HelloWorldImpl.java
    incubator/aries/trunk/application/application-itests/src/test/resources/
    incubator/aries/trunk/application/application-itests/src/test/resources/APPLICATION.MF
    incubator/aries/trunk/application/application-itests/src/test/resources/sample-blueprint.xml
Removed:
    incubator/aries/trunk/application/application-itests/src/main/java/
Modified:
    incubator/aries/trunk/application/application-itests/pom.xml
    incubator/aries/trunk/application/application-itests/src/test/java/org/apache/aries/application/runtime/itests/AbstractIntegrationTest.java
    incubator/aries/trunk/application/application-itests/src/test/java/org/apache/aries/application/runtime/itests/BasicAppManagerTest.java
    incubator/aries/trunk/application/application-management/src/main/java/org/apache/aries/application/management/impl/AriesApplicationManagerImpl.java
    incubator/aries/trunk/application/application-runtime/src/main/java/org/apache/aries/application/runtime/impl/ApplicationContextImpl.java
    incubator/aries/trunk/application/pom.xml

Modified: incubator/aries/trunk/application/application-itests/pom.xml
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-itests/pom.xml?rev=900450&r1=900449&r2=900450&view=diff
==============================================================================
--- incubator/aries/trunk/application/application-itests/pom.xml (original)
+++ incubator/aries/trunk/application/application-itests/pom.xml Mon Jan 18 16:29:26 2010
@@ -60,6 +60,16 @@
 			<scope>provided</scope>
 		</dependency>
 		<dependency>
+			<groupId>org.apache.aries.application</groupId>
+			<artifactId>org.apache.aries.application.runtime.itest.interfaces</artifactId>
+			<scope>provided</scope>
+		</dependency>
+		<dependency>
+		  <groupId>org.apache.aries.testsupport</groupId>
+		  <artifactId>org.apache.aries.testsupport.unit</artifactId>
+		  <scope>provided</scope>
+	    </dependency>
+		<dependency>
 			<groupId>org.osgi</groupId>
 			<artifactId>org.osgi.core</artifactId>
 			<scope>provided</scope>

Modified: incubator/aries/trunk/application/application-itests/src/test/java/org/apache/aries/application/runtime/itests/AbstractIntegrationTest.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-itests/src/test/java/org/apache/aries/application/runtime/itests/AbstractIntegrationTest.java?rev=900450&r1=900449&r2=900450&view=diff
==============================================================================
--- incubator/aries/trunk/application/application-itests/src/test/java/org/apache/aries/application/runtime/itests/AbstractIntegrationTest.java (original)
+++ incubator/aries/trunk/application/application-itests/src/test/java/org/apache/aries/application/runtime/itests/AbstractIntegrationTest.java Mon Jan 18 16:29:26 2010
@@ -126,7 +126,8 @@
       tracker.open();
       // Note that the tracker is not closed to keep the reference
       // This is buggy, has the service reference may change i think
-      Object svc = type.cast(tracker.waitForService(timeout));
+      Object x = tracker.waitForService(timeout);
+      Object svc = type.cast(x);
       if (svc == null) {
         throw new RuntimeException("Gave up waiting for service " + flt);
       }

Modified: incubator/aries/trunk/application/application-itests/src/test/java/org/apache/aries/application/runtime/itests/BasicAppManagerTest.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-itests/src/test/java/org/apache/aries/application/runtime/itests/BasicAppManagerTest.java?rev=900450&r1=900449&r2=900450&view=diff
==============================================================================
--- incubator/aries/trunk/application/application-itests/src/test/java/org/apache/aries/application/runtime/itests/BasicAppManagerTest.java (original)
+++ incubator/aries/trunk/application/application-itests/src/test/java/org/apache/aries/application/runtime/itests/BasicAppManagerTest.java Mon Jan 18 16:29:26 2010
@@ -18,15 +18,22 @@
  */
 package org.apache.aries.application.runtime.itests;
 
+import static org.junit.Assert.assertEquals;
 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.File;
+import java.io.FileOutputStream;
 
-import org.apache.aries.application.filesystem.IDirectory;
+import org.apache.aries.application.management.ApplicationContext;
+import org.apache.aries.application.management.AriesApplication;
 import org.apache.aries.application.management.AriesApplicationManager;
 import org.apache.aries.application.utils.filesystem.FileSystem;
+import org.apache.aries.sample.HelloWorld;
+import org.apache.aries.unittest.fixture.ArchiveFixture;
+import org.apache.aries.unittest.fixture.ArchiveFixture.ZipFixture;
+import org.junit.BeforeClass;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.ops4j.pax.exam.Option;
@@ -34,27 +41,64 @@
 
 @RunWith(JUnit4TestRunner.class)
 public class BasicAppManagerTest extends AbstractIntegrationTest {
+  
+  @BeforeClass
+  public static void createApplications() throws Exception {
+    ZipFixture testEba = ArchiveFixture.newZip()
+      .jar("sample.jar")
+        .manifest().symbolicName("org.apache.aries.sample")
+          .attribute("Bundle-Version", "1.0.0")
+          .attribute("Import-Package", "org.apache.aries.sample")
+          .end()
+        .binary("org/apache/aries/sample/impl/HelloWorldImpl.class", 
+            BasicAppManagerTest.class.getClassLoader().getResourceAsStream("org/apache/aries/sample/impl/HelloWorldImpl.class"))
+        .binary("OSGI-INF/blueprint/sample-blueprint.xml", 
+            BasicAppManagerTest.class.getClassLoader().getResourceAsStream("sample-blueprint.xml"))
+        .end();
+      
+    FileOutputStream fout = new FileOutputStream("test.eba");
+    testEba.writeOut(fout);
+    fout.close();
+
+    ZipFixture testEba2 = testEba.binary("META-INF/APPLICATION.MF", 
+        BasicAppManagerTest.class.getClassLoader().getResourceAsStream("APPLICATION.MF"))
+        .end();
+    fout = new FileOutputStream("test2.eba");
+    testEba2.writeOut(fout);
+    fout.close();
+  }
+  
+  @Test
+  public void testAppWithoutApplicationManifest() throws Exception {
+    AriesApplicationManager manager = getOsgiService(AriesApplicationManager.class);
+    AriesApplication app = manager.createApplication(FileSystem.getFSRoot(new File("test.eba")));
+    ApplicationContext ctx = manager.install(app);
+    ctx.start();
+    
+    HelloWorld hw = getOsgiService(HelloWorld.class);
+    String result = hw.getMessage();
+    assertEquals (result, "hello world");
+    
+    ctx.stop();
+    manager.uninstall(ctx);
+  }
 
   @Test
-  public void getStarted() throws Exception {
+  public void testAppWithApplicationManifest() throws Exception {
     AriesApplicationManager manager = getOsgiService(AriesApplicationManager.class);
+    AriesApplication app = manager.createApplication(FileSystem.getFSRoot(new File("test2.eba")));
+    ApplicationContext ctx = manager.install(app);
+    ctx.start();
     
-    /**
-     * Now write some java code to generate an .eba that we can execute 
-      
-        File hack = new File(
-     
-        "c:/svn/trunk/application/application-management/target/ariesApplicationManagerImplTest/stored.eba");
-    IDirectory ihack = FileSystem.getFSRoot(hack);
+    HelloWorld hw = getOsgiService(HelloWorld.class);
+    String result = hw.getMessage();
+    assertEquals (result, "hello world");
     
-    if (ihack == null) { 
-      System.out.println ("** ihack is null");
-    } else { 
-      System.out.println ("** ihack is valid");
-    }
-    manager.createApplication(ihack); */
+    ctx.stop();
+    manager.uninstall(ctx);
   }
 
+  
   @org.ops4j.pax.exam.junit.Configuration
   public static Option[] configuration() {
     Option[] options = options(
@@ -75,9 +119,20 @@
         mavenBundle("org.apache.aries.application", "org.apache.aries.application.utils"),
         mavenBundle("org.apache.aries.application", "org.apache.aries.application.management"),
         mavenBundle("org.apache.aries.application", "org.apache.aries.application.runtime"),
+        mavenBundle("org.apache.aries.application", "org.apache.aries.application.runtime.itest.interfaces"),
         mavenBundle("org.apache.aries", "org.apache.aries.util"),
         mavenBundle("org.apache.aries.blueprint", "org.apache.aries.blueprint"), 
         mavenBundle("org.osgi", "org.osgi.compendium"),
+        mavenBundle("org.apache.aries.testsupport", "org.apache.aries.testsupport.unit"),
+        
+        /* For debugging, uncomment the next two lines
+        vmOption ("-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5006"),
+        waitForFrameworkStartup(),
+        
+        and add these imports:
+        import static org.ops4j.pax.exam.CoreOptions.waitForFrameworkStartup;
+        import static org.ops4j.pax.exam.container.def.PaxRunnerOptions.vmOption;
+        */
 
         equinox().version("3.5.0"));
     options = updateOptions(options);

Added: incubator/aries/trunk/application/application-itests/src/test/java/org/apache/aries/sample/impl/HelloWorldImpl.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-itests/src/test/java/org/apache/aries/sample/impl/HelloWorldImpl.java?rev=900450&view=auto
==============================================================================
--- incubator/aries/trunk/application/application-itests/src/test/java/org/apache/aries/sample/impl/HelloWorldImpl.java (added)
+++ incubator/aries/trunk/application/application-itests/src/test/java/org/apache/aries/sample/impl/HelloWorldImpl.java Mon Jan 18 16:29:26 2010
@@ -0,0 +1,29 @@
+/*
+ * 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.sample.impl;
+
+import org.apache.aries.sample.HelloWorld;
+
+public class HelloWorldImpl implements HelloWorld {
+
+  public String getMessage() {
+    return "hello world";
+  }
+
+}

Added: incubator/aries/trunk/application/application-itests/src/test/resources/APPLICATION.MF
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-itests/src/test/resources/APPLICATION.MF?rev=900450&view=auto
==============================================================================
--- incubator/aries/trunk/application/application-itests/src/test/resources/APPLICATION.MF (added)
+++ incubator/aries/trunk/application/application-itests/src/test/resources/APPLICATION.MF Mon Jan 18 16:29:26 2010
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Application-ManifestVersion: 1.0
+Application-Name: test application 2
+Application-SymbolicName: org.apache.aries.sample2
+Application-Version: 1.0
+Application-Content: org.apache.aries.sample; version=1.0.0
+

Added: incubator/aries/trunk/application/application-itests/src/test/resources/sample-blueprint.xml
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-itests/src/test/resources/sample-blueprint.xml?rev=900450&view=auto
==============================================================================
--- incubator/aries/trunk/application/application-itests/src/test/resources/sample-blueprint.xml (added)
+++ incubator/aries/trunk/application/application-itests/src/test/resources/sample-blueprint.xml Mon Jan 18 16:29:26 2010
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    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.
+-->
+<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
+            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0">
+  
+  <bean id="hello" class="org.apache.aries.sample.impl.HelloWorldImpl"/>
+  <service interface="org.apache.aries.sample.HelloWorld" ref="hello" />
+  
+</blueprint>

Modified: incubator/aries/trunk/application/application-management/src/main/java/org/apache/aries/application/management/impl/AriesApplicationManagerImpl.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-management/src/main/java/org/apache/aries/application/management/impl/AriesApplicationManagerImpl.java?rev=900450&r1=900449&r2=900450&view=diff
==============================================================================
--- incubator/aries/trunk/application/application-management/src/main/java/org/apache/aries/application/management/impl/AriesApplicationManagerImpl.java (original)
+++ incubator/aries/trunk/application/application-management/src/main/java/org/apache/aries/application/management/impl/AriesApplicationManagerImpl.java Mon Jan 18 16:29:26 2010
@@ -254,7 +254,7 @@
    * @throws IOException
    */
   private Manifest parseApplicationManifest (IDirectory source) throws IOException {
-    Manifest result = null;
+    Manifest result = new Manifest();
     IFile f = source.getFile(AppConstants.APPLICATION_MF);
     if (f != null) { 
       InputStream is = null;

Modified: incubator/aries/trunk/application/application-runtime/src/main/java/org/apache/aries/application/runtime/impl/ApplicationContextImpl.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-runtime/src/main/java/org/apache/aries/application/runtime/impl/ApplicationContextImpl.java?rev=900450&r1=900449&r2=900450&view=diff
==============================================================================
--- incubator/aries/trunk/application/application-runtime/src/main/java/org/apache/aries/application/runtime/impl/ApplicationContextImpl.java (original)
+++ incubator/aries/trunk/application/application-runtime/src/main/java/org/apache/aries/application/runtime/impl/ApplicationContextImpl.java Mon Jan 18 16:29:26 2010
@@ -39,6 +39,7 @@
   private BundleContext _bundleContext;
   
   public ApplicationContextImpl (BundleContext b, AriesApplication app) { 
+    _bundleContext = b;
     _application = app;
     _bundles = new HashMap<BundleInfo, Bundle>();
     _state = ApplicationState.INSTALLED;

Modified: incubator/aries/trunk/application/pom.xml
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/pom.xml?rev=900450&r1=900449&r2=900450&view=diff
==============================================================================
--- incubator/aries/trunk/application/pom.xml (original)
+++ incubator/aries/trunk/application/pom.xml Mon Jan 18 16:29:26 2010
@@ -93,6 +93,11 @@
 				<version>${version}</version>
 			</dependency>
 			<dependency>
+				<groupId>org.apache.aries.application</groupId>
+				<artifactId>org.apache.aries.application.runtime.itest.interfaces</artifactId>
+				<version>${version}</version>
+			</dependency>
+			<dependency>
 				<groupId>org.apache.aries.testsupport</groupId>
 				<artifactId>org.apache.aries.testsupport.unit</artifactId>
 				<version>${version}</version>
@@ -181,6 +186,7 @@
 		<module>application-management</module>
 		<module>application-converters</module>
 		<module>application-runtime</module>
+		<module>application-itest-interface</module>
 		<module>application-itests</module>
 	</modules>