blob: 3ac13e90cfabb41b2d38dc7feaab7dbeda3f9388 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2007, 2008 IBM Corporation and others. All rights reserved. This
* program and the accompanying materials are made available under the terms of
* the Eclipse Public License v1.0 which accompanies this distribution, and is
* available at http://www.eclipse.org/legal/epl-v10.html
*
* Contributors: IBM Corporation - initial API and implementation
******************************************************************************/
package org.eclipse.equinox.p2.tests.director;
import java.net.MalformedURLException;
import java.net.URL;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.equinox.internal.p2.core.helpers.ServiceHelper;
import org.eclipse.equinox.internal.p2.director.DirectorActivator;
import org.eclipse.equinox.internal.provisional.p2.core.ProvisionException;
import org.eclipse.equinox.internal.provisional.p2.core.location.AgentLocation;
import org.eclipse.equinox.internal.provisional.p2.director.*;
import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
import org.eclipse.equinox.internal.provisional.p2.engine.ProvisioningContext;
import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
import org.eclipse.equinox.internal.provisional.p2.metadata.query.InstallableUnitQuery;
import org.eclipse.equinox.internal.provisional.p2.metadata.repository.IMetadataRepository;
import org.eclipse.equinox.internal.provisional.p2.metadata.repository.IMetadataRepositoryManager;
import org.eclipse.equinox.internal.provisional.p2.query.Collector;
import org.eclipse.equinox.p2.tests.AbstractProvisioningTest;
import org.eclipse.equinox.p2.tests.TestActivator;
public class RollbackTest extends AbstractProvisioningTest {
private IInstallableUnit a1;
private IProfile profile;
private IDirector director;
protected void setUp() throws Exception {
a1 = createIU("A", DEFAULT_VERSION, true);
profile = createProfile("TestProfile." + getName());
director = createDirector();
}
public void test() throws ProvisionException {
ProfileChangeRequest request = new ProfileChangeRequest(profile);
request.addInstallableUnits(new IInstallableUnit[] {a1});
System.out.println(director.provision(request, null, new NullProgressMonitor()));
printProfile(profile);
IMetadataRepositoryManager repoMan = (IMetadataRepositoryManager) ServiceHelper.getService(TestActivator.getContext(), IMetadataRepositoryManager.class.getName());
IMetadataRepository repo = null;
repo = repoMan.loadRepository(getRollbackRepository(), null);
IInstallableUnit[] ius = (IInstallableUnit[]) repo.query(InstallableUnitQuery.ANY, new Collector(), null).toArray(IInstallableUnit.class);
for (int i = 0; i < ius.length; i++)
System.out.println(ius[i]);
director.revert(ius[0], profile, new ProvisioningContext(), new NullProgressMonitor());
printProfile(profile);
}
private URL getRollbackRepository() {
try {
URL location = ((AgentLocation) ServiceHelper.getService(DirectorActivator.context, AgentLocation.class.getName())).getDataArea(DirectorActivator.PI_DIRECTOR);
return new URL(location, "rollback");
} catch (MalformedURLException e) {
fail("4.99", e);
return null;
}
}
}