You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2015/01/12 12:20:29 UTC

svn commit: r1651064 - in /sling/trunk/installer/it: pom.xml src/test/java/org/apache/sling/installer/it/ConfigInstallTest.java src/test/java/org/apache/sling/installer/it/OsgiInstallerTestBase.java

Author: cziegeler
Date: Mon Jan 12 11:20:29 2015
New Revision: 1651064

URL: http://svn.apache.org/r1651064
Log:
SLING-1794 : ConfigInstallTest fails semi-randomly: Configuration is still present

Modified:
    sling/trunk/installer/it/pom.xml
    sling/trunk/installer/it/src/test/java/org/apache/sling/installer/it/ConfigInstallTest.java
    sling/trunk/installer/it/src/test/java/org/apache/sling/installer/it/OsgiInstallerTestBase.java

Modified: sling/trunk/installer/it/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/installer/it/pom.xml?rev=1651064&r1=1651063&r2=1651064&view=diff
==============================================================================
--- sling/trunk/installer/it/pom.xml (original)
+++ sling/trunk/installer/it/pom.xml Mon Jan 12 11:20:29 2015
@@ -483,7 +483,7 @@
         <dependency>
             <groupId>org.apache.felix</groupId>
             <artifactId>org.apache.felix.framework</artifactId>
-            <version>4.2.1</version>
+            <version>4.4.1</version>
             <scope>test</scope>
         </dependency>
         <dependency>

Modified: sling/trunk/installer/it/src/test/java/org/apache/sling/installer/it/ConfigInstallTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/installer/it/src/test/java/org/apache/sling/installer/it/ConfigInstallTest.java?rev=1651064&r1=1651063&r2=1651064&view=diff
==============================================================================
--- sling/trunk/installer/it/src/test/java/org/apache/sling/installer/it/ConfigInstallTest.java (original)
+++ sling/trunk/installer/it/src/test/java/org/apache/sling/installer/it/ConfigInstallTest.java Mon Jan 12 11:20:29 2015
@@ -30,8 +30,8 @@ import java.util.concurrent.atomic.Atomi
 import org.apache.sling.installer.api.InstallableResource;
 import org.apache.sling.installer.api.event.InstallationEvent;
 import org.apache.sling.installer.api.event.InstallationListener;
-import org.apache.sling.installer.api.tasks.InstallTaskFactory;
 import org.apache.sling.installer.api.tasks.ResourceState;
+import org.apache.sling.installer.api.tasks.ResourceTransformer;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -95,9 +95,11 @@ public class ConfigInstallTest extends O
     /**
      * @see org.osgi.service.cm.ConfigurationListener#configurationEvent(org.osgi.service.cm.ConfigurationEvent)
      */
