/******************************************************************************* * Copyright (c) 2015 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.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; import junit.framework.Test; import junit.framework.TestSuite; 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.BundleContext; public class EclipseStarterConfigIniTest extends OSGiTest { public static Test suite() { TestSuite suite = new TestSuite(EclipseStarterConfigIniTest.class.getName()); ConfigurationSessionTestSuite falseCompatBootDelegation = new ConfigurationSessionTestSuite(PI_OSGI_TESTS, EclipseStarterConfigIniTest.class.getName()); String[] ids = ConfigurationSessionTestSuite.MINIMAL_BUNDLE_SET; for (int i = 0; i < ids.length; i++) falseCompatBootDelegation.addBundle(ids[i]); falseCompatBootDelegation.addBundle(PI_OSGI_TESTS); falseCompatBootDelegation.addTest(new EclipseStarterConfigIniTest("testFalseCompatBootDelegation")); falseCompatBootDelegation.setConfigIniValue("osgi.compatibility.bootdelegation", "false"); suite.addTest(falseCompatBootDelegation); ConfigurationSessionTestSuite defaultCompatBootDelegation = new ConfigurationSessionTestSuite(PI_OSGI_TESTS, EclipseStarterConfigIniTest.class.getName()); for (int i = 0; i < ids.length; i++) defaultCompatBootDelegation.addBundle(ids[i]); defaultCompatBootDelegation.addBundle(PI_OSGI_TESTS); defaultCompatBootDelegation.addTest(new EclipseStarterConfigIniTest("testDefaultCompatBootDelegation")); suite.addTest(defaultCompatBootDelegation); return suite; } public EclipseStarterConfigIniTest(String name) { super(name); } public void testFalseCompatBootDelegation() throws Exception { doTestCompatBootDelegation(true); } public void testDefaultCompatBootDelegation() throws Exception { doTestCompatBootDelegation(false); } public void doTestCompatBootDelegation(boolean expectFailure) throws Exception { BundleContext context = OSGiTestsActivator.getContext(); ByteArrayOutputStream bytesOut = new ByteArrayOutputStream(); ZipOutputStream zipOut = new ZipOutputStream(bytesOut); zipOut.putNextEntry(new ZipEntry("nothing")); zipOut.closeEntry(); zipOut.close(); Bundle b = context.installBundle(getName(), new ByteArrayInputStream(bytesOut.toByteArray())); String testClassName = javax.net.SocketFactory.class.getName(); // The bundle does not import anything so should not find javax stuff try { b.loadClass(testClassName); if (expectFailure) { fail("Expected to fail to load VM class from bundle that does not import it"); } } catch (ClassNotFoundException e) { if (!expectFailure) { fail("Expected to successfully load VM class from bundle that does not import it", e); } } } }