You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by fm...@apache.org on 2009/08/20 09:50:38 UTC

svn commit: r806074 - in /felix/trunk/configadmin/src/test/java/org/apache/felix/cm/integration: ConfigurationBindingTest.java ConfigurationTestBase.java MultiServiceFactoryPIDTest.java

Author: fmeschbe
Date: Thu Aug 20 07:50:38 2009
New Revision: 806074

URL: http://svn.apache.org/viewvc?rev=806074&view=rev
Log:
FELIX-1488 Since the reassignement of configuration is desired but not
actually trigger (according to BJ Hargrave) the test cases are modified
to cope with or without configuration reassignment. Currently the tests
run with expecting reassignment disabled.

Modified:
    felix/trunk/configadmin/src/test/java/org/apache/felix/cm/integration/ConfigurationBindingTest.java
    felix/trunk/configadmin/src/test/java/org/apache/felix/cm/integration/ConfigurationTestBase.java
    felix/trunk/configadmin/src/test/java/org/apache/felix/cm/integration/MultiServiceFactoryPIDTest.java

Modified: felix/trunk/configadmin/src/test/java/org/apache/felix/cm/integration/ConfigurationBindingTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/configadmin/src/test/java/org/apache/felix/cm/integration/ConfigurationBindingTest.java?rev=806074&r1=806073&r2=806074&view=diff
==============================================================================
--- felix/trunk/configadmin/src/test/java/org/apache/felix/cm/integration/ConfigurationBindingTest.java (original)
+++ felix/trunk/configadmin/src/test/java/org/apache/felix/cm/integration/ConfigurationBindingTest.java Thu Aug 20 07:50:38 2009
@@ -574,13 +574,33 @@
         // ==> configuration is bound to locationB
         TestCase.assertEquals( locationB, config.getBundleLocation() );
 
-        // ==> configuration removed from service ms1
-        TestCase.assertNull( testerA1.props );
-        TestCase.assertEquals( 2, testerA1.numManagedServiceUpdatedCalls );
-
-        // ==> configuration supplied to the service ms2
-        TestCase.assertNotNull( testerB1.props );
-        TestCase.assertEquals( 1, testerB1.numManagedServiceUpdatedCalls );
+        /*
+         * According to BJ Hargrave configuration is not re-dispatched
+         * due to setting the bundle location.
+         * <p>
+         * Therefore, we have two sets one with re-dispatch expectation and
+         * one without re-dispatch expectation.
+         */
+        if ( REDISPATCH_CONFIGURATION_ON_SET_BUNDLE_LOCATION )
+        {
+            // ==> configuration removed from service ms1
+            TestCase.assertNull( testerA1.props );
+            TestCase.assertEquals( 2, testerA1.numManagedServiceUpdatedCalls );
+
+            // ==> configuration supplied to the service ms2
+            TestCase.assertNotNull( testerB1.props );
+            TestCase.assertEquals( 1, testerB1.numManagedServiceUpdatedCalls );
+        }
+        else
+        {
+            // ==> configuration remains for service ms1
+            TestCase.assertNotNull( testerA1.props );
+            TestCase.assertEquals( 1, testerA1.numManagedServiceUpdatedCalls );
+
+            // ==> configuration not supplied to the service ms2
+            TestCase.assertNull( testerB1.props );
+            TestCase.assertEquals( 0, testerB1.numManagedServiceUpdatedCalls );
+        }
     }
 
 
@@ -625,13 +645,33 @@
         // ==> configuration is bound to locationB
         TestCase.assertEquals( locationB, config.getBundleLocation() );
 
