/******************************************************************************* | |
* Copyright (c) 2000, 2004 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.update.tests.configurations; | |
import java.io.File; | |
import java.net.URL; | |
import org.eclipse.update.configuration.*; | |
import org.eclipse.update.configurator.*; | |
import org.eclipse.update.core.*; | |
import org.eclipse.update.internal.core.*; | |
import org.eclipse.update.internal.model.ConfiguredSiteModel; | |
import org.eclipse.update.tests.UpdateManagerTestCase; | |
public class TestRevert extends UpdateManagerTestCase { | |
/** | |
* Test the getFeatures() | |
*/ | |
public TestRevert(String arg0) { | |
super(arg0); | |
} | |
public void testSimpleRevertInstall() throws Exception { | |
// cleanup | |
LocalSite siteLocal = ((LocalSite)SiteManager.getLocalSite()); | |
File localFile = new File(siteLocal.getLocationURL().getFile()); | |
UpdateManagerUtils.removeFromFileSystem(localFile); | |
InternalSiteManager.localSite=null; | |
ILocalSite site = SiteManager.getLocalSite(); | |
ISite remoteSite = SiteManager.getSite(SOURCE_HTTP_SITE,null); | |
IFeatureReference featureRef = remoteSite.getFeatureReferences()[0]; | |
IFeatureReference featureRef2 = remoteSite.getFeatureReferences()[1]; | |
IFeature feature = featureRef.getFeature(null); | |
// old config, no features installed | |
IInstallConfiguration old = site.getCurrentConfiguration(); | |
ConfigurationPolicy excludepolicy = new ConfigurationPolicy(); | |
excludepolicy.setPolicy(IPlatformConfiguration.ISitePolicy.USER_EXCLUDE); | |
IConfiguredSite oldConfigSite = old.getConfiguredSites()[0]; | |
excludepolicy.setConfiguredSiteModel((ConfiguredSiteModel)oldConfigSite); | |
((ConfiguredSiteModel)oldConfigSite).setConfigurationPolicyModel(excludepolicy); | |
// install one feature | |
IInstallConfiguration newConfig = site.cloneCurrentConfiguration(); | |
IConfiguredSite configSite = newConfig.getConfiguredSites()[0]; | |
if (!configSite.getSite().equals(oldConfigSite.getSite())) fail("Config sites are not equals"); | |
site.addConfiguration(newConfig); | |
((ConfiguredSite)configSite).setUpdatable(true); | |
IFeatureReference installedFeature = configSite.install(feature,null,null); | |
site.save(); | |
// unconfigure it | |
configSite.unconfigure(installedFeature.getFeature(null)); | |
// install another feature | |
IFeature feature2 = featureRef2.getFeature(null); | |
IInstallConfiguration newConfig2 = site.cloneCurrentConfiguration(); | |
IConfiguredSite anotherConfigSite = newConfig2.getConfiguredSites()[0]; | |
if (!anotherConfigSite.getSite().equals(oldConfigSite.getSite())) fail("Config sites are not equals"); | |
site.addConfiguration(newConfig2); | |
anotherConfigSite.install(feature2,null,null); | |
site.save(); | |
// revert to old state where no feature where configured | |
site.revertTo(old,null,null); | |
site.save(); | |
// check | |
String time = ""+site.getCurrentConfiguration().getCreationDate().getTime(); | |
File file = new File(((LocalSite)SiteManager.getLocalSite()).getLocationURL().getFile()); | |
assertTrue("new configuration does not exist", file.exists()); | |
//find configured site | |
IConfiguredSite newConfigSite = null; | |
IConfiguredSite[] sites = site.getCurrentConfiguration().getConfiguredSites(); | |
for (int i = 0; i < sites.length; i++) { | |
if (sites[i].getSite().equals(oldConfigSite.getSite())){ | |
newConfigSite = sites[i]; | |
break; | |
} | |
} | |
if (newConfigSite==null) fail("Cannot find configuration site"); | |
int oldNumber = oldConfigSite.getConfiguredFeatures().length; | |
int newNumber = newConfigSite.getConfiguredFeatures().length; | |
// | |
IFeatureReference[] configFeatures = newConfigSite.getConfiguredFeatures(); | |
for (int i = 0; i < configFeatures.length; i++) { | |
System.out.println(configFeatures[i]); | |
} | |
assertTrue("Wrong number of configured features old:"+oldNumber+" new:"+newNumber,oldNumber==newNumber); | |
// test only 2 install config in local site | |
int newNumberUnconfiguredFeatures = ((ConfiguredSite)newConfigSite).getConfigurationPolicy().getUnconfiguredFeatures().length; | |
int oldNumberUnconfiguredFeatures = ((ConfiguredSite)oldConfigSite).getConfigurationPolicy().getUnconfiguredFeatures().length; | |
assertEquals("wrong number of unconfigured features",oldNumberUnconfiguredFeatures+2,newNumberUnconfiguredFeatures); | |
// cleanup | |
localFile = new File(siteLocal.getLocationURL().getFile()); | |
UpdateManagerUtils.removeFromFileSystem(localFile); | |
localFile = new File(((LocalSite)SiteManager.getLocalSite()).getLocationURL().getFile()); | |
UpdateManagerUtils.removeFromFileSystem(localFile); | |
UpdateManagerUtils.removeFromFileSystem(file); | |
time = ""+newConfig.getCreationDate().getTime(); | |
file = new File(new URL(((LocalSite)SiteManager.getLocalSite()).getLocationURL(),"DefaultConfig"+time+".xml").getFile()); | |
UpdateManagerUtils.removeFromFileSystem(file); | |
time = ""+newConfig2.getCreationDate().getTime(); | |
file = new File(new URL(((LocalSite)SiteManager.getLocalSite()).getLocationURL(),"DefaultConfig"+time+".xml").getFile()); | |
UpdateManagerUtils.removeFromFileSystem(file); | |
} | |
} | |