You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by sn...@apache.org on 2014/01/20 06:22:04 UTC
[33/51] [abbrv] Refactoring and Improving query-validator module
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ebfe96e8/stack/query-validator/src/test/java/org/usergrid/query/validator/users/UserQueryIT.java
----------------------------------------------------------------------
diff --git a/stack/query-validator/src/test/java/org/usergrid/query/validator/users/UserQueryIT.java b/stack/query-validator/src/test/java/org/usergrid/query/validator/users/UserQueryIT.java
new file mode 100644
index 0000000..fc6fafa
--- /dev/null
+++ b/stack/query-validator/src/test/java/org/usergrid/query/validator/users/UserQueryIT.java
@@ -0,0 +1,877 @@
+/**
+ * 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.usergrid.query.validator.users;
+
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.usergrid.persistence.Entity;
+import org.usergrid.query.validator.AbstractQueryIT;
+import org.usergrid.query.validator.QueryRequest;
+import org.usergrid.query.validator.QueryResponse;
+import org.usergrid.query.validator.QueryResultsMatcher;
+import org.usergrid.utils.StringUtils;
+
+import java.util.List;
+
+/**
+ * @author Sungju Jin
+ */
+public class UserQueryIT extends AbstractQueryIT {
+
+ @BeforeClass
+ public static void setDatas() {
+ createInitializationDatas("user");
+ }
+
+ @Test
+ public void sexEqualAndNameEqual() {
+ String sqlite = "SELECT * FROM users WHERE sex = 'male' and name = 'judekim' LIMIT 10";
+ String api = "SELECT * WHERE sex = 'male' AND name = 'judekim'";
+
+ QueryRequest request = new QueryRequest();
+ request.setDbQuery(sqlite);
+ request.getApiQuery().setQuery(api);
+ QueryResponse response = validator.execute(request);
+ Assert.assertTrue(response.toString(), response.result());
+ }
+
+ @Test
+ public void nameEqualAndSexEqual() {
+ String sqlite = "SELECT * FROM users WHERE name = 'judekim' and sex = 'male' LIMIT 10";
+ String api = "select * where name = 'judekim' and sex = 'male'";
+
+ QueryRequest request = new QueryRequest();
+ request.setDbQuery(sqlite);
+ request.getApiQuery().setQuery(api);
+ QueryResponse response = validator.execute(request);
+ Assert.assertTrue(response.toString(), response.result());
+ }
+
+ @Test
+ public void nameEqualAndSexEqual_limitL20() {
+ String sqlite = "SELECT * FROM users WHERE name = 'judekim' and sex = 'male' LIMIT 20";
+ String api = "select * where name = 'judekim' and sex = 'male'";
+ int limit = 20;
+
+ QueryRequest request = new QueryRequest();
+ request.setDbQuery(sqlite);
+ request.getApiQuery().setQuery(api);
+ request.getApiQuery().setLimit(limit);
+ QueryResponse response = validator.execute(request);
+ Assert.assertTrue(response.toString(), response.result());
+ }
+
+ @Test
+ public void sexEqualAndNameEqualExtra1() {
+ String sqlite = "SELECT * FROM users WHERE sex = 'female' and name = 'curioe' LIMIT 10";
+ String api = "select * where sex = 'female' and name = 'curioe'";
+
+ QueryRequest request = new QueryRequest();
+ request.setDbQuery(sqlite);
+ request.getApiQuery().setQuery(api);
+ QueryResponse response = validator.execute(request);
+ Assert.assertTrue(response.toString(), response.result());
+ }
+
+ @Test
+ public void sexEqualOrNameEqual() {
+ String sqlite = "SELECT * FROM users WHERE sex = 'female' or name = 'curioe' LIMIT 10";
+ String api = "select * where sex = 'female' or name = 'curioe'";
+
+ QueryRequest request = new QueryRequest();
+ request.setDbQuery(sqlite);
+ request.getApiQuery().setQuery(api);
+ QueryResponse response = validator.execute(request);
+ Assert.assertTrue(response.toString(), response.result());
+ }
+
+ @Test
+ public void nameBeginswithAndSexEqualAndAgeGreaterthanequalOrSexEqual_sortNameDesc() {
+ String sqlite = "SELECT * FROM users WHERE name LIKE 'a%' and sex = 'male' and age >= 35 or sex = 'female' ORDER BY name desc LIMIT 10";
+ String api = "select * where name = 'a*' and sex = 'male' and age >= 35 or sex = 'female' order by name desc";
+
+ QueryRequest request = new QueryRequest();
+ request.setDbQuery(sqlite);
+ request.getApiQuery().setQuery(api);
+ QueryResponse response = validator.execute(request);
+ Assert.assertTrue(response.toString(), response.result());
+ }
+
+ @Test
+ public void nameBeginswithAndSexEqualAndAgeGreaterthanequalOrSexEqual_sortAddressAscNameDesc() {
+ String sqlite = "SELECT * FROM users WHERE name LIKE 'a%' and sex = 'male' and age >= 35 or sex = 'female' ORDER BY address asc, name desc LIMIT 4";
+ String api = "select * where name = 'a*' and sex = 'male' and age >= 35 or sex = 'female' order by address asc, name desc";
+
+ QueryRequest request = new QueryRequest();
+ request.setDbQuery(sqlite);
+ request.getApiQuery().setQuery(api);
+ request.getApiQuery().setLimit(4);
+ QueryResponse response = validator.execute(request);
+ Assert.assertTrue(response.toString(), response.result());
+ }
+
+ @Test
+ public void nameBeginswithAndSexEqualAndAgeGreaterthanequalOrSexEqual_sortAddressAscNameDesc_limitL4() {
+ String sqlite = "SELECT * FROM users WHERE name LIKE 'a%' and sex = 'male' and age >= 35 or sex = 'female' ORDER BY address asc, name desc LIMIT 4";
+ String api = "select * where name = 'a*' and sex = 'male' and age >= 35 or sex = 'female' order by address asc, name desc";
+
+ QueryRequest request = new QueryRequest();
+ request.setDbQuery(sqlite);
+ request.getApiQuery().setQuery(api);
+ request.getApiQuery().setLimit(4);
+ QueryResponse response = validator.execute(request);
+ Assert.assertTrue(response.toString(), response.result());
+ }
+
+ @Test
+ public void sexEqual_sortAgeDescExtra1() {
+ String sqlite = "SELECT * FROM users WHERE sex = 'male' ORDER BY age desc LIMIT 10";
+ String api = "select * where sex = 'male' order by age desc";
+
+ QueryRequest request = new QueryRequest();
+ request.setDbQuery(sqlite);
+ request.getApiQuery().setQuery(api);
+ QueryResponse response = validator.execute(request, new QueryResultsMatcher() {
+ @Override
+ public boolean equals(List<Entity> expectedEntities, List<Entity> actuallyEntities) {
+ boolean equals = expectedEntities.size() == expectedEntities.size();
+ if( !equals )
+ return false;
+
+ for(Entity entity : actuallyEntities) {
+ String sex = (String)entity.getProperty("sex");
+
+ if((StringUtils.equals("male",sex)) == false) {
+ return false;
+ }
+ }
+ return equals;
+ }
+ });
+ Assert.assertTrue(response.toString(), response.result());
+ }
+
+ @Test
+ public void sexEqual_sortAgeDescExtra2() {
+ String sqlite = " SELECT * FROM users WHERE sex = 'female' ORDER BY age desc LIMIT 10";
+ String api = "select * where sex = 'female' order by age desc";
+
+ QueryRequest request = new QueryRequest();
+ request.setDbQuery(sqlite);
+ request.getApiQuery().setQuery(api);
+ QueryResponse response = validator.execute(request);
+ Assert.assertTrue(response.toString(), response.result());
+ }
+
+ @Test
+ public void sexEqualAndAgeGreaterthanequal() {
+ String sqlite = " SELECT * FROM users WHERE sex = 'male' and age >= 35 LIMIT 10";
+ String api = "select * where sex = 'male' and age >= 35";
+
+ QueryRequest request = new QueryRequest();
+ request.setDbQuery(sqlite);
+ request.getApiQuery().setQuery(api);
+ QueryResponse response = validator.execute(request);
+ Assert.assertTrue(response.toString(), response.result());
+ }
+
+ @Test
+ public void sexEqualAndAgeGreaterthanequal_sortAgeDesc() {
+ String sqlite = "SELECT * FROM users WHERE sex = 'male' and age >= 35 ORDER BY age desc LIMIT 10";
+ String api = "select * where sex = 'male' and age >= 35 order by age desc";
+
+ QueryRequest request = new QueryRequest();
+ request.setDbQuery(sqlite);
+ request.getApiQuery().setQuery(api);
+ QueryResponse response = validator.execute(request);
+ Assert.assertTrue(response.toString(), response.result());
+ }
+
+ @Test
+ public void sexEqualAndAgeGreaterthanequal_sortNameDesc() {
+ String sqlite = "SELECT * FROM users WHERE sex = 'male' and age >= 35 ORDER BY name desc LIMIT 10";
+ String api = "select * where sex = 'male' and age >= 35 order by name desc";
+
+ QueryRequest request = new QueryRequest();
+ request.setDbQuery(sqlite);
+ request.getApiQuery().setQuery(api);
+ QueryResponse response = validator.execute(request);
+ Assert.assertTrue(response.toString(), response.result());
+ }
+
+ @Test
+ public void sexEqualAndAgeGreaterthanequal_sortAgeDesc_limitL20() {
+ String sqlite = "SELECT * FROM users WHERE sex = 'male' and age >= 35 ORDER BY age desc LIMIT 20";
+ String api = "select * where sex = 'male' and age >= 35 order by age desc";
+ int limit = 20;
+
+ QueryRequest request = new QueryRequest();
+ request.setDbQuery(sqlite);
+ request.getApiQuery().setQuery(api);
+ request.getApiQuery().setLimit(limit);
+ QueryResponse response = validator.execute(request);
+ Assert.assertTrue(response.toString(), response.result());
+ }
+
+ @Test
+ public void qlSexEqualAndAgeGreaterthanequal_sortNameDesc_limitL20() {
+ String sqlite = "SELECT * FROM users WHERE sex = 'male' and age >= 35 ORDER BY name desc LIMIT 20";
+ String api = "select * where sex = 'male' and age >= 35 order by name desc";
+ int limit = 20;
+
+ QueryRequest request = new QueryRequest();
+ request.setDbQuery(sqlite);
+ request.getApiQuery().setQuery(api);
+ request.getApiQuery().setLimit(limit);
+ QueryResponse response = validator.execute(request);
+ Assert.assertTrue(response.toString(), response.result());
+ }
+
+ @Test
+ public void sexEqualAndAgeGreaterthanequalOrSexEqual() {
+ String sqlite = "SELECT * FROM users WHERE sex = 'male' and age >= 35 or sex = 'female' LIMIT 10";
+ String api = "select * where sex = 'male' and age >= 35 or sex = 'female'";
+
+ QueryRequest request = new QueryRequest();
+ request.setDbQuery(sqlite);
+ request.getApiQuery().setQuery(api);
+ QueryResponse response = validator.execute(request, new QueryResultsMatcher() {
+ @Override
+ public boolean equals(List<Entity> expectedEntities, List<Entity> actuallyEntities) {
+ boolean equals = expectedEntities.size() == expectedEntities.size();
+ if( !equals )
+ return false;
+
+ for(Entity entity : actuallyEntities) {
+ int age = (Integer)entity.getProperty("age");
+ String sex = (String)entity.getProperty("sex");
+
+ if(((StringUtils.equals("male",sex) && age >= 35) || StringUtils.equals("female",sex)) == false) {
+ return false;
+ }
+ }
+ return equals;
+ }
+ });
+ Assert.assertTrue(response.toString(), response.result());
+ }
+
+ @Test
+ public void sexEqualAndAgeGreaterthanequalOrSexEqual_sortAgeDesc() {
+ String sqlite = "SELECT * FROM users WHERE sex = 'male' and age >= 35 or sex = 'female' ORDER BY age desc LIMIT 10";
+ String api = "select * where sex = 'male' and age >= 35 or sex = 'female' order by age desc";
+
+ QueryRequest request = new QueryRequest();
+ request.setDbQuery(sqlite);
+ request.getApiQuery().setQuery(api);
+ QueryResponse response = validator.execute(request);
+ Assert.assertTrue(response.toString(), response.result());
+ }
+
+ @Test
+ public void limitL12() {
+ String sqlite = "SELECT * FROM users LIMIT 12";
+ String api = null;
+ int limit = 12;
+
+ QueryRequest request = new QueryRequest();
+ request.setDbQuery(sqlite);
+ request.getApiQuery().setQuery(api);
+ request.getApiQuery().setLimit(limit);
+ QueryResponse response = validator.execute(request);
+ Assert.assertTrue(response.toString(), response.result());
+ }
+
+ @Test
+ public void sexEqualAndAgeGreaterthanequalOrSexEqual_sortNameDesc() {
+ String sqlite = "SELECT * FROM users WHERE sex = 'male' and age >= 35 or sex = 'female' ORDER BY name desc LIMIT 10";
+ String api = "select * where sex = 'male' and age >= 35 or sex = 'female' order by name desc";
+
+ QueryRequest request = new QueryRequest();
+ request.setDbQuery(sqlite);
+ request.getApiQuery().setQuery(api);
+ QueryResponse response = validator.execute(request);
+ Assert.assertTrue(response.toString(), response.result());
+ }
+
+ @Test
+ public void sexEqualAndAgeGreaterthanequalOrSexEqual_sortNameDesc_limitL20() {
+ String sqlite = "SELECT * FROM users WHERE sex = 'male' and age >= 35 or sex = 'female' ORDER BY name desc LIMIT 20";
+ String api = "select * where sex = 'male' and age >= 35 or sex = 'female' order by name desc";
+ int limit = 20;
+
+ QueryRequest request = new QueryRequest();
+ request.setDbQuery(sqlite);
+ request.getApiQuery().setQuery(api);
+ request.getApiQuery().setLimit(limit);
+ QueryResponse response = validator.execute(request);
+ Assert.assertTrue(response.toString(), response.result());
+ }
+
+ @Test
+ public void limitL11() {
+ String sqlite = "SELECT * FROM users LIMIT 11";
+ String api = null;
+ int limit = 11;
+
+ QueryRequest request = new QueryRequest();
+ request.setDbQuery(sqlite);
+ request.getApiQuery().setQuery(api);
+ request.getApiQuery().setLimit(limit);
+ QueryResponse response = validator.execute(request);
+ Assert.assertTrue(response.toString(), response.result());
+ }
+
+ @Test
+ public void nameBeginswithAndSexEqualAndAgeGreaterthanequalOrSexEqual() {
+ String sqlite = "SELECT * FROM users WHERE name LIKE 'a%' and sex = 'male' and age >= 20 or sex = 'female' LIMIT 10";
+ String api = "select * where name = 'a*' and sex = 'male' and age >= 20 or sex = 'female'";
+
+ QueryRequest request = new QueryRequest();
+ request.setDbQuery(sqlite);
+ request.getApiQuery().setQuery(api);
+ QueryResponse response = validator.execute(request);
+ Assert.assertTrue(response.toString(), response.result());
+ }
+
+ @Test
+ public void nameBeginswithAndSexEqualAndAgeGreaterthanequalOrSexEqual_limitL20() {
+ String sqlite = "SELECT * FROM users WHERE name LIKE 'a%' and sex = 'male' and age >= 20 or sex = 'female' LIMIT 20";
+ String api = "select * where name = 'a*' and sex = 'male' and age >= 20 or sex = 'female'";
+ int limit = 20;
+
+ QueryRequest request = new QueryRequest();
+ request.setDbQuery(sqlite);
+ request.getApiQuery().setQuery(api);
+ request.getApiQuery().setLimit(limit);
+ QueryResponse response = validator.execute(request);
+ Assert.assertTrue(response.toString(), response.result());
+ }
+
+ @Test
+ public void sexEqualAndAgeGreaterthanequal_sortAddressDesc_limitL100() {
+ String sqlite = "SELECT * FROM users WHERE sex = 'male' and age >= 35 ORDER BY address desc LIMIT 100";
+ String api = "select * where sex = 'male' and age >= 35 order by address desc";
+ int limit = 100;
+
+ QueryRequest request = new QueryRequest();
+ request.setDbQuery(sqlite);
+ request.getApiQuery().setQuery(api);
+ request.getApiQuery().setLimit(limit);
+ QueryResponse response = validator.execute(request);
+ Assert.assertTrue(response.toString(), response.result());
+ }
+
+ @Test
+ public void qlNameEqual() {
+ String sqlite = "SELECT * FROM users WHERE name = 'judekim' LIMIT 10";
+ String api = "select * where name = 'judekim'";
+
+ QueryRequest request = new QueryRequest();
+ request.setDbQuery(sqlite);
+ request.getApiQuery().setQuery(api);
+ QueryResponse response = validator.execute(request);
+ Assert.assertTrue(response.toString(), response.result());
+ }
+
+ @Test
+ public void qlAgeEqual() {
+ String sqlite = "SELECT * FROM users WHERE age = 16 LIMIT 10";
+ String api = "select * where age = 16";
+
+ QueryRequest request = new QueryRequest();
+ request.setDbQuery(sqlite);
+ request.getApiQuery().setQuery(api);
+ QueryResponse response = validator.execute(request);
+ Assert.assertTrue(response.toString(), response.result());
+ }
+
+ @Test
+ public void qlNameEqualAndAgeEqual() {
+ String sqlite = "SELECT * FROM users WHERE name = 'askagirl' and age = 16 LIMIT 10";
+ String api = "select * where name = 'askagirl' and age = 16";
+
+ QueryRequest request = new QueryRequest();
+ request.setDbQuery(sqlite);
+ request.getApiQuery().setQuery(api);
+ QueryResponse response = validator.execute(request, new QueryResultsMatcher() {
+ @Override
+ public boolean equals(List<Entity> expectedEntities, List<Entity> actuallyEntities) {
+ boolean equals = expectedEntities.size() == expectedEntities.size();
+ if( !equals )
+ return false;
+
+ for(Entity entity : actuallyEntities) {
+ String name = entity.getName();
+ int age = (Integer)entity.getProperty("age");
+ if ((StringUtils.equals("askagirl", name) && age == 16) == false) {
+ return false;
+ }
+ }
+ return equals;
+ }
+ });
+ Assert.assertTrue(response.toString(), response.result());
+ }
+
+ @Test
+ public void qlAgeLessthan() {
+ String sqlite = "SELECT * FROM users WHERE age < 16 LIMIT 10";
+ String api = "select * where age < 16";
+
+ QueryRequest request = new QueryRequest();
+ request.setDbQuery(sqlite);
+ request.getApiQuery().setQuery(api);
+ QueryResponse response = validator.execute(request, new QueryResultsMatcher() {
+ @Override
+ public boolean equals(List<Entity> expectedEntities, List<Entity> actuallyEntities) {
+ boolean equals = expectedEntities.size() == expectedEntities.size();
+ if( !equals )
+ return false;
+
+ for(Entity entity : actuallyEntities) {
+ int age = (Integer)entity.getProperty("age");
+ if((age < 16) == false) {
+ return false;
+ }
+ }
+ return equals;
+ }
+ });
+ Assert.assertTrue(response.toString(), response.result());
+ }
+
+ @Test
+ public void qlAgeLessthanequal() {
+ String sqlite = "SELECT * FROM users WHERE age <= 16 LIMIT 20";
+ String api = "select * where age <= 16";
+ int limit = 20;
+
+ QueryRequest request = new QueryRequest();
+ request.setDbQuery(sqlite);
+ request.getApiQuery().setQuery(api);
+ request.getApiQuery().setLimit(limit);
+ QueryResponse response = validator.execute(request, new QueryResultsMatcher() {
+ @Override
+ public boolean equals(List<Entity> expectedEntities, List<Entity> actuallyEntities) {
+ boolean equals = expectedEntities.size() == expectedEntities.size();
+ if( !equals )
+ return false;
+
+ for(Entity entity : actuallyEntities) {
+ int age = (Integer)entity.getProperty("age");
+ if((age <= 16) == false) {
+ return false;
+ }
+ }
+ return equals;
+ }
+ });
+ Assert.assertTrue(response.toString(), response.result());
+ }
+
+ @Test
+ public void qlAgeGreaterthan() {
+ String sqlite = "SELECT * FROM users WHERE age > 16 LIMIT 10";
+ String api = "select * where age > 16";
+
+ QueryRequest request = new QueryRequest();
+ request.setDbQuery(sqlite);
+ request.getApiQuery().setQuery(api);
+ QueryResponse response = validator.execute(request, new QueryResultsMatcher() {
+ @Override
+ public boolean equals(List<Entity> expectedEntities, List<Entity> actuallyEntities) {
+ boolean equals = expectedEntities.size() == expectedEntities.size();
+ if( !equals )
+ return false;
+
+ for(Entity entity : actuallyEntities) {
+ int age = (Integer)entity.getProperty("age");
+ if((age > 16) == false) {
+ return false;
+ }
+ }
+ return equals;
+ }
+ });
+ Assert.assertTrue(response.toString(), response.result());
+ }
+
+ @Test
+ public void qlAgeGreaterthanequal() {
+ String sqlite = "SELECT * FROM users WHERE age >= 16 LIMIT 10";
+ String api = "select * where age >= 16";
+
+ QueryRequest request = new QueryRequest();
+ request.setDbQuery(sqlite);
+ request.getApiQuery().setQuery(api);
+ QueryResponse response = validator.execute(request, new QueryResultsMatcher() {
+ @Override
+ public boolean equals(List<Entity> expectedEntities, List<Entity> actuallyEntities) {
+ boolean equals = expectedEntities.size() == expectedEntities.size();
+ if( !equals )
+ return false;
+
+ for(Entity entity : actuallyEntities) {
+ int age = (Integer)entity.getProperty("age");
+ if((age >= 16) == false) {
+ return false;
+ }
+ }
+ return equals;
+ }
+ });
+ Assert.assertTrue(response.toString(), response.result());
+ }
+
+ @Test
+ public void qlAgeGreaterthanequalAndAgeLessthan() {
+ String sqlite = "SELECT * FROM users WHERE age >= 32 and age < 40 LIMIT 10";
+ String api = "select * where age >= 32 and age < 40";
+
+ QueryRequest request = new QueryRequest();
+ request.setDbQuery(sqlite);
+ request.getApiQuery().setQuery(api);
+ QueryResponse response = validator.execute(request, new QueryResultsMatcher() {
+ @Override
+ public boolean equals(List<Entity> expectedEntities, List<Entity> actuallyEntities) {
+ boolean equals = expectedEntities.size() == expectedEntities.size();
+ if( !equals )
+ return false;
+
+ for(Entity entity : actuallyEntities) {
+ int age = (Integer)entity.getProperty("age");
+ if((age >= 32 && age < 40) == false) {
+ return false;
+ }
+ }
+ return equals;
+ }
+ });
+ Assert.assertTrue(response.toString(), response.result());
+ }
+
+ @Test
+ public void qlAgeGreaterthanequalAndAgeLessthanAndSexEqual() {
+ String sqlite = "SELECT * FROM users WHERE age >= 32 and age < 40 and sex = 'female' LIMIT 10";
+ String api = "select * where age >= 32 and age < 40 and sex = 'female'";
+
+ QueryRequest request = new QueryRequest();
+ request.setDbQuery(sqlite);
+ request.getApiQuery().setQuery(api);
+ QueryResponse response = validator.execute(request, new QueryResultsMatcher() {
+ @Override
+ public boolean equals(List<Entity> expectedEntities, List<Entity> actuallyEntities) {
+ boolean equals = expectedEntities.size() == expectedEntities.size();
+ if( !equals )
+ return false;
+
+ for(Entity entity : actuallyEntities) {
+ int age = (Integer)entity.getProperty("age");
+ String sex = (String)entity.getProperty("sex");
+
+ if((age >= 32 && age < 40 && StringUtils.equals("female",sex)) == false) {
+ return false;
+ }
+ }
+ return equals;
+ }
+ });
+ Assert.assertTrue(response.toString(), response.result());
+ }
+
+ @Test
+ public void qlAddressFulltext() {
+ String sqlite = "SELECT * FROM users WHERE address LIKE '%서울시%' LIMIT 10";
+ String api = "select * where address contains '서울시'";
+
+ QueryRequest request = new QueryRequest();
+ request.setDbQuery(sqlite);
+ request.getApiQuery().setQuery(api);
+ QueryResponse response = validator.execute(request, new QueryResultsMatcher() {
+ @Override
+ public boolean equals(List<Entity> expectedEntities, List<Entity> actuallyEntities) {
+ boolean equals = expectedEntities.size() == expectedEntities.size();
+ if( !equals )
+ return false;
+
+ for(Entity entity : actuallyEntities) {
+ String address = (String)entity.getProperty("address");
+
+ if((StringUtils.contains(address,"서울시")) == false) {
+ return false;
+ }
+ }
+ return equals;
+ }
+ });
+ Assert.assertTrue(response.toString(), response.result());
+ }
+
+ @Test
+ public void qlAddressFulltextstartswith() {
+ String sqlite = " SELECT * FROM users WHERE address LIKE 'A%' LIMIT 10";
+ String api = "select * where address contains 'A*'";
+
+ QueryRequest request = new QueryRequest();
+ request.setDbQuery(sqlite);
+ request.getApiQuery().setQuery(api);
+ QueryResponse response = validator.execute(request, new QueryResultsMatcher() {
+ @Override
+ public boolean equals(List<Entity> expectedEntities, List<Entity> actuallyEntities) {
+ boolean equals = expectedEntities.size() == expectedEntities.size();
+ if( !equals )
+ return false;
+
+ for(Entity entity : actuallyEntities) {
+ String address = (String)entity.getProperty("address");
+
+ if((StringUtils.startsWith(address,"A")) == false) {
+ return false;
+ }
+ }
+ return equals;
+ }
+ });
+ Assert.assertTrue(response.toString(), response.result());
+ }
+
+ @Test
+ public void qlAddressBeginswith() {
+ String sqlite = "SELECT * FROM users WHERE address LIKE 'B%' LIMIT 10";
+ String api = "select * where address = 'B*'";
+
+ QueryRequest request = new QueryRequest();
+ request.setDbQuery(sqlite);
+ request.getApiQuery().setQuery(api);
+ QueryResponse response = validator.execute(request, new QueryResultsMatcher() {
+ @Override
+ public boolean equals(List<Entity> expectedEntities, List<Entity> actuallyEntities) {
+ boolean equals = expectedEntities.size() == expectedEntities.size();
+ if( !equals )
+ return false;
+
+ for(Entity entity : actuallyEntities) {
+ String address = (String)entity.getProperty("address");
+
+ if((StringUtils.startsWith(address,"B")) == false) {
+ return false;
+ }
+ }
+ return equals;
+ }
+ });
+ Assert.assertTrue(response.toString(), response.result());
+ }
+
+ @Test
+ public void qlAddressBeginswithAndSexFulltextstartswith() {
+ String sqlite = "SELECT * FROM users WHERE address LIKE 'C%' and sex LIKE 'ma%' LIMIT 10";
+ String api = "select * where address = 'C*' and sex contains 'ma*'";
+
+ QueryRequest request = new QueryRequest();
+ request.setDbQuery(sqlite);
+ request.getApiQuery().setQuery(api);
+ QueryResponse response = validator.execute(request, new QueryResultsMatcher() {
+ @Override
+ public boolean equals(List<Entity> expectedEntities, List<Entity> actuallyEntities) {
+ boolean equals = expectedEntities.size() == expectedEntities.size();
+ if( !equals )
+ return false;
+
+ for(Entity entity : actuallyEntities) {
+ String address = (String)entity.getProperty("address");
+
+ if((StringUtils.startsWith(address,"C")) == false) {
+ return false;
+ }
+ }
+ return equals;
+ }
+ });
+ Assert.assertTrue(response.toString(), response.result());
+ }
+
+ @Test
+ public void qlAddressBeginswithAndSexFulltext() {
+ String sqlite = "SELECT * FROM users WHERE (address LIKE 'D%' and sex LIKE '%male%') LIMIT 10";
+ String api = "select * where address = 'D*' and sex contains 'male'";
+
+ QueryRequest request = new QueryRequest();
+ request.setDbQuery(sqlite);
+ request.getApiQuery().setQuery(api);
+ QueryResponse response = validator.execute(request, new QueryResultsMatcher() {
+ @Override
+ public boolean equals(List<Entity> expectedEntities, List<Entity> actuallyEntities) {
+ boolean equals = expectedEntities.size() == expectedEntities.size();
+ if( !equals )
+ return false;
+
+ for(Entity entity : actuallyEntities) {
+ String address = (String)entity.getProperty("address");
+
+ if((StringUtils.startsWith(address,"D")) == false) {
+ return false;
+ }
+ }
+ return equals;
+ }
+ });
+ Assert.assertTrue(response.toString(), response.result());
+ }
+
+ @Test
+ public void qlSexEqualOrAgeGreaterthanequalAndAgeLessthan_limitL20() {
+ String sqlite = "SELECT * FROM users WHERE sex = 'female' or age >= 12 and age < 20 LIMIT 20";
+ String api = "select * where sex = 'female' or age >= 12 and age < 20";
+ int limit = 20;
+
+ QueryRequest request = new QueryRequest();
+ request.setDbQuery(sqlite);
+ request.getApiQuery().setQuery(api);
+ request.getApiQuery().setLimit(limit);
+ QueryResponse response = validator.execute(request, new QueryResultsMatcher() {
+ @Override
+ public boolean equals(List<Entity> expectedEntities, List<Entity> actuallyEntities) {
+ boolean equals = expectedEntities.size() == expectedEntities.size();
+ if( !equals )
+ return false;
+
+ for(Entity entity : actuallyEntities) {
+ int age = (Integer)entity.getProperty("age");
+ String sex = (String)entity.getProperty("sex");
+
+ if(((StringUtils.equals("female",sex) || age >= 12) && age < 20) == false) {
+ return false;
+ }
+ }
+ return equals;
+ }
+ });
+ Assert.assertTrue(response.toString(), response.result());
+ }
+
+ @Test
+ public void sortNameAsc() {
+ String sqlite = "SELECT * FROM users ORDER BY name asc LIMIT 10";
+ String api = "select * order by name asc";
+
+ QueryRequest request = new QueryRequest();
+ request.setDbQuery(sqlite);
+ request.getApiQuery().setQuery(api);
+ QueryResponse response = validator.execute(request);
+ Assert.assertTrue(response.toString(), response.result());
+ }
+
+ @Test
+ public void sortNameDesc() {
+ String sqlite = "SELECT * FROM users ORDER BY name desc LIMIT 10";
+ String api = "select * order by name desc";
+
+ QueryRequest request = new QueryRequest();
+ request.setDbQuery(sqlite);
+ request.getApiQuery().setQuery(api);
+ QueryResponse response = validator.execute(request);
+ Assert.assertTrue(response.toString(), response.result());
+ }
+
+ @Test
+ public void sortNameAscAgeDesc() {
+ String sqlite = "SELECT * FROM users ORDER BY name asc, age desc LIMIT 10";
+ String api = "select * order by name asc, age desc";
+
+ QueryRequest request = new QueryRequest();
+ request.setDbQuery(sqlite);
+ request.getApiQuery().setQuery(api);
+ QueryResponse response = validator.execute(request);
+ Assert.assertTrue(response.toString(), response.result());
+ }
+
+ @Test
+ public void sortNameAscAddressAsc() {
+ String sqlite = "SELECT * FROM users ORDER BY name asc, address asc LIMIT 10";
+ String api = "select * order by name asc, address asc";
+
+ QueryRequest request = new QueryRequest();
+ request.setDbQuery(sqlite);
+ request.getApiQuery().setQuery(api);
+ QueryResponse response = validator.execute(request);
+ Assert.assertTrue(response.toString(), response.result());
+ }
+
+ @Test
+ public void sortCreatedAsc() {
+ String sqlite = "SELECT * FROM users ORDER BY created asc LIMIT 10";
+ String api = "select * order by created asc";
+
+ QueryRequest request = new QueryRequest();
+ request.setDbQuery(sqlite);
+ request.getApiQuery().setQuery(api);
+ QueryResponse response = validator.execute(request);
+ Assert.assertTrue(response.toString(), response.result());
+ }
+
+ @Test
+ public void sortCreatedDesc() {
+ String sqlite = "SELECT * FROM users ORDER BY created desc LIMIT 10";
+ String api = "select * order by created desc";
+
+ QueryRequest request = new QueryRequest();
+ request.setDbQuery(sqlite);
+ request.getApiQuery().setQuery(api);
+ QueryResponse response = validator.execute(request);
+ Assert.assertTrue(response.toString(), response.result());
+ }
+
+ @Test
+ public void sortModifiedAsc() {
+ String sqlite = "SELECT * FROM users ORDER BY modified asc LIMIT 10";
+ String api = "select * order by modified asc";
+
+ QueryRequest request = new QueryRequest();
+ request.setDbQuery(sqlite);
+ request.getApiQuery().setQuery(api);
+ QueryResponse response = validator.execute(request);
+ Assert.assertTrue(response.toString(), response.result());
+ }
+
+ @Test
+ public void sortCreatedDescNameAsc() {
+ String sqlite = "SELECT * FROM users ORDER BY created desc, name asc LIMIT 10";
+ String api = "select * order by created desc, name asc";
+
+ QueryRequest request = new QueryRequest();
+ request.setDbQuery(sqlite);
+ request.getApiQuery().setQuery(api);
+ QueryResponse response = validator.execute(request);
+ Assert.assertTrue(response.toString(), response.result());
+ }
+
+ @Test
+ public void sortNameAscCreatedDesc() {
+ String sqlite = "SELECT * FROM users ORDER BY name asc, created desc LIMIT 10";
+ String api = "select * order by name asc, created desc";
+
+ QueryRequest request = new QueryRequest();
+ request.setDbQuery(sqlite);
+ request.getApiQuery().setQuery(api);
+ QueryResponse response = validator.execute(request);
+ Assert.assertTrue(response.toString(), response.result());
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ebfe96e8/stack/query-validator/src/test/resources/log4j.properties
----------------------------------------------------------------------
diff --git a/stack/query-validator/src/test/resources/log4j.properties b/stack/query-validator/src/test/resources/log4j.properties
index ddd90fb..d60fa61 100644
--- a/stack/query-validator/src/test/resources/log4j.properties
+++ b/stack/query-validator/src/test/resources/log4j.properties
@@ -39,4 +39,4 @@ log4j.logger.org.usergrid.rest.security.AllowAjaxFilter=WARN, stdout
log4j.logger.me.prettyprint.hector.api.beans.AbstractComposite=ERROR, stdout
log4j.logger.org.usergrid.query.validator.ApiServerRunner=INFO
-log4j.logger.org.usergrid.query.validator.QueryValidatorRunner=INFO
+log4j.logger.org.usergrid.query.validator.QueryValidatorRunner=INFO
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ebfe96e8/stack/query-validator/src/test/resources/project.properties
----------------------------------------------------------------------
diff --git a/stack/query-validator/src/test/resources/project.properties b/stack/query-validator/src/test/resources/project.properties
new file mode 100644
index 0000000..c0bf364
--- /dev/null
+++ b/stack/query-validator/src/test/resources/project.properties
@@ -0,0 +1 @@
+target.directory=${project.build.directory}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ebfe96e8/stack/query-validator/src/test/resources/user.json
----------------------------------------------------------------------
diff --git a/stack/query-validator/src/test/resources/user.json b/stack/query-validator/src/test/resources/user.json
index b1dbc80..19beef1 100644
--- a/stack/query-validator/src/test/resources/user.json
+++ b/stack/query-validator/src/test/resources/user.json
@@ -10,14 +10,14 @@
"name":"zoozooz",
"username":"zoozooz",
"address":"서울시 관악구 봉천동",
- "age":16,
+ "age":76,
"sex":"male"
},
{
"name":"r2fresh",
"username":"r2fresh",
"address":"경기도 고양시 일산",
- "age":16,
+ "age":36,
"sex":"male"
},
{
@@ -38,14 +38,14 @@
"name":"izakaya",
"username":"izakaya",
"address":"인천광역시 어디어디",
- "age":16,
+ "age":28,
"sex":"male"
},
{
"name":"aksagirl",
"username":"aksagirl",
"address":"부산광역시 어딘가",
- "age":16,
+ "age":26,
"sex":"male"
},
{
@@ -70,13 +70,6 @@
"sex":"male"
},
{
- "name":"akaia75",
- "username":"akaia75",
- "address":"서울시 구로구",
- "age":13,
- "sex":"male"
- },
- {
"name":"curioe",
"username":"curioe",
"address":"서울시 어디인가",
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ebfe96e8/stack/query-validator/src/test/resources/usergrid-custom-test.properties
----------------------------------------------------------------------
diff --git a/stack/query-validator/src/test/resources/usergrid-custom-test.properties b/stack/query-validator/src/test/resources/usergrid-custom-test.properties
index 39050d9..6ba10b0 100644
--- a/stack/query-validator/src/test/resources/usergrid-custom-test.properties
+++ b/stack/query-validator/src/test/resources/usergrid-custom-test.properties
@@ -1,6 +1,13 @@
usergrid.query.validator.api.enablelocal=true
-usergrid.query.validator.api.endpoint=http://localhost:8080
+usergrid.query.validator.api.endpoint=http://localhost
+usergrid.query.validator.api.endpoint.port=8080
usergrid.query.validator.api.organization=test-organization
usergrid.query.validator.api.app=test-app
-usergrid.query.validator.api.authorize.email=test@usergrid.com
-usergrid.query.validator.api.authorize.password=test
\ No newline at end of file
+usergrid.query.validator.api.authorize.email=test22
+usergrid.query.validator.api.authorize.password=test
+
+# SysAdmin login
+usergrid.sysadmin.login.name=superuser
+usergrid.sysadmin.login.email=superuser@usergrid.com
+usergrid.sysadmin.login.password=superpassword
+usergrid.sysadmin.login.allowed=true
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ebfe96e8/stack/query-validator/src/test/resources/usergrid-test-context.xml
----------------------------------------------------------------------
diff --git a/stack/query-validator/src/test/resources/usergrid-test-context.xml b/stack/query-validator/src/test/resources/usergrid-test-context.xml
index 0cccb05..bec5638 100644
--- a/stack/query-validator/src/test/resources/usergrid-test-context.xml
+++ b/stack/query-validator/src/test/resources/usergrid-test-context.xml
@@ -1,8 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util"
+ xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
+ xsi:schemaLocation="
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
+ http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsd
+ http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">
<bean id="properties"
class="org.springframework.beans.factory.config.PropertiesFactoryBean">
@@ -12,12 +15,20 @@
<list>
<value>classpath:/usergrid-default.properties</value>
<value>classpath:/usergrid-test.properties</value>
- <value>${usergrid-custom-spring-test-properties}</value>
+ <value>classpath:/usergrid-custom-test.properties</value>
</list>
</property>
</bean>
- <import resource="classpath:/usergrid-query-validator-context.xml" />
+ <import resource="usergrid-rest-context.xml"/>
+
+ <bean id="traceTagManager" class="org.usergrid.persistence.cassandra.util.TraceTagManager">
+ <property name="reportUnattached" value="false"/>
+ <property name="traceEnabled" value="false"/>
+ </bean>
+
+
+ <bean id="binaryStore" class="org.usergrid.services.assets.data.LocalFileBinaryStore"/>
<bean id="setup" class="org.usergrid.persistence.cassandra.Setup">
<constructor-arg ref="entityManagerFactory"/>
@@ -30,5 +41,6 @@
<constructor-arg ref="cassandraCluster"/>
</bean>
+ <import resource="usergrid-query-validator-context.xml"/>
-</beans>
+</beans>
\ No newline at end of file