Rewrite test to be sure to use the correct config admin bundle
authorCarsten Ziegeler <cziegeler@apache.org>
Fri, 22 Feb 2013 13:21:06 +0000 (13:21 +0000)
committerCarsten Ziegeler <cziegeler@apache.org>
Fri, 22 Feb 2013 13:21:06 +0000 (13:21 +0000)
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1449026 13f79535-47bb-0310-9956-ffa450edef68

src/test/java/org/apache/sling/installer/it/ConfigInstallTest.java
src/test/java/org/apache/sling/installer/it/OsgiInstallerTestBase.java

index 58dc693..d8c29b4 100644 (file)
@@ -59,6 +59,7 @@ public class ConfigInstallTest extends OsgiInstallerTestBase implements Configur
         serviceRegistration = bundleContext.registerService(ConfigurationListener.class.getName(), this, null);
     }
 
+    @Override
     @After
     public void tearDown() {
         super.tearDown();
@@ -108,43 +109,37 @@ public class ConfigInstallTest extends OsgiInstallerTestBase implements Configur
 
     @Test
     public void testDeferredConfigInstall() throws Exception {
-
-       final String cfgName = "org.apache.felix.configadmin";
-       Bundle configAdmin = null;
-       // in some cases more than one config admin is installed!
-       // therefore we just stopp all of them and restart the first one
-       for(Bundle b : bundleContext.getBundles()) {
-               if (b.getSymbolicName().equals(cfgName)) {
-                       configAdmin = b;
-                       break;
-               }
-       }
-       assertNotNull(cfgName + " bundle must be found", configAdmin);
+        // get config admin bundle and wait for service
+       final Bundle configAdmin = this.getConfigAdminBundle();
+       assertNotNull("ConfigAdmin bundle must be found", configAdmin);
        waitForConfigAdmin(true);
 
+       // check that configuration is not available
+        final String cfgPid = getClass().getSimpleName() + ".deferred." + System.currentTimeMillis();
+        assertNull("Config " + cfgPid + " must not be found before test", findConfiguration(cfgPid));
+       // create new configuration object
        final Dictionary<String, Object> cfgData = new Hashtable<String, Object>();
        cfgData.put("foo", "bar");
-       final String cfgPid = getClass().getSimpleName() + ".deferred." + System.currentTimeMillis();
-       assertNull("Config " + cfgPid + " must not be found before test", findConfiguration(cfgPid));
 
-       // Config installs must be deferred if ConfigAdmin service is stopped
-        for(Bundle b : bundleContext.getBundles()) {
-            if (b.getSymbolicName().equals(cfgName)) {
-                b.stop();
-            }
-        }
+       // Configuration installs must be deferred if ConfigAdmin service is stopped
+        configAdmin.stop();
        waitForConfigAdmin(false);
+       // add new configuration
         final InstallableResource[] rsrc = getInstallableResource(cfgPid, cfgData);
         installer.updateResources(URL_SCHEME, rsrc, null);
+        // let's wait a little bit and restart configuration admin
         sleep(1000L);
         configAdmin.start();
        waitForConfigAdmin(true);
         waitForConfiguration("Config must be installed once ConfigurationAdmin restarts",
                 cfgPid, TIMEOUT, true);
 
+        // Configuration uninstalls must be deferred if ConfigAdmin service is stopped
         configAdmin.stop();
         waitForConfigAdmin(false);
+        // remove configuration
         installer.updateResources(URL_SCHEME, null, new String[] {rsrc[0].getId()});
+        // let's wait a little bit and restart configuration admin
         sleep(1000L);
         configAdmin.start();
         waitForConfigAdmin(true);
index 91a9107..8b05b81 100644 (file)
@@ -222,7 +222,7 @@ class OsgiInstallerTestBase implements FrameworkListener {
     }
 
     protected Configuration waitForConfiguration(String info, String pid, long timeoutMsec, boolean shouldBePresent) throws Exception {
-        if(info == null) {
+        if (info == null) {
             info = "";
         } else {
             info += ": ";
@@ -242,9 +242,9 @@ class OsgiInstallerTestBase implements FrameworkListener {
             sleep(25);
         } while(System.currentTimeMillis() < end);
 
-        if(shouldBePresent && result == null) {
+        if (shouldBePresent && result == null) {
             fail(info + "Configuration not found (" + pid + ")");
-        } else if(!shouldBePresent && result != null) {
+        } else if (!shouldBePresent && result != null) {
             fail(info + "Configuration is still present (" + pid + ")");
         }
         return result;
@@ -339,6 +339,11 @@ class OsgiInstallerTestBase implements FrameworkListener {
        return result;
     }
 
+    protected Bundle getConfigAdminBundle() {
+        this.waitForConfigAdmin(true);
+        return this.configAdminTracker.getServiceReference().getBundle();
+    }
+
     /**
      * Helper method for sleeping.
      */