Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPascal Rapicault2010-08-22 21:39:43 +0000
committerPascal Rapicault2010-08-22 21:39:43 +0000
commit6de0c00fac6a7216f94755d179d239c587b9e0b9 (patch)
tree60a17e23ecda45ecdbf9efa717369d6f3688f413 /bundles/org.eclipse.equinox.p2.tests/src/org/eclipse
parent0f13d36ff9f12107ffa8ede571e128e46443f1f9 (diff)
downloadrt.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')
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/AllTests.java1
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/EPPPackageInstallStability_bug323322.java72
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());
+ }
+
+ }
+}

Back to the top