Author: vrubezhny
Date: 2011-09-23 15:00:23 -0400 (Fri, 23 Sep 2011)
New Revision: 35012
Modified:
trunk/jsf/tests/org.jboss.tools.jsf.test/src/org/jboss/tools/jsf/test/validation/XHTMLValidatorTest.java
Log:
JBIDE-9588
Poor performance of XHTML template validation
JUnit Test for XHTML Syntax Validator is added
Modified:
trunk/jsf/tests/org.jboss.tools.jsf.test/src/org/jboss/tools/jsf/test/validation/XHTMLValidatorTest.java
===================================================================
---
trunk/jsf/tests/org.jboss.tools.jsf.test/src/org/jboss/tools/jsf/test/validation/XHTMLValidatorTest.java 2011-09-23
18:44:18 UTC (rev 35011)
+++
trunk/jsf/tests/org.jboss.tools.jsf.test/src/org/jboss/tools/jsf/test/validation/XHTMLValidatorTest.java 2011-09-23
19:00:23 UTC (rev 35012)
@@ -30,8 +30,20 @@
protected static String PROJECT_PATH = "/projects/jsf2pr";
protected static final String FILE_NAME =
"WebContent/XHTMLValidatorTest.xhtml";
- protected static final double NOT_BAD_DIFF_PERCENTAGE = 200.0;
+ protected static Set<String> LOCALIZED_ERROR_MESSAGES = new
HashSet<String>();
+ static {
+ LOCALIZED_ERROR_MESSAGES.add(MessageFormat.format(JSFValidationMessage.XHTML_VALIDATION_NO_END_TAG,
+ XHTMLValidationTestMessages.XHTML_GOOD_TAGNAME));
+ LOCALIZED_ERROR_MESSAGES.add(MessageFormat.format(JSFValidationMessage.XHTML_VALIDATION_NO_START_TAG,
+ XHTMLValidationTestMessages.XHTML_WRONG_TAGNAME));
+ }
+ // "Bad" file validation time should be not greater than "Good" file
validation time multiplied by 10
+ protected static final double NOT_BAD_DIFF_PERCENTAGE = 1000.0;
+
+ // Each validation session should take less that 1 second (1000ms)
+ protected static final long MAX_VALIDATION_TIME = 1000;
+
IProject project;
/* (non-Javadoc)
@@ -69,6 +81,7 @@
ValidationResult result = validator.validate(file, IResourceDelta.CHANGED, state, new
NullProgressMonitor());
long goodValidationTime = System.currentTimeMillis() - start;
System.out.println("Good XHTML file with no XHTML Syntax errors validation time:
" + goodValidationTime + " ms");
+ assertTrue("Good XHTML file with no XHTML Syntax errors validation takes too much
time (more than " + MAX_VALIDATION_TIME + " ms)", (goodValidationTime <
MAX_VALIDATION_TIME));
assertNotNull("No validation result is returned", result);
assertNotNull("No validation result is returned",
result.getReporter(null));
List messages = result.getReporter(null).getMessages();
@@ -82,6 +95,7 @@
result = validator.validate(file, IResourceDelta.CHANGED, state, new
NullProgressMonitor());
long badValidationTime = System.currentTimeMillis() - start;
System.out.println("Bad XHTML file with no XHTML Syntax errors validation time:
" + badValidationTime + " ms");
+ assertTrue("Bad XHTML file with no XHTML Syntax errors validation takes too much
time (more than " + MAX_VALIDATION_TIME + " ms)", (badValidationTime <
MAX_VALIDATION_TIME));
assertNotNull("No validation result is returned", result);
assertNotNull("No validation result is returned",
result.getReporter(null));
messages = result.getReporter(null).getMessages();
@@ -100,19 +114,15 @@
result = validator.validate(file, IResourceDelta.CHANGED, state, new
NullProgressMonitor());
goodValidationTime = System.currentTimeMillis() - start;
System.out.println("Good XHTML file with XHTML Syntax errors validation time:
" + goodValidationTime + " ms");
+ assertTrue("Good XHTML file with XHTML Syntax errors validation takes too much
time (more than " + MAX_VALIDATION_TIME + " ms)", (goodValidationTime <
MAX_VALIDATION_TIME));
assertNotNull("No validation result is returned", result);
assertNotNull("No validation result is returned",
result.getReporter(null));
messages = result.getReporter(null).getMessages();
assertEquals("Wrong number of error messages reported", 2, messages == null
? 0 : messages.size());
- Set<String> localizedErrorMessages = new HashSet<String>();
- localizedErrorMessages.add(MessageFormat.format(JSFValidationMessage.XHTML_VALIDATION_NO_END_TAG,
- XHTMLValidationTestMessages.XHTML_GOOD_TAGNAME));
- localizedErrorMessages.add(MessageFormat.format(JSFValidationMessage.XHTML_VALIDATION_NO_START_TAG,
- XHTMLValidationTestMessages.XHTML_WRONG_TAGNAME));
for (Object m : messages) {
assertTrue("Wrong type of validation message is returned", (m instanceof
Message));
Message message = (Message)m;
- assertTrue("Unexpected error message found: " + message.getText(),
localizedErrorMessages.contains(message.getText()));
+ assertTrue("Unexpected error message found: " + message.getText(),
LOCALIZED_ERROR_MESSAGES.contains(message.getText()));
}
// Validate bad file with XHTML Syntax errors
@@ -123,19 +133,15 @@
result = validator.validate(file, IResourceDelta.CHANGED, state, new
NullProgressMonitor());
badValidationTime = System.currentTimeMillis() - start;
System.out.println("Bad XHTML file with XHTML Syntax errors validation time:
" + badValidationTime + " ms");
+ assertTrue("Bad XHTML file with XHTML Syntax errors validation takes too much
time (more than " + MAX_VALIDATION_TIME + " ms)", (badValidationTime <
MAX_VALIDATION_TIME));
assertNotNull("No validation result is returned", result);
assertNotNull("No validation result is returned",
result.getReporter(null));
messages = result.getReporter(null).getMessages();
assertEquals("Wrong number of error messages reported", 2, messages == null
? 0 : messages.size());
- localizedErrorMessages = new HashSet<String>();
- localizedErrorMessages.add(MessageFormat.format(JSFValidationMessage.XHTML_VALIDATION_NO_END_TAG,
- XHTMLValidationTestMessages.XHTML_GOOD_TAGNAME));
- localizedErrorMessages.add(MessageFormat.format(JSFValidationMessage.XHTML_VALIDATION_NO_START_TAG,
- XHTMLValidationTestMessages.XHTML_WRONG_TAGNAME));
for (Object m : messages) {
assertTrue("Wrong type of validation message is returned", (m instanceof
Message));
Message message = (Message)m;
- assertTrue("Unexpected error message found: " + message.getText(),
localizedErrorMessages.contains(message.getText()));
+ assertTrue("Unexpected error message found: " + message.getText(),
LOCALIZED_ERROR_MESSAGES.contains(message.getText()));
}
// Check that the difference between good and bad files validation time is not greater
that NOT_BAD_DIFF_PERCENTAGE (%) of a good value
diff = 100*badValidationTime/goodValidationTime;