| /******************************************************************************* |
| * Copyright (c) 2005, 2009 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.osgi.tests.configuration; |
| |
| import java.io.File; |
| import java.io.IOException; |
| import java.net.MalformedURLException; |
| import junit.framework.Test; |
| import org.eclipse.core.tests.harness.BundleTestingHelper; |
| import org.eclipse.core.tests.harness.FileSystemComparator; |
| import org.eclipse.core.tests.session.ConfigurationSessionTestSuite; |
| import org.eclipse.osgi.tests.OSGiTest; |
| import org.eclipse.osgi.tests.OSGiTestsActivator; |
| import org.osgi.framework.Bundle; |
| import org.osgi.framework.BundleException; |
| |
| public class ReadOnlyConfigurationAreaTest extends OSGiTest { |
| |
| public static Test suite() { |
| ConfigurationSessionTestSuite suite = new ConfigurationSessionTestSuite(PI_OSGI_TESTS, ReadOnlyConfigurationAreaTest.class); |
| suite.setReadOnly(true); |
| String[] ids = ConfigurationSessionTestSuite.MINIMAL_BUNDLE_SET; |
| for (int i = 0; i < ids.length; i++) |
| suite.addBundle(ids[i]); |
| suite.addBundle(PI_OSGI_TESTS); |
| return suite; |
| } |
| |
| public ReadOnlyConfigurationAreaTest(String name) { |
| super(name); |
| } |
| |
| public void test0thSession() throws MalformedURLException, IOException { |
| // initialization session |
| try { |
| Bundle installed = BundleTestingHelper.installBundle("1.0", getContext(), OSGiTestsActivator.TEST_FILES_ROOT + "configuration/bundle01"); |
| // not read-only yet, should work fine |
| if (!BundleTestingHelper.resolveBundles(getContext(), new Bundle[] {installed})) |
| fail("1.1"); |
| } catch (BundleException be) { |
| fail("1.2", be); |
| } |
| } |
| |
| /** |
| * Takes a snapshot of the file system. |
| */ |
| public void test1stSession() { |
| // compute and save tree image |
| File configurationDir = ConfigurationSessionTestSuite.getConfigurationDir(); |
| FileSystemComparator comparator = new FileSystemComparator(); |
| Object snapshot = comparator.takeSnapshot(configurationDir, true); |
| try { |
| comparator.saveSnapshot(snapshot, configurationDir); |
| } catch (IOException e) { |
| fail("1.0"); |
| } |
| } |
| |
| public void test1stSessionFollowUp() throws IOException { |
| FileSystemComparator comparator = new FileSystemComparator(); |
| File configurationDir = ConfigurationSessionTestSuite.getConfigurationDir(); |
| Object oldSnaphot = comparator.loadSnapshot(configurationDir); |
| Object newSnapshot = comparator.takeSnapshot(configurationDir, true); |
| comparator.compareSnapshots("1.0", oldSnaphot, newSnapshot); |
| } |
| |
| /** |
| * Tries to install a plug-in that has no manifest. Should fail because by default the manifest generation area |
| * is under the configuration area (which is read-only here) |
| */ |
| public void test2ndSession() throws BundleException, IOException { |
| // try to install plug-in |
| // ensure it is not installed |
| Bundle installed = null; |
| try { |
| installed = BundleTestingHelper.installBundle(getContext(), OSGiTestsActivator.TEST_FILES_ROOT + "configuration/bundle02"); |
| // should have failed with BundleException, does not have a bundle manifest |
| fail("1.0"); |
| } catch (BundleException be) { |
| // success |
| } finally { |
| if (installed != null) |
| // clean-up - only runs if we end-up accepting an invalid manifest |
| installed.uninstall(); |
| } |
| } |
| |
| public void test2ndSessionFollowUp() throws IOException { |
| FileSystemComparator comparator = new FileSystemComparator(); |
| File configurationDir = ConfigurationSessionTestSuite.getConfigurationDir(); |
| Object oldSnaphot = comparator.loadSnapshot(configurationDir); |
| Object newSnapshot = comparator.takeSnapshot(configurationDir, true); |
| comparator.compareSnapshots("1.0", oldSnaphot, newSnapshot); |
| } |
| |
| /** |
| * Tries to install a plug-in that has manifest. Should fail because by default the manifest generation area |
| * is under the configuration area (which is read-only here) |
| */ |
| public void test3rdSession() throws BundleException, IOException { |
| // install plug-in |
| // ensure it is not installed |
| Bundle installed = null; |
| try { |
| installed = BundleTestingHelper.installBundle(getContext(), OSGiTestsActivator.TEST_FILES_ROOT + "configuration/bundle03"); |
| // should have failed - cannot install a bundle in read-only mode |
| fail("1.0"); |
| } catch (BundleException be) { |
| // success |
| } finally { |
| if (installed != null) |
| // clean-up - only runs if we end-up accepting an invalid manifest |
| installed.uninstall(); |
| } |
| } |
| |
| public void test3rdSessionFollowUp() throws IOException { |
| FileSystemComparator comparator = new FileSystemComparator(); |
| File configurationDir = ConfigurationSessionTestSuite.getConfigurationDir(); |
| Object oldSnaphot = comparator.loadSnapshot(configurationDir); |
| Object newSnapshot = comparator.takeSnapshot(configurationDir, true); |
| comparator.compareSnapshots("1.0", oldSnaphot, newSnapshot); |
| } |
| |
| } |