You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by bd...@apache.org on 2009/08/19 12:17:55 UTC

svn commit: r805730 - in /sling/trunk/installer/osgi: installer/src/main/java/org/apache/sling/osgi/installer/impl/ installer/src/main/java/org/apache/sling/osgi/installer/impl/tasks/ it/ it/src/test/java/org/apache/sling/osgi/installer/it/

Author: bdelacretaz
Date: Wed Aug 19 10:17:55 2009
New Revision: 805730

URL: http://svn.apache.org/viewvc?rev=805730&view=rev
Log:
SLING-1078 - 'Reinstall lower version' integration test passes

Modified:
    sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/OsgiInstallerTask.java
    sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/tasks/BundleInstallTask.java
    sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/tasks/BundleRemoveTask.java
    sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/tasks/BundleStartTask.java
    sling/trunk/installer/osgi/it/pom.xml
    sling/trunk/installer/osgi/it/src/test/java/org/apache/sling/osgi/installer/it/BundleInstallTest.java
    sling/trunk/installer/osgi/it/src/test/java/org/apache/sling/osgi/installer/it/OsgiInstallerTestBase.java

Modified: sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/OsgiInstallerTask.java
URL: http://svn.apache.org/viewvc/sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/OsgiInstallerTask.java?rev=805730&r1=805729&r2=805730&view=diff
==============================================================================
--- sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/OsgiInstallerTask.java (original)
+++ sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/OsgiInstallerTask.java Wed Aug 19 10:17:55 2009
@@ -18,10 +18,16 @@
  */
 package org.apache.sling.osgi.installer.impl;
 
+import org.osgi.service.log.LogService;
+
 /** Base class for tasks that can be executed by the {@link OsgiInstallerImpl} */ 
 public abstract class OsgiInstallerTask implements Comparable<OsgiInstallerTask> {
 	/** Execute this task */
-	public abstract void execute(OsgiInstallerContext ctx) throws Exception;
+	public void execute(OsgiInstallerContext ctx) throws Exception {
+		if(ctx.getLogService() != null) {
+			ctx.getLogService().log(LogService.LOG_DEBUG, "Executing task " + this);
+		}
+	}
 	
 	/** Tasks are sorted according to this key */
 	public abstract String getSortKey();

Modified: sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/tasks/BundleInstallTask.java
URL: http://svn.apache.org/viewvc/sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/tasks/BundleInstallTask.java?rev=805730&r1=805729&r2=805730&view=diff
==============================================================================
--- sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/tasks/BundleInstallTask.java (original)
+++ sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/tasks/BundleInstallTask.java Wed Aug 19 10:17:55 2009
@@ -32,6 +32,11 @@
         this.resource = r;
     }
     
+    @Override 
+    public String toString() {
+    	return getClass().getSimpleName() + ": " + resource;
+    }
+    
     @Override
     public void execute(OsgiInstallerContext ctx) throws Exception {
         final Bundle b = ctx.getBundleContext().installBundle(resource.getUrl(), resource.getInputStream());

Modified: sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/tasks/BundleRemoveTask.java
URL: http://svn.apache.org/viewvc/sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/tasks/BundleRemoveTask.java?rev=805730&r1=805729&r2=805730&view=diff
==============================================================================
--- sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/tasks/BundleRemoveTask.java (original)
+++ sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/tasks/BundleRemoveTask.java Wed Aug 19 10:17:55 2009
@@ -36,6 +36,11 @@
         this.resource = r;
     }
     
