blob: 63dcca2e7c18865d6967118fc4d5d68d82584da9 [file] [log] [blame]
/*
* 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.eagle.log.entity.filter;
import org.apache.eagle.log.entity.EntityQualifierUtils;
import org.apache.eagle.log.entity.meta.EntityDefinition;
import org.apache.eagle.log.entity.meta.EntityDefinitionManager;
import org.apache.eagle.log.entity.test.TestLogAPIEntity;
import org.apache.hadoop.hbase.util.Bytes;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import java.util.List;
/**
* @since : 10/15/14 2014
*/
public class TestEntityQualifierHelper {
private EntityDefinition ed;
@Before
public void setUp() {
try {
if (EntityDefinitionManager.getEntityByServiceName("TestLogAPIEntity") == null) {
EntityDefinitionManager.registerEntity(TestLogAPIEntity.class);
}
ed = EntityDefinitionManager.getEntityByServiceName("TestLogAPIEntity");
} catch (InstantiationException e) {
e.printStackTrace(); // To change body of catch statement use File | Settings | File Templates.
} catch (IllegalAccessException e) {
e.printStackTrace(); // To change body of catch statement use File | Settings | File Templates.
}
}
@Test
public void testEd() {
Assert.assertNotNull(ed);
Assert.assertNotNull(ed.getQualifierNameMap().get("a"));
Assert.assertNull(ed.getQualifierNameMap().get("notexist"));
}
@Test
public void testIntEntityQualifierHelper() {
byte[] value = EntityQualifierUtils.toBytes(ed, "field1", "2");
Assert.assertTrue(Bytes.compareTo(value, Bytes.toBytes(1)) > 0);
Assert.assertTrue(Bytes.compareTo(value, Bytes.toBytes(2)) == 0);
Assert.assertTrue(Bytes.compareTo(value, Bytes.toBytes(3)) < 0);
}
@Test
public void testStringEntityQualifierHelper() {
byte[] value = EntityQualifierUtils.toBytes(ed, "field7", "xyz");
Assert.assertTrue(Bytes.compareTo(value, Bytes.toBytes("xyy")) > 0);
Assert.assertTrue(Bytes.compareTo(value, Bytes.toBytes("xyz")) == 0);
Assert.assertTrue(Bytes.compareTo(value, Bytes.toBytes("xzz")) < 0);
Assert.assertTrue(Bytes.compareTo(value, Bytes.toBytes("xy")) > 0);
}
@Test
public void testDoubleEntityQualifierHelper() {
byte[] value = EntityQualifierUtils.toBytes(ed, "field5", "1.0");
Assert.assertTrue(Bytes.compareTo(value, Bytes.toBytes(0.5)) > 0);
Assert.assertTrue(Bytes.compareTo(value, Bytes.toBytes(1.0)) == 0);
Assert.assertTrue(Bytes.compareTo(value, Bytes.toBytes(2.2)) < 0);
// TODO There is problem with negative double
// Assert.assertTrue(Bytes.compareTo(Bytes.toBytes(-0.6),Bytes.toBytes(-0.5)) < 0);
}
@Test
public void testLongEntityQualifierHelper() {
byte[] value = EntityQualifierUtils.toBytes(ed, "field4", "100000");
Assert.assertTrue(Bytes.compareTo(value, Bytes.toBytes(100000l - 1l)) > 0);
Assert.assertTrue(Bytes.compareTo(value, Bytes.toBytes(100000l)) == 0);
Assert.assertTrue(Bytes.compareTo(value, Bytes.toBytes(100000l + 1l)) < 0);
}
@Test
public void testNegativeLongEntityQualifierHelper() {
Exception ex = null;
try {
byte[] value = EntityQualifierUtils.toBytes(ed, "field4", "-100000");
} catch (IllegalArgumentException e) {
ex = e;
}
Assert.assertNull(ex);
}
@Test
public void testParseAsList() {
List<String> set = EntityQualifierUtils.parseList("(\"abc1\",\"abc2\")");
Assert.assertEquals(2, set.size());
Assert.assertEquals("abc1", set.toArray()[0]);
Assert.assertEquals("abc2", set.toArray()[1]);
set = EntityQualifierUtils.parseList("(1,\"abc2\")");
Assert.assertEquals(2, set.size());
Assert.assertEquals("1", set.toArray()[0]);
Assert.assertEquals("abc2", set.toArray()[1]);
set = EntityQualifierUtils.parseList("(-1.5,\"abc2\")");
Assert.assertEquals(2, set.size());
Assert.assertEquals("-1.5", set.toArray()[0]);
Assert.assertEquals("abc2", set.toArray()[1]);
set = EntityQualifierUtils.parseList("(-1.5,\"-1.5,abc\")");
Assert.assertEquals(2, set.size());
Assert.assertEquals("-1.5", set.toArray()[0]);
Assert.assertEquals("-1.5,abc", set.toArray()[1]);
set = EntityQualifierUtils.parseList("(-1.5,\"\\\"abc\\\"\")");
Assert.assertEquals(2, set.size());
Assert.assertEquals("-1.5", set.toArray()[0]);
Assert.assertEquals("\"abc\"", set.toArray()[1]);
set = EntityQualifierUtils.parseList("(-1.5,\"-1.5,\\\"abc\")");
Assert.assertEquals(2, set.size());
Assert.assertEquals("-1.5", set.toArray()[0]);
Assert.assertEquals("-1.5,\"abc", set.toArray()[1]);
set = EntityQualifierUtils.parseList("(\"\\\"-1.5\\\",abc1\",\"-1.5,\\\"abc2\")");
Assert.assertEquals(2, set.size());
Assert.assertEquals("\"-1.5\",abc1", set.toArray()[0]);
Assert.assertEquals("-1.5,\"abc2", set.toArray()[1]);
set = EntityQualifierUtils.parseList("(-1.5,\"-1.5,\"abc\")");
Assert.assertEquals(2, set.size());
Assert.assertEquals("-1.5", set.toArray()[0]);
Assert.assertEquals("-1.5,\"abc", set.toArray()[1]);
set = EntityQualifierUtils.parseList("(\"\\\"value1,part1\\\",\\\"value1,part2\\\"\",\"value2\")");
Assert.assertEquals(2, set.size());
Assert.assertEquals("\"value1,part1\",\"value1,part2\"", set.toArray()[0]);
Assert.assertEquals("value2", set.toArray()[1]);
////////////////////////////////
// Bad Format
////////////////////////////////
set = EntityQualifierUtils.parseList("(\"a,b)");
Assert.assertEquals(1, set.size());
Assert.assertEquals("a,b", set.toArray()[0]);
set = EntityQualifierUtils.parseList("(a,b\")");
Assert.assertEquals(2, set.size());
Assert.assertEquals("a", set.toArray()[0]);
Assert.assertEquals("b", set.toArray()[1]);
set = EntityQualifierUtils.parseList("(a\",b)");
Assert.assertEquals(1, set.size());
Assert.assertEquals("a\",b", set.toArray()[0]);
set = EntityQualifierUtils.parseList("(abc,def)");
Assert.assertEquals(2, set.size());
Assert.assertEquals("abc", set.toArray()[0]);
Assert.assertEquals("def", set.toArray()[1]);
set = EntityQualifierUtils.parseList("(1.5,def)");
Assert.assertEquals(2, set.size());
Assert.assertEquals("1.5", set.toArray()[0]);
Assert.assertEquals("def", set.toArray()[1]);
}
// @Test
// public void testEscapeRegExp(){
// Assert.assertEquals("abc\\.def",EntityQualifierHelper.escapeRegExp("abc.def"));
// }
}