You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by ri...@apache.org on 2011/03/07 22:04:46 UTC

svn commit: r1078950 - in /felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test: ./ recipes/ src/org/apache/felix/framework/test/ src/org/apache/felix/framework/test/fragment/b009a/ src/org/apache/felix/framework/test/fragment/b009b/ src/org...

Author: rickhall
Date: Mon Mar  7 21:04:45 2011
New Revision: 1078950

URL: http://svn.apache.org/viewvc?rev=1078950&view=rev
Log:
Add test for conflicting fragment imports and substitutable exports.

Added:
    felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/recipes/fragment.b009a.bnd
    felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/recipes/fragment.b009b.bnd
    felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/recipes/resolver.b015.bnd
    felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/fragment/b009a/
    felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/fragment/b009a/b009.txt
    felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/fragment/b009b/
    felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/fragment/b009b/b009.txt
    felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/resolver/b015/
    felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/resolver/b015/Placeholder.java
      - copied, changed from r1024437, felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/resolver/b014/Placeholder.java
Modified:
    felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/bnd.bnd
    felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/TestFragment.java
    felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/TestResolver.java

Modified: felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/bnd.bnd
URL: http://svn.apache.org/viewvc/felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/bnd.bnd?rev=1078950&r1=1078949&r2=1078950&view=diff
==============================================================================
--- felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/bnd.bnd (original)
+++ felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/bnd.bnd Mon Mar  7 21:04:45 2011
@@ -1,4 +1,4 @@
--runvm = -Xdebug, "-Xrunjdwp:transport=dt_socket,address=8001,server=y,suspend=n"
+-runvm = -Xdebug, "-Xrunjdwp:transport=dt_socket,address=8001,server=y,suspend=y"
 
 Private-Package: ${p}
 Include-Resource: \
@@ -9,11 +9,12 @@ Include-Resource: \
  resolver.b001.jar, resolver.b002.jar, resolver.b003.jar, resolver.b004.jar, \
  resolver.b005.jar, resolver.b006.jar, resolver.b007.jar, resolver.b008.jar, \
  resolver.b009.jar, resolver.b010.jar, resolver.b011.jar, resolver.b012.jar, \
- resolver.b013.jar, resolver.b014.jar, \
+ resolver.b013.jar, resolver.b014.jar, resolver.b015.jar, \
  fragment.b001.jar, fragment.b002.jar, fragment.b003.jar, \
  fragment.b004.jar, fragment.b005.jar, \
  fragment.b006.jar, fragment.b007.jar, fragment.b008.jar, \
- fragment.b009.jar, fragment.b010.jar, fragment.b011.jar, fragment.b012.jar, \
+ fragment.b009.jar, fragment.b009a.jar, fragment.b009b.jar, \
+ fragment.b010.jar, fragment.b011.jar, fragment.b012.jar, \
  fragment.b013.jar, \
  activationpolicy.b1.jar, activationpolicy.b2.jar, activationpolicy.b3.jar, \
  activationpolicy.b4a.jar, activationpolicy.b4b.jar, \
@@ -22,9 +23,10 @@ Include-Resource: \
 
 -buildpath: \
 	org.osgi.core; version=1.2.0, \
-	org.osgi.foundation; version=1.2.0, \
 	junit.junit
 
 -runproperties = report=true, felix.log.level=4
 
 Test-Cases = ${classes;extending;*FelixTestCase}
+# Test-Cases = org.apache.felix.framework.test.TestFragment
+# Test-Cases = org.apache.felix.framework.test.TestResolver

Added: felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/recipes/fragment.b009a.bnd
URL: http://svn.apache.org/viewvc/felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/recipes/fragment.b009a.bnd?rev=1078950&view=auto
==============================================================================
--- felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/recipes/fragment.b009a.bnd (added)
+++ felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/recipes/fragment.b009a.bnd Mon Mar  7 21:04:45 2011
@@ -0,0 +1,4 @@
+Bundle-SymbolicName: org.apache.felix.framework.test.fragment.b009a
+Export-Package: \
+ org.apache.felix.framework.test.fragment.b009; version=1.0.0; -noimport:=true
+Include-Resource: org/apache/felix/framework/test/fragment/b009=src/org/apache/felix/framework/test/fragment/b009a

