Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/full/End2EndTest.java')
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/full/End2EndTest.java116
1 files changed, 65 insertions, 51 deletions
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/full/End2EndTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/full/End2EndTest.java
index 4cb0f640f..6508f93cf 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/full/End2EndTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/full/End2EndTest.java
@@ -10,27 +10,29 @@
*******************************************************************************/
package org.eclipse.equinox.p2.tests.full;
-import org.eclipse.equinox.internal.provisional.p2.metadata.Version;
+import org.eclipse.equinox.p2.metadata.Version;
import java.io.File;
import java.io.IOException;
import java.net.URI;
-import java.net.URISyntaxException;
import java.util.*;
import org.eclipse.core.runtime.*;
import org.eclipse.equinox.internal.p2.core.helpers.LogHelper;
import org.eclipse.equinox.internal.p2.core.helpers.ServiceHelper;
import org.eclipse.equinox.internal.provisional.frameworkadmin.*;
-import org.eclipse.equinox.internal.provisional.p2.artifact.repository.IArtifactRepositoryManager;
-import org.eclipse.equinox.internal.provisional.p2.core.ProvisionException;
import org.eclipse.equinox.internal.provisional.p2.director.IDirector;
import org.eclipse.equinox.internal.provisional.p2.director.ProfileChangeRequest;
-import org.eclipse.equinox.internal.provisional.p2.engine.*;
-import org.eclipse.equinox.internal.provisional.p2.metadata.*;
+import org.eclipse.equinox.internal.provisional.p2.metadata.MetadataFactory;
import org.eclipse.equinox.internal.provisional.p2.metadata.MetadataFactory.InstallableUnitDescription;
-import org.eclipse.equinox.internal.provisional.p2.metadata.query.Collector;
-import org.eclipse.equinox.internal.provisional.p2.metadata.query.InstallableUnitQuery;
-import org.eclipse.equinox.internal.provisional.p2.metadata.repository.IMetadataRepositoryManager;
+import org.eclipse.equinox.p2.core.*;
+import org.eclipse.equinox.p2.engine.*;
+import org.eclipse.equinox.p2.metadata.IInstallableUnit;
+import org.eclipse.equinox.p2.metadata.IProvidedCapability;
+import org.eclipse.equinox.p2.metadata.query.InstallableUnitQuery;
+import org.eclipse.equinox.p2.query.IQueryResult;
+import org.eclipse.equinox.p2.repository.artifact.IArtifactRepositoryManager;
+import org.eclipse.equinox.p2.repository.metadata.IMetadataRepository;
+import org.eclipse.equinox.p2.repository.metadata.IMetadataRepositoryManager;
import org.eclipse.equinox.p2.tests.AbstractProvisioningTest;
import org.eclipse.equinox.p2.tests.TestActivator;
import org.eclipse.osgi.service.environment.EnvironmentInfo;
@@ -46,26 +48,21 @@ public class End2EndTest extends AbstractProvisioningTest {
private ServiceTracker fwAdminTracker;
+ private static URI repositoryLocation = URI.create("http://download.eclipse.org/eclipse/updates/3.5");
+
+ private IProvisioningAgent end2endAgent = null;
+
protected void setUp() throws Exception {
- ServiceReference sr = TestActivator.context.getServiceReference(IDirector.class.getName());
- if (sr == null)
- throw new RuntimeException("Director service not available");
- director = createDirector();
- // planner = createPlanner();
- ServiceReference sr2 = TestActivator.context.getServiceReference(IMetadataRepositoryManager.class.getName());
- metadataRepoManager = (IMetadataRepositoryManager) TestActivator.context.getService(sr2);
- if (metadataRepoManager == null)
- throw new RuntimeException("Metadata repository manager could not be loaded");
-
- ServiceReference sr3 = TestActivator.context.getServiceReference(IArtifactRepositoryManager.class.getName());
- artifactRepoManager = (IArtifactRepositoryManager) TestActivator.context.getService(sr3);
- if (artifactRepoManager == null)
- throw new RuntimeException("Artifact repo manager could not be loaded");
+ ServiceReference sr = TestActivator.context.getServiceReference(IProvisioningAgentProvider.SERVICE_NAME);
+ IProvisioningAgentProvider agentFactory = (IProvisioningAgentProvider) TestActivator.context.getService(sr);
+ end2endAgent = agentFactory.createAgent(getTempFolder().toURI());
+ metadataRepoManager = (IMetadataRepositoryManager) end2endAgent.getService(IMetadataRepositoryManager.SERVICE_NAME);
+ artifactRepoManager = (IArtifactRepositoryManager) end2endAgent.getService(IArtifactRepositoryManager.SERVICE_NAME);
+ director = (IDirector) end2endAgent.getService(IDirector.SERVICE_NAME);
}
protected IProfile createProfile(String profileId, String installFolder) {
- ServiceReference profileRegSr = TestActivator.context.getServiceReference(IProfileRegistry.class.getName());
- IProfileRegistry profileRegistry = (IProfileRegistry) TestActivator.context.getService(profileRegSr);
+ IProfileRegistry profileRegistry = (IProfileRegistry) end2endAgent.getService(IProfileRegistry.SERVICE_NAME);
if (profileRegistry == null) {
throw new RuntimeException("Profile registry service not available");
}
@@ -77,7 +74,11 @@ public class End2EndTest extends AbstractProvisioningTest {
properties.put(IProfile.PROP_ENVIRONMENTS, "osgi.os=" + info.getOS() + ",osgi.ws=" + info.getWS() + ",osgi.arch=" + info.getOSArch());
properties.put("org.eclipse.update.install.features", "true");
properties.put(IProfile.PROP_CACHE, installFolder);
- return createProfile(profileId, null, properties);
+ try {
+ return profileRegistry.addProfile(profileId, properties);
+ } catch (ProvisionException e) {
+ throw new IllegalArgumentException(e.getMessage());
+ }
}
public void testInstallSDK35() {
@@ -86,16 +87,13 @@ public class End2EndTest extends AbstractProvisioningTest {
//Add repository of the release
try {
- URI location = new URI("http://download.eclipse.org/eclipse/updates/3.5");
- metadataRepoManager.addRepository(location);
- metadataRepoManager.setEnabled(location, true);
- metadataRepoManager.loadRepository(location, new NullProgressMonitor());
- artifactRepoManager.addRepository(location);
- artifactRepoManager.setEnabled(location, true);
+ metadataRepoManager.addRepository(repositoryLocation);
+ metadataRepoManager.setEnabled(repositoryLocation, true);
+ metadataRepoManager.loadRepository(repositoryLocation, new NullProgressMonitor());
+ artifactRepoManager.addRepository(repositoryLocation);
+ artifactRepoManager.setEnabled(repositoryLocation, true);
} catch (ProvisionException e) {
fail("Exception loading the repository.", e);
- } catch (URISyntaxException e) {
- fail("Invalid repository location", e);
}
installPlatform35(profile2, installFolder);
@@ -113,19 +111,19 @@ public class End2EndTest extends AbstractProvisioningTest {
}
private void attemptToUninstallRCP35(IProfile profile2, File installFolder) {
- Collector collect = profile2.query(new InstallableUnitQuery("org.eclipse.rcp.feature.group"), new Collector(), new NullProgressMonitor());
- assertEquals(1, collect.size());
+ IQueryResult collect = profile2.query(new InstallableUnitQuery("org.eclipse.rcp.feature.group"), new NullProgressMonitor());
+ assertEquals(1, queryResultSize(collect));
ProfileChangeRequest request = new ProfileChangeRequest(profile2);
request.removeInstallableUnits(new IInstallableUnit[] {(IInstallableUnit) collect.iterator().next()});
IStatus s = director.provision(request, null, new NullProgressMonitor());
assertOK("Can not uninstall RCP", s);
- assertEquals(1, profile2.query(new InstallableUnitQuery("org.eclipse.rcp.feature.group"), new Collector(), new NullProgressMonitor()).size());
+ assertEquals(1, queryResultSize(profile2.query(new InstallableUnitQuery("org.eclipse.rcp.feature.group"), new NullProgressMonitor())));
}
protected void uninstallPlatform(IProfile profile2, File installFolder) {
System.out.println("Uninstall the platform");
- Collector collect = profile2.query(new InstallableUnitQuery("org.eclipse.platform.ide"), new Collector(), new NullProgressMonitor());
- assertEquals(1, collect.size());
+ IQueryResult collect = profile2.query(new InstallableUnitQuery("org.eclipse.platform.ide"), new NullProgressMonitor());
+ assertEquals(1, queryResultSize(collect));
// Collector collect2 = profile2.query(new InstallableUnitQuery("org.eclipse.platform.source.feature.group"), new Collector(), new NullProgressMonitor());
ProfileChangeRequest request = new ProfileChangeRequest(profile2);
request.removeInstallableUnits(new IInstallableUnit[] {(IInstallableUnit) collect.iterator().next()});//, (IInstallableUnit) collect2.iterator().next()});
@@ -134,7 +132,7 @@ public class End2EndTest extends AbstractProvisioningTest {
}
private void rollbackPlatformSource35(IProfile profile2, File installFolder) {
- IProfileRegistry profileRegistry = (IProfileRegistry) ServiceHelper.getService(TestActivator.getContext(), IProfileRegistry.class.getName());
+ IProfileRegistry profileRegistry = (IProfileRegistry) end2endAgent.getService(IProfileRegistry.SERVICE_NAME);
long[] timestamps = profileRegistry.listProfileTimestamps(profile2.getProfileId());
assertEquals(3, timestamps.length);
@@ -149,11 +147,9 @@ public class End2EndTest extends AbstractProvisioningTest {
private void installPlatformSource35(IProfile profile2, File installFolder) {
final String id = "org.eclipse.platform.source.feature.group";
- final Version version = new Version("3.5.0.v20090611a-9gEeG1HFtQcmRThO4O3aR_fqSMvJR2sJ");
+ final Version version = Version.create("3.5.0.v20090611a-9gEeG1HFtQcmRThO4O3aR_fqSMvJR2sJ");
IInstallableUnit toInstall = getIU(id, version);
- if (toInstall == null)
- assertNotNull(toInstall);
ProfileChangeRequest request = new ProfileChangeRequest(profile2);
request.addInstallableUnits(new IInstallableUnit[] {toInstall});
@@ -168,13 +164,13 @@ public class End2EndTest extends AbstractProvisioningTest {
private void installBogusIU(IProfile profile, File installFolder) {
InstallableUnitDescription iud = new MetadataFactory.InstallableUnitDescription();
iud.setId("org.eclipse.equinox.p2.tests.bogusIU.end2end");
- iud.setVersion(new Version("1.0.0"));
- iud.setCapabilities(new IProvidedCapability[] {MetadataFactory.createProvidedCapability(IInstallableUnit.NAMESPACE_IU_ID, "org.eclipse.equinox.p2.tests.bogusIU.end2end", new Version("1.0.0"))});
+ iud.setVersion(Version.create("1.0.0"));
+ iud.setCapabilities(new IProvidedCapability[] {MetadataFactory.createProvidedCapability(IInstallableUnit.NAMESPACE_IU_ID, "org.eclipse.equinox.p2.tests.bogusIU.end2end", Version.create("1.0.0"))});
Map data = new HashMap();
data.put("install", "org.eclipse.equinox.p2.osgi.removeJvmArg(programArg:-XX:+UnlockDiagnosticVMOptions);");
iud.addTouchpointData(MetadataFactory.createTouchpointData(data));
IInstallableUnit bogusIU = MetadataFactory.createInstallableUnit(iud);
- iud.setTouchpointType(MetadataFactory.createTouchpointType("org.eclipse.equinox.p2.osgi", new Version("1.0.0")));
+ iud.setTouchpointType(MetadataFactory.createTouchpointType("org.eclipse.equinox.p2.osgi", Version.create("1.0.0")));
ProfileChangeRequest request = new ProfileChangeRequest(profile);
request.addInstallableUnits(new IInstallableUnit[] {bogusIU});
IStatus s = director.provision(request, null, new NullProgressMonitor());
@@ -183,13 +179,11 @@ public class End2EndTest extends AbstractProvisioningTest {
private void installPlatform35(IProfile profile2, File installFolder) {
final String id = "org.eclipse.platform.ide";
- final Version version = new Version("3.5.0.I20090611-1540");
+ final Version version = Version.create("3.5.0.I20090611-1540");
//First we install the platform
ProfileChangeRequest request = new ProfileChangeRequest(profile2);
IInstallableUnit platformIU = getIU(id, version);
- if (platformIU == null)
- assertNotNull(platformIU);
request.addInstallableUnits(new IInstallableUnit[] {platformIU});
IStatus s = director.provision(request, null, new NullProgressMonitor());
@@ -203,11 +197,31 @@ public class End2EndTest extends AbstractProvisioningTest {
assertFalse(new File(installFolder, "configuration/org.eclipse.equinox.source").exists());
}
+ /**
+ * Returns the IU corresponding to the given id and version. Fails if the IU could
+ * not be found. Never returns null.
+ */
public IInstallableUnit getIU(String id, Version v) {
- Iterator it = metadataRepoManager.query(new InstallableUnitQuery(id, v), new Collector(), null).iterator();
+ final InstallableUnitQuery query = new InstallableUnitQuery(id, v);
+ Iterator it = metadataRepoManager.query(query, null).iterator();
if (it.hasNext())
return (IInstallableUnit) it.next();
- return null;
+ //try the repository location directly - retry because eclipse.org can be flaky
+ Exception failure = null;
+ for (int i = 0; i < 3; i++) {
+ try {
+ IMetadataRepository repo = metadataRepoManager.loadRepository(repositoryLocation, null);
+ it = repo.query(query, null).iterator();
+ if (it.hasNext())
+ return (IInstallableUnit) it.next();
+ } catch (ProvisionException e) {
+ failure = e;
+ }
+ }
+ if (failure == null)
+ failure = new RuntimeException("IU not found");
+ fail("Failed to obtain " + id + " version: " + v + " from: " + repositoryLocation, failure);
+ return null;//will never get here
}
private void validateInstallContentFor35(File installFolder) {

Back to the top