blob: 99c4d497f3706a4ddcdde2142e460bb1b1036f8a [file] [log] [blame]
package org.eclipse.equinox.p2.tests.planner;
import java.net.URISyntaxException;
import java.util.*;
import org.eclipse.core.runtime.*;
import org.eclipse.equinox.internal.p2.director.Projector;
import org.eclipse.equinox.internal.p2.director.Slicer;
import org.eclipse.equinox.p2.core.ProvisionException;
import org.eclipse.equinox.p2.engine.IProfile;
import org.eclipse.equinox.p2.metadata.*;
import org.eclipse.equinox.p2.planner.IProfileChangeRequest;
import org.eclipse.equinox.p2.query.*;
import org.eclipse.equinox.p2.repository.metadata.IMetadataRepository;
import org.eclipse.equinox.p2.tests.AbstractProvisioningTest;
public class TychoUsage extends AbstractProvisioningTest {
private IInstallableUnit topLevelIU;
private IProfile profile;
private void setupTopLevelIU() {
IRequirement[] reqPlatform1 = new IRequirement[1];
reqPlatform1[0] = MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, "org.eclipse.emf.sdk.feature.group", new VersionRange("[2.7.2.v20120130-0943, 2.7.2.v20120130-0943]"), null, false, false, true);
Properties p = new Properties();
topLevelIU = createIU("topLevelIU", Version.create("1.0.0"), null, reqPlatform1, new IProvidedCapability[0], p, null, null, true);
}
@Override
protected void setUp() throws Exception {
super.setUp();
setupTopLevelIU();
}
public void testEquivalentP2Call() throws ProvisionException, URISyntaxException {
loadMetadataRepository(URIUtil.fromString("http://download.eclipse.org/releases/indigo"));
profile = createProfile("TestProfile." + getName());
IProfileChangeRequest pcr = getPlanner(getAgent()).createChangeRequest(profile);
pcr.add(topLevelIU);
System.out.println(System.currentTimeMillis());
assertResolve(pcr, getPlanner(getAgent()));
System.out.println(System.currentTimeMillis());
}
public void testTychoUsage() throws ProvisionException, URISyntaxException {
IMetadataRepository repo = loadMetadataRepository(URIUtil.fromString("http://download.eclipse.org/releases/indigo"));
IInstallableUnit newRoot1 = repo.query(QueryUtil.createIUQuery("org.eclipse.emf.sdk.feature.group", Version.create("2.7.2.v20120130-0943")), new NullProgressMonitor()).iterator().next();
Collection<IInstallableUnit> newRoots = new ArrayList<>();
newRoots.add(newRoot1);
Map<String, String> context = new HashMap<>();
context.put("osgi.ws", "win32");
context.put("osgi.os", "win32");
context.put("osgi.arch", "x86_64");
context.put("org.eclipse.update.install.features", "true");
Slicer slicer = new Slicer(repo, context, false);
IQueryable<IInstallableUnit> slice = slicer.slice(new IInstallableUnit[] {topLevelIU}, new NullProgressMonitor());
Projector p = new Projector(slice, context, new HashSet<IInstallableUnit>(), false);
p.encode(topLevelIU, new IInstallableUnit[0], new Collector<IInstallableUnit>(), newRoots, new NullProgressMonitor());
IStatus result = p.invokeSolver(new NullProgressMonitor());
assertTrue(result.isOK() || result.getSeverity() == IStatus.WARNING);
assertFalse(p.extractSolution().isEmpty());
}
}