Added: felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/recipes/fragment.b009b.bnd
URL: http://svn.apache.org/viewvc/felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/recipes/fragment.b009b.bnd?rev=1078950&view=auto
==============================================================================
--- felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/recipes/fragment.b009b.bnd (added)
+++ felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/recipes/fragment.b009b.bnd Mon Mar  7 21:04:45 2011
@@ -0,0 +1,4 @@
+Bundle-SymbolicName: org.apache.felix.framework.test.fragment.b009b
+Export-Package: \
+ org.apache.felix.framework.test.fragment.b009; version=2.0.0; -noimport:=true
+Include-Resource: org/apache/felix/framework/test/fragment/b009=src/org/apache/felix/framework/test/fragment/b009b

Added: felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/recipes/resolver.b015.bnd
URL: http://svn.apache.org/viewvc/felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/recipes/resolver.b015.bnd?rev=1078950&view=auto
==============================================================================
--- felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/recipes/resolver.b015.bnd (added)
+++ felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/recipes/resolver.b015.bnd Mon Mar  7 21:04:45 2011
@@ -0,0 +1,6 @@
+Bundle-SymbolicName: org.apache.felix.framework.test.resolver.b015
+Private-Package: org.apache.felix.framework.test.resolver.b015
+Export-Package: javax.swing,org.apache.felix.framework.test.resolver.b015
+Import-Package: javax.swing,org.apache.felix.framework.test.resolver.b015
+Include-Resource: javax/swing/resource.txt; literal="BAR"
+

Modified: felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/TestFragment.java
URL: http://svn.apache.org/viewvc/felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/TestFragment.java?rev=1078950&r1=1078949&r2=1078950&view=diff
==============================================================================
--- felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/TestFragment.java (original)
+++ felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/TestFragment.java Mon Mar  7 21:04:45 2011
@@ -36,6 +36,7 @@ public class TestFragment extends FelixT
     private Bundle m_bundleB = null;
     private Bundle m_bundleC = null;
     private Bundle m_bundleD = null;
+    private Bundle m_bundleE = null;
 
     public void testFragmentAttachment() throws Exception
     {
@@ -473,6 +474,40 @@ public class TestFragment extends FelixT
         {
             cleanup();
         }
+
+        // Scenario #5
+        // Attach two fragments with non-overlapping version ranges for
+        // an imported package where the matching candidates actually come
+        // from different bundles and therefore conflict.
+        try
+        {
+            is = this.getClass().getClassLoader().getResourceAsStream("fragment.b009a.jar");
+            m_bundleA = getBundleContext().installBundle("fragment.b009a.jar", is);
+            is = this.getClass().getClassLoader().getResourceAsStream("fragment.b009b.jar");
+            m_bundleB = getBundleContext().installBundle("fragment.b009b    .jar", is);
+            is = this.getClass().getClassLoader().getResourceAsStream("fragment.b010.jar");
+            m_bundleC = getBundleContext().installBundle("fragment.b010.jar", is);
+            is = this.getClass().getClassLoader().getResourceAsStream("fragment.b012.jar");
+            m_bundleD = getBundleContext().installBundle("fragment.b012.jar", is);
+            is = this.getClass().getClassLoader().getResourceAsStream("fragment.b013.jar");
+            m_bundleE = getBundleContext().installBundle("fragment.b013.jar", is);
+
+            getPackageAdmin().resolveBundles(new Bundle[] { m_bundleC });
+
+            assertEquals(
+                "Fragment should be resolved.", m_bundleD.getState(), Bundle.RESOLVED);
+            assertNotNull(
+                "Fragment resource should be found.", m_bundleC.getResource("b012.txt"));
+
+            assertEquals(
+                "Fragment should not be resolved.", m_bundleE.getState(), Bundle.INSTALLED);
+            assertNull(
+                "Fragment resource should not be found.", m_bundleC.getResource("b013.txt"));
+        }
+        finally
+        {
+            cleanup();
+        }
     }
 
     public void testFragmentUpdate() throws Exception
@@ -635,6 +670,18 @@ public class TestFragment extends FelixT
             }
             m_bundleD = null;
         }
+        if (m_bundleE != null)
+        {
+            try
+            {
+                m_bundleE.uninstall();
+            }
+            catch (Exception ex)
+            {
+                // Ummm?
+            }
+            m_bundleE = null;
+        }
         refreshAndWait();
     }
 }
\ No newline at end of file