-    public void configurationEvent(ConfigurationEvent e) {
-        synchronized ( events ) {
-            events.add(e);
+    public void configurationEvent(final ConfigurationEvent e) {
+        if ( e.getType() == ConfigurationEvent.CM_DELETED || e.getType() == ConfigurationEvent.CM_UPDATED) {
+            synchronized ( events ) {
+                events.add(e);
+            }
         }
 	}
 
@@ -445,44 +447,50 @@ public class ConfigInstallTest extends O
 
     @Test
     public void testDeferredConfigRemove() throws Exception {
-        final AtomicInteger factoryCount = new AtomicInteger();
+        final AtomicInteger transformerCount = new AtomicInteger();
 
-        final ServiceTracker st = new ServiceTracker(bundleContext, InstallTaskFactory.class.getName(), new ServiceTrackerCustomizer() {
+        final ServiceTracker st = new ServiceTracker(bundleContext,
+                ResourceTransformer.class.getName(), new ServiceTrackerCustomizer() {
 
             public void removedService(ServiceReference reference, Object service) {
                 bundleContext.ungetService(reference);
-                factoryCount.decrementAndGet();
+                transformerCount.decrementAndGet();
             }
 
             public void modifiedService(ServiceReference reference, Object service) {
             }
 
             public Object addingService(ServiceReference reference) {
-                factoryCount.incrementAndGet();
+                transformerCount.incrementAndGet();
                 return bundleContext.getService(reference);
             }
         });
         st.open();
 
-        // get config admin bundle and wait for service
-        final Bundle configAdmin = this.getConfigAdminBundle();
-        assertNotNull("ConfigAdmin bundle must be found", configAdmin);
-        waitForConfigAdmin(true);
-
-        // when everything is up and running, we have two factories
-        waitForCondition("Task Factories should be 2", new Condition() {
+        final AtomicInteger expectedCount = new AtomicInteger();
+        final Condition cond = new Condition() {
 
             @Override
             boolean isTrue() throws Exception {
-                return factoryCount.get() == 2;
+                return transformerCount.get() == expectedCount.get();
             }
 
             @Override
             String additionalInfo() {
-                return "Task Factories is " + String.valueOf(factoryCount.get());
+                return "Resource transformer count is " + String.valueOf(transformerCount.get()) +
+                       ", should be " + String.valueOf(expectedCount.get());
             }
 
-        });
+        };
+
+        // get config admin bundle and wait for service
+        final Bundle configAdmin = this.getConfigAdminBundle();
+        assertNotNull("ConfigAdmin bundle must be found", configAdmin);
+        waitForConfigAdmin(true);
+
+        // when everything is up and running, we have two factories
+        expectedCount.set(2);
+        waitForCondition(null, cond);
 
         // check that configuration is not available
         final String cfgPid = getClass().getSimpleName() + ".deferred." + uniqueID();
@@ -495,48 +503,28 @@ public class ConfigInstallTest extends O
         installer.updateResources(URL_SCHEME, rsrc, null);
         waitForConfiguration("Config must be installed before stopping ConfigurationAdmin",
                 cfgPid, true);
+        this.waitForResource(URL_SCHEME + ":" + rsrc[0].getId(), ResourceState.INSTALLED);
 
         // Configuration uninstalls must be deferred if ConfigAdmin service is stopped
         configAdmin.stop();
         waitForConfigAdmin(false);
 
-        // only bundle task factory
-        waitForCondition("Task Factories should be 1", new Condition() {
-
-            @Override
-            boolean isTrue() throws Exception {
-                return factoryCount.get() == 1;
-            }
-
-            @Override
-            String additionalInfo() {
-                return "Task Factories is " + String.valueOf(factoryCount.get());
-            }
-
-        });
+        // only bundle transformer
+        expectedCount.set(1);
+        waitForCondition(null, cond);
 
         // remove configuration
         installationEvents = 0;
         installer.updateResources(URL_SCHEME, null, new String[] {rsrc[0].getId()});
         waitForInstallationEvents(2);
+        this.waitForResource(URL_SCHEME + ":" + rsrc[0].getId(), ResourceState.UNINSTALL);
 
         configAdmin.start();
         waitForConfigAdmin(true);
 
-        // when everything is up and running, we have two factories
-        waitForCondition("Task Factories should be 2", new Condition() {
-
-            @Override
-            boolean isTrue() throws Exception {
-                return factoryCount.get() == 2;
-            }
-
-            @Override
-            String additionalInfo() {
-                return "Task Factories is " + String.valueOf(factoryCount.get());
-            }
-
-        });
+        // when everything is up and running, we have two transformers again
+        expectedCount.set(2);
+        waitForCondition(null, cond);
 
         waitForConfiguration("Config must be removed once ConfigurationAdmin restarts",
                 cfgPid, false);

Modified: sling/trunk/installer/it/src/test/java/org/apache/sling/installer/it/OsgiInstallerTestBase.java
URL: http://svn.apache.org/viewvc/sling/trunk/installer/it/src/test/java/org/apache/sling/installer/it/OsgiInstallerTestBase.java?rev=1651064&r1=1651063&r2=1651064&view=diff
==============================================================================
--- sling/trunk/installer/it/src/test/java/org/apache/sling/installer/it/OsgiInstallerTestBase.java (original)
+++ sling/trunk/installer/it/src/test/java/org/apache/sling/installer/it/OsgiInstallerTestBase.java Mon Jan 12 11:20:29 2015
@@ -510,9 +510,9 @@ public class OsgiInstallerTestBase imple
                         mavenBundle("org.slf4j", "jcl-over-slf4j", "1.6.4"),
                         mavenBundle("org.slf4j", "log4j-over-slf4j", "1.6.4"),
 
-        	            mavenBundle("org.apache.felix", "org.apache.felix.scr", "1.8.0"),
-        	            mavenBundle("org.apache.felix", "org.apache.felix.configadmin", "1.2.8"),
-                        mavenBundle("org.apache.felix", "org.apache.felix.metatype", "1.0.2"),
+        	            mavenBundle("org.apache.felix", "org.apache.felix.scr", "1.8.2"),
+        	            mavenBundle("org.apache.felix", "org.apache.felix.configadmin", "1.8.0"),
+                        mavenBundle("org.apache.felix", "org.apache.felix.metatype", "1.0.10"),
         	        	mavenBundle("org.apache.sling", "org.apache.sling.installer.core", POM_VERSION).startLevel(5),
                         mavenBundle("org.apache.sling", "org.apache.sling.installer.factory.configuration", CONFIG_VERSION).startLevel(5)
         		)
@@ -599,7 +599,7 @@ public class OsgiInstallerTestBase imple
 
         do {
             final InstallationState is = this.infoProvider.getInstallationState();
-            for(final ResourceGroup rg : is.getInstalledResources()) {
+            for(final ResourceGroup rg : (state == ResourceState.INSTALL || state == ResourceState.UNINSTALL ? is.getActiveResources() : is.getInstalledResources())) {
                 for(final Resource rsrc : rg.getResources()) {
                     if ( url.equals(rsrc.getURL()) ) {
                         if ( rsrc.getState() == state ) {
@@ -610,9 +610,10 @@ public class OsgiInstallerTestBase imple
             }
             sleep(50);
         } while ( System.currentTimeMillis() < end);
-        fail("Resource " + url + " not found with state " + state);
+        fail("Resource " + url + " not found with state " + state + " : " + this.infoProvider.getInstallationState());
         return null;
     }
+
     private final class BundleEventListener implements SynchronousBundleListener {
 
         private final List<BundleEvent> events = new ArrayList<BundleEvent>();