/************************************************************************************* * Copyright (c) 2011 Red Hat, Inc. 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: * JBoss by Red Hat - Initial implementation. ************************************************************************************/ package org.jboss.tools.runtime.test; import java.io.File; import java.util.ArrayList; import java.util.Arrays; import junit.framework.TestCase; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.NullProgressMonitor; import org.jboss.tools.runtime.core.RuntimeCoreActivator; import org.jboss.tools.runtime.core.model.IRuntimeDetector; import org.jboss.tools.runtime.core.model.RuntimeDefinition; import org.jboss.tools.runtime.core.model.RuntimePath; import org.jboss.tools.runtime.core.util.RuntimeInitializerUtil; import org.jboss.tools.runtime.handlers.TestHandler1; public class RuntimeDetectionTest extends TestCase { protected void tearDown() throws Exception { IPath path = RuntimeTestActivator.getDefault().getStateLocation(); File root = path.toFile(); File[] children = root.listFiles(); for( int i = 0; i < children.length; i++ ) { deleteAll(children[i]); } } private void deleteAll(File f) { if( !f.isFile()) { File[] children = f.listFiles(); for( int i = 0; i < children.length; i++ ) { deleteAll(children[i]); } } f.delete(); } public void testHandlerEnabled() { RuntimeCoreActivator.getDefault().getRuntimeDetectors(); TestHandler1.getInstance().reset(); runDiscovery(true); } public void testHandlerDisabled() { RuntimeCoreActivator.getDefault().getRuntimeDetectors(); TestHandler1.getInstance().reset(); setHandlerEnablement(false); try { runDiscovery(false); } finally { setHandlerEnablement(true); } } private void setHandlerEnablement(boolean enabled) { IRuntimeDetector det = RuntimeCoreActivator.getDefault().findRuntimeDetector("org.jboss.tools.runtime.handlers.TestHandler1"); det.setEnabled(enabled); // We're only testing the TestHandler1 here IRuntimeDetector det2 = RuntimeCoreActivator.getDefault().findRuntimeDetector("org.jboss.tools.runtime.handlers.TestHandler2"); det2.setEnabled(false); } private void runDiscovery(boolean enabled) { IPath path = RuntimeTestActivator.getDefault().getStateLocation(); RuntimePath rp = new RuntimePath(path.toFile().getAbsolutePath()); assertEquals(0, rp.getRuntimeDefinitions().length); RuntimeInitializerUtil.createRuntimeDefinitions( new RuntimePath[]{rp}, new NullProgressMonitor()); if( !enabled ) assertEquals(0, rp.getRuntimeDefinitions().length); else { assertEquals(1, rp.getRuntimeDefinitions().length); RuntimeDefinition def1 = rp.getRuntimeDefinitions()[0]; assertNotNull(def1); assertEquals(def1.getType(), "testHandler"); } } public void testDiscoveryAndInitialize() { RuntimeCoreActivator.getDefault().getRuntimeDetectors(); TestHandler1.getInstance().reset(); IPath root = RuntimeTestActivator.getDefault().getStateLocation(); IPath rootA = root.append("folderA"); IPath rootB = root.append("folderB"); rootA.toFile().mkdirs(); rootB.toFile().mkdirs(); RuntimePath rpA = new RuntimePath(rootA.toFile().getAbsolutePath()); RuntimePath rpB = new RuntimePath(rootB.toFile().getAbsolutePath()); assertEquals(0, rpA.getRuntimeDefinitions().length); assertEquals(0, rpB.getRuntimeDefinitions().length); RuntimePath[] rpArray = new RuntimePath[]{rpA, rpB}; RuntimeInitializerUtil.createRuntimeDefinitions( rpArray, new NullProgressMonitor()); assertEquals(1, rpA.getRuntimeDefinitions().length); assertEquals(1, rpB.getRuntimeDefinitions().length); ArrayList<RuntimeDefinition> defs = new ArrayList<RuntimeDefinition>(); defs.addAll(Arrays.asList(rpA.getRuntimeDefinitions())); defs.addAll(Arrays.asList(rpB.getRuntimeDefinitions())); IRuntimeDetector det = RuntimeCoreActivator.getDefault().findRuntimeDetector("org.jboss.tools.runtime.handlers.TestHandler1"); det.initializeRuntimes(defs); String[] inited = TestHandler1.getInstance().getInited(); assertEquals(2, inited.length); TestHandler1.getInstance().reset(); } }