Modified: felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/TestResolver.java
URL: http://svn.apache.org/viewvc/felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/TestResolver.java?rev=1078950&r1=1078949&r2=1078950&view=diff
==============================================================================
--- felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/TestResolver.java (original)
+++ felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/TestResolver.java Mon Mar  7 21:04:45 2011
@@ -288,6 +288,65 @@ public class TestResolver extends FelixT
         }
     }
 
+    public void testSubstitutableExport() throws Exception
+    {
+        InputStream is = null;
+
+        // Scenario
+        //
+        // Bundle 15 imports and exports javax.swing and imports and exports
+        // org.apache.felix.framework.test.resolver.b015. It should resolve to
+        // the system bundle's javax.swing package and to its own internal
+        // package.
+        try
+        {
+            is = this.getClass().getClassLoader().getResourceAsStream("resolver.b015.jar");
+            m_bundleA = getBundleContext().installBundle("resolver.b015.jar", is);
+
+            try
+            {
+                m_bundleA.start();
+            }
+            catch (BundleException ex)
+            {
+                assertTrue("Bundle should resolve: " + ex, false);
+            }
+            // Verify the bundle's state is active.
+            assertEquals("Bundle state should be active.", Bundle.ACTIVE, m_bundleA.getState());
+
+            PackageAdmin pa = getPackageAdmin();
+
+            // Get exporter of javax.swing.
+            ExportedPackage[] eps = pa.getExportedPackages("javax.swing");
+            // The only exporter should be the system bundle.
+            assertNotNull("No exporter for javax.swing", eps);
+            assertEquals("Only system bundle should be exporting javax.swing", 1, eps.length);
+            assertEquals("System bundle should be the exporter of javax.swing",
+                0, eps[0].getExportingBundle().getBundleId());
+            // Test bundle should be importing javax.swing.
+            Bundle[] importers = eps[0].getImportingBundles();
+            assertNotNull("No importer for javax.swing", importers);
+            assertEquals("Only one bundle should be importing javax.swing", 1, eps.length);
+            assertEquals("Bundle should be importing of javax.swing",
+                m_bundleA.getBundleId(), importers[0].getBundleId());
+            
+            // Get exporter of org.apache.felix.framework.test.resolver.b015.
+            eps = pa.getExportedPackages("org.apache.felix.framework.test.resolver.b015");
+            // The only exporter should be the system bundle.
+            assertNotNull("There should be a package exporter", eps);
+            assertEquals("There should be only one package exporter", 1, eps.length);
+            assertEquals("The test bundle should be the package exporter",
+                m_bundleA.getBundleId(), eps[0].getExportingBundle().getBundleId());
+            // No one should be importing org.apache.felix.framework.test.resolver.b015.
+            importers = eps[0].getImportingBundles();
+            assertEquals("No one should be importing package", 0, importers.length);
+        }
+        finally
+        {
+            cleanup();
+        }
+    }
+
     private void cleanup()
     {
         if (m_bundleA != null)

Added: felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/fragment/b009a/b009.txt
URL: http://svn.apache.org/viewvc/felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/fragment/b009a/b009.txt?rev=1078950&view=auto
==============================================================================
--- felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/fragment/b009a/b009.txt (added)
+++ felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/fragment/b009a/b009.txt Mon Mar  7 21:04:45 2011
@@ -0,0 +1 @@
+b009a
\ No newline at end of file

Added: felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/fragment/b009b/b009.txt
URL: http://svn.apache.org/viewvc/felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/fragment/b009b/b009.txt?rev=1078950&view=auto
==============================================================================
--- felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/fragment/b009b/b009.txt (added)
+++ felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/fragment/b009b/b009.txt Mon Mar  7 21:04:45 2011
@@ -0,0 +1 @@
+b009b
\ No newline at end of file

Copied: felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/resolver/b015/Placeholder.java (from r1024437, felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/resolver/b014/Placeholder.java)
URL: http://svn.apache.org/viewvc/felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/resolver/b015/Placeholder.java?p2=felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/resolver/b015/Placeholder.java&p1=felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/resolver/b014/Placeholder.java&r1=1024437&r2=1078950&rev=1078950&view=diff
==============================================================================
--- felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/resolver/b014/Placeholder.java (original)
+++ felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/resolver/b015/Placeholder.java Mon Mar  7 21:04:45 2011
@@ -16,7 +16,9 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.felix.framework.test.resolver.b014;
+package org.apache.felix.framework.test.resolver.b015;
+
+import org.apache.felix.framework.test.resolver.b014.*;
 
 /**
  * Currently, there are no classes for this test case; this class just