diff options
author | Pascal Rapicault | 2010-08-22 21:39:43 +0000 |
---|---|---|
committer | Pascal Rapicault | 2010-08-22 21:39:43 +0000 |
commit | 6de0c00fac6a7216f94755d179d239c587b9e0b9 (patch) | |
tree | 60a17e23ecda45ecdbf9efa717369d6f3688f413 /bundles/org.eclipse.equinox.p2.tests/src/org/eclipse | |
parent | 0f13d36ff9f12107ffa8ede571e128e46443f1f9 (diff) | |
download | rt.equinox.p2-6de0c00fac6a7216f94755d179d239c587b9e0b9.tar.gz rt.equinox.p2-6de0c00fac6a7216f94755d179d239c587b9e0b9.tar.xz rt.equinox.p2-6de0c00fac6a7216f94755d179d239c587b9e0b9.zip |
Bug 323322 - Resolution is unstable
Diffstat (limited to 'bundles/org.eclipse.equinox.p2.tests/src/org/eclipse')
2 files changed, 73 insertions, 0 deletions
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/AllTests.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/AllTests.java index c5c6afa9e..4f107c445 100644 --- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/AllTests.java +++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/AllTests.java @@ -65,6 +65,7 @@ public class AllTests extends TestCase { suite.addTestSuite(DependencyOnSelf.class); suite.addTestSuite(DisabledExplanation.class); suite.addTestSuite(DropinsScenario.class); + suite.addTestSuite(EPPPackageInstallStability_bug323322.class); suite.addTestSuite(ExplanationDeepConflict.class); suite.addTestSuite(ExplanationForOptionalDependencies.class); suite.addTestSuite(ExplanationForPartialInstallation.class); diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/EPPPackageInstallStability_bug323322.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/EPPPackageInstallStability_bug323322.java new file mode 100644 index 000000000..8492bcf79 --- /dev/null +++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/EPPPackageInstallStability_bug323322.java @@ -0,0 +1,72 @@ +package org.eclipse.equinox.p2.tests.planner; + +import java.net.URI; +import java.util.*; +import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.equinox.p2.core.*; +import org.eclipse.equinox.p2.engine.*; +import org.eclipse.equinox.p2.metadata.IInstallableUnit; +import org.eclipse.equinox.p2.planner.IPlanner; +import org.eclipse.equinox.p2.planner.IProfileChangeRequest; +import org.eclipse.equinox.p2.query.QueryUtil; +import org.eclipse.equinox.p2.repository.metadata.IMetadataRepositoryManager; +import org.eclipse.equinox.p2.tests.AbstractProvisioningTest; + +public class EPPPackageInstallStability_bug323322 extends AbstractProvisioningTest { + + public void testInstallEppJavaPackage() throws ProvisionException { + IProvisioningAgentProvider provider = getAgentProvider(); + IProvisioningAgent agent = provider.createAgent(getTempFolder().toURI()); + IMetadataRepositoryManager repoMgr = (IMetadataRepositoryManager) agent.getService(IMetadataRepositoryManager.SERVICE_NAME); + repoMgr.addRepository(getTestData("Helios SR0", "testData/helios-sr0/").toURI()); + + IPlanner planner = (IPlanner) agent.getService(IPlanner.SERVICE_NAME); + Map<String, String> profileArgs = new HashMap<String, String>(); + profileArgs.put("osgi.os", "linux"); + profileArgs.put("osgi.ws", "gtk"); + profileArgs.put("osgi.arch", "x86"); + + Set<IInstallableUnit> iusFromFirstResolution = new HashSet<IInstallableUnit>(); + { + IProfile eppProfile1 = ((IProfileRegistry) agent.getService(IProfileRegistry.SERVICE_NAME)).addProfile("epp.install.1", profileArgs); + IProfileChangeRequest request = planner.createChangeRequest(eppProfile1); + request.add(repoMgr.query(QueryUtil.createIUQuery("epp.package.java"), null).iterator().next()); + + ProvisioningContext pc = new ProvisioningContext(agent); + + IProvisioningPlan plan = planner.getProvisioningPlan(request, pc, new NullProgressMonitor()); + assertOK("plan is not ok", plan.getStatus()); + + //Extract all the unresolved IUs. + Set tmp = plan.getAdditions().query(QueryUtil.ALL_UNITS, new NullProgressMonitor()).query(QueryUtil.ALL_UNITS, null).toSet(); + for (Iterator iterator = tmp.iterator(); iterator.hasNext();) { + IInstallableUnit iu = (IInstallableUnit) iterator.next(); + iusFromFirstResolution.add(iu.unresolved()); + } + } + + { + IProfile eppProfile2 = ((IProfileRegistry) agent.getService(IProfileRegistry.SERVICE_NAME)).addProfile("epp.install.2", profileArgs); + IProfileChangeRequest request = planner.createChangeRequest(eppProfile2); + request.add(repoMgr.query(QueryUtil.createIUQuery("epp.package.java"), null).iterator().next()); + + ProvisioningContext pc = new ProvisioningContext(agent); + pc.setMetadataRepositories(new URI[0]); + pc.setArtifactRepositories(new URI[0]); + pc.setExtraInstallableUnits(new ArrayList(iusFromFirstResolution)); + + IProvisioningPlan plan = planner.getProvisioningPlan(request, pc, new NullProgressMonitor()); + assertOK("plan is not ok", plan.getStatus()); + + Set tmp = plan.getAdditions().query(QueryUtil.ALL_UNITS, new NullProgressMonitor()).query(QueryUtil.ALL_UNITS, null).toSet(); + Set<IInstallableUnit> iusFromSecondResolution = new HashSet<IInstallableUnit>(); + for (Iterator iterator = tmp.iterator(); iterator.hasNext();) { + IInstallableUnit iu = (IInstallableUnit) iterator.next(); + iusFromSecondResolution.add(iu.unresolved()); + } + + assertEquals(iusFromFirstResolution.size(), iusFromSecondResolution.size()); + } + + } +} |