@Test public void testProfilePublishing() throws Exception { File customProfile = resourceFile("publishers/virgo-1.6.profile"); Collection<DependencySeed> seeds = subject.publishEEProfile(customProfile); assertThat(seeds.size(), is(2)); IInstallableUnit virgoProfileIU = unitsById(seeds).get("a.jre.virgo"); assertThat(virgoProfileIU, not(nullValue())); Collection<IProvidedCapability> provided = virgoProfileIU.getProvidedCapabilities(); boolean customJavaxActivationVersionFound = false; Version version_1_1_1 = Version.create("1.1.1"); for (IProvidedCapability capability : provided) { if (PublisherHelper.CAPABILITY_NS_JAVA_PACKAGE.equals(capability.getNamespace())) { if ("javax.activation".equals(capability.getName())) { if (version_1_1_1.equals(capability.getVersion())) { customJavaxActivationVersionFound = true; break; } } } } assertTrue( "did not find capability for package javax.activation with custom version " + version_1_1_1, customJavaxActivationVersionFound); assertThat(unitsById(seeds).keySet(), hasItem("config.a.jre.virgo")); }
public void testConcatentatedStrings() { Version v = Version.parseVersion("format(r):'a''b'"); assertNotNull(v); assertEquals(Version.parseVersion("raw:'ab'"), v); assertNotNull(v = Version.parseVersion("format(r):'a has a \"hat\" it is '\"a's\"")); assertEquals(Version.parseVersion("raw:'a has a \"hat\" it is '\"a's\""), v); }
public void testString() { Version v = Version.parseVersion("format(r):'a'"); assertNotNull(v); assertEquals(Version.parseVersion("raw:'a'"), v); assertNotNull(v = Version.parseVersion("format(r):\"a\"")); assertEquals(Version.parseVersion("raw:'a'"), v); }
private void verifyBundleCU() { final String bundleCUId = flavor + configSpec + ORG_ECLIPSE_CORE_COMMANDS; IQueryResult queryResult = publisherResult.query(QueryUtil.createIUQuery(bundleCUId), new NullProgressMonitor()); assertEquals(1, queryResultSize(queryResult)); IInstallableUnitFragment fragment = (IInstallableUnitFragment) queryResult.iterator().next(); assertNull(fragment.getFilter()); // no filter if config spec is ANY assertTrue(fragment.getVersion().equals(version)); assertFalse(fragment.isSingleton()); final Collection<IProvidedCapability> providedCapabilities = fragment.getProvidedCapabilities(); verifyProvidedCapability( providedCapabilities, IInstallableUnit.NAMESPACE_IU_ID, bundleCUId, version); verifyProvidedCapability( providedCapabilities, "org.eclipse.equinox.p2.flavor", flavor + configSpec, version); //$NON-NLS-1$ assertEquals(2, providedCapabilities.size()); assertEquals(0, fragment.getRequirements().size()); final Collection<IRequirement> hostRequirements = fragment.getHost(); verifyRequiredCapability( hostRequirements, "osgi.bundle", ORG_ECLIPSE_CORE_COMMANDS, new VersionRange(BUNDLE_VERSION)); // $NON-NLS-1$ verifyRequiredCapability( hostRequirements, "org.eclipse.equinox.p2.eclipse.type", "bundle", new VersionRange(Version.create("1.0.0"), true, Version.create("2.0.0"), false), 1, 1, false); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ assertTrue(hostRequirements.size() == 2); final Collection<ITouchpointData> touchpointData = fragment.getTouchpointData(); assertEquals(1, touchpointData.size()); ITouchpointData data = touchpointData.iterator().next(); ITouchpointInstruction instruction = data.getInstruction("install"); // $NON-NLS-1$ assertEquals("installBundle(bundle:${artifact})", instruction.getBody()); // $NON-NLS-1$ instruction = data.getInstruction("uninstall"); // $NON-NLS-1$ assertEquals("uninstallBundle(bundle:${artifact})", instruction.getBody()); // $NON-NLS-1$ instruction = data.getInstruction("configure"); // $NON-NLS-1$ assertEquals("setStartLevel(startLevel:2);", instruction.getBody()); // $NON-NLS-1$ instruction = data.getInstruction("unconfigure"); // $NON-NLS-1$ assertEquals("setStartLevel(startLevel:-1);", instruction.getBody()); // $NON-NLS-1$ }
protected void setUp() throws Exception { super.setUp(); b1 = createIU("B", Version.create("1.0.0"), false); b2 = createIU("B", Version.create("2.0.0"), false); b3 = createIU("B", Version.create("3.0.0"), false); b4 = createIU("B", Version.create("4.0.0"), false); // B's dependency is missing IRequirement[] reqA = new IRequirement[4]; reqA[0] = MetadataFactory.createRequirement( IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0,1.0.0]"), null, true, false, true); reqA[1] = MetadataFactory.createRequirement( IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[2.0.0,2.0.0]"), null, true, false, true); reqA[2] = MetadataFactory.createRequirement( IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[3.0.0,3.0.0]"), null, true, false, true); reqA[3] = MetadataFactory.createRequirement( IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[4.0.0,4.0.0]"), null, true, false, true); a1 = createIU("A", Version.create("1.0.0"), reqA); createTestMetdataRepository(new IInstallableUnit[] {a1, b1, b2, b3, b4}); profile = createProfile("TestProfile." + getName()); planner = createPlanner(); }
public void testNonRElements() { try { Version.parseVersion("format(r):aaa"); fail("a is not a valid raw element"); } catch (IllegalArgumentException e) { assertTrue(true); } try { Version.parseVersion("format(r):1,2"); fail("comma is not a delimiter in raw format"); } catch (IllegalArgumentException e) { assertTrue(true); } }
public void testTransferError() throws Exception { File simpleRepo = getTestData("simple repository", "testData/artifactRepo/transferTestRepo"); IArtifactRepository source = null; IArtifactRepository target = null; try { source = getArtifactRepositoryManager() .loadRepository(simpleRepo.toURI(), new NullProgressMonitor()); target = createArtifactRepository(new File(getTempFolder(), getName()).toURI(), null); } catch (ProvisionException e) { fail("failing setting up the tests", e); } IArtifactDescriptor sourceDescriptor = getArtifactKeyFor( source, "osgi.bundle", "missingFromFileSystem", Version.createOSGi(1, 0, 0))[0]; SimpleArtifactDescriptor targetDescriptor = new SimpleArtifactDescriptor(sourceDescriptor); targetDescriptor.setRepositoryProperty("artifact.folder", "true"); class TestRequest extends MirrorRequest { public TestRequest( IArtifactKey key, IArtifactRepository targetRepository, Map<String, String> targetDescriptorProperties, Map<String, String> targetRepositoryProperties) { super( key, targetRepository, targetDescriptorProperties, targetRepositoryProperties, getTransport()); } public void setSource(IArtifactRepository source) { super.setSourceRepository(source); } } TestRequest request = new TestRequest( new ArtifactKey("osgi.bundle", "missingFromFileSystem", Version.createOSGi(1, 0, 0)), target, null, null); request.setSource(source); IStatus s = transferSingle(request, targetDescriptor, sourceDescriptor, new NullProgressMonitor()); assertTrue(s.toString(), s.getException().getClass() == FileNotFoundException.class); }
private IInstallableUnit createIdIU(String id) { InstallableUnitDescription iu = new MetadataFactory.InstallableUnitDescription(); String time = Long.toString(System.currentTimeMillis()); iu.setId("toast.id"); iu.setVersion(Version.createOSGi(0, 0, 0, time)); Map touchpointData = new HashMap(); String data = "addJvmArg(jvmArg:-D" + ICoreConstants.ID_PROPERTY + "=" + id + ");"; touchpointData.put("configure", data); data = "removeJvmArg(jvmArg:-D" + ICoreConstants.ID_PROPERTY + "=" + id + ");"; touchpointData.put("unconfigure", data); iu.addTouchpointData(MetadataFactory.createTouchpointData(touchpointData)); ITouchpointType touchpoint = MetadataFactory.createTouchpointType( "org.eclipse.equinox.p2.osgi", Version.createOSGi(1, 0, 0)); iu.setTouchpointType(touchpoint); return MetadataFactory.createInstallableUnit(iu); }
private IQuery<IInstallableUnit> createQuery(IUDescription iu) { String id = iu.getId(); String version = iu.getVersion(); if (version == null || version.length() == 0) { return QueryUtil.createLatestQuery(QueryUtil.createIUQuery(id)); } else { return QueryUtil.createIUQuery(id, Version.parseVersion(version)); } }
private static Version parseVersion(String version) { if (version == null) { return null; } try { return Version.parseVersion(version); } catch (IllegalArgumentException e) { throw new TargetPlatformFilterSyntaxException("Failed to parse version: " + version, e); } }
@Override public void setupPublisherResult() { super.setupPublisherResult(); InstallableUnitDescription iuDescription = new InstallableUnitDescription(); iuDescription.setId(ORG_ECLIPSE_CORE_COMMANDS); iuDescription.setVersion(Version.create(BUNDLE_VERSION)); IInstallableUnit iu = MetadataFactory.createInstallableUnit(iuDescription); publisherResult.addIU(iu, IPublisherResult.NON_ROOT); }
private Version parseVersion(Unit unitReference) { try { return Version.parseVersion(unitReference.getVersion()); } catch (IllegalArgumentException e) { throw new TargetDefinitionSyntaxException( NLS.bind( "Cannot parse version \"{0}\" of unit \"{1}\"", unitReference.getVersion(), unitReference.getId()), e); } }
protected void setUp() throws Exception { super.setUp(); a1 = createIU( "A", Version.create("1.0.0"), createRequiredCapabilities( IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.0.0, 1.0.0]"))); createTestMetdataRepository(new IInstallableUnit[] {a1}); profile = createProfile(NoRequirements.class.getName()); planner = createPlanner(); }
/* * Return a boolean value indicating whether or not the IU with the given ID and version * is installed. We do this by loading the profile registry and seeing if it is there. */ public boolean isInstalled(String id, String version) { File location = new File(output, getRootFolder() + "/p2/org.eclipse.equinox.p2.engine/profileRegistry"); SimpleProfileRegistry registry = new SimpleProfileRegistry( getAgent(), location, new SurrogateProfileHandler(getAgent()), false); IProfile[] profiles = registry.getProfiles(); assertEquals("1.0 Should only be one profile in registry.", 1, profiles.length); IQueryResult queryResult = profiles[0].query(QueryUtil.createIUQuery(id, Version.create(version)), null); return !queryResult.isEmpty(); }
public void testGetAction() { final ArrayList actionsList1 = new ArrayList(); InstallableUnitPhase phase1 = new InstallableUnitPhase("test", 1) { protected List<ProvisioningAction> getActions(InstallableUnitOperand operand) { List<ProvisioningAction> actions = getActions(operand.second(), "test1"); actionsList1.addAll(actions); return actions; } }; final ArrayList actionsList2 = new ArrayList(); InstallableUnitPhase phase2 = new InstallableUnitPhase("test", 1) { protected List<ProvisioningAction> getActions(InstallableUnitOperand operand) { List<ProvisioningAction> actions = getActions(operand.second(), "test2"); actionsList2.addAll(actions); return actions; } }; PhaseSet phaseSet = new TestPhaseSet(new Phase[] {phase1, phase2}); IProfile profile = createProfile("PhaseTest"); Map instructions = new HashMap(); instructions.put("test1", MetadataFactory.createTouchpointInstruction("test1.test()", null)); instructions.put("test2", MetadataFactory.createTouchpointInstruction("test2.test()", null)); ITouchpointData touchpointData = MetadataFactory.createTouchpointData(instructions); IInstallableUnit unit = createIU( "test", Version.create("1.0.0"), null, NO_REQUIRES, new IProvidedCapability[0], NO_PROPERTIES, ITouchpointType.NONE, touchpointData, false); IProvisioningPlan plan = engine.createPlan(profile, null); plan.addInstallableUnit(unit); IStatus status = engine.perform(plan, phaseSet, new NullProgressMonitor()); if (!status.isOK()) { fail(status.toString()); } assertEquals( TestAction.class, ((ParameterizedProvisioningAction) actionsList1.get(0)).getAction().getClass()); assertEquals( TestAction.class, ((ParameterizedProvisioningAction) actionsList2.get(0)).getAction().getClass()); }
private void copyGenerators() { List<Generator> generators = cspec.getGenerators(); if (generators.isEmpty()) return; IGeneratorsType gt = ICSpecXMLFactory.eINSTANCE.createGeneratorsType(); xmlSpec.getGenerators().add(gt); for (Generator generator : generators) { IGenerator xmlGen = ICSpecXMLFactory.eINSTANCE.createGenerator(); ComponentIdentifier cid = generator.getGenerates(); xmlGen.setGenerates(cid.getId()); xmlGen.setGeneratesType(cid.getType()); Version version = cid.getVersion(); if (version != null) xmlGen.setGeneratesVersionString(version.toString()); xmlGen.setAttribute(generator.getAttribute()); ComponentRequest component = generator.getComponent(); if (component != null) { xmlGen.setComponent(component.getId()); xmlGen.setComponentType(component.getType()); } gt.getGenerator().add(xmlGen); } }
@Override protected void setUp() throws Exception { super.setUp(); a1 = createIU("A", Version.create("2.0.0")); IUpdateDescriptor update = MetadataFactory.createUpdateDescriptor( "A", new VersionRange("[2.0.0, 2.0.0]"), 0, "update description"); updateOfA = createIU( "UpdateA", Version.createOSGi(1, 0, 0), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, null, NO_TP_DATA, false, update, NO_REQUIRES); a11 = createIUUpdate(); }
private static IQuery<IInstallableUnit> createQuery(IUDescription iu) { String id = iu.getId(); String version = iu.getVersion(); if (iu.getQueryMatchExpression() != null) { return QueryUtil.createMatchQuery( iu.getQueryMatchExpression(), (Object[]) iu.getQueryParameters()); } else { if (version == null || version.length() == 0) { return QueryUtil.createLatestQuery(QueryUtil.createIUQuery(id)); } else { return QueryUtil.createIUQuery(id, Version.parseVersion(version)); } } }
protected IPublisherAction[] createActions() { ArrayList<IPublisherAction> result = new ArrayList<IPublisherAction>(); if (features == null) features = new File[] {new File(source, "features")}; // $NON-NLS-1$ result.add(new FeaturesAction(features)); if (bundles == null) bundles = new File[] {new File(source, "plugins")}; // $NON-NLS-1$ result.add(new BundlesAction(bundles)); if (rootIU != null) { result.add(new RootIUAction(rootIU, Version.parseVersion(rootVersion), rootIU)); info.addAdvice(new RootIUResultFilterAdvice(null)); } return result.toArray(new IPublisherAction[result.size()]); }
/** * * <!-- begin-user-doc --> * <!-- end-user-doc --> * * @generated */ @Override public boolean eIsSet(int featureID) { switch (featureID) { case P2Package.ARTIFACT_KEY__CLASSIFIER: return CLASSIFIER_EDEFAULT == null ? classifier != null : !CLASSIFIER_EDEFAULT.equals(classifier); case P2Package.ARTIFACT_KEY__ID: return ID_EDEFAULT == null ? id != null : !ID_EDEFAULT.equals(id); case P2Package.ARTIFACT_KEY__VERSION: return VERSION_EDEFAULT == null ? version != null : !VERSION_EDEFAULT.equals(version); } return super.eIsSet(featureID); }
private IInstallableUnit createIUUpdate() { return createIU( "A", Version.create("2.1.0"), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, ITouchpointType.NONE, NO_TP_DATA, false, MetadataFactory.createUpdateDescriptor( "A", new VersionRange("[2.0.0, 2.1.0]"), 0, "update description"), null); }
protected void setUp() throws Exception { super.setUp(); a1 = createIU("A", Version.create("1.0.0"), true); createIU( "A", Version.create("2.0.0"), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, ITouchpointType.NONE, NO_TP_DATA, true, MetadataFactory.createUpdateDescriptor("A", VersionRange.emptyRange, 0, "foo bar"), null); a2 = createIU("A", Version.create("2.0.0"), true); createTestMetdataRepository(new IInstallableUnit[] {a1, a2}); profile = createProfile("TestProfile." + getName()); planner = createPlanner(); engine = createEngine(); }
/** * Returns an IU corresponding to the given artifact key and bundle, or <code>null</code> if an IU * could not be created. */ public static IInstallableUnit createBundleIU(IArtifactKey artifactKey, File bundleFile) { BundleDescription bundleDescription = BundlesAction.createBundleDescription(bundleFile); if (bundleDescription == null) return null; PublisherInfo info = new PublisherInfo(); Version version = Version.create(bundleDescription.getVersion().toString()); AdviceFileAdvice advice = new AdviceFileAdvice( bundleDescription.getSymbolicName(), version, new Path(bundleFile.getAbsolutePath()), AdviceFileAdvice.BUNDLE_ADVICE_FILE); if (advice.containsAdvice()) info.addAdvice(advice); String shape = bundleFile.isDirectory() ? IBundleShapeAdvice.DIR : IBundleShapeAdvice.JAR; info.addAdvice(new BundleShapeAdvice(bundleDescription.getSymbolicName(), version, shape)); return BundlesAction.createBundleIU(bundleDescription, artifactKey, info); }
public IInstallableUnit getRemoteIU(String id, String version) { File location = new File(output, getRootFolder() + "/p2/org.eclipse.equinox.p2.engine/profileRegistry"); SimpleProfileRegistry registry = new SimpleProfileRegistry( getAgent(), location, new SurrogateProfileHandler(getAgent()), false); IProfile[] profiles = registry.getProfiles(); assertEquals("1.0 Should only be one profile in registry.", 1, profiles.length); IQueryResult queryResult = profiles[0].query(QueryUtil.createIUQuery(id, Version.create(version)), null); assertEquals( "1.1 Should not have more than one IU wth the same ID and version.", 1, queryResultSize(queryResult)); return (IInstallableUnit) queryResult.iterator().next(); }
/** * We will initialize file contents with a sample text. * * @throws SAXException */ @Override protected InputStream openContentStream(String containerName, String fileName) { String name = containerName; int lastSlash = name.lastIndexOf('/'); if (lastSlash >= 0) name = name.substring(lastSlash + 1); CSpecBuilder builder = new CSpecBuilder(); builder.setName(name); builder.setComponentTypeID(INIT_COMPONENT_TYPE); builder.setVersion(Version.parseVersion(INIT_VERSION_STRING)); CSpec cspec = new CSpec(builder); AccessibleByteArrayOutputStream bld = new AccessibleByteArrayOutputStream(); try { Utils.serialize(cspec, bld); } catch (SAXException e) { throw new RuntimeException( Messages.cannot_create_a_new_buckminster_component_specification_file, e); } return bld.getInputStream(); }
@Override protected void setUp() throws Exception { super.setUp(); InstallableUnitDescription iud = new MetadataFactory.InstallableUnitDescription(); iud.setId("A"); iud.setVersion(Version.create("1.0.0")); String orExpression = "providedCapabilities.exists(pc | pc.namespace == 'org.eclipse.equinox.p2.iu' && (pc.name == 'B' || pc.name == 'C'))"; IExpression expr = ExpressionUtil.parse(orExpression); IMatchExpression matchExpression = ExpressionUtil.getFactory().matchExpression(expr); Collection<IMatchExpression<IInstallableUnit>> updateExpression = new ArrayList<IMatchExpression<IInstallableUnit>>(); updateExpression.add(matchExpression); iud.setUpdateDescriptor( MetadataFactory.createUpdateDescriptor( updateExpression, IUpdateDescriptor.HIGH, (String) null, (URI) null)); iua = MetadataFactory.createInstallableUnit(iud); Collection<IInstallableUnit> ius = new ArrayList<IInstallableUnit>(); ius.add(iua); URI repoURI = getTempFolder().toURI(); createMetadataRepository(repoURI, null).addInstallableUnits(ius); getMetadataRepositoryManager().removeRepository(repoURI); x = getMetadataRepositoryManager() .loadRepository(repoURI, null) .query(QueryUtil.ALL_UNITS, null) .iterator() .next() .getUpdateDescriptor() .getIUsBeingUpdated(); assertEquals(matchExpression, x.iterator().next()); }
public void testMaxNumeric() { Version v = Version.parseVersion("format(r):M"); assertNotNull(v); assertEquals(Version.parseVersion("raw:M"), v); }
protected void setUp() throws Exception { super.setUp(); a1 = createIU("A", Version.createOSGi(1, 0, 0), true); a2 = createIU("A", Version.create("2.0.0"), true); b1 = createIU("B", Version.create("1.0.0"), true); b2 = createIU("B", Version.create("2.0.0"), true); c2 = createIU("C", Version.create("2.0.0"), true); IRequirement[] req = new IRequirement[3]; req[0] = MetadataFactory.createRequirement( IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[1.0.0, 1.1.0)"), null, false, true); req[1] = MetadataFactory.createRequirement( IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[1.0.0, 1.1.0)"), null, false, true); req[2] = MetadataFactory.createRequirement( IInstallableUnit.NAMESPACE_IU_ID, "C", new VersionRange("[2.0.0, 3.1.0)"), null, false, true); f1 = createIU("F", Version.createOSGi(1, 0, 0), req); IRequirementChange changeA = MetadataFactory.createRequirementChange( MetadataFactory.createRequirement( IInstallableUnit.NAMESPACE_IU_ID, "A", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequirement( IInstallableUnit.NAMESPACE_IU_ID, "A", new VersionRange("[2.0.0, 3.0.0)"), null, false, false, true)); IRequirement[][] scope = new IRequirement[][] { { MetadataFactory.createRequirement( IInstallableUnit.NAMESPACE_IU_ID, "F", VersionRange.emptyRange, null, false, false, false) } }; p1 = createIUPatch( "P", Version.create("1.0.0"), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, ITouchpointType.NONE, NO_TP_DATA, false, null, new IRequirementChange[] {changeA}, scope, null, new IRequirement[0]); IRequirementChange changeB = MetadataFactory.createRequirementChange( MetadataFactory.createRequirement( IInstallableUnit.NAMESPACE_IU_ID, "B", VersionRange.emptyRange, null, false, false, false), MetadataFactory.createRequirement( IInstallableUnit.NAMESPACE_IU_ID, "B", new VersionRange("[2.0.0, 3.0.0)"), null, false, false, true)); IRequirement[][] scopePP = new IRequirement[][] { { MetadataFactory.createRequirement( IInstallableUnit.NAMESPACE_IU_ID, "F", VersionRange.emptyRange, null, false, false, false) } }; r1 = createIUPatch( "R", Version.create("1.0.0"), null, NO_REQUIRES, NO_PROVIDES, NO_PROPERTIES, ITouchpointType.NONE, NO_TP_DATA, false, null, new IRequirementChange[] {changeB}, scopePP, null, new IRequirement[0]); createTestMetdataRepository(new IInstallableUnit[] {a1, a2, b1, b2, c2, f1, p1, r1}); profile1 = createProfile("TestProfile." + getName()); planner = createPlanner(); engine = createEngine(); }
@SuppressWarnings({"unchecked"}) public class ANYConfigCUsActionTest extends ActionTest { private static final String BUNDLE_VERSION = "5.0.0"; // $NON-NLS-1$ private static final String ORG_ECLIPSE_CORE_COMMANDS = "org.eclipse.core.commands"; //$NON-NLS-1$ private static File configLocation = new File( TestActivator.getTestDataFolder(), "ConfigCUsActionTest/level1/level2/config.ini"); //$NON-NLS-1$ private static File executableLocation = new File( TestActivator.getTestDataFolder(), "ConfigCUsActionTest/level1/run.exe"); // $NON-NLS-1$ private static Version version = Version.create("1.0.0"); // $NON-NLS-1$ private static String id = "id"; // $NON-NLS-1$ private static String flavor = "tooling"; // $NON-NLS-1$ private IMetadataRepository metadataRepo; private DataLoader loader; public void setUp() throws Exception { // configuration spec for creation of filterless CUs String[] cfgSpecs = AbstractPublisherAction.parseConfigSpec("ANY"); // $NON-NLS-1$ configSpec = AbstractPublisherAction.createConfigSpec(cfgSpecs[0], cfgSpecs[1], cfgSpecs[2]); setupPublisherInfo(); setupPublisherResult(); testAction = new ConfigCUsAction(publisherInfo, flavor, id, version); } public void testAction() throws Exception { testAction.perform(publisherInfo, publisherResult, new NullProgressMonitor()); verifyAction(); debug("Completed ConfigCUsAction test."); // $NON-NLS-1$ } private void verifyAction() { ArrayList IUs = new ArrayList(publisherResult.getIUs(null, IPublisherResult.ROOT)); assertTrue(IUs.size() == 1); InstallableUnit iu = (InstallableUnit) IUs.get(0); assertTrue(iu.getId().equalsIgnoreCase(flavor + id + ".configuration")); // $NON-NLS-1$ // verify ProvidedCapabilities Collection<IProvidedCapability> providedCapabilities = iu.getProvidedCapabilities(); verifyProvidedCapability( providedCapabilities, "org.eclipse.equinox.p2.iu", iu.getId(), version); // $NON-NLS-1$ assertTrue(providedCapabilities.size() == 1); // verify RequiredCapabilities List<IRequirement> requiredCapability = iu.getRequirements(); assertTrue(requiredCapability.size() == 3); verifyRequiredCapability( requiredCapability, IInstallableUnit.NAMESPACE_IU_ID, flavor + id + ".config." + configSpec, new VersionRange(version, true, version, true)); // $NON-NLS-1$ verifyRequiredCapability( requiredCapability, IInstallableUnit.NAMESPACE_IU_ID, flavor + id + ".ini." + configSpec, new VersionRange(version, true, version, true)); // $NON-NLS-1$ verifyRequiredCapability( requiredCapability, IInstallableUnit.NAMESPACE_IU_ID, flavor + configSpec + ORG_ECLIPSE_CORE_COMMANDS, new VersionRange(version, true, version, true)); // verify non root IUs verifyFragment("ini"); // $NON-NLS-1$ verifyFragment("config"); // $NON-NLS-1$ verifyBundleCU(); } private void verifyFragment(String cuType) { ArrayList IUs = new ArrayList(publisherResult.getIUs(null, IPublisherResult.NON_ROOT)); for (int i = 0; i < IUs.size(); i++) { InstallableUnit iu = (InstallableUnit) IUs.get(i); if (iu.getId() .equals(flavor + id + "." + cuType + "." + configSpec)) { // $NON-NLS-1$ //$NON-NLS-2$ assertNull(iu.getFilter()); // no filter if config spec is ANY assertTrue(iu.getVersion().equals(version)); assertFalse(iu.isSingleton()); Collection<IProvidedCapability> providedCapabilities = iu.getProvidedCapabilities(); verifyProvidedCapability( providedCapabilities, IInstallableUnit.NAMESPACE_IU_ID, flavor + id + "." + cuType + "." + configSpec, version); //$NON-NLS-1$//$NON-NLS-2$ verifyProvidedCapability( providedCapabilities, flavor + id, id + "." + cuType, version); // $NON-NLS-1$ assertTrue(providedCapabilities.size() == 2); assertTrue(iu.getRequirements().size() == 0); if (cuType.equals("ini")) // $NON-NLS-1$ verifyLauncherArgs(iu); if (cuType.equals("config")) // $NON-NLS-1$ verifyConfigProperties(iu); return; // pass } } fail( "Configuration unit of type " + cuType + " was not enocuntered among fragments"); //$NON-NLS-1$ } private void verifyBundleCU() { final String bundleCUId = flavor + configSpec + ORG_ECLIPSE_CORE_COMMANDS; IQueryResult queryResult = publisherResult.query(QueryUtil.createIUQuery(bundleCUId), new NullProgressMonitor()); assertEquals(1, queryResultSize(queryResult)); IInstallableUnitFragment fragment = (IInstallableUnitFragment) queryResult.iterator().next(); assertNull(fragment.getFilter()); // no filter if config spec is ANY assertTrue(fragment.getVersion().equals(version)); assertFalse(fragment.isSingleton()); final Collection<IProvidedCapability> providedCapabilities = fragment.getProvidedCapabilities(); verifyProvidedCapability( providedCapabilities, IInstallableUnit.NAMESPACE_IU_ID, bundleCUId, version); verifyProvidedCapability( providedCapabilities, "org.eclipse.equinox.p2.flavor", flavor + configSpec, version); //$NON-NLS-1$ assertEquals(2, providedCapabilities.size()); assertEquals(0, fragment.getRequirements().size()); final Collection<IRequirement> hostRequirements = fragment.getHost(); verifyRequiredCapability( hostRequirements, "osgi.bundle", ORG_ECLIPSE_CORE_COMMANDS, new VersionRange(BUNDLE_VERSION)); // $NON-NLS-1$ verifyRequiredCapability( hostRequirements, "org.eclipse.equinox.p2.eclipse.type", "bundle", new VersionRange(Version.create("1.0.0"), true, Version.create("2.0.0"), false), 1, 1, false); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ assertTrue(hostRequirements.size() == 2); final Collection<ITouchpointData> touchpointData = fragment.getTouchpointData(); assertEquals(1, touchpointData.size()); ITouchpointData data = touchpointData.iterator().next(); ITouchpointInstruction instruction = data.getInstruction("install"); // $NON-NLS-1$ assertEquals("installBundle(bundle:${artifact})", instruction.getBody()); // $NON-NLS-1$ instruction = data.getInstruction("uninstall"); // $NON-NLS-1$ assertEquals("uninstallBundle(bundle:${artifact})", instruction.getBody()); // $NON-NLS-1$ instruction = data.getInstruction("configure"); // $NON-NLS-1$ assertEquals("setStartLevel(startLevel:2);", instruction.getBody()); // $NON-NLS-1$ instruction = data.getInstruction("unconfigure"); // $NON-NLS-1$ assertEquals("setStartLevel(startLevel:-1);", instruction.getBody()); // $NON-NLS-1$ } private void verifyLauncherArgs(IInstallableUnit iu) { Collection<ITouchpointData> touchpointData = iu.getTouchpointData(); assertEquals(1, touchpointData.size()); ITouchpointData data = touchpointData.iterator().next(); ITouchpointInstruction instruction = data.getInstruction("configure"); // $NON-NLS-1$ String body = instruction.getBody(); assertTrue( "arg -foo bar", body.indexOf("addProgramArg(programArg:-foo bar);") > -1); // $NON-NLS-1$ //$NON-NLS-2$ assertTrue( "vmarg -agentlib", body.indexOf( "addJvmArg(jvmArg:-agentlib${#58}jdwp=transport=dt_socket${#44}server=y${#44}suspend=n${#44}address=8272);") > -1); //$NON-NLS-1$ //$NON-NLS-2$ assertTrue( "arg -product com,ma", body.indexOf("addProgramArg(programArg:-product);addProgramArg(programArg:com${#44}ma);") > -1); //$NON-NLS-1$ //$NON-NLS-2$ } private void verifyConfigProperties(IInstallableUnit iu) { Collection<ITouchpointData> touchpointData = iu.getTouchpointData(); assertEquals(1, touchpointData.size()); ITouchpointData data = touchpointData.iterator().next(); ITouchpointInstruction instruction = data.getInstruction("configure"); // $NON-NLS-1$ String body = instruction.getBody(); assertTrue( "eclipse.product", body.indexOf( "setProgramProperty(propName:eclipse.product,propValue:org.eclipse.platform.ide);") > -1); //$NON-NLS-1$ //$NON-NLS-2$ assertTrue( "eclipse.buildId", body.indexOf("setProgramProperty(propName:eclipse.buildId,propValue:TEST-ID);") > -1); //$NON-NLS-1$ //$NON-NLS-2$ assertTrue( "my.property", body.indexOf( "setProgramProperty(propName:my.property,propValue:${#123}a${#44}b${#58}c${#59}${#36}d${#125});") > -1); //$NON-NLS-1$ //$NON-NLS-2$ } protected void insertPublisherInfoBehavior() { loader = new DataLoader(configLocation, executableLocation); // configure IExecutableAdvice LauncherData launcherData = loader.getLauncherData(); LaunchingAdvice launchingAdvice = new LaunchingAdvice(launcherData, configSpec); ArrayList launchingList = new ArrayList(); launchingList.add(launchingAdvice); ProductFileAdvice productAdvice = null; try { String productFileLocation = TestData.getFile("ProductActionTest", "productFileActionTest.product") .toString(); //$NON-NLS-1$ //$NON-NLS-2$ productAdvice = new ProductFileAdvice(new ProductFile(productFileLocation), configSpec); launchingList.add(productAdvice); } catch (Exception e) { fail("Unable to create product file advice", e); // $NON-NLS-1$ } expect( publisherInfo.getAdvice( EasyMock.matches(configSpec), EasyMock.eq(false), (String) EasyMock.anyObject(), (Version) EasyMock.anyObject(), EasyMock.eq(IExecutableAdvice.class))) .andReturn(launchingList) .anyTimes(); // configure IConfigAdvice ConfigData configData = loader.getConfigData(); ConfigAdvice configAdvice = new ConfigAdvice(configData, configSpec); ArrayList configList = new ArrayList(); configList.add(configAdvice); configList.add(productAdvice); expect( publisherInfo.getAdvice( EasyMock.matches(configSpec), EasyMock.eq(false), (String) EasyMock.anyObject(), (Version) EasyMock.anyObject(), EasyMock.eq(IConfigAdvice.class))) .andReturn(configList) .anyTimes(); // setup metadata repository IInstallableUnit[] ius = { mockIU("foo", null), mockIU("bar", null) }; //$NON-NLS-1$ //$NON-NLS-2$ metadataRepo = new TestMetadataRepository(getAgent(), ius); expect(publisherInfo.getMetadataRepository()).andReturn(metadataRepo).anyTimes(); expect(publisherInfo.getContextMetadataRepository()).andReturn(null).anyTimes(); } @Override public void setupPublisherResult() { super.setupPublisherResult(); InstallableUnitDescription iuDescription = new InstallableUnitDescription(); iuDescription.setId(ORG_ECLIPSE_CORE_COMMANDS); iuDescription.setVersion(Version.create(BUNDLE_VERSION)); IInstallableUnit iu = MetadataFactory.createInstallableUnit(iuDescription); publisherResult.addIU(iu, IPublisherResult.NON_ROOT); } }
public void testArray() { Version v = Version.parseVersion("format(r):<1>"); assertNotNull(v); assertEquals(Version.parseVersion("raw:<1>"), v); }