| /******************************************************************************* |
| * Copyright (c) 2006, 2007 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.ua.tests.help.performance; |
| |
| import junit.framework.Test; |
| import junit.framework.TestSuite; |
| |
| import org.eclipse.core.runtime.Platform; |
| import org.eclipse.help.AbstractIndexProvider; |
| import org.eclipse.help.AbstractTocProvider; |
| import org.eclipse.help.internal.HelpPlugin; |
| import org.eclipse.help.internal.base.BaseHelpSystem; |
| import org.eclipse.help.internal.index.IndexManager; |
| import org.eclipse.help.internal.server.WebappManager; |
| import org.eclipse.help.internal.toc.TocFile; |
| import org.eclipse.help.internal.toc.TocFileProvider; |
| import org.eclipse.help.internal.toc.TocManager; |
| import org.eclipse.swt.SWT; |
| import org.eclipse.swt.browser.Browser; |
| import org.eclipse.swt.browser.LocationAdapter; |
| import org.eclipse.swt.browser.LocationEvent; |
| import org.eclipse.swt.layout.FillLayout; |
| import org.eclipse.swt.widgets.Display; |
| import org.eclipse.swt.widgets.Shell; |
| import org.eclipse.test.performance.Dimension; |
| import org.eclipse.test.performance.PerformanceTestCase; |
| import org.eclipse.ua.tests.plugin.UserAssistanceTestPlugin; |
| import org.eclipse.ui.PlatformUI; |
| |
| public class OpenHelpTest extends PerformanceTestCase { |
| |
| private AbstractTocProvider[] tocProviders; |
| private AbstractIndexProvider[] indexProviders; |
| private Shell shell; |
| |
| /* |
| * Returns an instance of this Test. |
| */ |
| public static Test suite() { |
| return new TestSuite(OpenHelpTest.class); |
| } |
| |
| @Override |
| protected void setUp() throws Exception { |
| super.setUp(); |
| TocManager tocManager = HelpPlugin.getTocManager(); |
| tocProviders = tocManager.getTocProviders(); |
| tocManager.setTocProviders(new AbstractTocProvider[] { new TestTocFileProvider() }); |
| tocManager.clearCache(); |
| |
| IndexManager indexManager = HelpPlugin.getIndexManager(); |
| indexProviders = indexManager.getIndexProviders(); |
| indexManager.setIndexProviders(new AbstractIndexProvider[0]); |
| indexManager.clearCache(); |
| } |
| |
| @Override |
| protected void tearDown() throws Exception { |
| super.tearDown(); |
| TocManager tocManager = HelpPlugin.getTocManager(); |
| tocManager.setTocProviders(tocProviders); |
| tocManager.clearCache(); |
| |
| IndexManager indexManager = HelpPlugin.getIndexManager(); |
| indexManager.setIndexProviders(indexProviders); |
| indexManager.clearCache(); |
| } |
| |
| public void testOpenHelp() throws Exception { |
| tagAsGlobalSummary("Open help", Dimension.ELAPSED_PROCESS); |
| |
| // warm-up |
| for (int i=0;i<3;++i) { |
| openHelp(); |
| closeHelp(); |
| } |
| |
| // run the tests |
| for (int i=0;i<50;++i) { |
| startMeasuring(); |
| openHelp(); |
| stopMeasuring(); |
| closeHelp(); |
| } |
| |
| commitMeasurements(); |
| assertPerformance(); |
| } |
| |
| private void openHelp() throws Exception { |
| // start the webapp |
| BaseHelpSystem.ensureWebappRunning(); |
| |
| // open a browser |
| Shell parent = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(); |
| shell = new Shell(parent); |
| shell.setLayout(new FillLayout()); |
| shell.setSize(parent.getSize()); |
| Browser browser = new Browser(shell, SWT.NONE); |
| shell.open(); |
| |
| // open help url |
| final boolean[] done = new boolean[] { false }; |
| final String url = "http://" + WebappManager.getHost() + ":" + WebappManager.getPort() + "/help/index.jsp"; |
| browser.addLocationListener(new LocationAdapter() { |
| @Override |
| public void changed(LocationEvent event) { |
| if (url.equals(event.location)) { |
| done[0] = true; |
| } |
| } |
| }); |
| browser.setUrl(url); |
| |
| // wait until the browser finishes loading |
| Display display = Display.getDefault(); |
| while (!done[0]) { |
| if (!display.readAndDispatch()) { |
| display.sleep(); |
| } |
| } |
| flush(); |
| } |
| |
| private void closeHelp() throws Exception { |
| if (shell != null) { |
| shell.dispose(); |
| shell = null; |
| } |
| } |
| |
| private static void flush() { |
| Display display = Display.getCurrent(); |
| while (display.readAndDispatch()) { |
| } |
| } |
| |
| private static class TestTocFileProvider extends TocFileProvider { |
| @Override |
| protected TocFile[] getTocFiles(String locale) { |
| String id = UserAssistanceTestPlugin.getPluginId(); |
| String nl = Platform.getNL(); |
| return new TocFile[] { |
| new TocFile(id, "data/help/performance/org.eclipse.jdt.doc.isv/toc.xml", true, nl, null, null), |
| new TocFile(id, "data/help/performance/org.eclipse.jdt.doc.isv/topics_Guide.xml", false, nl, null, null), |
| new TocFile(id, "data/help/performance/org.eclipse.jdt.doc.isv/topics_Porting.xml", false, nl, null, null), |
| new TocFile(id, "data/help/performance/org.eclipse.jdt.doc.isv/topics_Questions.xml", false, nl, null, null), |
| new TocFile(id, "data/help/performance/org.eclipse.jdt.doc.isv/topics_Reference.xml", false, nl, null, null), |
| new TocFile(id, "data/help/performance/org.eclipse.jdt.doc.isv/topics_Samples.xml", false, nl, null, null), |
| |
| new TocFile(id, "data/help/performance/org.eclipse.jdt.doc.user/toc.xml", true, nl, null, null), |
| new TocFile(id, "data/help/performance/org.eclipse.jdt.doc.user/topics_Concepts.xml", false, nl, null, null), |
| new TocFile(id, "data/help/performance/org.eclipse.jdt.doc.user/topics_GettingStarted.xml", false, nl, null, null), |
| new TocFile(id, "data/help/performance/org.eclipse.jdt.doc.user/topics_Reference.xml", false, nl, null, null), |
| new TocFile(id, "data/help/performance/org.eclipse.jdt.doc.user/topics_Tasks.xml", false, nl, null, null), |
| |
| new TocFile(id, "data/help/performance/org.eclipse.pde.doc.user/toc.xml", true, nl, null, null), |
| new TocFile(id, "data/help/performance/org.eclipse.pde.doc.user/topics_Reference.xml", false, nl, null, null), |
| |
| new TocFile(id, "data/help/performance/org.eclipse.platform.doc.isv/toc.xml", true, nl, null, null), |
| new TocFile(id, "data/help/performance/org.eclipse.platform.doc.isv/topics_Guide.xml", false, nl, null, null), |
| new TocFile(id, "data/help/performance/org.eclipse.platform.doc.isv/topics_Porting.xml", false, nl, null, null), |
| new TocFile(id, "data/help/performance/org.eclipse.platform.doc.isv/topics_Questions.xml", false, nl, null, null), |
| new TocFile(id, "data/help/performance/org.eclipse.platform.doc.isv/topics_Reference.xml", false, nl, null, null), |
| new TocFile(id, "data/help/performance/org.eclipse.platform.doc.isv/topics_Samples.xml", false, nl, null, null), |
| |
| new TocFile(id, "data/help/performance/org.eclipse.platform.doc.user/toc.xml", true, nl, null, null), |
| new TocFile(id, "data/help/performance/org.eclipse.platform.doc.user/topics_Concepts.xml", false, nl, null, null), |
| new TocFile(id, "data/help/performance/org.eclipse.platform.doc.user/topics_GettingStarted.xml", false, nl, null, null), |
| new TocFile(id, "data/help/performance/org.eclipse.platform.doc.user/topics_Reference.xml", false, nl, null, null), |
| new TocFile(id, "data/help/performance/org.eclipse.platform.doc.user/topics_Tasks.xml", false, nl, null, null), |
| }; |
| } |
| } |
| } |