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 2010/05/25 20:42:20 UTC

svn commit: r948163 - /felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/TestFragment.java

Author: rickhall
Date: Tue May 25 18:42:20 2010
New Revision: 948163

URL: http://svn.apache.org/viewvc?rev=948163&view=rev
Log:
Test if fragments resolve correctly after being updated.

Modified:
    felix/sandbox/rickhall/bnd-test/org.apache.felix.framework.test/src/org/apache/felix/framework/test/TestFragment.java

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=948163&r1=948162&r2=948163&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 Tue May 25 18:42:20 2010
@@ -474,6 +474,81 @@ public class TestFragment extends FelixT
         }
     }
 
+    public void testFragmentUpdate() throws Exception
+    {
+        InputStream is = null;
+
+        // Scenario #1
+        //
+        // Install host and fragment. Update the fragment and then resolve
+        // the host and verify everyone is resolved and we can access a
+        // fragment class.
+        try
+        {
+            is = this.getClass().getClassLoader().getResourceAsStream("fragment.b001.jar");
+            m_bundleA = getBundleContext().installBundle("fragment.b001.jar", is);
+            is = this.getClass().getClassLoader().getResourceAsStream("fragment.b003.jar");
+            m_bundleB = getBundleContext().installBundle("fragment.b003.jar", is);
+            is = this.getClass().getClassLoader().getResourceAsStream("fragment.b003.jar");
+            m_bundleB.update(is);
+
+            // Verify that importer has no wires to the fragment.
+            PackageAdmin pa = getPackageAdmin();
+            assertTrue("Host should resolve", pa.resolveBundles(new Bundle[] { m_bundleA }));
+            assertEquals("Host should be resolved", Bundle.RESOLVED, m_bundleA.getState());
+            assertEquals("Fragment should be resolved", Bundle.RESOLVED, m_bundleB.getState());
+            try
+            {
+                Class clazz = m_bundleA.loadClass(
+                    "org.apache.felix.framework.test.fragment.b003.FragmentClass");
+                assertNotNull("Class should not be null", clazz);
+            }
+            catch (ClassNotFoundException ex)
+            {
+                assertTrue("Class should be found", false);
+            }
+        }
+        finally
+        {
+            cleanup();
+        }
+
+        // Scenario #2
+        //
+        // Install host and fragment. Update the fragment and then resolve
+        // the fragment and verify everyone is resolved and we can access a
+        // fragment class.
+        try
+        {
+            is = this.getClass().getClassLoader().getResourceAsStream("fragment.b001.jar");
+            m_bundleA = getBundleContext().installBundle("fragment.b001.jar", is);
+            is = this.getClass().getClassLoader().getResourceAsStream("fragment.b003.jar");
+            m_bundleB = getBundleContext().installBundle("fragment.b003.jar", is);
+            is = this.getClass().getClassLoader().getResourceAsStream("fragment.b003.jar");
+            m_bundleB.update(is);
+
+            // Verify that importer has no wires to the fragment.
+            PackageAdmin pa = getPackageAdmin();
+            assertTrue("Host should resolve", pa.resolveBundles(new Bundle[] { m_bundleB }));
+            assertEquals("Host should be resolved", Bundle.RESOLVED, m_bundleA.getState());
+            assertEquals("Fragment should be resolved", Bundle.RESOLVED, m_bundleB.getState());
+            try
+            {
+                Class clazz = m_bundleA.loadClass(
+                    "org.apache.felix.framework.test.fragment.b003.FragmentClass");
+                assertNotNull("Class should not be null", clazz);
+            }
+            catch (ClassNotFoundException ex)
+            {
+                assertTrue("Class should be found", false);
+            }
+        }
+        finally
+        {
+            cleanup();
+        }
+    }
+
     public void testFragmentMisc() throws Exception
     {
         InputStream is = null;