-        // ==> configuration removed from service ms1
-        TestCase.assertNull( testerA1.props );
-        TestCase.assertEquals( 2, testerA1.numManagedServiceUpdatedCalls );
-
-        // ==> configuration supplied to the service ms2
-        TestCase.assertNotNull( testerB1.props );
-        TestCase.assertEquals( 1, testerB1.numManagedServiceUpdatedCalls );
+        /*
+         * According to BJ Hargrave configuration is not re-dispatched
+         * due to setting the bundle location.
+         * <p>
+         * Therefore, we have two sets one with re-dispatch expectation and
+         * one without re-dispatch expectation.
+         */
+        if ( REDISPATCH_CONFIGURATION_ON_SET_BUNDLE_LOCATION )
+        {
+            // ==> configuration removed from service ms1
+            TestCase.assertNull( testerA1.props );
+            TestCase.assertEquals( 2, testerA1.numManagedServiceUpdatedCalls );
+
+            // ==> configuration supplied to the service ms2
+            TestCase.assertNotNull( testerB1.props );
+            TestCase.assertEquals( 1, testerB1.numManagedServiceUpdatedCalls );
+        }
+        else
+        {
+            // ==> configuration remains for service ms1
+            TestCase.assertNotNull( testerA1.props );
+            TestCase.assertEquals( 1, testerA1.numManagedServiceUpdatedCalls );
+
+            // ==> configuration not supplied to the service ms2
+            TestCase.assertNull( testerB1.props );
+            TestCase.assertEquals( 0, testerB1.numManagedServiceUpdatedCalls );
+        }
     }
 
 
@@ -674,14 +714,35 @@
         // ==> configuration is bound to locationB
         TestCase.assertEquals( locationB, config.getBundleLocation() );
 
-        // ==> configuration removed from service ms1
-        TestCase.assertNull( testerA1.configs.get( pid ));
-        TestCase.assertEquals( 1, testerA1.numManagedServiceFactoryUpdatedCalls );
-        TestCase.assertEquals( 1, testerA1.numManagedServiceFactoryDeleteCalls );
-
-        // ==> configuration supplied to the service ms2
-        TestCase.assertNotNull( testerB1.configs.get( pid ) );
-        TestCase.assertEquals( 1, testerB1.numManagedServiceFactoryUpdatedCalls );
+        /*
+         * According to BJ Hargrave configuration is not re-dispatched
+         * due to setting the bundle location.
+         * <p>
+         * Therefore, we have two sets one with re-dispatch expectation and
+         * one without re-dispatch expectation.
+         */
+        if ( REDISPATCH_CONFIGURATION_ON_SET_BUNDLE_LOCATION )
+        {
+            // ==> configuration removed from service ms1
+            TestCase.assertNull( testerA1.configs.get( pid ));
+            TestCase.assertEquals( 1, testerA1.numManagedServiceFactoryUpdatedCalls );
+            TestCase.assertEquals( 1, testerA1.numManagedServiceFactoryDeleteCalls );
+
+            // ==> configuration supplied to the service ms2
+            TestCase.assertNotNull( testerB1.configs.get( pid ) );
+            TestCase.assertEquals( 1, testerB1.numManagedServiceFactoryUpdatedCalls );
+        }
+        else
+        {
+            // ==> configuration not removed from service ms1
+            TestCase.assertNotNull( testerA1.configs.get( pid ));
+            TestCase.assertEquals( 1, testerA1.numManagedServiceFactoryUpdatedCalls );
+            TestCase.assertEquals( 0, testerA1.numManagedServiceFactoryDeleteCalls );
+
+            // ==> configuration not supplied to the service ms2
+            TestCase.assertNull( testerB1.configs.get( pid ) );
+            TestCase.assertEquals( 0, testerB1.numManagedServiceFactoryUpdatedCalls );
+        }
     }
 
 
@@ -728,14 +789,35 @@
         // ==> configuration is bound to locationB
         TestCase.assertEquals( locationB, config.getBundleLocation() );
 
-        // ==> configuration removed from service ms1
-        TestCase.assertNull( testerA1.configs.get( pid ));
-        TestCase.assertEquals( 1, testerA1.numManagedServiceFactoryUpdatedCalls );
-        TestCase.assertEquals( 1, testerA1.numManagedServiceFactoryDeleteCalls );
-
-        // ==> configuration supplied to the service ms2
-        TestCase.assertNotNull( testerB1.configs.get( pid ) );
-        TestCase.assertEquals( 1, testerB1.numManagedServiceFactoryUpdatedCalls );
+        /*
+         * According to BJ Hargrave configuration is not re-dispatched
+         * due to setting the bundle location.
+         * <p>
+         * Therefore, we have two sets one with re-dispatch expectation and
+         * one without re-dispatch expectation.
+         */
+        if ( REDISPATCH_CONFIGURATION_ON_SET_BUNDLE_LOCATION )
+        {
+            // ==> configuration removed from service ms1
+            TestCase.assertNull( testerA1.configs.get( pid ));
+            TestCase.assertEquals( 1, testerA1.numManagedServiceFactoryUpdatedCalls );
+            TestCase.assertEquals( 1, testerA1.numManagedServiceFactoryDeleteCalls );
+
+            // ==> configuration supplied to the service ms2
+            TestCase.assertNotNull( testerB1.configs.get( pid ) );
+            TestCase.assertEquals( 1, testerB1.numManagedServiceFactoryUpdatedCalls );
+        }
+        else
+        {
+            // ==> configuration not removed from service ms1
+            TestCase.assertNotNull( testerA1.configs.get( pid ));
+            TestCase.assertEquals( 1, testerA1.numManagedServiceFactoryUpdatedCalls );
+            TestCase.assertEquals( 0, testerA1.numManagedServiceFactoryDeleteCalls );
+
+            // ==> configuration not supplied to the service ms2
+            TestCase.assertNull( testerB1.configs.get( pid ) );
+            TestCase.assertEquals( 0, testerB1.numManagedServiceFactoryUpdatedCalls );
+        }
     }
 
 
