blob: 4a6ba51b3bea83154c3751808fed7abd15d1eb1d [file] [log] [blame]
/*******************************************************************************
* 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),
};
}
}
}