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 2009/07/30 21:20:21 UTC

svn commit: r799414 - in /felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test: ./ recipes/ src/org/apache/felix/framework/test/ src/org/apache/felix/framework/test/resolver/b008/ src/org/apache/felix/framework/test/resolver/b009/ src/org/ap...

Author: rickhall
Date: Thu Jul 30 19:20:20 2009
New Revision: 799414

URL: http://svn.apache.org/viewvc?rev=799414&view=rev
Log:
Add test case for detecting broken cycles. (FELIX-1422)

Added:
    felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/recipes/resolver.b008.bnd
    felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/recipes/resolver.b009.bnd
    felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/recipes/resolver.b010.bnd
    felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/resolver/b008/
    felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/resolver/b008/Placeholder.java
    felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/resolver/b009/
    felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/resolver/b009/Placeholder.java
    felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/resolver/b009/p1/
    felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/resolver/b009/p1/Placeholder.java
    felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/resolver/b009/p2/
    felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/resolver/b009/p2/Placeholder.java
    felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/resolver/b010/
    felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/resolver/b010/Placeholder.java
    felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/resolver/b010/p1/
    felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/resolver/b010/p1/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/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=799414&r1=799413&r2=799414&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 Thu Jul 30 19:20:20 2009
@@ -3,7 +3,8 @@
  classloading.b1.jar, classloading.b2.jar, classloading.b3.jar, \
  concurrency.b1.jar, \
  resolver.b001.jar, resolver.b002.jar, resolver.b003.jar, resolver.b004.jar, \
- resolver.b005.jar, resolver.b006.jar, resolver.b007.jar, \
+ resolver.b005.jar, resolver.b006.jar, resolver.b007.jar, resolver.b008.jar, \
+ resolver.b009.jar, resolver.b010.jar, \
  fragment.b1.jar, fragment.b2.jar, fragment.b3.jar, \
  fragment.b4.jar, fragment.b5.jar, \
  fragment.b6.jar, fragment.b7.jar, fragment.b8.jar, \

Added: felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/recipes/resolver.b008.bnd
URL: http://svn.apache.org/viewvc/felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/recipes/resolver.b008.bnd?rev=799414&view=auto
==============================================================================
--- felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/recipes/resolver.b008.bnd (added)
+++ felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/recipes/resolver.b008.bnd Thu Jul 30 19:20:20 2009
@@ -0,0 +1,5 @@
+Bundle-SymbolicName: org.apache.felix.framework.test.resolver.b008
+Private-Package: org.apache.felix.framework.test.resolver.b008
+Import-Package: \
+ org.apache.felix.framework.test.resolver.b010.p1, \
+ org.apache.felix.framework.test.resolver.b009.p1;resolution:="optional"

Added: felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/recipes/resolver.b009.bnd
URL: http://svn.apache.org/viewvc/felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/recipes/resolver.b009.bnd?rev=799414&view=auto
==============================================================================
--- felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/recipes/resolver.b009.bnd (added)
+++ felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/recipes/resolver.b009.bnd Thu Jul 30 19:20:20 2009
@@ -0,0 +1,4 @@
+Bundle-SymbolicName: org.apache.felix.framework.test.resolver.b009
+Private-Package: org.apache.felix.framework.test.resolver.b009
+Export-Package: org.apache.felix.framework.test.resolver.b009.p1,org.apache.felix.framework.test.resolver.b009.p2
+Import-Package: org.apache.felix.framework.test.resolver.b010.p1,org.apache.felix.framework.test.resolver.b010.p2