+    @Override 
+    public String toString() {
+    	return getClass().getSimpleName() + ": " + resource;
+    }
+    
     @Override
     public void execute(OsgiInstallerContext ctx) throws Exception {
         final String symbolicName = (String)resource.getAttributes().get(Constants.BUNDLE_SYMBOLICNAME);

Modified: sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/tasks/BundleStartTask.java
URL: http://svn.apache.org/viewvc/sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/tasks/BundleStartTask.java?rev=805730&r1=805729&r2=805730&view=diff
==============================================================================
--- sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/tasks/BundleStartTask.java (original)
+++ sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/tasks/BundleStartTask.java Wed Aug 19 10:17:55 2009
@@ -48,7 +48,7 @@
 
 	@Override
 	public String toString() {
-		return getClass().getSimpleName() + " (bundle " + bundleId + ")";
+		return getClass().getSimpleName() + ": bundle " + bundleId;
 	}
 
 	public void execute(OsgiInstallerContext tctx) throws Exception {

Modified: sling/trunk/installer/osgi/it/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/installer/osgi/it/pom.xml?rev=805730&r1=805729&r2=805730&view=diff
==============================================================================
--- sling/trunk/installer/osgi/it/pom.xml (original)
+++ sling/trunk/installer/osgi/it/pom.xml Wed Aug 19 10:17:55 2009
@@ -34,6 +34,7 @@
     <description>Integration tests of the Sling OSGi installer bundle</description>
   
   <properties>
+    <pax.exam.log.level>INFO</pax.exam.log.level>
     <!-- This can be set to activate remote debugging of the Pax Exam tests -->
     <pax.exam.debug.port></pax.exam.debug.port>
   </properties>
@@ -73,6 +74,10 @@
                             <value>${pom.version}</value>
                         </property>
                         <property>
+                            <name>pax.exam.log.level</name>
+                            <value>${pax.exam.log.level}</value>
+                        </property>
+                        <property>
                             <name>pax.exam.debug.port</name>
                             <value>${pax.exam.debug.port}</value>
                         </property>

Modified: sling/trunk/installer/osgi/it/src/test/java/org/apache/sling/osgi/installer/it/BundleInstallTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/installer/osgi/it/src/test/java/org/apache/sling/osgi/installer/it/BundleInstallTest.java?rev=805730&r1=805729&r2=805730&view=diff
==============================================================================
--- sling/trunk/installer/osgi/it/src/test/java/org/apache/sling/osgi/installer/it/BundleInstallTest.java (original)
+++ sling/trunk/installer/osgi/it/src/test/java/org/apache/sling/osgi/installer/it/BundleInstallTest.java Wed Aug 19 10:17:55 2009
@@ -19,7 +19,6 @@
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertFalse;
 
 import org.apache.sling.osgi.installer.OsgiInstaller;
 import org.junit.After;
@@ -47,12 +46,13 @@
     public void tearDown() {
         super.tearDown();
     }
-
+    
 	@Test
     public void testInstallUpgradeDowngradeBundle() throws Exception {
     	final String symbolicName = "osgi-installer-testbundle";
     	final String uri = symbolicName + JAR_EXT;
     	final String BUNDLE_VERSION = "Bundle-Version";
+    	int testIndex = 0;
     	
     	assertNull("Test bundle must not be present before test", findBundle(symbolicName));
     	
@@ -71,6 +71,8 @@
         	assertEquals("Installed bundle must be started", Bundle.ACTIVE, b.getState());
         	assertEquals("Version must be 1.1", "1.1", b.getHeaders().get(BUNDLE_VERSION));
     	}
+    	
+    	assertNoOsgiTasks("After test " + testIndex++);
 
     	// Upgrade to later version, verify
     	{
@@ -86,6 +88,8 @@
         	assertEquals("Bundle ID must not change after update", bundleId, b.getBundleId());
     	}
 
+    	assertNoOsgiTasks("After test " + testIndex++);
+    	
     	// Downgrade to lower version, installed bundle must not change
         {
             resetCounters();
@@ -101,6 +105,8 @@
             assertEquals("Bundle ID must not change after ignored downgrade", bundleId, b.getBundleId());
         }
     	
+    	assertNoOsgiTasks("After test " + testIndex++);
+    	
     	// Uninstall
     	{
             resetCounters();
@@ -115,9 +121,13 @@
             waitForInstallerAction(OsgiInstaller.OSGI_TASKS_COUNTER, 1);
             final Bundle b = findBundle(symbolicName);
             assertNull("Bundle must be gone", b);
+            
+            // uninstall task generates package refresh and a number of bundle start tasks, consume these
+            waitForInstallerAction(OsgiInstaller.INSTALLER_CYCLES_COUNTER, 2);
     	}
     	
-    	/** TODO
+    	assertNoOsgiTasks("After test " + testIndex++);
+    	
     	// Reinstall lower version, must work
         {
             resetCounters();
@@ -130,14 +140,12 @@
             bundleId = b.getBundleId();
             assertEquals("Reinstalled bundle must be started", Bundle.ACTIVE, b.getState());
             assertEquals("Reinstalled bundle version must be 1.1", "1.1", b.getHeaders().get(BUNDLE_VERSION));
-            assertFalse("Bundle ID must have changed after uninstall and reinstall", bundleId == b.getBundleId());
         }
-        */
         
+    	assertNoOsgiTasks("After test " + testIndex++);
     }
 	
-	/** TODO
-    
+    /** TODO
     @Test
     public void testBundleStatePreserved() throws Exception {
     	final OsgiInstaller c = getService(OsgiInstaller.class);

Modified: sling/trunk/installer/osgi/it/src/test/java/org/apache/sling/osgi/installer/it/OsgiInstallerTestBase.java
URL: http://svn.apache.org/viewvc/sling/trunk/installer/osgi/it/src/test/java/org/apache/sling/osgi/installer/it/OsgiInstallerTestBase.java?rev=805730&r1=805729&r2=805730&view=diff
==============================================================================
--- sling/trunk/installer/osgi/it/src/test/java/org/apache/sling/osgi/installer/it/OsgiInstallerTestBase.java (original)
+++ sling/trunk/installer/osgi/it/src/test/java/org/apache/sling/osgi/installer/it/OsgiInstallerTestBase.java Wed Aug 19 10:17:55 2009
@@ -17,13 +17,16 @@
 package org.apache.sling.osgi.installer.it;
 
 import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.fail;
 import static org.ops4j.pax.exam.CoreOptions.felix;
 import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
 import static org.ops4j.pax.exam.CoreOptions.options;
 import static org.ops4j.pax.exam.CoreOptions.provision;
 import static org.ops4j.pax.exam.CoreOptions.waitForFrameworkStartup;
+import static org.ops4j.pax.exam.CoreOptions.systemProperty;
 import static org.ops4j.pax.exam.container.def.PaxRunnerOptions.vmOption;
+import static org.ops4j.pax.exam.container.def.PaxRunnerOptions.logProfile;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -218,6 +221,14 @@
                 + ", expected value " + targetValue + ", actual " + lastValue);
     }
     
+    /** Verify that no OSGi actions are executed in next two installer cycles */
+    protected void assertNoOsgiTasks(String info) {
+    	final long actionsCounter = installer.getCounters()[OsgiInstaller.OSGI_TASKS_COUNTER];
+    	waitForInstallerAction(OsgiInstaller.INSTALLER_CYCLES_COUNTER, 2);
+    	assertEquals(info + ": OSGi tasks counter should not have changed", 
+    			actionsCounter, installer.getCounters()[OsgiInstaller.OSGI_TASKS_COUNTER]);
+    }
+    
     public static Option[] defaultConfiguration() {
     	String vmOpt = "-Dosgi.installer.testing";
     	
@@ -231,6 +242,7 @@
     	}
 
     	// optional debugging
+    	final String paxDebugLevel = System.getProperty("pax.exam.log.level");
     	final String paxDebugPort = System.getProperty("pax.exam.debug.port");
     	if(paxDebugPort != null && paxDebugPort.length() > 0) {
         	vmOpt += " -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=" + paxDebugPort; 
@@ -240,7 +252,11 @@
                 felix(),
                 vmOption(vmOpt),
                 waitForFrameworkStartup(),
-        		provision(
+                
+                logProfile(),
+                systemProperty( "org.ops4j.pax.logging.DefaultServiceLog.level" ).value(paxDebugLevel),
+                
+                provision(
         	            mavenBundle("org.apache.felix", "org.apache.felix.scr"),
         	            mavenBundle("org.apache.felix", "org.apache.felix.configadmin"),
         	            mavenBundle("org.apache.sling", "org.apache.sling.commons.log"),