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/31 17:14:33 UTC
svn commit: r809621 - 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/
installer/src/test/java/org/apache/sling/osgi/installer/impl/ it/src...
Author: bdelacretaz
Date: Mon Aug 31 15:14:31 2009
New Revision: 809621
URL: http://svn.apache.org/viewvc?rev=809621&view=rev
Log:
SLING-1078 - improved logging of OSGi tasks, and fix bug in RegisteredResourceComparator
Modified:
sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/BundleTaskCreator.java
sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/OsgiInstallerContext.java
sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/OsgiInstallerImpl.java
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/OsgiInstallerThread.java
sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/RegisteredResourceComparator.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/installer/src/main/java/org/apache/sling/osgi/installer/impl/tasks/BundleUpdateTask.java
sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/tasks/ConfigInstallTask.java
sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/tasks/ConfigRemoveTask.java
sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/tasks/SynchronousRefreshPackagesTask.java
sling/trunk/installer/osgi/installer/src/test/java/org/apache/sling/osgi/installer/impl/MockOsgiInstallerContext.java
sling/trunk/installer/osgi/installer/src/test/java/org/apache/sling/osgi/installer/impl/RegisteredResourceComparatorTest.java
sling/trunk/installer/osgi/it/src/test/java/org/apache/sling/osgi/installer/it/BundleInstallUpgradeDowngradeTest.java
Modified: sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/BundleTaskCreator.java
URL: http://svn.apache.org/viewvc/sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/BundleTaskCreator.java?rev=809621&r1=809620&r2=809621&view=diff
==============================================================================
--- sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/BundleTaskCreator.java (original)
+++ sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/BundleTaskCreator.java Mon Aug 31 15:14:31 2009
@@ -33,8 +33,6 @@
/** TaskCreator that processes a list of bundle RegisteredResources */
class BundleTaskCreator {
- public static final String MAVEN_SNAPSHOT_MARKER = "SNAPSHOT";
-
/** Store the digests of the bundles for which we create update tasks,
* keyed by symbolic name, to avoid generating repated updates
* for snapshot bundles
@@ -101,7 +99,7 @@
// installed but different version. Can be a later version if
// the newer version resource was removed, in case we downgrade
toUpdate = toActivate;
- } else if(compare == 0 && newVersion.toString().indexOf(MAVEN_SNAPSHOT_MARKER) >= 0){
+ } else if(compare == 0 && ctx.isSnapshot(newVersion)){
// installed, same version but SNAPSHOT
toUpdate = toActivate;
}
Modified: sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/OsgiInstallerContext.java
URL: http://svn.apache.org/viewvc/sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/OsgiInstallerContext.java?rev=809621&r1=809620&r2=809621&view=diff
==============================================================================
--- sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/OsgiInstallerContext.java (original)
+++ sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/OsgiInstallerContext.java Mon Aug 31 15:14:31 2009
@@ -20,6 +20,7 @@
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
+import org.osgi.framework.Version;
import org.osgi.service.cm.ConfigurationAdmin;
import org.osgi.service.log.LogService;
import org.osgi.service.packageadmin.PackageAdmin;
@@ -33,6 +34,7 @@
void incrementCounter(int index);
void setCounter(int index, long value);
Bundle getMatchingBundle(String bundleSymbolicName);
+ boolean isSnapshot(Version v);
/** Schedule a task for execution in the current OsgiController cycle */
void addTaskToCurrentCycle(OsgiInstallerTask t);
Modified: sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/OsgiInstallerImpl.java
URL: http://svn.apache.org/viewvc/sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/OsgiInstallerImpl.java?rev=809621&r1=809620&r2=809621&view=diff
==============================================================================
--- sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/OsgiInstallerImpl.java (original)
+++ sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/OsgiInstallerImpl.java Mon Aug 31 15:14:31 2009
@@ -26,6 +26,7 @@
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;
+import org.osgi.framework.Version;
import org.osgi.service.cm.ConfigurationAdmin;
import org.osgi.service.log.LogService;
import org.osgi.service.packageadmin.PackageAdmin;
@@ -34,6 +35,8 @@
/** OsgiInstaller service implementation */
public class OsgiInstallerImpl implements OsgiInstaller, OsgiInstallerContext {
+ public static final String MAVEN_SNAPSHOT_MARKER = "SNAPSHOT";
+
private final BundleContext bundleContext;
private final PackageAdmin packageAdmin;
private final ServiceTracker logServiceTracker;
@@ -149,4 +152,8 @@
}
return null;
}
+
+ public boolean isSnapshot(Version v) {
+ return v.toString().indexOf(MAVEN_SNAPSHOT_MARKER) >= 0;
+ }
}
\ No newline at end of file
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=809621&r1=809620&r2=809621&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 Mon Aug 31 15:14:31 2009
@@ -22,10 +22,11 @@
/** Base class for tasks that can be executed by the {@link OsgiInstallerImpl} */
public abstract class OsgiInstallerTask implements Comparable<OsgiInstallerTask> {
- /** Execute this task */
- public void execute(OsgiInstallerContext ctx) throws Exception {
+ public abstract void execute(OsgiInstallerContext ctx) throws Exception;
+
+ protected void logExecution(OsgiInstallerContext ctx) {
if(ctx.getLogService() != null) {
- ctx.getLogService().log(LogService.LOG_DEBUG, "Executing task " + this);
+ ctx.getLogService().log(LogService.LOG_DEBUG, "OsgiInstallerTask: executing " + this);
}
}
Modified: sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/OsgiInstallerThread.java
URL: http://svn.apache.org/viewvc/sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/OsgiInstallerThread.java?rev=809621&r1=809620&r2=809621&view=diff
==============================================================================
--- sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/OsgiInstallerThread.java (original)
+++ sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/OsgiInstallerThread.java Mon Aug 31 15:14:31 2009
@@ -360,7 +360,7 @@
group.remove(r);
if(ctx.getLogService() != null) {
ctx.getLogService().log(LogService.LOG_DEBUG,
- "Resource deleted, not installable and has been processed: " + r);
+ "Removing RegisteredResource from list, not installable and has been processed: " + r);
}
}
if(group.isEmpty() && key != null) {
Modified: sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/RegisteredResourceComparator.java
URL: http://svn.apache.org/viewvc/sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/RegisteredResourceComparator.java?rev=809621&r1=809620&r2=809621&view=diff
==============================================================================
--- sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/RegisteredResourceComparator.java (original)
+++ sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/RegisteredResourceComparator.java Mon Aug 31 15:14:31 2009
@@ -23,14 +23,25 @@
import org.osgi.framework.Constants;
import org.osgi.framework.Version;
-/** Comparator that defines priorities between RegisteredResources */
+/** Comparator that defines priorities between RegisteredResources.
+ * The RegisteredResources are grouped by OSGi "entity" (bundle symbolic
+ * name, config PID, etc.) in sorted sets, and this comparator is used
+ * to sort the resources in the sets.
+ */
class RegisteredResourceComparator implements Comparator<RegisteredResource >{
public int compare(RegisteredResource a, RegisteredResource b) {
- if(a.getResourceType() == RegisteredResource.ResourceType.BUNDLE) {
+ final boolean aBundle = a.getResourceType() == RegisteredResource.ResourceType.BUNDLE;
+ final boolean bBundle = b.getResourceType() == RegisteredResource.ResourceType.BUNDLE;
+
+ if(aBundle && bBundle) {
return compareBundles(a, b);
- } else {
+ } else if(!aBundle && !bBundle){
return compareConfig(a, b);
+ } else if(aBundle) {
+ return 1;
+ } else {
+ return -1;
}
}
@@ -50,7 +61,7 @@
if(result == 0) {
final Version va = (Version)a.getAttributes().get(Constants.BUNDLE_VERSION);
final Version vb = (Version)b.getAttributes().get(Constants.BUNDLE_VERSION);
- isSnapshot = va!= null && va.toString().contains(BundleTaskCreator.MAVEN_SNAPSHOT_MARKER);
+ isSnapshot = va!= null && va.toString().contains(OsgiInstallerImpl.MAVEN_SNAPSHOT_MARKER);
if(va != null && vb != null) {
// higher version has more priority, must come first so invert comparison
result = vb.compareTo(va);
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=809621&r1=809620&r2=809621&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 Mon Aug 31 15:14:31 2009
@@ -39,10 +39,9 @@
return getClass().getSimpleName() + ": " + resource;
}
- @Override
public void execute(OsgiInstallerContext ctx) throws Exception {
- super.execute(ctx);
final Bundle b = ctx.getBundleContext().installBundle(resource.getUrl(), resource.getInputStream());
+ logExecution(ctx);
ctx.addTaskToCurrentCycle(new BundleStartTask(b.getBundleId()));
ctx.incrementCounter(OsgiInstaller.OSGI_TASKS_COUNTER);
}
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=809621&r1=809620&r2=809621&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 Mon Aug 31 15:14:31 2009
@@ -44,7 +44,7 @@
@Override
public void execute(OsgiInstallerContext ctx) throws Exception {
- super.execute(ctx);
+ logExecution(ctx);
final String symbolicName = (String)resource.getAttributes().get(Constants.BUNDLE_SYMBOLICNAME);
final Bundle b = ctx.getMatchingBundle(symbolicName);
if(b == null) {
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=809621&r1=809620&r2=809621&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 Mon Aug 31 15:14:31 2009
@@ -56,7 +56,6 @@
}
public void execute(OsgiInstallerContext ctx) throws Exception {
- super.execute(ctx);
final Bundle b = ctx.getBundleContext().getBundle(bundleId);
final LogService log = ctx.getLogService();
boolean needToRetry = false;
@@ -75,6 +74,7 @@
}
} else {
// Try to start bundle, and if that doesn't work we'll need to retry
+ logExecution(ctx);
try {
b.start();
if(log != null) {
Modified: sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/tasks/BundleUpdateTask.java
URL: http://svn.apache.org/viewvc/sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/tasks/BundleUpdateTask.java?rev=809621&r1=809620&r2=809621&view=diff
==============================================================================
--- sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/tasks/BundleUpdateTask.java (original)
+++ sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/tasks/BundleUpdateTask.java Mon Aug 31 15:14:31 2009
@@ -24,6 +24,7 @@
import org.apache.sling.osgi.installer.impl.RegisteredResource;
import org.osgi.framework.Bundle;
import org.osgi.framework.Constants;
+import org.osgi.framework.Version;
import org.osgi.service.log.LogService;
/** Update a bundle from a RegisteredResource. Creates
@@ -49,12 +50,27 @@
@Override
public void execute(OsgiInstallerContext ctx) throws Exception {
- super.execute(ctx);
final String symbolicName = (String)resource.getAttributes().get(Constants.BUNDLE_SYMBOLICNAME);
final Bundle b = ctx.getMatchingBundle(symbolicName);
if(b == null) {
throw new IllegalStateException("Bundle to update (" + symbolicName + ") not found");
}
+
+ // Do not update if same version, unless snapshot
+ if(b != null) {
+ final Version currentVersion = new Version((String)b.getHeaders().get(Constants.BUNDLE_VERSION));
+ final Version newVersion = (Version)resource.getAttributes().get(Constants.BUNDLE_VERSION);
+ if(currentVersion.equals(newVersion) && !ctx.isSnapshot(newVersion)) {
+ if(ctx.getLogService() != null) {
+ ctx.getLogService().log(
+ LogService.LOG_DEBUG,
+ "Same version is already installed, and not a snapshot, ignoring update:" + resource);
+ }
+ return;
+ }
+ }
+
+ logExecution(ctx);
if(b.getState() == Bundle.ACTIVE) {
// bundle was active before the update - restart it once updated, but
// in sequence, not right now
Modified: sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/tasks/ConfigInstallTask.java
URL: http://svn.apache.org/viewvc/sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/tasks/ConfigInstallTask.java?rev=809621&r1=809620&r2=809621&view=diff
==============================================================================
--- sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/tasks/ConfigInstallTask.java (original)
+++ sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/tasks/ConfigInstallTask.java Mon Aug 31 15:14:31 2009
@@ -44,7 +44,6 @@
@Override
public void execute(OsgiInstallerContext ctx) throws Exception {
- super.execute(ctx);
final ConfigurationAdmin ca = ctx.getConfigurationAdmin();
if(ca == null) {
@@ -56,6 +55,8 @@
return;
}
+ logExecution(ctx);
+
// Convert data to a configuration Dictionary
Dictionary<String, Object> dict = resource.getDictionary();
Modified: sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/tasks/ConfigRemoveTask.java
URL: http://svn.apache.org/viewvc/sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/tasks/ConfigRemoveTask.java?rev=809621&r1=809620&r2=809621&view=diff
==============================================================================
--- sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/tasks/ConfigRemoveTask.java (original)
+++ sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/tasks/ConfigRemoveTask.java Mon Aug 31 15:14:31 2009
@@ -40,9 +40,7 @@
return TaskOrder.CONFIG_REMOVE_ORDER + pid.getCompositePid();
}
- @Override
public void execute(OsgiInstallerContext ctx) throws Exception {
- super.execute(ctx);
final ConfigurationAdmin ca = ctx.getConfigurationAdmin();
if(ca == null) {
@@ -54,6 +52,7 @@
return;
}
+ logExecution(ctx);
final Configuration cfg = getConfiguration(ca, pid, false, ctx);
if(cfg == null) {
if(ctx.getLogService() != null) {
Modified: sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/tasks/SynchronousRefreshPackagesTask.java
URL: http://svn.apache.org/viewvc/sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/tasks/SynchronousRefreshPackagesTask.java?rev=809621&r1=809620&r2=809621&view=diff
==============================================================================
--- sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/tasks/SynchronousRefreshPackagesTask.java (original)
+++ sling/trunk/installer/osgi/installer/src/main/java/org/apache/sling/osgi/installer/impl/tasks/SynchronousRefreshPackagesTask.java Mon Aug 31 15:14:31 2009
@@ -62,7 +62,7 @@
}
public void execute(OsgiInstallerContext ctx) throws Exception {
- super.execute(ctx);
+ logExecution(ctx);
this.ctx = ctx;
final int targetEventCount = packageRefreshEventsCount + 1;
final long start = System.currentTimeMillis();
Modified: sling/trunk/installer/osgi/installer/src/test/java/org/apache/sling/osgi/installer/impl/MockOsgiInstallerContext.java
URL: http://svn.apache.org/viewvc/sling/trunk/installer/osgi/installer/src/test/java/org/apache/sling/osgi/installer/impl/MockOsgiInstallerContext.java?rev=809621&r1=809620&r2=809621&view=diff
==============================================================================
--- sling/trunk/installer/osgi/installer/src/test/java/org/apache/sling/osgi/installer/impl/MockOsgiInstallerContext.java (original)
+++ sling/trunk/installer/osgi/installer/src/test/java/org/apache/sling/osgi/installer/impl/MockOsgiInstallerContext.java Mon Aug 31 15:14:31 2009
@@ -20,6 +20,7 @@
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
+import org.osgi.framework.Version;
import org.osgi.service.cm.ConfigurationAdmin;
import org.osgi.service.log.LogService;
import org.osgi.service.packageadmin.PackageAdmin;
@@ -57,4 +58,8 @@
public Bundle getMatchingBundle(String bundleSymbolicName) {
return null;
}
+
+ public boolean isSnapshot(Version v) {
+ return v.toString().indexOf(OsgiInstallerImpl.MAVEN_SNAPSHOT_MARKER) >= 0;
+ }
}
Modified: sling/trunk/installer/osgi/installer/src/test/java/org/apache/sling/osgi/installer/impl/RegisteredResourceComparatorTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/installer/osgi/installer/src/test/java/org/apache/sling/osgi/installer/impl/RegisteredResourceComparatorTest.java?rev=809621&r1=809620&r2=809621&view=diff
==============================================================================
--- sling/trunk/installer/osgi/installer/src/test/java/org/apache/sling/osgi/installer/impl/RegisteredResourceComparatorTest.java (original)
+++ sling/trunk/installer/osgi/installer/src/test/java/org/apache/sling/osgi/installer/impl/RegisteredResourceComparatorTest.java Mon Aug 31 15:14:31 2009
@@ -171,4 +171,13 @@
inOrder[3] = getConfig("pidB", null, 0);
assertOrder(inOrder);
}
+
+ @Test
+ public void testConfigAndBundle() throws IOException {
+ final RegisteredResource cfg = getConfig("pid", null, InstallableResource.DEFAULT_PRIORITY);
+ final RegisteredResource b = new MockBundleResource("a", "1.0");
+ final RegisteredResourceComparator c = new RegisteredResourceComparator();
+ assertEquals("bundle is > config when compared", 1, c.compare(b, cfg));
+ assertEquals("config is < bundle when compared", -1, c.compare(cfg, b));
+ }
}
\ No newline at end of file
Modified: sling/trunk/installer/osgi/it/src/test/java/org/apache/sling/osgi/installer/it/BundleInstallUpgradeDowngradeTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/installer/osgi/it/src/test/java/org/apache/sling/osgi/installer/it/BundleInstallUpgradeDowngradeTest.java?rev=809621&r1=809620&r2=809621&view=diff
==============================================================================
--- sling/trunk/installer/osgi/it/src/test/java/org/apache/sling/osgi/installer/it/BundleInstallUpgradeDowngradeTest.java (original)
+++ sling/trunk/installer/osgi/it/src/test/java/org/apache/sling/osgi/installer/it/BundleInstallUpgradeDowngradeTest.java Mon Aug 31 15:14:31 2009
@@ -71,19 +71,19 @@
{
resetCounters();
installer.addResource(getInstallableResource(
- getTestBundle(BUNDLE_BASE_NAME + "-testbundle-1.2.jar")));
+ getTestBundle(BUNDLE_BASE_NAME + "-testbundle-1.2.jar"), "digestA"));
waitForInstallerAction(OsgiInstaller.WORKER_THREAD_BECOMES_IDLE_COUNTER, 1);
final Bundle b = assertBundle("After updating to 1.2", symbolicName, "1.2", Bundle.ACTIVE);
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();
installer.addResource(getInstallableResource(
- getTestBundle(BUNDLE_BASE_NAME + "-testbundle-1.0.jar")));
+ getTestBundle(BUNDLE_BASE_NAME + "-testbundle-1.0.jar"), "digestA"));
// make sure no updates happen
waitForInstallerAction(OsgiInstaller.WORKER_THREAD_BECOMES_IDLE_COUNTER, 1);
@@ -97,6 +97,14 @@
assertCounter(OsgiInstaller.REGISTERED_RESOURCES_COUNTER, 3);
assertCounter(OsgiInstaller.REGISTERED_GROUPS_COUNTER, 1);
+ // Update to same version with different digest must be ignored
+ {
+ resetCounters();
+ installer.addResource(getInstallableResource(
+ getTestBundle(BUNDLE_BASE_NAME + "-testbundle-1.0.jar"), "digestB"));
+ assertNoOsgiTasks("Update to same version should generate no OSGi tasks");
+ }
+
// Uninstall
{
resetCounters();