/******************************************************************************* * 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) { } } }