Added: felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/recipes/resolver.b010.bnd
URL: http://svn.apache.org/viewvc/felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/recipes/resolver.b010.bnd?rev=799414&view=auto
==============================================================================
--- felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/recipes/resolver.b010.bnd (added)
+++ felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/recipes/resolver.b010.bnd Thu Jul 30 19:20:20 2009
@@ -0,0 +1,4 @@
+Bundle-SymbolicName: org.apache.felix.framework.test.resolver.b010
+Private-Package: org.apache.felix.framework.test.resolver.b010
+Export-Package: org.apache.felix.framework.test.resolver.b010.p1
+Import-Package: org.apache.felix.framework.test.resolver.b009.p2

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=799414&r1=799413&r2=799414&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 Thu Jul 30 19:20:20 2009
@@ -44,11 +44,11 @@
         try
         {
             is = this.getClass().getClassLoader().getResourceAsStream("resolver.b001.jar");
-            m_bundleA = getBundleContext().installBundle("resolver.b1.jar", is);
+            m_bundleA = getBundleContext().installBundle("resolver.b001.jar", is);
             is = this.getClass().getClassLoader().getResourceAsStream("resolver.b002.jar");
-            m_bundleB = getBundleContext().installBundle("resolver.b2.jar", is);
+            m_bundleB = getBundleContext().installBundle("resolver.b002.jar", is);
             is = this.getClass().getClassLoader().getResourceAsStream("resolver.b003.jar");
-            m_bundleC = getBundleContext().installBundle("resolver.b3.jar", is);
+            m_bundleC = getBundleContext().installBundle("resolver.b003.jar", is);
 
             try
             {
@@ -80,9 +80,9 @@
         try
         {
             is = this.getClass().getClassLoader().getResourceAsStream("resolver.b006.jar");
-            m_bundleA = getBundleContext().installBundle("resolver.b6.jar", is);
+            m_bundleA = getBundleContext().installBundle("resolver.b006.jar", is);
             is = this.getClass().getClassLoader().getResourceAsStream("resolver.b007.jar");
-            m_bundleB = getBundleContext().installBundle("resolver.b7.jar", is);
+            m_bundleB = getBundleContext().installBundle("resolver.b007.jar", is);
 
             m_bundleA.start();
 
@@ -125,7 +125,7 @@
         try
         {
             is = this.getClass().getClassLoader().getResourceAsStream("resolver.b004.jar");
-            m_bundleA = getBundleContext().installBundle("resolver.b4.jar", is);
+            m_bundleA = getBundleContext().installBundle("resolver.b004.jar", is);
 
             m_bundleA.start();
 
@@ -150,7 +150,7 @@
             // Install a system bundle extension that exports Felix
             // framework package.
             is = this.getClass().getClassLoader().getResourceAsStream("resolver.b005.jar");
-            m_bundleB = getBundleContext().installBundle("resolver.b5.jar", is);
+            m_bundleB = getBundleContext().installBundle("resolver.b005.jar", is);
             // Now attempt to load the framework class, which should succeed.
             m_bundleA.loadClass("org.apache.felix.framework.Felix");
         }
@@ -160,6 +160,53 @@
         }
     }
 
+    public void testResolverBrokenCycles() throws Exception
+    {
+        InputStream is = null;
+
+        // Scenario
+        //
+        // Bundle 8 has an optional import on bundle 9 and a mandatory import
+        // on bundle 10. Bundle 9 has an import on bundle 10 and for a package
+        // that doesn't exist, while bundle 10 has a cyclical import on 9.
+        // During the resolving process, bundle 10 will assume bundle 9 can
+        // resolve to break the cycle, but since bundle 10 cannot resolve the
+        // resolver must clean up after the assumption, which means that bundle
+        // 10 can no longer resolver as well.
+
+        // NOTE: This test case is dependent upon the order in which the packages
+        // are resolved; the resolver must try to resolve bundle 8's import for
+        // bundle 9 before its import for bundle 10, otherwise it won't test the
+        // correct issue.
+
+        try
+        {
+            is = this.getClass().getClassLoader().getResourceAsStream("resolver.b008.jar");
+            m_bundleA = getBundleContext().installBundle("resolver.b008.jar", is);
+            is = this.getClass().getClassLoader().getResourceAsStream("resolver.b009.jar");
+            m_bundleB = getBundleContext().installBundle("resolver.b009.jar", is);
+            is = this.getClass().getClassLoader().getResourceAsStream("resolver.b010.jar");
+            m_bundleC = getBundleContext().installBundle("resolver.b010.jar", is);
+
+            try
+            {
+                m_bundleA.start();
+                assertTrue("Bundle should not resolve.", false);
+            }
+            catch (BundleException ex)
+            {
+                // We expect a bundle exception, since the bundle should not
+                // resolve.
+            }
+            // Verify the bundle's state is still resolved.
+            assertEquals("Bundle state should be installed.", Bundle.INSTALLED, m_bundleA.getState());
+        }
+        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/resolver/b008/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/b008/Placeholder.java?rev=799414&view=auto
==============================================================================
--- felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/resolver/b008/Placeholder.java (added)
+++ felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/resolver/b008/Placeholder.java Thu Jul 30 19:20:20 2009
@@ -0,0 +1,30 @@
+/*
+ * 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.felix.framework.test.resolver.b008;
+
+/**
+ * Currently, there are no classes for this test case; this class just
+ * serves as a placeholder to make the package naming explicit for the
+ * example bundles that only contain metadata and to eliminate some
+ * warnings from BND.
+**/
+public class Placeholder
+{
+
+}
\ No newline at end of file

Added: felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/resolver/b009/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/b009/Placeholder.java?rev=799414&view=auto
==============================================================================
--- felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/resolver/b009/Placeholder.java (added)
+++ felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/resolver/b009/Placeholder.java Thu Jul 30 19:20:20 2009
@@ -0,0 +1,30 @@
+/*
+ * 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.felix.framework.test.resolver.b009;
+
+/**
+ * Currently, there are no classes for this test case; this class just
+ * serves as a placeholder to make the package naming explicit for the
+ * example bundles that only contain metadata and to eliminate some
+ * warnings from BND.
+**/
+public class Placeholder
+{
+
+}
\ No newline at end of file

Added: felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/resolver/b009/p1/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/b009/p1/Placeholder.java?rev=799414&view=auto
==============================================================================
--- felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/resolver/b009/p1/Placeholder.java (added)
+++ felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/resolver/b009/p1/Placeholder.java Thu Jul 30 19:20:20 2009
@@ -0,0 +1,30 @@
+/*
+ * 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.felix.framework.test.resolver.b009.p1;
+
+/**
+ * Currently, there are no classes for this test case; this class just
+ * serves as a placeholder to make the package naming explicit for the
+ * example bundles that only contain metadata and to eliminate some
+ * warnings from BND.
+**/
+public class Placeholder
+{
+
+}
\ No newline at end of file

Added: felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/resolver/b009/p2/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/b009/p2/Placeholder.java?rev=799414&view=auto
==============================================================================
--- felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/resolver/b009/p2/Placeholder.java (added)
+++ felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/resolver/b009/p2/Placeholder.java Thu Jul 30 19:20:20 2009
@@ -0,0 +1,30 @@
+/*
+ * 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.felix.framework.test.resolver.b009.p2;
+
+/**
+ * Currently, there are no classes for this test case; this class just
+ * serves as a placeholder to make the package naming explicit for the
+ * example bundles that only contain metadata and to eliminate some
+ * warnings from BND.
+**/
+public class Placeholder
+{
+
+}
\ No newline at end of file

Added: felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/resolver/b010/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/b010/Placeholder.java?rev=799414&view=auto
==============================================================================
--- felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/resolver/b010/Placeholder.java (added)
+++ felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/resolver/b010/Placeholder.java Thu Jul 30 19:20:20 2009
@@ -0,0 +1,30 @@
+/*
+ * 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.felix.framework.test.resolver.b010;
+
+/**
+ * Currently, there are no classes for this test case; this class just
+ * serves as a placeholder to make the package naming explicit for the
+ * example bundles that only contain metadata and to eliminate some
+ * warnings from BND.
+**/
+public class Placeholder
+{
+
+}
\ No newline at end of file

Added: felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/resolver/b010/p1/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/b010/p1/Placeholder.java?rev=799414&view=auto
==============================================================================
--- felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/resolver/b010/p1/Placeholder.java (added)
+++ felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/resolver/b010/p1/Placeholder.java Thu Jul 30 19:20:20 2009
@@ -0,0 +1,30 @@
+/*
+ * 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.felix.framework.test.resolver.b010.p1;
+
+/**
+ * Currently, there are no classes for this test case; this class just
+ * serves as a placeholder to make the package naming explicit for the
+ * example bundles that only contain metadata and to eliminate some
+ * warnings from BND.
+**/
+public class Placeholder
+{
+
+}
\ No newline at end of file