You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by ce...@apache.org on 2005/01/27 22:37:48 UTC

cvs commit: logging-log4j/tests/src/java/org/apache/log4j/lbel EventEvaluationTest.java TokenStreamTest.java

ceki        2005/01/27 13:37:48

  Modified:    src/java/org/apache/log4j/lbel/comparator
                        LoggerComparator.java MessageComparator.java
               src/java/org/apache/log4j/lbel LBELEventEvaluator.java
                        TokenStream.java
               tests/src/java/org/apache/log4j/lbel
                        EventEvaluationTest.java TokenStreamTest.java
  Log:
  Further tests and improvemetns. Expressions involving event levels, logger names and message contents seem to work nicely.
  
  Revision  Changes    Path
  1.3       +6 -2      logging-log4j/src/java/org/apache/log4j/lbel/comparator/LoggerComparator.java
  
  Index: LoggerComparator.java
  ===================================================================
  RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/lbel/comparator/LoggerComparator.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- LoggerComparator.java	27 Jan 2005 19:53:10 -0000	1.2
  +++ LoggerComparator.java	27 Jan 2005 21:37:48 -0000	1.3
  @@ -52,14 +52,18 @@
   
     public boolean compare(LoggingEvent event) {
       if(operator.isRegex()) {
  -      boolean match = matcher.matches(event.getLoggerName(), rightSidePattern);
  +      boolean match = matcher.contains(event.getLoggerName(), rightSidePattern);
         if(operator.getCode() == Operator.REGEX_MATCH) {
           return match;
         } else {
           return !match;
         }
       }
  -    
  +
  +    if(operator.getCode() == Operator.CHILDOF) {
  +      return event.getLoggerName().startsWith(rightSide);
  +    }
  +  
       int compResult = event.getLoggerName().compareTo(rightSide);
       switch(operator.getCode()) {
       case Operator.EQUAL: return compResult == 0;   
  
  
  
  1.3       +6 -2      logging-log4j/src/java/org/apache/log4j/lbel/comparator/MessageComparator.java
  
  Index: MessageComparator.java
  ===================================================================
  RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/lbel/comparator/MessageComparator.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- MessageComparator.java	27 Jan 2005 19:53:10 -0000	1.2
  +++ MessageComparator.java	27 Jan 2005 21:37:48 -0000	1.3
  @@ -48,7 +48,7 @@
     Pattern rightSidePattern;
     Perl5Matcher matcher;
   
  -  public MessageComparator(Operator operator, String rightSide)
  +  public MessageComparator(final Operator operator, String rightSide)
       throws ScanError {
       this.operator = operator;
       this.rightSide = rightSide;
  @@ -68,7 +68,7 @@
     public boolean compare(LoggingEvent event) {
       if (operator.isRegex()) {
         boolean match =
  -        matcher.matches(event.getRenderedMessage(), rightSidePattern);
  +        matcher.contains(event.getRenderedMessage(), rightSidePattern);
         if (operator.getCode() == Operator.REGEX_MATCH) {
           return match;
         } else {
  @@ -102,4 +102,8 @@
       throw new IllegalStateException(
         "Unreachable state reached, operator " + operator);
     }
  +  
  +  public String toString() {
  +    return "MessageComparator("+operator+", "+rightSide+")";
  +  }
   }
  
  
  
  1.2       +4 -0      logging-log4j/src/java/org/apache/log4j/lbel/LBELEventEvaluator.java
  
  Index: LBELEventEvaluator.java
  ===================================================================
  RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/lbel/LBELEventEvaluator.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- LBELEventEvaluator.java	27 Jan 2005 19:25:08 -0000	1.1
  +++ LBELEventEvaluator.java	27 Jan 2005 21:37:48 -0000	1.2
  @@ -36,6 +36,10 @@
       return evaluate(top, event);
     }
   
  +  void dumpSyntaxTree(String prefix) {
  +    top.leftFirstDump(prefix);
  +  }
  +  
     private boolean evaluate(Node node, LoggingEvent event) {
       int type = node.getType();
       boolean left;
  
  
  
  1.4       +1 -2      logging-log4j/src/java/org/apache/log4j/lbel/TokenStream.java
  
  Index: TokenStream.java
  ===================================================================
  RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/lbel/TokenStream.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- TokenStream.java	27 Jan 2005 19:31:38 -0000	1.3
  +++ TokenStream.java	27 Jan 2005 21:37:48 -0000	1.4
  @@ -62,7 +62,7 @@
     	tokenizer.wordChars('a', 'z');
     	tokenizer.wordChars('A', 'Z');
     	tokenizer.wordChars('0', '9');
  -
  +    
     	tokenizer.quoteChar('"');
     	tokenizer.quoteChar('\'');
     	tokenizer.parseNumbers();
  @@ -128,7 +128,6 @@
   			    current = new Token(Token.OPERATOR, "!=");		
   			  } else if (token2 == '~') {
   			    current = new Token(Token.OPERATOR, "!~");
  -			    tokenizer.pushBack();
   			  } else {
   			  	throw new ScanError("Unrecogized token "+token+". The '!' character must be followed by = or '~'");
   			  }
  
  
  
  1.2       +71 -1     logging-log4j/tests/src/java/org/apache/log4j/lbel/EventEvaluationTest.java
  
  Index: EventEvaluationTest.java
  ===================================================================
  RCS file: /home/cvs/logging-log4j/tests/src/java/org/apache/log4j/lbel/EventEvaluationTest.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- EventEvaluationTest.java	27 Jan 2005 19:25:08 -0000	1.1
  +++ EventEvaluationTest.java	27 Jan 2005 21:37:48 -0000	1.2
  @@ -16,6 +16,7 @@
   
   package org.apache.log4j.lbel;
   
  +
   import junit.framework.Test;
   import junit.framework.TestCase;
   import junit.framework.TestSuite;
  @@ -24,6 +25,7 @@
   import org.apache.log4j.spi.LoggingEvent;
   
   
  +
   public class EventEvaluationTest extends TestCase {
   	LoggingEvent event;
   	EventEvaluator evaluator;
  @@ -52,8 +54,76 @@
       evaluator = new LBELEventEvaluator("level = INFO");
       assertTrue(evaluator.evaluate(event));
     }
  -   
  + 
  +  public void testMessage() throws ScanError {
  +    evaluator = new LBELEventEvaluator("message = 'hello world'");
  +    assertTrue(evaluator.evaluate(event));
  +
  +    evaluator = new LBELEventEvaluator("message = hello");
  +    assertTrue(!evaluator.evaluate(event));
  +
  +    evaluator = new LBELEventEvaluator("message != hello");
  +    assertTrue(evaluator.evaluate(event));
  +
  +    
  +    evaluator = new LBELEventEvaluator("message > hello");
  +    assertTrue(evaluator.evaluate(event));
  +
  +    evaluator = new LBELEventEvaluator("message >= hello");
  +    assertTrue(evaluator.evaluate(event));
  +
  +    evaluator = new LBELEventEvaluator("message < hello");
  +    assertTrue(!evaluator.evaluate(event));
  +
  +    evaluator = new LBELEventEvaluator("message <= hello");
  +    assertTrue(!evaluator.evaluate(event));
  +  }
  +  
  +  public void testRegexMessage() throws Exception, ScanError {
  +    evaluator = new LBELEventEvaluator("message ~ 'hello'");
  +    assertTrue(evaluator.evaluate(event));
  +    
  +    evaluator = new LBELEventEvaluator("message ~ 'h[a-z]* world'");
  +    assertTrue(evaluator.evaluate(event));
  +
  +    // the following test cannot be run because of a bug in the way 
  +    // java.io.StreamTokenizer incorrectly interprets the '\' character within quotes
  +    // evaluator = new LBELEventEvaluator("message ~ 'h\\w* world'");
  +    //assertTrue(evaluator.evaluate(event));
  +
  +    LBELEventEvaluator evaluator = new LBELEventEvaluator("message !~ 'x'");
  +    assertTrue(evaluator.evaluate(event));
  +    
  +    evaluator = new LBELEventEvaluator("message !~ 'x[a-z]* world'");
  +    assertTrue(evaluator.evaluate(event));
  +  }
     
  +  public void testLogger() throws Exception, ScanError {
  +    evaluator = new LBELEventEvaluator("logger = org.wombat");
  +    assertTrue(evaluator.evaluate(event));
  +    
  +    evaluator = new LBELEventEvaluator("logger = org.wombat.x");
  +    assertTrue(!evaluator.evaluate(event));
  +    
  +    evaluator = new LBELEventEvaluator("logger != org.wombat.x");
  +    assertTrue(evaluator.evaluate(event));
  +    
  +    evaluator = new LBELEventEvaluator("logger < org.wombat.x");
  +    assertTrue(evaluator.evaluate(event));
  +
  +    evaluator = new LBELEventEvaluator("logger <= org.wombat.x");
  +    assertTrue(evaluator.evaluate(event));
  +
  +    evaluator = new LBELEventEvaluator("logger > org");
  +    assertTrue(evaluator.evaluate(event));
  +
  +    evaluator = new LBELEventEvaluator("logger >= org");
  +    assertTrue(evaluator.evaluate(event));
  +    
  +    evaluator = new LBELEventEvaluator("logger CHILDOF org");
  +    assertTrue(evaluator.evaluate(event));
  +  }
  +    
     public static Test XXsuite() {
       TestSuite suite = new TestSuite();
       //suite.addTest(new ParserTest("testAndOr"));
  
  
  
  1.3       +35 -0     logging-log4j/tests/src/java/org/apache/log4j/lbel/TokenStreamTest.java
  
  Index: TokenStreamTest.java
  ===================================================================
  RCS file: /home/cvs/logging-log4j/tests/src/java/org/apache/log4j/lbel/TokenStreamTest.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- TokenStreamTest.java	27 Jan 2005 19:25:08 -0000	1.2
  +++ TokenStreamTest.java	27 Jan 2005 21:37:48 -0000	1.3
  @@ -90,6 +90,41 @@
       assertEquals(Token.EOF, t.getType());
     }
   
  +  public void testRegex() throws IOException, ScanError {
  +    StringReader sr = new StringReader(" time ~ x");
  +    TokenStream ts = new TokenStream(sr);
  +    
  +    ts.next(); t = ts.getCurrent();
  +    assertEquals(Token.LITERAL, t.getType());
  +    assertEquals("time", t.getValue());
  +    
  +    ts.next(); t = ts.getCurrent();
  +    assertEquals(Token.OPERATOR, t.getType());
  +    assertEquals("~", t.getValue());
  +    
  +    ts.next(); t = ts.getCurrent();
  +    assertEquals(Token.LITERAL, t.getType());
  +    assertEquals("x", t.getValue());
  +  }
  +
  +  public void testNotRegex() throws IOException, ScanError {
  +    StringReader sr = new StringReader(" t !~ x");
  +    TokenStream ts = new TokenStream(sr);
  +    
  +    ts.next(); t = ts.getCurrent();
  +    assertEquals(Token.LITERAL, t.getType());
  +    assertEquals("t", t.getValue());
  +    
  +    ts.next(); t = ts.getCurrent();
  +    assertEquals(Token.OPERATOR, t.getType());
  +    assertEquals("!~", t.getValue());
  +    
  +    ts.next(); t = ts.getCurrent();
  +    assertEquals(Token.LITERAL, t.getType());
  +    assertEquals("x", t.getValue());
  +  }
  +
  +  
     public void testFull() throws IOException, ScanError {
       StringReader sr = new StringReader(" time >= 19 NOT \"hello world\" ");
       TokenStream ts = new TokenStream(sr);
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org