@@ -779,12 +861,31 @@
         delay();
         delay();
 
-        // ==> configuration is bound to locationB
-        TestCase.assertEquals( locationB, config.getBundleLocation() );
-
-        // ==> configuration supplied to the service ms2
-        TestCase.assertNotNull( testerB1.props );
-        TestCase.assertEquals( 1, testerB1.numManagedServiceUpdatedCalls );
+        /*
+         * According to BJ Hargrave configuration is not re-dispatched
+         * due to setting the bundle location.
+         * <p>
+         * Therefore, we have two sets one with re-dispatch expectation and
+         * one without re-dispatch expectation.
+         */
+        if ( REDISPATCH_CONFIGURATION_ON_SET_BUNDLE_LOCATION )
+        {
+            // ==> configuration is bound to locationB
+            TestCase.assertEquals( locationB, config.getBundleLocation() );
+
+            // ==> configuration supplied to the service ms2
+            TestCase.assertNotNull( testerB1.props );
+            TestCase.assertEquals( 1, testerB1.numManagedServiceUpdatedCalls );
+        }
+        else
+        {
+            // ==> configuration is unbound
+            TestCase.assertNull( config.getBundleLocation() );
+
+            // ==> configuration not supplied to the service ms2
+            TestCase.assertNull( testerB1.props );
+            TestCase.assertEquals( 0, testerB1.numManagedServiceUpdatedCalls );
+        }
     }
 
 
@@ -828,11 +929,30 @@
         delay();
         delay();
 
-        // ==> configuration is bound to locationB
-        TestCase.assertEquals( locationB, config.getBundleLocation() );
-
-        // ==> configuration supplied to the service ms2
-        TestCase.assertNotNull( testerB1.configs.get( pid ) );
-        TestCase.assertEquals( 1, testerB1.numManagedServiceFactoryUpdatedCalls );
+        /*
+         * According to BJ Hargrave configuration is not re-dispatched
+         * due to setting the bundle location.
+         * <p>
+         * Therefore, we have two sets one with re-dispatch expectation and
+         * one without re-dispatch expectation.
+         */
+        if ( REDISPATCH_CONFIGURATION_ON_SET_BUNDLE_LOCATION )
+        {
+            // ==> configuration is bound to locationB
+            TestCase.assertEquals( locationB, config.getBundleLocation() );
+
+            // ==> configuration supplied to the service ms2
+            TestCase.assertNotNull( testerB1.configs.get( pid ) );
+            TestCase.assertEquals( 1, testerB1.numManagedServiceFactoryUpdatedCalls );
+        }
+        else
+        {
+            // ==> configuration is unbound
+            TestCase.assertNull( config.getBundleLocation() );
+
+            // ==> configuration not supplied to the service ms2
+            TestCase.assertNull( testerB1.configs.get( pid ) );
+            TestCase.assertEquals( 0, testerB1.numManagedServiceFactoryUpdatedCalls );
+        }
     }
 }

