You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@eagle.apache.org by ha...@apache.org on 2015/11/19 11:47:20 UTC
[13/55] [abbrv] [partial] incubator-eagle git commit: [EAGLE-46]
Rename package name as "org.apache.eagle"
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/afe86834/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/expression/ExpressionParser.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/expression/ExpressionParser.java b/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/expression/ExpressionParser.java
new file mode 100755
index 0000000..4f74715
--- /dev/null
+++ b/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/expression/ExpressionParser.java
@@ -0,0 +1,207 @@
+/*
+ * 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.expression;
+
+import org.apache.eagle.log.base.taggedlog.TaggedLogAPIEntity;
+import org.apache.eagle.log.entity.EntityQualifierUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import parsii.eval.Expression;
+import parsii.eval.Parser;
+import parsii.eval.Scope;
+import parsii.eval.Variable;
+import parsii.tokenizer.ParseException;
+
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+
+/**
+ * <h1>Expression Evaluation</h1>
+ *
+ * Given expression in string and set context variables, return value in double
+ *
+ * <br/>
+ * <br/>
+ * For example:
+ * <code>EXP{(max(a, b)* min(a, b)) / abs(a-b+c-d)} => 600.0</code>
+ *
+ * <br/>
+ * <br/>
+ * <b>NOTE:</b> Expression variable <b>must</b> be in format: <code>fieldName</code> instead of <code>@fieldName</code>
+ *
+ * <br/>
+ * <br/>
+ * <h2>Dependencies:</h2>
+ * <ul>
+ * <li>
+ * <a href="https://github.com/scireum/parsii">scireum/parsii</a>
+ * <i>Super fast and simple evaluator for mathematical expressions written in Java</i>
+ * </li>
+ * </ul>
+ *
+ */
+public class ExpressionParser{
+ private final static Logger LOG = LoggerFactory.getLogger(ExpressionParser.class);
+
+ private String exprStr;
+ private Expression expression;
+ private Scope scope;
+
+ @SuppressWarnings("unused")
+ public Scope getScope() {
+ return scope;
+ }
+
+ private List<String> dependentFields;
+
+ /**
+ * @param exprStr expression string in format like: <code>(max(a, b)* min(a, b)) / abs(a-b+c-d)</code>
+ *
+ * @throws ParseException
+ * @throws ParsiiInvalidException
+ */
+ public ExpressionParser(String exprStr) throws ParseException, ParsiiInvalidException{
+ this.exprStr = exprStr;
+ scope = Scope.create();
+ expression = Parser.parse(this.exprStr,scope);
+ }
+
+ @SuppressWarnings("unused")
+ public ExpressionParser(String exprStr, Map<String, Double> context) throws ParsiiInvalidException, ParseException, ParsiiUnknowVariableException {
+ this(exprStr);
+ setVariables(context);
+ }
+
+ public ExpressionParser setVariables(Map<String, Double> tuple) throws ParsiiUnknowVariableException{
+// for(String valName : tuple.keySet()) {
+// Double value = tuple.get(valName);
+ for(Map.Entry<String,Double> entry : tuple.entrySet()) {
+ String valName = entry.getKey();
+ Double value = entry.getValue();
+ Variable variable = scope.getVariable(valName);
+ if(variable!=null && value !=null) {
+ variable.setValue(value);
+ }else{
+ if(LOG.isDebugEnabled()) LOG.warn("Variable for "+valName+" is null in scope of expression: "+this.exprStr);
+ }
+ }
+ return this;
+ }
+
+ @SuppressWarnings("unused")
+ public ExpressionParser setVariable(Entry<String, Double> tuple) throws ParsiiUnknowVariableException{
+ if (getDependentFields().contains(tuple.getKey())) {
+ scope.getVariable(tuple.getKey()).setValue(tuple.getValue());
+ }
+ else {
+ throw new ParsiiUnknowVariableException("unknown variable: " + tuple.getKey());
+ }
+ return this;
+ }
+
+ public ExpressionParser setVariable(String key, Double value) throws ParsiiUnknowVariableException{
+ scope.getVariable(key).setValue(value);
+ return this;
+ }
+
+ public double eval() throws Exception{
+ return expression.evaluate();
+ }
+
+ /**
+ * Thread safe
+ *
+ * @param tuple
+ * @return
+ * @throws ParsiiUnknowVariableException
+ */
+ public double eval(Map<String, Double> tuple) throws Exception {
+ synchronized (this){
+ this.setVariables(tuple);
+ return this.eval();
+ }
+ }
+
+ public List<String> getDependentFields() {
+ if (dependentFields == null) {
+ dependentFields = new ArrayList<String>();
+ for (String variable : scope.getNames()) {
+ if (!variable.equals("pi") && !variable.equals("E") && !variable.equals("euler"))
+ dependentFields.add(variable);
+ }
+ }
+ return dependentFields;
+ }
+
+ private final static Map<String, ExpressionParser> _exprParserCache = new HashMap<String, ExpressionParser>();
+
+ /**
+ * Thread safe
+ *
+ * @param expr
+ * @return
+ * @throws ParsiiInvalidException
+ * @throws ParseException
+ */
+ public static ExpressionParser parse(String expr) throws ParsiiInvalidException, ParseException {
+ if(expr == null) throw new IllegalStateException("Expression to parse is null");
+ synchronized (_exprParserCache) {
+ ExpressionParser parser = _exprParserCache.get(expr);
+ if (parser == null) {
+ parser = new ExpressionParser(expr);
+ _exprParserCache.put(expr, parser);
+ }
+ return parser;
+ }
+ }
+ public static double eval(String expression,Map<String,Double> context) throws Exception {
+ ExpressionParser parser = parse(expression);
+ return parser.eval(context);
+ }
+
+ private static final Map<String,Method> _entityMethodCache = new HashMap<String, Method>();
+ public static double eval(String expression,TaggedLogAPIEntity entity) throws Exception {
+ ExpressionParser parser = parse(expression);
+ List<String> dependencies = parser.getDependentFields();
+ Map<String,Double> context = new HashMap<String,Double>();
+ for(String field:dependencies){
+ String methodName = "get"+field.substring(0, 1).toUpperCase() + field.substring(1);
+ String methodUID = entity.getClass().getName()+"."+methodName;
+
+ Method m;
+ synchronized (_entityMethodCache) {
+ m = _entityMethodCache.get(methodUID);
+ if (m == null) {
+ m = entity.getClass().getMethod(methodName);
+ _entityMethodCache.put(methodUID, m);
+ }
+ }
+ Object obj = m.invoke(entity);
+ Double doubleValue = EntityQualifierUtils.convertObjToDouble(obj);
+ // if(doubleValue == Double.NaN) throw new IllegalArgumentException("Field "+field+": "+obj+" in expression "+expression+" is not number");
+ context.put(field,doubleValue);
+ }
+ return parser.eval(context);
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/afe86834/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/expression/ParsiiInvalidException.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/expression/ParsiiInvalidException.java b/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/expression/ParsiiInvalidException.java
new file mode 100755
index 0000000..22301f8
--- /dev/null
+++ b/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/expression/ParsiiInvalidException.java
@@ -0,0 +1,57 @@
+/*
+ * 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.expression;
+
+/**
+ * @since Nov 7, 2014
+ */
+public class ParsiiInvalidException extends Exception{
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * Default constructor
+ */
+ public ParsiiInvalidException() {
+ super();
+ }
+
+ /**
+ * @param message
+ * @param cause
+ */
+ public ParsiiInvalidException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ /**
+ * @param message
+ */
+ public ParsiiInvalidException(String message) {
+ super(message);
+ }
+
+ /**
+ * @param cause
+ */
+ public ParsiiInvalidException(Throwable cause) {
+ super(cause);
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/afe86834/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/expression/ParsiiUnknowVariableException.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/expression/ParsiiUnknowVariableException.java b/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/expression/ParsiiUnknowVariableException.java
new file mode 100755
index 0000000..1573a08
--- /dev/null
+++ b/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/expression/ParsiiUnknowVariableException.java
@@ -0,0 +1,57 @@
+/*
+ * 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.expression;
+
+/**
+ * @since Nov 7, 2014
+ */
+public class ParsiiUnknowVariableException extends Exception{
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * Default constructor
+ */
+ public ParsiiUnknowVariableException() {
+ super();
+ }
+
+ /**
+ * @param message
+ * @param cause
+ */
+ public ParsiiUnknowVariableException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ /**
+ * @param message
+ */
+ public ParsiiUnknowVariableException(String message) {
+ super(message);
+ }
+
+ /**
+ * @param cause
+ */
+ public ParsiiUnknowVariableException(Throwable cause) {
+ super(cause);
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/afe86834/eagle-core/eagle-query/eagle-entity-base/src/test/java/eagle/log/TestGenericServiceAPIResponseEntity.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-entity-base/src/test/java/eagle/log/TestGenericServiceAPIResponseEntity.java b/eagle-core/eagle-query/eagle-entity-base/src/test/java/eagle/log/TestGenericServiceAPIResponseEntity.java
deleted file mode 100644
index 32ee8b0..0000000
--- a/eagle-core/eagle-query/eagle-entity-base/src/test/java/eagle/log/TestGenericServiceAPIResponseEntity.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * 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 eagle.log;
-
-import eagle.log.entity.GenericServiceAPIResponseEntity;
-import junit.framework.Assert;
-import org.codehaus.jackson.map.ObjectMapper;
-import org.codehaus.jackson.map.annotate.JsonSerialize;
-import org.junit.Before;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.LinkedList;
-
-/**
- * @since 3/18/15
- */
-public class TestGenericServiceAPIResponseEntity {
- final static Logger LOG = LoggerFactory.getLogger(TestGenericServiceAPIResponseEntity.class);
-
- ObjectMapper objectMapper;
-
- @Before
- public void setUp(){
- objectMapper = new ObjectMapper();
- }
-
- @JsonSerialize
- public static class Item{
- public Item(){}
- public Item(String name,Double value){
- this.name = name;
- this.value = value;
- }
- private String name;
- private Double value;
-
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public Double getValue() {
- return value;
- }
- public void setValue(Double value) {
- this.value = value;
- }
- }
-
- @Test
- public void testSerDeserialize() throws IOException {
- // mock up service side to serialize
- GenericServiceAPIResponseEntity<Item> entity = new GenericServiceAPIResponseEntity<Item>(Item.class);
- entity.setObj(Arrays.asList(new Item("a",1.2),new Item("b",1.3),new Item("c",1.4)));
- entity.setMeta(new HashMap<String, Object>(){{
- put("tag1","val1");
- put("tag2","val2");
- }});
-
-// entity.setTypeByObj();
- entity.setSuccess(true);
- String json = objectMapper.writeValueAsString(entity);
- LOG.info(json);
-
- // mock up client side to deserialize
- GenericServiceAPIResponseEntity deserEntity = objectMapper.readValue(json,GenericServiceAPIResponseEntity.class);
- Assert.assertEquals(json,objectMapper.writeValueAsString(deserEntity));
- Assert.assertEquals(3, deserEntity.getObj().size());
- Assert.assertEquals(LinkedList.class,deserEntity.getObj().getClass());
- Assert.assertEquals(Item.class,deserEntity.getObj().get(0).getClass());
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/afe86834/eagle-core/eagle-query/eagle-entity-base/src/test/java/eagle/log/entity/TestDouble2DArraySerDeser.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-entity-base/src/test/java/eagle/log/entity/TestDouble2DArraySerDeser.java b/eagle-core/eagle-query/eagle-entity-base/src/test/java/eagle/log/entity/TestDouble2DArraySerDeser.java
deleted file mode 100644
index 6727291..0000000
--- a/eagle-core/eagle-query/eagle-entity-base/src/test/java/eagle/log/entity/TestDouble2DArraySerDeser.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * 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 eagle.log.entity;
-
-import eagle.log.entity.meta.Double2DArraySerDeser;
-import org.junit.Test;
-
-/**
- * @since 7/22/15
- */
-public class TestDouble2DArraySerDeser {
- private Double2DArraySerDeser double2DArraySerDeser = new Double2DArraySerDeser();
-
- @Test
- public void testSerDeser(){
- double[][] data = new double[][]{
- {0,1,2,4},
- {4,2,1,0},
- {4},
- null,
- {}
- };
-
- byte[] bytes = double2DArraySerDeser.serialize(data);
- double[][] data2 = double2DArraySerDeser.deserialize(bytes);
-
- assert data.length == data2.length;
- assert data[0].length == data2[0].length;
- assert data[1].length == data2[1].length;
- assert data[2].length == data2[2].length;
- assert data[3] == data2[3] && data2[3] == null;
- assert data[4].length == data2[4].length;
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/afe86834/eagle-core/eagle-query/eagle-entity-base/src/test/java/eagle/log/entity/TestDoubleSerDeser.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-entity-base/src/test/java/eagle/log/entity/TestDoubleSerDeser.java b/eagle-core/eagle-query/eagle-entity-base/src/test/java/eagle/log/entity/TestDoubleSerDeser.java
deleted file mode 100644
index c2a2f64..0000000
--- a/eagle-core/eagle-query/eagle-entity-base/src/test/java/eagle/log/entity/TestDoubleSerDeser.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * 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 eagle.log.entity;
-
-import eagle.log.entity.meta.DoubleSerDeser;
-import eagle.common.ByteUtil;
-import junit.framework.Assert;
-import org.apache.hadoop.hbase.filter.BinaryComparator;
-import org.junit.Test;
-
-public class TestDoubleSerDeser {
-
- @Test
- public void test() {
- DoubleSerDeser dsd = new DoubleSerDeser();
- //byte[] t = {'N', 'a', 'N'};
- byte [] t = dsd.serialize(Double.NaN);
-
- Double d = dsd.deserialize(t);
- System.out.println(d);
- //Double d = dsd.deserialize(t);
- }
-
- /**
- * @link http://en.wikipedia.org/wiki/Double-precision_floating-point_format
- */
- @Test
- public void testIEEE754_Binary64_DoublePrecisionFloatingPointFormat(){
- for(Double last = null,i=Math.pow(-2.0,33);i< Math.pow(2.0,33);i+=Math.pow(2.0,10)){
- if(last != null){
- Assert.assertTrue(i > last);
- if(last < 0 && i <0){
- Assert.assertTrue("Negative double value and its serialization Binary array have negative correlation", new BinaryComparator(ByteUtil.doubleToBytes(i)).compareTo(ByteUtil.doubleToBytes(last)) < 0);
- }else if(last < 0 && i >=0){
- Assert.assertTrue("Binary array for negative double is always greater than any positive doubles' ",new BinaryComparator(ByteUtil.doubleToBytes(i)).compareTo(ByteUtil.doubleToBytes(last)) < 0);
- }else if(last >= 0){
- Assert.assertTrue("Positive double value and its serialization Binary array have positive correlation",new BinaryComparator(ByteUtil.doubleToBytes(i)).compareTo(ByteUtil.doubleToBytes(last)) > 0);
- }
- }
- last = i;
- }
- Assert.assertTrue("Binary array for negative double is always greater than any positive doubles'",new BinaryComparator(ByteUtil.doubleToBytes(-1.0)).compareTo(ByteUtil.doubleToBytes(Math.pow(2.0,32)))>0) ;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/afe86834/eagle-core/eagle-query/eagle-entity-base/src/test/java/eagle/log/entity/TestGenericEntityIndexStreamReader.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-entity-base/src/test/java/eagle/log/entity/TestGenericEntityIndexStreamReader.java b/eagle-core/eagle-query/eagle-entity-base/src/test/java/eagle/log/entity/TestGenericEntityIndexStreamReader.java
deleted file mode 100755
index 4306771..0000000
--- a/eagle-core/eagle-query/eagle-entity-base/src/test/java/eagle/log/entity/TestGenericEntityIndexStreamReader.java
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * 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 eagle.log.entity;
-
-import eagle.log.entity.index.NonClusteredIndexStreamReader;
-import eagle.log.entity.index.UniqueIndexStreamReader;
-import eagle.log.entity.meta.EntityDefinition;
-import eagle.log.entity.meta.EntityDefinitionManager;
-import eagle.log.entity.meta.IndexDefinition;
-import eagle.log.entity.old.GenericDeleter;
-import eagle.log.entity.test.TestLogAPIEntity;
-import eagle.query.parser.EagleQueryParser;
-import eagle.service.hbase.TestHBaseBase;
-import org.junit.Assert;
-import org.junit.Test;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-public class TestGenericEntityIndexStreamReader extends TestHBaseBase {
-
- @Test
- public void testUniqueIndexRead() throws Exception {
- EntityDefinition entityDefinition = EntityDefinitionManager.getEntityDefinitionByEntityClass(TestLogAPIEntity.class);
- hbase.createTable(entityDefinition.getTable(), entityDefinition.getColumnFamily());
-
- EntityDefinitionManager.registerEntity(TestLogAPIEntity.class);
- EntityDefinition ed = EntityDefinitionManager.getEntityDefinitionByEntityClass(TestLogAPIEntity.class);
-
- List<TestLogAPIEntity> list = new ArrayList<TestLogAPIEntity>();
- TestLogAPIEntity e = new TestLogAPIEntity();
- e.setField1(1);
- e.setField2(2);
- e.setField3(3);
- e.setField4(4L);
- e.setField5(5.0);
- e.setField6(5.0);
- e.setField7("7");
- e.setTags(new HashMap<String, String>());
- e.getTags().put("jobID", "index_test_job_id");
- e.getTags().put("hostname", "testhost");
- list.add(e);
-
- GenericEntityWriter writer = new GenericEntityWriter(ed.getService());
- List<String> result = writer.write(list);
- Assert.assertNotNull(result);
-
- IndexDefinition indexDef = ed.getIndexes()[0];
- SearchCondition condition = new SearchCondition();
- condition.setOutputFields(new ArrayList<String>());
- condition.getOutputFields().add("field1");
- condition.getOutputFields().add("field2");
- condition.getOutputFields().add("field3");
- condition.getOutputFields().add("field4");
- condition.getOutputFields().add("field5");
- condition.getOutputFields().add("field6");
- condition.getOutputFields().add("field7");
-
- String query = "@field7 = \"7\" AND @jobID = \"index_test_job_id\" ";
- EagleQueryParser parser = new EagleQueryParser(query);
- condition.setQueryExpression(parser.parse());
-
- UniqueIndexStreamReader indexReader = new UniqueIndexStreamReader(indexDef, condition);
- GenericEntityBatchReader batchReader = new GenericEntityBatchReader(indexReader);
- List<TestLogAPIEntity> entities = batchReader.read();
- Assert.assertNotNull(entities);
- Assert.assertTrue(entities.size() >= 1);
- TestLogAPIEntity e1 = entities.get(0);
- Assert.assertEquals(e.getField1(), e1.getField1());
- Assert.assertEquals(e.getField2(), e1.getField2());
- Assert.assertEquals(e.getField3(), e1.getField3());
- Assert.assertEquals(e.getField4(), e1.getField4());
- Assert.assertEquals(e.getField5(), e1.getField5(), 0.001);
- Assert.assertEquals(e.getField6(), e1.getField6());
- Assert.assertEquals(e.getField7(), e1.getField7());
-
- GenericDeleter deleter = new GenericDeleter(ed.getTable(), ed.getColumnFamily());
- deleter.delete(list);
-
- indexReader = new UniqueIndexStreamReader(indexDef, condition);
- batchReader = new GenericEntityBatchReader(indexReader);
- entities = batchReader.read();
- hbase.deleteTable(entityDefinition.getTable());
- Assert.assertNotNull(entities);
- Assert.assertTrue(entities.isEmpty());
- }
-
- @Test
- public void testNonClusterIndexRead() throws Exception {
- EntityDefinition entityDefinition = EntityDefinitionManager.getEntityDefinitionByEntityClass(TestLogAPIEntity.class);
- hbase.createTable(entityDefinition.getTable(), entityDefinition.getColumnFamily());
-
- EntityDefinitionManager.registerEntity(TestLogAPIEntity.class);
- EntityDefinition ed = EntityDefinitionManager.getEntityDefinitionByEntityClass(TestLogAPIEntity.class);
-
- List<TestLogAPIEntity> list = new ArrayList<TestLogAPIEntity>();
- TestLogAPIEntity e = new TestLogAPIEntity();
- e.setField1(1);
- e.setField2(2);
- e.setField3(3);
- e.setField4(4L);
- e.setField5(5.0);
- e.setField6(5.0);
- e.setField7("7");
- e.setTags(new HashMap<String, String>());
- e.getTags().put("jobID", "index_test_job_id");
- e.getTags().put("hostname", "testhost");
- list.add(e);
-
- GenericEntityWriter writer = new GenericEntityWriter(ed.getService());
- List<String> result = writer.write(list);
- Assert.assertNotNull(result);
-
- IndexDefinition indexDef = ed.getIndexes()[1];
- SearchCondition condition = new SearchCondition();
- condition.setOutputFields(new ArrayList<String>());
- condition.getOutputFields().add("field1");
- condition.getOutputFields().add("field2");
- condition.getOutputFields().add("field3");
- condition.getOutputFields().add("field4");
- condition.getOutputFields().add("field5");
- condition.getOutputFields().add("field6");
- condition.getOutputFields().add("field7");
-
- String query = "@field7 = \"7\" AND @jobID = \"index_test_job_id\" AND @hostname = \"testhost\"";
- EagleQueryParser parser = new EagleQueryParser(query);
- condition.setQueryExpression(parser.parse());
-
- NonClusteredIndexStreamReader indexReader = new NonClusteredIndexStreamReader(indexDef, condition);
- GenericEntityBatchReader batchReader = new GenericEntityBatchReader(indexReader);
- List<TestLogAPIEntity> entities = batchReader.read();
- Assert.assertNotNull(entities);
- Assert.assertTrue(entities.size() >= 1);
- TestLogAPIEntity e1 = entities.get(0);
- Assert.assertEquals(e.getField1(), e1.getField1());
- Assert.assertEquals(e.getField2(), e1.getField2());
- Assert.assertEquals(e.getField3(), e1.getField3());
- Assert.assertEquals(e.getField4(), e1.getField4());
- Assert.assertEquals(e.getField5(), e1.getField5(), 0.001);
- Assert.assertEquals(e.getField6(), e1.getField6());
- Assert.assertEquals(e.getField7(), e1.getField7());
-
-
- GenericDeleter deleter = new GenericDeleter(ed.getTable(), ed.getColumnFamily());
- deleter.delete(list);
-
- indexReader = new NonClusteredIndexStreamReader(indexDef, condition);
- batchReader = new GenericEntityBatchReader(indexReader);
- entities = batchReader.read();
- hbase.deleteTable(entityDefinition.getTable());
- Assert.assertNotNull(entities);
- Assert.assertTrue(entities.isEmpty());
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/afe86834/eagle-core/eagle-query/eagle-entity-base/src/test/java/eagle/log/entity/TestHBaseIntegerLogHelper.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-entity-base/src/test/java/eagle/log/entity/TestHBaseIntegerLogHelper.java b/eagle-core/eagle-query/eagle-entity-base/src/test/java/eagle/log/entity/TestHBaseIntegerLogHelper.java
deleted file mode 100755
index 22d50a3..0000000
--- a/eagle-core/eagle-query/eagle-entity-base/src/test/java/eagle/log/entity/TestHBaseIntegerLogHelper.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * 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 eagle.log.entity;
-
-import eagle.log.base.taggedlog.TaggedLogAPIEntity;
-import eagle.log.entity.meta.EntityDefinition;
-import eagle.log.entity.meta.EntityDefinitionManager;
-import eagle.log.entity.test.TestTimeSeriesAPIEntity;
-import eagle.common.ByteUtil;
-import junit.framework.Assert;
-import org.junit.Test;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * @since : 11/10/14,2014
- */
-public class TestHBaseIntegerLogHelper {
- @Test
- public void testTimeSeriesAPIEntity(){
- InternalLog internalLog = new InternalLog();
- Map<String,byte[]> map = new HashMap<String,byte[]>();
- TestTimeSeriesAPIEntity apiEntity = new TestTimeSeriesAPIEntity();
- EntityDefinition ed = null;
- try {
- ed = EntityDefinitionManager.getEntityByServiceName("TestTimeSeriesAPIEntity");
- } catch (InstantiationException e) {
- e.printStackTrace();
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- }
- map.put("a", ByteUtil.intToBytes(12));
- map.put("c", ByteUtil.longToBytes(123432432l));
- map.put("cluster", new String("cluster4ut").getBytes());
- map.put("datacenter", new String("datacenter4ut").getBytes());
-
- internalLog.setQualifierValues(map);
- internalLog.setTimestamp(System.currentTimeMillis());
-
- try {
- TaggedLogAPIEntity entity = HBaseInternalLogHelper.buildEntity(internalLog, ed);
- Assert.assertTrue(entity instanceof TestTimeSeriesAPIEntity);
- TestTimeSeriesAPIEntity tsentity = (TestTimeSeriesAPIEntity) entity;
- Assert.assertEquals("cluster4ut",tsentity.getTags().get("cluster"));
- Assert.assertEquals("datacenter4ut",tsentity.getTags().get("datacenter"));
- Assert.assertEquals(12,tsentity.getField1());
- Assert.assertEquals(123432432l,tsentity.getField3());
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/afe86834/eagle-core/eagle-query/eagle-entity-base/src/test/java/eagle/log/entity/TestHBaseWriteEntitiesPerformance.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-entity-base/src/test/java/eagle/log/entity/TestHBaseWriteEntitiesPerformance.java b/eagle-core/eagle-query/eagle-entity-base/src/test/java/eagle/log/entity/TestHBaseWriteEntitiesPerformance.java
deleted file mode 100755
index 186853b..0000000
--- a/eagle-core/eagle-query/eagle-entity-base/src/test/java/eagle/log/entity/TestHBaseWriteEntitiesPerformance.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * 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 eagle.log.entity;
-
-import eagle.log.entity.meta.EntityDefinition;
-import eagle.log.entity.meta.EntityDefinitionManager;
-import eagle.log.entity.test.TestLogAPIEntity;
-import eagle.service.hbase.TestHBaseBase;
-import junit.framework.Assert;
-import org.apache.commons.lang.time.StopWatch;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-
-public class TestHBaseWriteEntitiesPerformance extends TestHBaseBase {
- private EntityDefinition ed;
- private final static Logger LOG = LoggerFactory.getLogger(TestHBaseWriteEntitiesPerformance.class);
-
- @Before
- public void setUp() throws IllegalAccessException, InstantiationException, IOException {
- EntityDefinition entityDefinition = EntityDefinitionManager.getEntityDefinitionByEntityClass(TestLogAPIEntity.class);
- hbase.createTable(entityDefinition.getTable(), entityDefinition.getColumnFamily());
-
- EntityDefinitionManager.registerEntity(TestLogAPIEntity.class);
- try {
- ed = EntityDefinitionManager.getEntityDefinitionByEntityClass(TestLogAPIEntity.class);
- ed.setTimeSeries(true);
- } catch (InstantiationException | IllegalAccessException e) {
- Assert.fail(e.getMessage());
- }
- }
-
- @After
- public void cleanUp() throws IllegalAccessException, InstantiationException, IOException {
- EntityDefinition entityDefinition = EntityDefinitionManager.getEntityDefinitionByEntityClass(TestLogAPIEntity.class);
- hbase.deleteTable(entityDefinition.getTable());
- }
-
- private List<String> writeEntities(int count){
- GenericEntityWriter writer = null;
- try {
- writer = new GenericEntityWriter(ed.getService());
- } catch (InstantiationException e1) {
- Assert.fail(e1.getMessage());
- } catch (IllegalAccessException e1) {
- Assert.fail(e1.getMessage());
- }
-
- if(LOG.isDebugEnabled()) LOG.debug("Start to write "+count+" entities");
- int wroteCount = 0;
- List<String> rowkeys = new ArrayList<String>();
- List<TestLogAPIEntity> list = new ArrayList<TestLogAPIEntity>();
- for(int i=0;i<= count;i++){
- TestLogAPIEntity e = new TestLogAPIEntity();
- e.setTimestamp(new Date().getTime());
- e.setField1(i);
- e.setField2(i);
- e.setField3(i);
- e.setField4(new Long(i));
- e.setField5(new Double(i));
- e.setField6(new Double(i));
- e.setField7(String.valueOf(i));
- e.setTags(new HashMap<String, String>());
- e.getTags().put("jobID", "index_test_job_id");
- e.getTags().put("hostname", "testhost");
- e.getTags().put("index", String.valueOf(i));
- e.getTags().put("class", e.toString());
- list.add(e);
-
- if(list.size()>=1000){
- try {
- StopWatch watch = new StopWatch();
- watch.start();
- rowkeys.addAll(writer.write(list));
- watch.stop();
- wroteCount += list.size();
- if(LOG.isDebugEnabled()) LOG.debug("Wrote "+wroteCount+" / "+count+" entities"+" in "+watch.getTime()+" ms");
- list.clear();
- } catch (Exception e1) {
- Assert.fail(e1.getMessage());
- }
- }
- }
-
- try {
- rowkeys.addAll(writer.write(list));
- wroteCount += list.size();
- if(LOG.isDebugEnabled()) LOG.debug("wrote "+wroteCount+" / "+count+" entities");
- } catch (Exception e) {
- Assert.fail(e.getMessage());
- }
- if(LOG.isDebugEnabled()) LOG.debug("done "+count+" entities");
- return rowkeys;
- }
-
- @SuppressWarnings("unused")
- @Test
- public void testWrite1MLogAPIEntities(){
- Date startTime = new Date();
- LOG.info("Start time: " + startTime);
- StopWatch watch = new StopWatch();
- watch.start();
- List<String> rowKeys = writeEntities(10);
- Assert.assertNotNull(rowKeys);
- watch.stop();
- Date endTime = new Date();
- LOG.info("End time: " + endTime);
- LOG.info("Totally take " + watch.getTime() * 1.0 / 1000 + " s");
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/afe86834/eagle-core/eagle-query/eagle-entity-base/src/test/java/eagle/log/entity/TestHbaseWritePerformance.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-entity-base/src/test/java/eagle/log/entity/TestHbaseWritePerformance.java b/eagle-core/eagle-query/eagle-entity-base/src/test/java/eagle/log/entity/TestHbaseWritePerformance.java
deleted file mode 100644
index 0d70b77..0000000
--- a/eagle-core/eagle-query/eagle-entity-base/src/test/java/eagle/log/entity/TestHbaseWritePerformance.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * 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 eagle.log.entity;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import eagle.common.config.EagleConfigFactory;
-import org.apache.hadoop.hbase.client.HTableInterface;
-import org.apache.hadoop.hbase.client.Put;
-import org.junit.Test;
-
-public class TestHbaseWritePerformance {
-
- public static void main(String[] args) throws IOException {
-
- HTableInterface tbl = EagleConfigFactory.load().getHTable("unittest");
-
- int putSize = 1000;
- List<Put> list = new ArrayList<Put>(putSize);
- for (int i = 0; i < putSize; ++i) {
- byte[] v = Integer.toString(i).getBytes();
- Put p = new Put(v);
- p.add("f".getBytes(), "a".getBytes(), 100, v);
- list.add(p);
- }
-
- // Case 1
- System.out.println("Case 1: autoflush = true, individual put");
- tbl.setAutoFlush(true);
- long startTime = System.currentTimeMillis();
- for (int i = 0; i < 1; ++i) {
- for (Put p : list) {
- tbl.put(p);
- }
- tbl.flushCommits();
- }
- long endTime = System.currentTimeMillis();
- System.out.println("Case 1: " + (endTime - startTime) + " ms");
-
-
- // Case 2
- System.out.println("Case 2: autoflush = true, multi-put");
- tbl.setAutoFlush(true);
- startTime = System.currentTimeMillis();
- for (int i = 0; i < 1; ++i) {
- tbl.put(list);
- tbl.flushCommits();
- }
- endTime = System.currentTimeMillis();
- System.out.println("Case 2: " + (endTime - startTime) + " ms");
-
-
- // Case 3
- System.out.println("Case 3: autoflush = false, multi-put");
- tbl.setAutoFlush(false);
- startTime = System.currentTimeMillis();
- for (int i = 0; i < 1; ++i) {
- tbl.put(list);
- tbl.flushCommits();
- }
- endTime = System.currentTimeMillis();
- System.out.println("Case 3: " + (endTime - startTime) + " ms");
-
-
- // Case 4
- System.out.println("Case 4: autoflush = false, individual put");
- tbl.setAutoFlush(true);
- startTime = System.currentTimeMillis();
- for (int i = 0; i < 1; ++i) {
- for (Put p : list) {
- tbl.put(p);
- }
- tbl.flushCommits();
- }
- endTime = System.currentTimeMillis();
- System.out.println("Case 4: " + (endTime - startTime) + " ms");
-
- }
-
- @Test
- public void test() {
-
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/afe86834/eagle-core/eagle-query/eagle-entity-base/src/test/java/eagle/log/entity/TestTestLogAPIEntity.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-entity-base/src/test/java/eagle/log/entity/TestTestLogAPIEntity.java b/eagle-core/eagle-query/eagle-entity-base/src/test/java/eagle/log/entity/TestTestLogAPIEntity.java
deleted file mode 100755
index bcbec34..0000000
--- a/eagle-core/eagle-query/eagle-entity-base/src/test/java/eagle/log/entity/TestTestLogAPIEntity.java
+++ /dev/null
@@ -1,405 +0,0 @@
-/*
- * 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 eagle.log.entity;
-
-import eagle.log.base.taggedlog.TaggedLogAPIEntity;
-import eagle.log.entity.index.UniqueIndexLogReader;
-import eagle.log.entity.meta.EntityConstants;
-import eagle.log.entity.meta.EntityDefinition;
-import eagle.log.entity.meta.EntityDefinitionManager;
-import eagle.log.entity.meta.IndexDefinition;
-import eagle.log.entity.old.GenericDeleter;
-import eagle.log.entity.test.TestLogAPIEntity;
-import eagle.service.hbase.TestHBaseBase;
-import org.junit.Assert;
-import org.junit.Test;
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-public class TestTestLogAPIEntity extends TestHBaseBase {
-
- @Test
- public void testGetValue() throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
- EntityDefinition ed = EntityDefinitionManager.getEntityDefinitionByEntityClass(TestLogAPIEntity.class);
- if (ed == null) {
- EntityDefinitionManager.registerEntity(TestLogAPIEntity.class);
- ed = EntityDefinitionManager.getEntityDefinitionByEntityClass(TestLogAPIEntity.class);
- }
-
- Assert.assertNotNull(ed);
- Assert.assertNotNull(ed.getQualifierGetterMap());
- TestLogAPIEntity e = new TestLogAPIEntity();
- e.setField1(1);
- e.setField2(2);
- e.setField3(3);
- e.setField4(4L);
- e.setField5(5.0);
- e.setField6(6.0);
- e.setField7("7");
- e.setTags(new HashMap<String, String>());
- e.getTags().put("tag1", "value1");
-
- Assert.assertNotNull(ed.getQualifierGetterMap().get("field1"));
- Assert.assertEquals(1, ed.getValue(e, "field1"));
- Assert.assertEquals(2, ed.getValue(e, "field2"));
- Assert.assertEquals(3L, ed.getValue(e, "field3"));
- Assert.assertEquals(4L, ed.getValue(e, "field4"));
- Assert.assertEquals(5.0, ed.getValue(e, "field5"));
- Assert.assertEquals(6.0, ed.getValue(e, "field6"));
- Assert.assertEquals("7", ed.getValue(e, "field7"));
- Assert.assertEquals("value1", ed.getValue(e, "tag1"));
- }
-
- @Test
- public void testIndexDefinition() throws InstantiationException, IllegalAccessException {
-
- EntityDefinition ed = EntityDefinitionManager.getEntityDefinitionByEntityClass(TestLogAPIEntity.class);
- if (ed == null) {
- EntityDefinitionManager.registerEntity(TestLogAPIEntity.class);
- ed = EntityDefinitionManager.getEntityDefinitionByEntityClass(TestLogAPIEntity.class);
- }
- Assert.assertNotNull(ed);
- IndexDefinition[] indexDefinitions = ed.getIndexes();
- Assert.assertNotNull(indexDefinitions);
- Assert.assertEquals(2, indexDefinitions.length);
- for (IndexDefinition def : indexDefinitions) {
- Assert.assertNotNull(def.getIndexName());
- Assert.assertNotNull(def.getIndexColumns());
- Assert.assertEquals(1, def.getIndexColumns().length);
- }
- }
-
- @Test
- public void testWriteEmptyIndexFieldAndDeleteWithoutPartition() throws Exception {
- EntityDefinition entityDefinition = EntityDefinitionManager.getEntityDefinitionByEntityClass(TestLogAPIEntity.class);
- hbase.createTable(entityDefinition.getTable(), entityDefinition.getColumnFamily());
-
- EntityDefinition ed = EntityDefinitionManager.getEntityDefinitionByEntityClass(TestLogAPIEntity.class);
- if (ed == null) {
- EntityDefinitionManager.registerEntity(TestLogAPIEntity.class);
- ed = EntityDefinitionManager.getEntityDefinitionByEntityClass(TestLogAPIEntity.class);
- }
- String[] partitions = ed.getPartitions();
- ed.setPartitions(null);
-
- try {
- List<TestLogAPIEntity> list = new ArrayList<TestLogAPIEntity>();
- TestLogAPIEntity e = new TestLogAPIEntity();
- e.setField1(1);
- e.setField2(2);
- e.setField3(3);
- e.setField4(4L);
- e.setField5(5.0);
- e.setField6(5.0);
- e.setField7("7");
- e.setTags(new HashMap<String, String>());
- e.getTags().put("tag1", "value1");
- list.add(e);
-
- GenericEntityWriter writer = new GenericEntityWriter(ed.getService());
- List<String> result = writer.write(list);
- Assert.assertNotNull(result);
-
- List<byte[]> indexRowkeys = new ArrayList<byte[]>();
- IndexDefinition[] indexDefs = ed.getIndexes();
- for (IndexDefinition index : indexDefs) {
- byte[] indexRowkey = index.generateIndexRowkey(e);
- indexRowkeys.add(indexRowkey);
- }
- byte[][] qualifiers = new byte[7][];
- qualifiers[0] = "a".getBytes();
- qualifiers[1] = "b".getBytes();
- qualifiers[2] = "c".getBytes();
- qualifiers[3] = "d".getBytes();
- qualifiers[4] = "e".getBytes();
- qualifiers[5] = "f".getBytes();
- qualifiers[6] = "g".getBytes();
-
- UniqueIndexLogReader reader = new UniqueIndexLogReader(indexDefs[0], indexRowkeys, qualifiers, null);
- reader.open();
- InternalLog log = reader.read();
- Assert.assertNotNull(log);
-
- TaggedLogAPIEntity newEntity = HBaseInternalLogHelper.buildEntity(log, ed);
- Assert.assertEquals(TestLogAPIEntity.class, newEntity.getClass());
- TestLogAPIEntity e1 = (TestLogAPIEntity)newEntity;
- Assert.assertEquals(e.getField1(), e1.getField1());
- Assert.assertEquals(e.getField2(), e1.getField2());
- Assert.assertEquals(e.getField3(), e1.getField3());
- Assert.assertEquals(e.getField4(), e1.getField4());
- Assert.assertEquals(e.getField5(), e1.getField5(), 0.001);
- Assert.assertEquals(e.getField6(), e1.getField6());
- Assert.assertEquals(e.getField7(), e1.getField7());
-
- log = reader.read();
- Assert.assertNotNull(log);
- newEntity = HBaseInternalLogHelper.buildEntity(log, ed);
- Assert.assertEquals(TestLogAPIEntity.class, newEntity.getClass());
- e1 = (TestLogAPIEntity)newEntity;
- Assert.assertEquals(e.getField1(), e1.getField1());
- Assert.assertEquals(e.getField2(), e1.getField2());
- Assert.assertEquals(e.getField3(), e1.getField3());
- Assert.assertEquals(e.getField4(), e1.getField4());
- Assert.assertEquals(e.getField5(), e1.getField5(), 0.001);
- Assert.assertEquals(e.getField6(), e1.getField6());
- Assert.assertEquals(e.getField7(), e1.getField7());
-
- log = reader.read();
- Assert.assertNull(log);
- reader.close();
-
- GenericDeleter deleter = new GenericDeleter(ed.getTable(), ed.getColumnFamily());
- deleter.delete(list);
-
- reader = new UniqueIndexLogReader(indexDefs[0], indexRowkeys, qualifiers, null);
- reader.open();
- log = reader.read();
- Assert.assertNull(log);
- reader.close();
- } finally {
- ed.setPartitions(partitions);
- }
- hbase.deleteTable(entityDefinition.getTable());
- }
-
-
- /*
- * testWriteEmptyIndexFieldAndDeleteWithPartition(eagle.log.entity.TestTestLogAPIEntity): expected:<86400000> but was:<0>
- */
- //@Test
- public void testWriteEmptyIndexFieldAndDeleteWithPartition() throws Exception {
- EntityDefinition entityDefinition = EntityDefinitionManager.getEntityDefinitionByEntityClass(TestLogAPIEntity.class);
- hbase.createTable(entityDefinition.getTable(), entityDefinition.getColumnFamily());
-
- EntityDefinition ed = EntityDefinitionManager.getEntityDefinitionByEntityClass(TestLogAPIEntity.class);
- if (ed == null) {
- EntityDefinitionManager.registerEntity(TestLogAPIEntity.class);
- ed = EntityDefinitionManager.getEntityDefinitionByEntityClass(TestLogAPIEntity.class);
- }
- String[] partitions = ed.getPartitions();
- String[] newPart = new String[2];
- newPart[0] = "cluster";
- newPart[1] = "datacenter";
- ed.setPartitions(newPart);
-
- try {
- List<TestLogAPIEntity> list = new ArrayList<TestLogAPIEntity>();
- TestLogAPIEntity e = new TestLogAPIEntity();
- e.setField1(1);
- e.setField2(2);
- e.setField3(3);
- e.setField4(4L);
- e.setField5(5.0);
- e.setField6(5.0);
- e.setField7("7");
- e.setTags(new HashMap<String, String>());
- e.getTags().put("cluster", "test4UT");
- e.getTags().put("datacenter", "dc1");
- list.add(e);
-
- GenericEntityWriter writer = new GenericEntityWriter(ed.getService());
- List<String> result = writer.write(list);
- Assert.assertNotNull(result);
-
- List<byte[]> indexRowkeys = new ArrayList<byte[]>();
- IndexDefinition[] indexDefs = ed.getIndexes();
- for (IndexDefinition index : indexDefs) {
- byte[] indexRowkey = index.generateIndexRowkey(e);
- indexRowkeys.add(indexRowkey);
- }
- byte[][] qualifiers = new byte[9][];
- qualifiers[0] = "a".getBytes();
- qualifiers[1] = "b".getBytes();
- qualifiers[2] = "c".getBytes();
- qualifiers[3] = "d".getBytes();
- qualifiers[4] = "e".getBytes();
- qualifiers[5] = "f".getBytes();
- qualifiers[6] = "g".getBytes();
- qualifiers[7] = "cluster".getBytes();
- qualifiers[8] = "datacenter".getBytes();
-
- UniqueIndexLogReader reader = new UniqueIndexLogReader(indexDefs[0], indexRowkeys, qualifiers, null);
- reader.open();
- InternalLog log = reader.read();
- Assert.assertNotNull(log);
-
- TaggedLogAPIEntity newEntity = HBaseInternalLogHelper.buildEntity(log, ed);
- Assert.assertEquals(TestLogAPIEntity.class, newEntity.getClass());
- TestLogAPIEntity e1 = (TestLogAPIEntity)newEntity;
- Assert.assertEquals(e.getField1(), e1.getField1());
- Assert.assertEquals(e.getField2(), e1.getField2());
- Assert.assertEquals(e.getField3(), e1.getField3());
- Assert.assertEquals(e.getField4(), e1.getField4());
- Assert.assertEquals(e.getField5(), e1.getField5(), 0.001);
- Assert.assertEquals(e.getField6(), e1.getField6());
- Assert.assertEquals(e.getField7(), e1.getField7());
- Assert.assertEquals("test4UT", e1.getTags().get("cluster"));
- Assert.assertEquals("dc1", e1.getTags().get("datacenter"));
- Assert.assertEquals(EntityConstants.FIXED_WRITE_TIMESTAMP, e1.getTimestamp());
-
- log = reader.read();
- Assert.assertNotNull(log);
- newEntity = HBaseInternalLogHelper.buildEntity(log, ed);
- Assert.assertEquals(TestLogAPIEntity.class, newEntity.getClass());
- e1 = (TestLogAPIEntity)newEntity;
- Assert.assertEquals(e.getField1(), e1.getField1());
- Assert.assertEquals(e.getField2(), e1.getField2());
- Assert.assertEquals(e.getField3(), e1.getField3());
- Assert.assertEquals(e.getField4(), e1.getField4());
- Assert.assertEquals(e.getField5(), e1.getField5(), 0.001);
- Assert.assertEquals(e.getField6(), e1.getField6());
- Assert.assertEquals(e.getField7(), e1.getField7());
- Assert.assertEquals("test4UT", e1.getTags().get("cluster"));
- Assert.assertEquals("dc1", e1.getTags().get("datacenter"));
- Assert.assertEquals(EntityConstants.FIXED_WRITE_TIMESTAMP, e1.getTimestamp());
-
- log = reader.read();
- Assert.assertNull(log);
- reader.close();
-
- GenericDeleter deleter = new GenericDeleter(ed.getTable(), ed.getColumnFamily());
- deleter.delete(list);
-
- reader = new UniqueIndexLogReader(indexDefs[0], indexRowkeys, qualifiers, null);
- reader.open();
- log = reader.read();
- Assert.assertNull(log);
- reader.close();
- } finally {
- ed.setPartitions(partitions);
- }
- hbase.deleteTable(entityDefinition.getTable());
- }
-
- /**
- * testWriteEmptyIndexFieldAndDeleteWithPartitionAndTimeSeries(eagle.log.entity.TestTestLogAPIEntity): expected:<1434809555569> but was:<0>
- */
-
- //@Test
- public void testWriteEmptyIndexFieldAndDeleteWithPartitionAndTimeSeries() throws Exception {
- EntityDefinition entityDefinition = EntityDefinitionManager.getEntityDefinitionByEntityClass(TestLogAPIEntity.class);
- hbase.createTable(entityDefinition.getTable(), entityDefinition.getColumnFamily());
-
- EntityDefinition ed = EntityDefinitionManager.getEntityDefinitionByEntityClass(TestLogAPIEntity.class);
- if (ed == null) {
- EntityDefinitionManager.registerEntity(TestLogAPIEntity.class);
- ed = EntityDefinitionManager.getEntityDefinitionByEntityClass(TestLogAPIEntity.class);
- }
- String[] partitions = ed.getPartitions();
- String[] newPart = new String[2];
- newPart[0] = "cluster";
- newPart[1] = "datacenter";
- ed.setPartitions(newPart);
- boolean isTimeSeries = ed.isTimeSeries();
- ed.setTimeSeries(true);
- long now = System.currentTimeMillis();
-
- try {
- List<TestLogAPIEntity> list = new ArrayList<TestLogAPIEntity>();
- TestLogAPIEntity e = new TestLogAPIEntity();
- e.setField1(1);
- e.setField2(2);
- e.setField3(3);
- e.setField4(4L);
- e.setField5(5.0);
- e.setField6(5.0);
- e.setField7("7");
- e.setTags(new HashMap<String, String>());
- e.getTags().put("cluster", "test4UT");
- e.getTags().put("datacenter", "dc1");
- e.setTimestamp(now);
- list.add(e);
-
- GenericEntityWriter writer = new GenericEntityWriter(ed.getService());
- List<String> result = writer.write(list);
- Assert.assertNotNull(result);
-
- List<byte[]> indexRowkeys = new ArrayList<byte[]>();
- IndexDefinition[] indexDefs = ed.getIndexes();
- for (IndexDefinition index : indexDefs) {
- byte[] indexRowkey = index.generateIndexRowkey(e);
- indexRowkeys.add(indexRowkey);
- }
- byte[][] qualifiers = new byte[9][];
- qualifiers[0] = "a".getBytes();
- qualifiers[1] = "b".getBytes();
- qualifiers[2] = "c".getBytes();
- qualifiers[3] = "d".getBytes();
- qualifiers[4] = "e".getBytes();
- qualifiers[5] = "f".getBytes();
- qualifiers[6] = "g".getBytes();
- qualifiers[7] = "cluster".getBytes();
- qualifiers[8] = "datacenter".getBytes();
-
- UniqueIndexLogReader reader = new UniqueIndexLogReader(indexDefs[0], indexRowkeys, qualifiers, null);
- reader.open();
- InternalLog log = reader.read();
- Assert.assertNotNull(log);
-
- TaggedLogAPIEntity newEntity = HBaseInternalLogHelper.buildEntity(log, ed);
- Assert.assertEquals(TestLogAPIEntity.class, newEntity.getClass());
- TestLogAPIEntity e1 = (TestLogAPIEntity)newEntity;
- Assert.assertEquals(e.getField1(), e1.getField1());
- Assert.assertEquals(e.getField2(), e1.getField2());
- Assert.assertEquals(e.getField3(), e1.getField3());
- Assert.assertEquals(e.getField4(), e1.getField4());
- Assert.assertEquals(e.getField5(), e1.getField5(), 0.001);
- Assert.assertEquals(e.getField6(), e1.getField6());
- Assert.assertEquals(e.getField7(), e1.getField7());
- Assert.assertEquals("test4UT", e1.getTags().get("cluster"));
- Assert.assertEquals("dc1", e1.getTags().get("datacenter"));
- Assert.assertEquals(now, e1.getTimestamp());
-
- log = reader.read();
- Assert.assertNotNull(log);
- newEntity = HBaseInternalLogHelper.buildEntity(log, ed);
- Assert.assertEquals(TestLogAPIEntity.class, newEntity.getClass());
- e1 = (TestLogAPIEntity)newEntity;
- Assert.assertEquals(e.getField1(), e1.getField1());
- Assert.assertEquals(e.getField2(), e1.getField2());
- Assert.assertEquals(e.getField3(), e1.getField3());
- Assert.assertEquals(e.getField4(), e1.getField4());
- Assert.assertEquals(e.getField5(), e1.getField5(), 0.001);
- Assert.assertEquals(e.getField6(), e1.getField6());
- Assert.assertEquals(e.getField7(), e1.getField7());
- Assert.assertEquals("test4UT", e1.getTags().get("cluster"));
- Assert.assertEquals("dc1", e1.getTags().get("datacenter"));
- Assert.assertEquals(now, e1.getTimestamp());
-
- log = reader.read();
- Assert.assertNull(log);
- reader.close();
-
- GenericDeleter deleter = new GenericDeleter(ed.getTable(), ed.getColumnFamily());
- deleter.delete(list);
-
- reader = new UniqueIndexLogReader(indexDefs[0], indexRowkeys, qualifiers, null);
- reader.open();
- log = reader.read();
- Assert.assertNull(log);
- reader.close();
- } finally {
- ed.setPartitions(partitions);
- ed.setTimeSeries(isTimeSeries);
- }
- hbase.deleteTable(entityDefinition.getTable());
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/afe86834/eagle-core/eagle-query/eagle-entity-base/src/test/java/eagle/log/entity/base/taggedlog/TestTaggedLogAPIEntity.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-entity-base/src/test/java/eagle/log/entity/base/taggedlog/TestTaggedLogAPIEntity.java b/eagle-core/eagle-query/eagle-entity-base/src/test/java/eagle/log/entity/base/taggedlog/TestTaggedLogAPIEntity.java
deleted file mode 100755
index 1cfe467..0000000
--- a/eagle-core/eagle-query/eagle-entity-base/src/test/java/eagle/log/entity/base/taggedlog/TestTaggedLogAPIEntity.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * 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 eagle.log.entity.base.taggedlog;
-
-import java.io.IOException;
-import java.util.HashMap;
-
-import eagle.log.base.taggedlog.TaggedLogAPIEntity;
-import eagle.log.entity.meta.Column;
-import junit.framework.Assert;
-
-import org.codehaus.jackson.map.ObjectMapper;
-import org.codehaus.jackson.map.annotate.JsonSerialize;
-import org.junit.Test;
-
-public class TestTaggedLogAPIEntity {
- ObjectMapper objectMapper = new ObjectMapper();
-
- @JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
- private class MockSubTaggedLogAPIEntity extends TaggedLogAPIEntity {
- public double getField1() {
- return field1;
- }
-
- public void setField1(double value) {
- this.field1 = value;
- _pcs.firePropertyChange("field1", null, null);
- }
-
- @Column("a")
- private double field1;
-
- public String getField2() {
- return field2;
- }
-
- public void setField2(String field2) {
- this.field2 = field2;
- _pcs.firePropertyChange("field2", null, null);
- }
-
- @Column("b")
- private String field2;
- }
-
- @SuppressWarnings("serial")
- @Test
- public void testJsonSerializeFilter() throws IOException {
- MockSubTaggedLogAPIEntity mock = new MockSubTaggedLogAPIEntity();
- Assert.assertTrue(mock instanceof TaggedLogAPIEntity);
-
- long timestamp = System.currentTimeMillis();
- mock.setTimestamp(timestamp);
- mock.setEncodedRowkey("test_encoded_row_key");
- mock.setPrefix("mock");
- mock.setField2("ok");
- String json = objectMapper.filteredWriter(TaggedLogAPIEntity.getFilterProvider()).writeValueAsString(mock);
- System.out.println(json);
- Assert.assertTrue(json.contains("field2"));
- Assert.assertTrue(!json.contains("field1"));
- mock.setTimestamp(timestamp);
- mock.setEncodedRowkey("test_encoded_row_key");
- mock.setPrefix("mock");
- mock.setField2("ok");
- mock.setField1(12.345);
- mock.setTags(new HashMap<String, String>(){{
- put("tagName", "tagValue");
- }});
- mock.setExp(new HashMap<String, Object>() {{
- put("extra_field", 3.14);
- }});
- json = objectMapper.filteredWriter(TaggedLogAPIEntity.getFilterProvider()).writeValueAsString(mock);
- System.out.println(json);
- Assert.assertTrue(json.contains("field2"));
- Assert.assertTrue(json.contains("field1"));
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/afe86834/eagle-core/eagle-query/eagle-entity-base/src/test/java/eagle/log/entity/filter/TestEntityQualifierHelper.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-entity-base/src/test/java/eagle/log/entity/filter/TestEntityQualifierHelper.java b/eagle-core/eagle-query/eagle-entity-base/src/test/java/eagle/log/entity/filter/TestEntityQualifierHelper.java
deleted file mode 100755
index bfa7b36..0000000
--- a/eagle-core/eagle-query/eagle-entity-base/src/test/java/eagle/log/entity/filter/TestEntityQualifierHelper.java
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * 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 eagle.log.entity.filter;
-
-import eagle.log.entity.EntityQualifierUtils;
-import eagle.log.entity.meta.EntityDefinition;
-import eagle.log.entity.meta.EntityDefinitionManager;
-import eagle.log.entity.test.TestLogAPIEntity;
-import junit.framework.Assert;
-import org.apache.hadoop.hbase.util.Bytes;
-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"));
-// }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/afe86834/eagle-core/eagle-query/eagle-entity-base/src/test/java/eagle/log/entity/filter/TestExpressionComparator.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-entity-base/src/test/java/eagle/log/entity/filter/TestExpressionComparator.java b/eagle-core/eagle-query/eagle-entity-base/src/test/java/eagle/log/entity/filter/TestExpressionComparator.java
deleted file mode 100755
index 476ce3a..0000000
--- a/eagle-core/eagle-query/eagle-entity-base/src/test/java/eagle/log/entity/filter/TestExpressionComparator.java
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- * 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 eagle.log.entity.filter;
-
-import eagle.log.entity.meta.EntityDefinition;
-import eagle.query.parser.ComparisonOperator;
-import eagle.query.parser.TokenType;
-import junit.framework.Assert;
-import org.junit.Test;
-
-import java.util.HashMap;
-import java.util.Map;
-
-public class TestExpressionComparator {
- @Test
- public void testCompareToForEval(){
- QualifierFilterEntity entity = new QualifierFilterEntity();
- // a+b >= a+100.0
- entity.setKey("a/b");
- entity.setKeyType(TokenType.EXP);
- entity.setValue("c");
- entity.setValueType(TokenType.EXP);
- entity.setOp(ComparisonOperator.GREATER_OR_EQUAL);
- EntityDefinition qualifierDisplayNameMap = null;
- BooleanExpressionComparator comparator = new BooleanExpressionComparator(entity,qualifierDisplayNameMap);
-
- Map<String,Double> context = new HashMap<String,Double>();
- Assert.assertEquals("Should return 0 because not given enough variable",0,comparator.compareTo(context));
-
- context.put("a", 80.0);
- context.put("b",20.0);
- context.put("c",3.0);
- Assert.assertEquals(1,comparator.compareTo(context));
-
- context.put("a",80.0);
- context.put("b",20.0);
- context.put("c",4.0);
- Assert.assertEquals(1,comparator.compareTo(context));
-
- context.put("a",80.0);
- context.put("b",20.0);
- context.put("c",5.0);
- Assert.assertEquals(0,comparator.compareTo(context));
-
- // Return false once any Double.isInfinite ( 80.0 / 0.0 )
- Assert.assertTrue(Double.isInfinite( 80.0 / 0.0 ));
- context.put("a",80.0);
- context.put("b",0.0);
- context.put("c", 5.0);
- Assert.assertEquals(0,comparator.compareTo(context));
- }
-
- @Test
- public void testCompareToForOp(){
- QualifierFilterEntity entity = new QualifierFilterEntity();
-
- // a+b >= a+100.0
- entity.setKey("a + b");
- entity.setValue("a + 100.0");
- entity.setOp(ComparisonOperator.GREATER_OR_EQUAL);
- EntityDefinition qualifierDisplayNameMap = new EntityDefinition();
-
- BooleanExpressionComparator comparator = new BooleanExpressionComparator(entity,qualifierDisplayNameMap);
-
- Map<String,Double> context = new HashMap<String,Double>();
- context.put("a",100.1);
- context.put("b",100.1);
- Assert.assertEquals(1,comparator.compareTo(context));
-
- context.put("a",100.1);
- context.put("b",100.0);
- Assert.assertEquals(1,comparator.compareTo(context));
-
- context.put("a",100.0);
- context.put("b",99.9);
- Assert.assertEquals(0,comparator.compareTo(context));
-
- context.put("a",-200.0);
- context.put("b",100.0);
- Assert.assertEquals(1,comparator.compareTo(context));
-
- context.put("a",-200.0);
- context.put("b",-100.0);
- Assert.assertEquals(0,comparator.compareTo(context));
-
- // a+b = a+100.0
- entity.setOp(ComparisonOperator.GREATER);
- comparator = new BooleanExpressionComparator(entity,qualifierDisplayNameMap);
-
- context.put("a",100.1);
- context.put("b",100.1);
- Assert.assertEquals(1,comparator.compareTo(context));
-
- context.put("a",100.1);
- context.put("b",100.0);
- Assert.assertEquals(0,comparator.compareTo(context));
-
- context.put("a",100.0);
- context.put("b",99.9);
- Assert.assertEquals(0,comparator.compareTo(context));
-
- context.put("a",-200.0);
- context.put("b",100.0);
- Assert.assertEquals(0,comparator.compareTo(context));
-
- context.put("a",-200.0);
- context.put("b",-100.0);
- Assert.assertEquals(0,comparator.compareTo(context));
-
- // a+b = a+100.0
- entity.setOp(ComparisonOperator.LESS);
- comparator = new BooleanExpressionComparator(entity,qualifierDisplayNameMap);
-
- context.put("a",100.1);
- context.put("b",100.1);
- Assert.assertEquals(0,comparator.compareTo(context));
-
- context.put("a",100.1);
- context.put("b",100.0);
- Assert.assertEquals(0,comparator.compareTo(context));
-
- context.put("a",100.0);
- context.put("b",99.9);
- Assert.assertEquals(1,comparator.compareTo(context));
-
- context.put("a",-200.0);
- context.put("b",100.0);
- Assert.assertEquals(0,comparator.compareTo(context));
-
- context.put("a",-200.0);
- context.put("b",-100.0);
- Assert.assertEquals(1,comparator.compareTo(context));
-
- // a+b <= a+100.0
- entity.setOp(ComparisonOperator.LESS_OR_EQUAL);
- comparator = new BooleanExpressionComparator(entity,qualifierDisplayNameMap);
-
- context.put("a",100.1);
- context.put("b",100.1);
- Assert.assertEquals(0,comparator.compareTo(context));
-
- context.put("a",100.1);
- context.put("b",100.0);
- Assert.assertEquals(1,comparator.compareTo(context));
-
- context.put("a",100.0);
- context.put("b",99.9);
- Assert.assertEquals(1,comparator.compareTo(context));
-
- context.put("a",-200.0);
- context.put("b",100.0);
- Assert.assertEquals(1,comparator.compareTo(context));
-
- context.put("a",-200.0);
- context.put("b",-100.0);
- Assert.assertEquals(1,comparator.compareTo(context));
-
- entity.setOp(ComparisonOperator.NOT_EQUAL);
- comparator = new BooleanExpressionComparator(entity,qualifierDisplayNameMap);
-
- context.put("a",100.1);
- context.put("b",100.1);
- Assert.assertEquals(1,comparator.compareTo(context));
-
- context.put("a",100.1);
- context.put("b",100.0);
- Assert.assertEquals(0,comparator.compareTo(context));
-
- context.put("a",100.0);
- context.put("b",99.9);
- Assert.assertEquals(1,comparator.compareTo(context));
-
- context.put("a",-200.0);
- context.put("b",100.0);
- Assert.assertEquals(0,comparator.compareTo(context));
-
- context.put("a",-200.0);
- context.put("b", -100.0);
- Assert.assertEquals(1,comparator.compareTo(context));
- }
-}