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