blob: 0714333223625e54f11e5fc43336528ce9202ee1 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2011, 2017 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.equinox.p2.tests.full;
import java.io.File;
import java.io.IOException;
import java.net.URI;
import org.eclipse.core.runtime.Platform;
import org.eclipse.equinox.internal.provisional.frameworkadmin.*;
import org.eclipse.equinox.p2.core.ProvisionException;
import org.eclipse.equinox.p2.metadata.IInstallableUnit;
import org.eclipse.equinox.p2.metadata.VersionedId;
import org.eclipse.equinox.p2.query.IQueryResult;
import org.eclipse.equinox.p2.query.QueryUtil;
import org.eclipse.equinox.p2.repository.metadata.IMetadataRepository;
import org.eclipse.equinox.p2.tests.TestActivator;
/**
* Test installing the latest available platform.
*/
public class End2EndTestCurrent extends AbstractEnd2EndTest {
URI repositoryLocation;
VersionedId platform, platformSource;
@Override
protected void validateInstallContent(File installFolder) {
FrameworkAdmin fwkAdmin = getEquinoxFrameworkAdmin();
Manipulator manipulator = fwkAdmin.getManipulator();
LauncherData launcherData = manipulator.getLauncherData();
launcherData.setFwConfigLocation(new File(installFolder, "configuration"));
launcherData.setLauncher(new File(installFolder, getLauncherName("eclipse", Platform.getOS())));
try {
manipulator.load();
} catch (IllegalStateException e) {
fail("Error loading the configuration", e);
} catch (FrameworkAdminRuntimeException e) {
fail("Error loading the configuration", e);
} catch (IOException e) {
fail("Error loading the configuration", e);
}
assertContains("Can't find VM arg", manipulator.getLauncherData().getJvmArgs(), "-Xms40m");
assertContains("Can't find VM arg", manipulator.getLauncherData().getJvmArgs(), "-Xmx384m");
String[] programArgs = manipulator.getLauncherData().getProgramArgs();
assertContains("Can't find program arg", programArgs, "-startup");
assertContains("Can't find program arg", programArgs, "-showsplash");
assertContains("Can't find program arg", programArgs, "org.eclipse.platform");
assertTrue(manipulator.getConfigData().getBundles().length > 50);
assertTrue(new File(installFolder, "plugins").exists());
assertTrue(new File(installFolder, "features").exists());
}
@Override
protected URI getRepositoryLocation() {
if (repositoryLocation == null) {
String repository = TestActivator.getContext().getProperty("org.eclipse.equinox.p2.tests.current.build.repo");
assertNotNull("Need set the \'org.eclipse.equinox.p2.tests.current.build.repo\' property.", repository);
repositoryLocation = URI.create(repository);
}
return repositoryLocation;
}
/*
* Look up the given IU id in the repo
*/
private IInstallableUnit getIU(String id) {
IMetadataRepository repo = null;
try {
repo = loadMetadataRepository(getRepositoryLocation());
} catch (ProvisionException e) {
fail("Problem loading repository: " + getRepositoryLocation(), e);
}
IQueryResult<IInstallableUnit> result = repo.query(QueryUtil.createIUQuery(id), getMonitor());
if (result.isEmpty())
fail("Unable to load iu: \'" + id + "\' from repository: " + getRepositoryLocation());
return result.iterator().next();
}
@Override
protected VersionedId getPlatform() {
if (platform == null) {
IInstallableUnit iu = getIU("org.eclipse.platform.ide");
platform = new VersionedId(iu.getId(), iu.getVersion());
}
return platform;
}
@Override
protected VersionedId getPlatformSource() {
if (platformSource == null) {
IInstallableUnit iu = getIU("org.eclipse.platform.source.feature.group");
platformSource = new VersionedId(iu.getId(), iu.getVersion());
}
return platformSource;
}
}