blob: 622c92039b3f645f9b53795bc1538fdf12fb0c1b [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2006 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:
* Masaki Saitoh (MSAITOH@jp.ibm.com)
* See Bug 153000 Style Adapters should be lazier
* https://bugs.eclipse.org/bugs/show_bug.cgi?id=153000
*
*
*******************************************************************************/
package org.eclipse.wst.html.core.tests.text;
import org.eclipse.wst.html.core.internal.provisional.HTML40Namespace;
import org.eclipse.wst.sse.core.StructuredModelManager;
import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument;
import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.stylesheets.LinkStyle;
import junit.framework.TestCase;
public class StyleAdapterPerfTest extends TestCase {
/**
* criteria for "fail", in msecs
*/
private static final long MAX_EXPECTED_TIME = 4000;
public void testPerformance() {
try {
String filename = "testfiles/html/example04.html";
IStructuredModel model = StructuredModelManager.getModelManager().getModelForEdit(filename, getClass().getResourceAsStream(filename), null);
if (model instanceof IDOMModel) {
IDOMDocument doc = ((IDOMModel) model).getDocument();
NodeList nodes = doc.getElementsByTagName(HTML40Namespace.ElementName.STYLE);
if (nodes != null && nodes.getLength() > 0) {
Node node = nodes.item(0);
if (node instanceof LinkStyle) {
long start = System.currentTimeMillis();
((LinkStyle) node).getSheet();
// System.out.println("elapsed time = " + (System.currentTimeMillis() - start));
// TODO: we should probably use something likse o.e.core.runtime.PerformanceStats
// I picked the following fail criteria simple since before fix, the printlin reports about 7000
// on my computer, but with fix, reported about 1000.
// The appropriate time may vary greatly depending on the build/test machine.
// This is just to catch some large change in behavior
long elapsedTime = System.currentTimeMillis() - start;
if (elapsedTime > MAX_EXPECTED_TIME) {
fail("getSheet took longer than expected the expected " + MAX_EXPECTED_TIME +"ms");
}
}
}
}
if (model != null)
model.releaseFromRead();
}
catch (Exception e) {
}
}
}