private void checkEntityExistence(String entityName) throws EagleQueryParseException { try { if(EntityDefinitionManager.getEntityByServiceName(entityName) == null) throw new EagleQueryParseException(entityName + " entity does not exist!"); } catch (InstantiationException e) { final String errMsg = "Got an InstantiationException: " + e.getMessage(); throw new EagleQueryParseException(entityName + " entity does not exist! " + errMsg); } catch (IllegalAccessException e) { final String errMsg = "Got an IllegalAccessException: " + e.getMessage(); throw new EagleQueryParseException(entityName + " entity does not exist! " + errMsg); } }
@Test public void testNumberQuery() { String query = "@field1 >= -1.234"; EagleQueryParser parser = new EagleQueryParser(query); ORExpression or = null; try { or = parser.parse(); } catch (EagleQueryParseException ex) { Assert.fail(ex.getMessage()); } Assert.assertTrue(or.getANDExprList().size() == 1); Assert.assertEquals(1, or.getANDExprList().get(0).getAtomicExprList().size()); Assert.assertEquals("@field1", or.getANDExprList().get(0).getAtomicExprList().get(0).getKey()); Assert.assertEquals(-1.234, Double.parseDouble(or.getANDExprList().get(0).getAtomicExprList().get(0).getValue()), 0.0001); Assert.assertEquals(">=", or.getANDExprList().get(0).getAtomicExprList().get(0).getOp().toString()); Assert.assertEquals(TokenType.NUMBER, or.getANDExprList().get(0).getAtomicExprList().get(0).getValueType()); }
@Test public void testSimpleWildcardMatchQuery() { String expected = "-[]/{}()*+?.\\^$|"; String query = "@user=\"-[]/{}()*+?.\\\\^$|\""; System.out.println(query); EagleQueryParser parser = new EagleQueryParser(query); ORExpression or = null; try { or = parser.parse(); } catch (EagleQueryParseException ex) { Assert.fail(ex.getMessage()); } Assert.assertTrue(or.getANDExprList().size() == 1); Assert.assertEquals(1, or.getANDExprList().get(0).getAtomicExprList().size()); Assert.assertEquals("@user", or.getANDExprList().get(0).getAtomicExprList().get(0).getKey()); Assert.assertEquals(expected, or.getANDExprList().get(0).getAtomicExprList().get(0).getValue()); Assert.assertEquals("=", or.getANDExprList().get(0).getAtomicExprList().get(0).getOp().toString()); LOG.info(or.toString()); Assert.assertEquals("(@user=\""+expected+"\")", or.toString()); }
@Test public void testContainQuery() { String query = "@name contains \"jame\""; EagleQueryParser parser = new EagleQueryParser(query); ORExpression or = null; try { or = parser.parse(); } catch (EagleQueryParseException ex) { Assert.fail(ex.getMessage()); } Assert.assertTrue(or.getANDExprList().size() == 1); Assert.assertEquals(1, or.getANDExprList().get(0).getAtomicExprList().size()); Assert.assertEquals("@name", or.getANDExprList().get(0).getAtomicExprList().get(0).getKey()); Assert.assertEquals("jame", or.getANDExprList().get(0).getAtomicExprList().get(0).getValue()); Assert.assertEquals("CONTAINS", or.getANDExprList().get(0).getAtomicExprList().get(0).getOp().toString()); Assert.assertEquals(TokenType.STRING, or.getANDExprList().get(0).getAtomicExprList().get(0).getValueType()); }
} catch (InstantiationException e) { final String errMsg = "Got an InstantiationException: " + e.getMessage(); throw new EagleQueryParseException(_serviceName + " entity does not exist! " + errMsg); } catch (IllegalAccessException e) { final String errMsg = "Got an IllegalAccessException: " + e.getMessage(); throw new EagleQueryParseException(_serviceName + " entity does not exist! " + errMsg);
@Test public void testSingleExpression() { String query = "@cluster=\"a\""; EagleQueryParser parser = new EagleQueryParser(query); ORExpression or = null; try { or = parser.parse(); } catch (EagleQueryParseException ex) { Assert.fail(ex.getMessage()); } Assert.assertTrue(or.getANDExprList().size() == 1); Assert.assertEquals(1, or.getANDExprList().get(0).getAtomicExprList().size()); Assert.assertEquals("@cluster", or.getANDExprList().get(0).getAtomicExprList().get(0).getKey()); Assert.assertEquals("a", or.getANDExprList().get(0).getAtomicExprList().get(0).getValue()); Assert.assertEquals("=", or.getANDExprList().get(0).getAtomicExprList().get(0).getOp().toString()); LOG.info(or.toString()); Assert.assertEquals("(@cluster=\"a\")", or.toString()); }
public ORExpression parse() throws EagleQueryParseException { try { EagleFilterLexer lexer = new EagleFilterLexer(new ANTLRInputStream(query)); CommonTokenStream tokens = new CommonTokenStream(lexer); tokens.fill(); EagleFilterParser p = new EagleFilterParser(tokens); p.setErrorHandler(new EagleANTLRErrorStrategy()); p.setBuildParseTree(true); EagleQueryFilterListenerImpl listener = new EagleQueryFilterListenerImpl(); p.addParseListener(listener); EagleFilterParser.FilterContext fc = p.filter(); if (fc.exception != null) { LOG.error("Can not successfully parse the query:" + query, fc.exception); throw fc.exception; } return listener.result(); } catch (Exception ex) { LOG.error("Can not successfully parse the query:", ex); throw new EagleQueryParseException("can not successfully parse the query:" + query); } } }
@Test public void testLessOrEqualExpression() { String query = "@field1<=\"1\""; EagleQueryParser parser = new EagleQueryParser(query); ORExpression or = null; try { or = parser.parse(); } catch (EagleQueryParseException ex) { Assert.fail(ex.getMessage()); } Assert.assertTrue(or.getANDExprList().size() == 1); Assert.assertEquals(1, or.getANDExprList().get(0).getAtomicExprList().size()); Assert.assertEquals("@field1", or.getANDExprList().get(0).getAtomicExprList().get(0).getKey()); Assert.assertEquals("1", or.getANDExprList().get(0).getAtomicExprList().get(0).getValue()); Assert.assertEquals("<=", or.getANDExprList().get(0).getAtomicExprList().get(0).getOp().toString()); LOG.info(or.toString()); Assert.assertEquals("(@field1<=\"1\")", or.toString()); }
public ORExpression parse() throws EagleQueryParseException{ try{ EagleFilterLexer lexer = new EagleFilterLexer(new ANTLRInputStream(_query)); CommonTokenStream tokens = new CommonTokenStream(lexer); tokens.fill(); EagleFilterParser p = new EagleFilterParser(tokens); p.setErrorHandler(new EagleANTLRErrorStrategy()); p.setBuildParseTree(true); EagleQueryFilterListenerImpl listener = new EagleQueryFilterListenerImpl(); p.addParseListener(listener); EagleFilterParser.FilterContext fc = p.filter(); if(fc.exception != null){ LOG.error("Can not successfully parse the query:" + _query, fc.exception); throw fc.exception; } return listener.result(); }catch(Exception ex){ LOG.error("Can not successfully parse the query:", ex); throw new EagleQueryParseException("can not successfully parse the query:" + _query); } } }
@Test public void testEmptyString() { String query = "@name = \"\""; EagleQueryParser parser = new EagleQueryParser(query); ORExpression or = null; try { or = parser.parse(); } catch (EagleQueryParseException ex) { Assert.fail(ex.getMessage()); } Assert.assertNotNull(or); Assert.assertEquals("@name", or.getANDExprList().get(0).getAtomicExprList().get(0).getKey()); Assert.assertEquals("", or.getANDExprList().get(0).getAtomicExprList().get(0).getValue()); Assert.assertEquals("=", or.getANDExprList().get(0).getAtomicExprList().get(0).getOp().toString()); Assert.assertEquals(TokenType.STRING, or.getANDExprList().get(0).getAtomicExprList().get(0).getValueType()); }
@Test public void testCompareArithmeticExpressionWithNumeric() { String query = "EXP{(@mapProgress + @reduceProgress) / (@endTime - @startTime)} < 0.005"; EagleQueryParser parser = new EagleQueryParser(query); ORExpression or = null; try { or = parser.parse(); } catch (EagleQueryParseException ex) { Assert.fail(ex.getMessage()); } Assert.assertTrue(or.getANDExprList().size() == 1); Assert.assertEquals(1, or.getANDExprList().get(0).getAtomicExprList().size()); Assert.assertEquals("(mapProgress + reduceProgress) / (endTime - startTime)", or.getANDExprList().get(0).getAtomicExprList().get(0).getKey()); Assert.assertEquals("0.005", or.getANDExprList().get(0).getAtomicExprList().get(0).getValue()); Assert.assertEquals("<", or.getANDExprList().get(0).getAtomicExprList().get(0).getOp().toString()); LOG.info(or.toString()); Assert.assertEquals("((mapProgress + reduceProgress) / (endTime - startTime)<0.005)", or.toString()); }
@Test public void testCompareAtomicExpression() { String query = "EXP{@mapProgress} < EXP{@reduceProgress}"; EagleQueryParser parser = new EagleQueryParser(query); ORExpression or = null; try { or = parser.parse(); } catch (EagleQueryParseException ex) { Assert.fail(ex.getMessage()); } Assert.assertTrue(or.getANDExprList().size() == 1); Assert.assertEquals(1, or.getANDExprList().get(0).getAtomicExprList().size()); Assert.assertEquals("mapProgress", or.getANDExprList().get(0).getAtomicExprList().get(0).getKey()); Assert.assertEquals("reduceProgress", or.getANDExprList().get(0).getAtomicExprList().get(0).getValue()); Assert.assertEquals("<", or.getANDExprList().get(0).getAtomicExprList().get(0).getOp().toString()); Assert.assertEquals("(mapProgress<reduceProgress)", or.toString()); }
@Test public void testComplexExpressionWithNestedBrace() { String query = "EXP{((@a + @b) / @c) + @d}< 0.005"; EagleQueryParser parser = new EagleQueryParser(query); ORExpression or = null; try { or = parser.parse(); } catch (EagleQueryParseException ex) { Assert.fail(ex.getMessage()); } Assert.assertTrue(or.getANDExprList().size() == 1); Assert.assertEquals(1, or.getANDExprList().get(0).getAtomicExprList().size()); Assert.assertEquals("((a + b) / c) + d", or.getANDExprList().get(0).getAtomicExprList().get(0).getKey()); Assert.assertEquals("0.005", or.getANDExprList().get(0).getAtomicExprList().get(0).getValue()); Assert.assertEquals("<", or.getANDExprList().get(0).getAtomicExprList().get(0).getOp().toString()); Assert.assertEquals("(((a + b) / c) + d<0.005)", or.toString()); }
@Test public void testLessThanExpression() { String query = "@field1<\"1\""; EagleQueryParser parser = new EagleQueryParser(query); ORExpression or = null; try { or = parser.parse(); } catch (EagleQueryParseException ex) { Assert.fail(ex.getMessage()); } Assert.assertTrue(or.getANDExprList().size() == 1); Assert.assertEquals(1, or.getANDExprList().get(0).getAtomicExprList().size()); Assert.assertEquals("@field1", or.getANDExprList().get(0).getAtomicExprList().get(0).getKey()); Assert.assertEquals("1", or.getANDExprList().get(0).getAtomicExprList().get(0).getValue()); Assert.assertEquals("<", or.getANDExprList().get(0).getAtomicExprList().get(0).getOp().toString()); LOG.info(or.toString()); Assert.assertEquals("(@field1<\"1\")", or.toString()); }
@Test public void testGreaterThanExpression() { String query = "@field1>\"1\""; EagleQueryParser parser = new EagleQueryParser(query); ORExpression or = null; try { or = parser.parse(); } catch (EagleQueryParseException ex) { Assert.fail(ex.getMessage()); } Assert.assertTrue(or.getANDExprList().size() == 1); Assert.assertEquals(1, or.getANDExprList().get(0).getAtomicExprList().size()); Assert.assertEquals("@field1", or.getANDExprList().get(0).getAtomicExprList().get(0).getKey()); Assert.assertEquals("1", or.getANDExprList().get(0).getAtomicExprList().get(0).getValue()); Assert.assertEquals(">", or.getANDExprList().get(0).getAtomicExprList().get(0).getOp().toString()); LOG.info(or.toString()); Assert.assertEquals("(@field1>\"1\")", or.toString()); }
@Test public void testGreaterOrEqualExpression() { String query = "@field1>=\"1\""; EagleQueryParser parser = new EagleQueryParser(query); ORExpression or = null; try { or = parser.parse(); } catch (EagleQueryParseException ex) { Assert.fail(ex.getMessage()); } Assert.assertTrue(or.getANDExprList().size() == 1); Assert.assertEquals(1, or.getANDExprList().get(0).getAtomicExprList().size()); Assert.assertEquals("@field1", or.getANDExprList().get(0).getAtomicExprList().get(0).getKey()); Assert.assertEquals("1", or.getANDExprList().get(0).getAtomicExprList().get(0).getValue()); Assert.assertEquals(">=", or.getANDExprList().get(0).getAtomicExprList().get(0).getOp().toString()); Assert.assertEquals(TokenType.STRING, or.getANDExprList().get(0).getAtomicExprList().get(0).getValueType()); LOG.info(or.toString()); Assert.assertEquals("(@field1>=\"1\")", or.toString()); }
Assert.assertFalse("Should use rowkey filter only", filter.toString().matches(".*job.1234.*")); } catch (EagleQueryParseException e) { Assert.fail(e.getMessage()); } catch (Exception ex) { Assert.fail(ex.getMessage()); Assert.assertFalse("Should use rowkey filter only", filter.toString().matches(".*job_1234.*")); } catch (EagleQueryParseException e) { Assert.fail(e.getMessage()); } catch (Exception ex) { Assert.fail(ex.getMessage()); Assert.assertFalse("Should use rowkey filter only", filter.toString().matches(".*job.*1234.*")); } catch (EagleQueryParseException e) { Assert.fail(e.getMessage()); } catch (Exception ex) { Assert.fail(ex.getMessage()); Assert.assertTrue(filter.toString().matches(".*job_1234.*")); } catch (EagleQueryParseException e) { Assert.fail(e.getMessage()); } catch (Exception ex) { Assert.fail(ex.getMessage()); Assert.assertTrue(filter.toString().matches(".*job.1234.*")); } catch (EagleQueryParseException e) { Assert.fail(e.getMessage()); } catch (Exception ex) { Assert.fail(ex.getMessage());
Assert.assertEquals(2, ((FilterList)filterList.getFilters().get(0)).getFilters().size()); } catch (EagleQueryParseException e) { Assert.fail(e.getMessage()); Assert.assertEquals(2, ((FilterList)filterList.getFilters().get(0)).getFilters().size()); } catch (EagleQueryParseException e) { Assert.fail(e.getMessage()); Assert.assertNull(buildFilter(q3)); } catch (EagleQueryParseException e) { Assert.fail(e.getMessage()); } catch (IllegalArgumentException e) { LOG.debug("Expect: ", e);
Assert.assertNotNull(filter); } catch (EagleQueryParseException e) { Assert.fail(e.getMessage()); } catch (Exception ex) { Assert.fail(ex.getMessage());
or = parser.parse(); } catch (EagleQueryParseException ex) { Assert.fail(ex.getMessage()); } LOG.info(or.toString()); Assert.assertEquals("(@cluster=\"abc\") OR (@host=\"dc123.xyz.com\" AND @datacenter=\"dc1\")", or.toString()); or = parser.parse(); } catch (EagleQueryParseException ex) { Assert.fail(ex.getMessage()); } LOG.info(or.toString()); Assert.assertEquals("(@cluster=\"abc\" AND @host=\"dc123.xyz.com\" AND @datacenter=\"dc1\")", or.toString()); or = parser.parse(); } catch (EagleQueryParseException ex) { Assert.fail(ex.getMessage()); or = parser.parse(); } catch (EagleQueryParseException ex) { Assert.fail(ex.getMessage()); or = parser.parse(); } catch (EagleQueryParseException ex) { Assert.fail(ex.getMessage());