1 /******************************************************************************* 2 * Copyright (c) 2011, 2017 Sonatype, Inc. and others. 3 * 4 * This program and the accompanying materials 5 * are made available under the terms of the Eclipse Public License 2.0 6 * which accompanies this distribution, and is available at 7 * https://www.eclipse.org/legal/epl-2.0/ 8 * 9 * SPDX-License-Identifier: EPL-2.0 10 * 11 * Contributors: 12 * Sonatype, Inc. - initial API and implementation 13 *******************************************************************************/ 14 package org.eclipse.equinox.p2.tests.planner; 15 16 import org.eclipse.core.runtime.IStatus; 17 import org.eclipse.core.runtime.NullProgressMonitor; 18 import org.eclipse.equinox.internal.p2.director.ProfileChangeRequest; 19 import org.eclipse.equinox.p2.engine.IProfile; 20 import org.eclipse.equinox.p2.engine.IProvisioningPlan; 21 import org.eclipse.equinox.p2.metadata.*; 22 import org.eclipse.equinox.p2.planner.IPlanner; 23 import org.eclipse.equinox.p2.query.QueryUtil; 24 import org.eclipse.equinox.p2.tests.AbstractProvisioningTest; 25 26 public class MinimalInstall2 extends AbstractProvisioningTest { 27 IInstallableUnit kernelRoot; 28 IInstallableUnit kernelBundle; 29 30 IInstallableUnit userRegionRoot; 31 IInstallableUnit userRegionBundle; 32 33 IInstallableUnit userRegionRoot2; 34 IInstallableUnit kernelProxy; 35 36 IInstallableUnit commonDep; 37 38 IProfile profile; 39 IPlanner planner; 40 41 @Override setUp()42 protected void setUp() throws Exception { 43 super.setUp(); 44 45 kernelRoot = createIU("KernelRoot", Version.create("1.0.0"), createRequiredCapabilities(IInstallableUnit.NAMESPACE_IU_ID, "KernelBundle", new VersionRange("[1.0.0, 2.0.0)"))); 46 kernelBundle = createIU("KernelBundle", Version.create("1.0.0"), new IProvidedCapability[] {MetadataFactory.createProvidedCapability(IInstallableUnit.NAMESPACE_IU_ID, "KernelBundle", Version.create("1.0.0")), MetadataFactory.createProvidedCapability("java.package", "kernel.package", Version.create("1.0.0"))}); 47 48 userRegionRoot = createIU("UserRegionRoot", Version.create("1.0.0"), createRequiredCapabilities(IInstallableUnit.NAMESPACE_IU_ID, "UserRegionBundle", new VersionRange("[1.0.0, 2.0.0)"))); 49 userRegionBundle = createIU("UserRegionBundle", Version.create("1.0.0"), createRequiredCapabilities("java.package", "kernel.package")); 50 51 IRequirement[] reqs = new IRequirement[] {MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, "UserRegionBundle", new VersionRange("[1.0.0, 2.0.0)"), null, false, false, true), MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, "KernelProxy", new VersionRange("[1.0.0, 2.0.0)"), null, false, false, true)}; 52 userRegionRoot2 = createIU("UserRegionRoot2", reqs); 53 kernelProxy = createIU("KernelProxy", Version.create("1.0.0"), new IProvidedCapability[] {MetadataFactory.createProvidedCapability(IInstallableUnit.NAMESPACE_IU_ID, "KernelProxy", Version.create("1.0.0")), MetadataFactory.createProvidedCapability("java.package", "kernel.package", Version.create("1.0.0"))}); 54 55 createTestMetdataRepository(new IInstallableUnit[] {kernelRoot, kernelBundle, userRegionRoot, userRegionBundle, userRegionRoot2, kernelProxy}); 56 57 profile = createProfile("TestProfile." + getName()); 58 planner = createPlanner(); 59 } 60 testInstallUserRegion()61 public void testInstallUserRegion() { 62 ProfileChangeRequest req = new ProfileChangeRequest(profile); 63 req.addInstallableUnits(new IInstallableUnit[] {userRegionRoot}); 64 IProvisioningPlan pplan = planner.getProvisioningPlan(req, null, null); 65 assertEquals(IStatus.OK, pplan.getStatus().getSeverity()); 66 assertEquals(3, pplan.getAdditions().query(QueryUtil.ALL_UNITS, new NullProgressMonitor()).toSet().size()); 67 } 68 testInstallUserRegion2()69 public void testInstallUserRegion2() { 70 ProfileChangeRequest req = new ProfileChangeRequest(profile); 71 req.addInstallableUnits(new IInstallableUnit[] {userRegionRoot2}); 72 IProvisioningPlan pplan = planner.getProvisioningPlan(req, null, null); 73 assertEquals(IStatus.OK, pplan.getStatus().getSeverity()); 74 assertEquals(3, pplan.getAdditions().query(QueryUtil.ALL_UNITS, new NullProgressMonitor()).toSet().size()); 75 assertFalse(pplan.getAdditions().query(QueryUtil.createIUQuery(userRegionRoot2.getId()), new NullProgressMonitor()).isEmpty()); 76 assertFalse(pplan.getAdditions().query(QueryUtil.createIUQuery(kernelProxy.getId()), new NullProgressMonitor()).isEmpty()); 77 assertFalse(pplan.getAdditions().query(QueryUtil.createIUQuery(userRegionBundle.getId()), new NullProgressMonitor()).isEmpty()); 78 } 79 } 80