Modified: felix/trunk/configadmin/src/test/java/org/apache/felix/cm/integration/ConfigurationTestBase.java
URL: http://svn.apache.org/viewvc/felix/trunk/configadmin/src/test/java/org/apache/felix/cm/integration/ConfigurationTestBase.java?rev=806074&r1=806073&r2=806074&view=diff
==============================================================================
--- felix/trunk/configadmin/src/test/java/org/apache/felix/cm/integration/ConfigurationTestBase.java (original)
+++ felix/trunk/configadmin/src/test/java/org/apache/felix/cm/integration/ConfigurationTestBase.java Thu Aug 20 07:50:38 2009
@@ -53,6 +53,24 @@
 public abstract class ConfigurationTestBase
 {
 
+    /**
+     * There is currently an open issue in the specification in whether a
+     * call to Configuration.setBundleLocation() might trigger a configuration
+     * update or not.
+     * We have test cases in our integration test suite for both cases. To
+     * enable the respective tests set this field accordingly:
+     * <dl>
+     * <dt>false</dt>
+     * <dd>Expect configuration to <b>NOT</b> be redispatched. That is existing
+     * configurations are kept and other services are not updated</dd>
+     * <dt>true</dt>
+     * <dd>Expect configuration to be redispatched. That is existing configuration
+     * is revoked (update(null) or delete calls) and new matching services are
+     * updated.</dd>
+     * </dl>
+     */
+    public static final boolean REDISPATCH_CONFIGURATION_ON_SET_BUNDLE_LOCATION = false;
+
     @Inject
     protected BundleContext bundleContext;
 

Modified: felix/trunk/configadmin/src/test/java/org/apache/felix/cm/integration/MultiServiceFactoryPIDTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/configadmin/src/test/java/org/apache/felix/cm/integration/MultiServiceFactoryPIDTest.java?rev=806074&r1=806073&r2=806074&view=diff
==============================================================================
--- felix/trunk/configadmin/src/test/java/org/apache/felix/cm/integration/MultiServiceFactoryPIDTest.java (original)
+++ felix/trunk/configadmin/src/test/java/org/apache/felix/cm/integration/MultiServiceFactoryPIDTest.java Thu Aug 20 07:50:38 2009
@@ -165,8 +165,23 @@
 
             delay();
 
-            // expect configuration reassigned
-            TestCase.assertEquals( bundle2.getLocation(), config.getBundleLocation() );
+            /*
+             * According to BJ Hargrave configuration is not re-dispatched
+             * due to setting the bundle location.
+             * <p>
+             * Therefore, we have two sets one with re-dispatch expectation and
+             * one without re-dispatch expectation.
+             */
+            if ( REDISPATCH_CONFIGURATION_ON_SET_BUNDLE_LOCATION )
+            {
+                // expect configuration reassigned
+                TestCase.assertEquals( bundle2.getLocation(), config.getBundleLocation() );
+            }
+            else
+            {
+                // expected configuration unbound
+                TestCase.assertNull( config.getBundleLocation() );
+            }
 
             // remove the configuration for good
             deleteConfig( pid );
@@ -231,8 +246,23 @@
 
                 delay();
 
-                // expect configuration reassigned
-                TestCase.assertEquals( bundle2.getLocation(), config.getBundleLocation() );
+                /*
+                 * According to BJ Hargrave configuration is not re-dispatched
+                 * due to setting the bundle location.
+                 * <p>
+                 * Therefore, we have two sets one with re-dispatch expectation and
+                 * one without re-dispatch expectation.
+                 */
+                if ( REDISPATCH_CONFIGURATION_ON_SET_BUNDLE_LOCATION )
+                {
+                    // expect configuration reassigned
+                    TestCase.assertEquals( bundle2.getLocation(), config.getBundleLocation() );
+                }
+                else
+                {
+                    // expected configuration unbound
+                    TestCase.assertNull( config.getBundleLocation() );
+                }
             }
             else if ( bundle2.getLocation().equals( config.getBundleLocation() ) )
             {
@@ -249,8 +279,23 @@
 
                 delay();
 
-                // expect configuration reassigned
-                TestCase.assertEquals( bundle.getLocation(), config.getBundleLocation() );
+                /*
+                 * According to BJ Hargrave configuration is not re-dispatched
+                 * due to setting the bundle location.
+                 * <p>
+                 * Therefore, we have two sets one with re-dispatch expectation and
+                 * one without re-dispatch expectation.
+                 */
+                if ( REDISPATCH_CONFIGURATION_ON_SET_BUNDLE_LOCATION )
+                {
+                    // expect configuration reassigned
+                    TestCase.assertEquals( bundle.getLocation(), config.getBundleLocation() );
+                }
+                else
+                {
+                    // expected configuration unbound
+                    TestCase.assertNull( config.getBundleLocation() );
+                }
             }
             else
             {