Package org.apache.hadoop.chukwa.util

Source Code of org.apache.hadoop.chukwa.util.TestFilter

/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements.  See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership.  The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License.  You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.hadoop.chukwa.util;

import junit.framework.TestCase;
import org.apache.hadoop.chukwa.ChunkImpl;
import org.apache.hadoop.chukwa.util.RegexUtil.CheckedPatternSyntaxException;

public class TestFilter extends TestCase {
 
  public void testBasicPatternMatching()  {
   try {
     Filter rules = new Filter("host=foo.*&cluster=bar&datatype=Data");
     assertEquals(3, rules.size());
     byte[] dat = "someText".getBytes();
     ChunkImpl chunkNone = new ChunkImpl("badData","aname", dat.length, dat, null);
     assertFalse(rules.matches(chunkNone));
     assertTrue(Filter.ALL.matches(chunkNone));


       //do the right thing on a non-match
     ChunkImpl chunkSome = new ChunkImpl("badData", "aname", dat.length, dat, null);
     chunkSome.setSource("fooly");
     chunkSome.addTag("cluster=\"bar\"");
     assertFalse(rules.matches( chunkSome));
     assertTrue(Filter.ALL.matches(chunkSome));

     ChunkImpl chunkAll = new ChunkImpl("Data", "aname", dat.length, dat, null);
     chunkAll.setSource("fooly");
     chunkAll.addTag("cluster=\"bar\"");

     assertTrue(rules.matches(chunkAll));
     assertTrue(Filter.ALL.matches(chunkAll));

    
       //check that we match content correctly
     rules = new Filter("content=someText");
     assertTrue(rules.matches(chunkAll));
     rules = new Filter("content=some");
     assertFalse(rules.matches( chunkAll));
     rules = new Filter("datatype=Data&content=.*some.*");
     assertTrue(rules.matches( chunkAll));

   } catch(Exception e) {
     fail("exception " + e);
   }
  }
 
  public void testClusterPatterns() {
    byte[] dat = "someText".getBytes();
    ChunkImpl chunk1 = new ChunkImpl("Data", "aname", dat.length, dat, null);
    chunk1.setSource("asource");
    assertTrue(Filter.ALL.matches(chunk1));
    Filter rule = null;
    try {
      rule = new Filter("tags.foo=bar");
    } catch (CheckedPatternSyntaxException e) {
      e.printStackTrace();
      fail("Regular expression error: " + e);
    }
   
    assertFalse(rule.matches(chunk1));
    chunk1.addTag("foo=\"bar\"");
    assertTrue(rule.matches(chunk1));
    chunk1.addTag("baz=\"quux\"");
    assertTrue(rule.matches(chunk1));
    assertTrue(Filter.ALL.matches(chunk1));
  }
 
  public void testIllegalRegex() {
    try {
      new Filter("tags.foo=(");
    } catch (CheckedPatternSyntaxException e) {
      return;
    }
    fail("No CheckedPatternSyntaxException thrown for illegal regular expression.");
  }
}
TOP

Related Classes of org.apache.hadoop.chukwa.util.TestFilter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.