You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by to...@apache.org on 2014/09/29 22:52:58 UTC

[19/52] [abbrv] git commit: Merge branch 'two-dot-o' of https://git-wip-us.apache.org/repos/asf/incubator-usergrid into two-dot-o

Merge branch 'two-dot-o' of https://git-wip-us.apache.org/repos/asf/incubator-usergrid into two-dot-o


Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/ef7964b8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/ef7964b8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/ef7964b8

Branch: refs/heads/eventsystem
Commit: ef7964b899862ab136c3fb34f6c35b2f38f1d069
Parents: d283311 0911844
Author: Dave Johnson <dm...@apigee.com>
Authored: Thu Sep 25 12:41:11 2014 -0400
Committer: Dave Johnson <dm...@apigee.com>
Committed: Thu Sep 25 12:41:11 2014 -0400

----------------------------------------------------------------------
 portal/js/global/ug-service.js                  | 1098 +++--
 portal/js/libs/usergrid.sdk.js                  | 4264 +++++++++---------
 .../usergrid/rest/ConcurrentRestITSuite.java    |   21 +-
 .../org/apache/usergrid/rest/RestITSuite.java   |   20 +-
 .../ApplicationRequestCounterIT.java            |   97 -
 .../rest/applications/DevicesResourceIT.java    |   87 -
 .../collection/BadGrammarQueryTest.java         |   79 -
 .../collection/CollectionsResourceIT.java       |  205 +
 .../collection/PagingResourceIT.java            |  301 --
 .../activities/ActivityResourceIT.java          |  188 +
 .../collection/activities/AndOrQueryTest.java   |  203 -
 .../collection/activities/OrderByTest.java      |  172 -
 .../activities/PagingEntitiesTest.java          |  141 -
 .../collection/devices/DevicesResourceIT.java   |   87 +
 .../collection/groups/GeoPagingTest.java        |  133 -
 .../collection/groups/GroupResourceIT.java      |  295 ++
 .../collection/paging/PagingEntitiesTest.java   |  141 +
 .../collection/paging/PagingResourceIT.java     |  301 ++
 .../users/ConnectionResourceTest.java           |  271 ++
 .../collection/users/OwnershipResourceIT.java   |  379 ++
 .../collection/users/PermissionsResourceIT.java |  768 ++++
 .../collection/users/RetrieveUsersTest.java     |   87 +
 .../collection/users/UserResourceIT.java        | 1418 ++++++
 .../users/extensions/TestResource.java          |   51 +
 .../events/ApplicationRequestCounterIT.java     |   97 +
 .../applications/queries/AndOrQueryTest.java    |  203 +
 .../queries/BadGrammarQueryTest.java            |   79 +
 .../applications/queries/GeoPagingTest.java     |  133 +
 .../applications/queries/MatrixQueryTests.java  |  202 +
 .../rest/applications/queries/OrderByTest.java  |  172 +
 .../applications/users/ActivityResourceIT.java  |  188 -
 .../users/CollectionsResourceIT.java            |  205 -
 .../users/ConnectionResourceTest.java           |  271 --
 .../applications/users/GroupResourceIT.java     |  295 --
 .../applications/users/MatrixQueryTests.java    |  202 -
 .../applications/users/OwnershipResourceIT.java |  379 --
 .../users/PermissionsResourceIT.java            |  768 ----
 .../applications/users/RetrieveUsersTest.java   |   87 -
 .../rest/applications/users/UserResourceIT.java | 1418 ------
 .../users/extensions/TestResource.java          |   51 -
 .../usergrid/rest/management/AccessTokenIT.java |  333 ++
 .../usergrid/rest/management/AdminUsersIT.java  |  792 ++++
 .../rest/management/ManagementResourceIT.java   |  397 +-
 .../rest/management/OrganizationsIT.java        |  362 ++
 .../organizations/OrganizationResourceIT.java   |   90 -
 .../organizations/OrganizationsResourceIT.java  |  322 --
 .../rest/management/users/MUUserResourceIT.java |  654 ---
 .../UsersOrganizationsResourceIT.java           |   72 -
 48 files changed, 9378 insertions(+), 9201 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ef7964b8/stack/rest/src/test/java/org/apache/usergrid/rest/applications/collection/paging/PagingResourceIT.java
----------------------------------------------------------------------
diff --cc stack/rest/src/test/java/org/apache/usergrid/rest/applications/collection/paging/PagingResourceIT.java
index 0000000,ff735db..e60a657
mode 000000,100644..100644
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/applications/collection/paging/PagingResourceIT.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/applications/collection/paging/PagingResourceIT.java
@@@ -1,0 -1,283 +1,301 @@@
+ /*
+  * 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.usergrid.rest.applications.collection.paging;
+ 
+ 
+ import com.fasterxml.jackson.databind.JsonNode;
+ import com.fasterxml.jackson.databind.ObjectMapper;
++import java.io.IOException;
+ import java.util.ArrayList;
+ import java.util.Iterator;
+ import java.util.List;
+ import java.util.Map;
+ import java.util.UUID;
+ import javax.ws.rs.core.MediaType;
+ import org.apache.usergrid.cassandra.Concurrent;
+ import org.apache.usergrid.java.client.entities.Entity;
+ import org.apache.usergrid.java.client.response.ApiResponse;
+ import org.apache.usergrid.rest.AbstractRestIT;
+ import org.apache.usergrid.rest.TestContextSetup;
+ import org.apache.usergrid.rest.test.resource.CustomCollection;
+ import org.apache.usergrid.rest.test.resource.EntityResource;
+ import static org.apache.usergrid.utils.MapUtils.hashMap;
+ import static org.junit.Assert.assertEquals;
+ import static org.junit.Assert.assertFalse;
+ import static org.junit.Assert.assertNotNull;
+ import static org.junit.Assert.assertNull;
+ import static org.junit.Assert.assertTrue;
+ import org.junit.Ignore;
+ import org.junit.Rule;
+ import org.junit.Test;
+ import org.slf4j.Logger;
+ import org.slf4j.LoggerFactory;
+ 
+ 
+ /** Simple tests to test querying at the REST tier */
+ @Concurrent()
+ public class PagingResourceIT extends AbstractRestIT {
+ 
+     private static final Logger logger = LoggerFactory.getLogger( PagingResourceIT.class );
+ 
+     @Rule
+     public TestContextSetup context = new TestContextSetup( this );
+ 
+     private static ObjectMapper mapper = new ObjectMapper();
+ 
+     private static final ApiResponse parse( JsonNode response ) throws Exception {
+         String jsonResponseString = mapper.writeValueAsString( response );
+         return mapper.readValue( jsonResponseString, ApiResponse.class );
+     }
+ 
+ 
+     @Test
+     public void collectionPaging() throws Exception {
+ 
+         CustomCollection things = context.application().collection( "test1things" );
+ 
+         int size = 40;
+ 
+         List<Map<String, String>> created = new ArrayList<Map<String, String>>( size );
+ 
+         for ( int i = 0; i < size; i++ ) {
+             Map<String, String> entity = hashMap( "name", String.valueOf( i ) );
+             things.create( entity );
+ 
+             created.add( entity );
+         }
+ 
+         refreshIndex(context.getOrgName(), context.getAppName());
+ 
+         // now page them all
+         ApiResponse response = null;
+         Iterator<Map<String, String>> entityItr = created.iterator();
+ 
+         do {
+ 
+             response = parse( things.get() );
+ 
+             for ( Entity e : response.getEntities() ) {
+                 assertTrue( entityItr.hasNext() );
+                 assertEquals( entityItr.next().get( "name" ), e.getProperties().get( "name" ).asText() );
+                 logger.debug("Got item value {}", e.getProperties().get( "name" ).asText());
+             }
+ 
+             logger.debug("response cursor: " + response.getCursor() );
+             
+             things = things.withCursor( response.getCursor() );
+         }
+         while ( response != null && response.getCursor() != null );
+ 
+         assertFalse("Should have paged them all", entityItr.hasNext() );
+     }
+ 
+ 
+     @Test
+     @Ignore("ignored because currently startPaging is only be supported for queues and not for  "
+             + "generic collections as this test assumes. "
+             + "see also: https://issues.apache.org/jira/browse/USERGRID-211 ")
+     public void startPaging() throws Exception {
+ 
+         CustomCollection things = context.application().collection( "test2things" );
+ 
+         int size = 40;
+ 
+         List<Map<String, String>> created = new ArrayList<Map<String, String>>( size );
+ 
+         for ( int i = 0; i < size; i++ ) {
+             Map<String, String> entity = hashMap( "name", String.valueOf( i ) );
+             things.create( entity );
+ 
+             created.add( entity );
+         }
+ 
+         refreshIndex(context.getOrgName(), context.getAppName());
+ 
+         // now page them all
+         ApiResponse response = null;
+ 
+         UUID start = null;
+         int index = 0;
+ 
+         do {
+ 
+             response = parse( things.get() );
+ 
+             for ( Entity e : response.getEntities() ) {
+                 logger.debug("Getting item {} value {}", index, e.getProperties().get( "name" ).asText());
+                 assertEquals( created.get( index ).get( "name" ), e.getProperties().get( "name" ).asText() );
+                 index++;
+             }
+ 
+             // decrement since we'll get this one again
+             index--;
+ 
+             start = response.getEntities().get( response.getEntities().size() - 1 ).getUuid();
+ 
+             things = things.withStart( start );
+         }
+         while ( response != null && response.getEntities().size() > 1 );
+ 
+         // we paged them all
+         assertEquals( created.size() - 1, index );
+     }
+ 
+ 
+     @Test
+     public void collectionBatchDeleting() throws Exception {
+ 
+         CustomCollection things = context.application().collection( "test3things" );
+ 
+         int size = 40;
+ 
+         List<Map<String, String>> created = new ArrayList<Map<String, String>>( size );
+ 
+         for ( int i = 0; i < size; i++ ) {
+             Map<String, String> entity = hashMap( "name", String.valueOf( i ) );
+             things.create( entity );
+ 
+             created.add( entity );
+         }
+ 
+         refreshIndex(context.getOrgName(), context.getAppName());
+ 
+         ApiResponse response;
+         int deletePageSize = 10;
+ 
+         things = things.withLimit( deletePageSize );
+ 
+         for ( int i = 0; i < size / deletePageSize; i++ ) {
+             response = parse( things.delete() );
+ 
+             refreshIndex(context.getOrgName(), context.getAppName());
+ 
+             assertEquals( "Only 10 entities should have been deleted", 10, response.getEntityCount() );
+         }
+ 
+         response = parse( things.get() );
+ 
+         assertEquals( "All entities should have been removed", 0, response.getEntityCount() );
+ 
+         //now do 1 more delete, we should get any results
+ 
+         response = parse( things.delete() );
+ 
+         assertEquals( "No more entities deleted", 0, response.getEntityCount() );
+     }
+ 
+ 
+     @Test
+     public void emptyQlandLimitIgnored() throws Exception {
+ 
+         CustomCollection things = context.application().collection( "test4things" );
+ 
+         Map<String, String> data = hashMap( "name", "thing1" );
+         JsonNode response = things.create( data );
+ 
+         refreshIndex(context.getOrgName(), context.getAppName());
+ 
+         JsonNode entity = getEntity( response, 0 );
+ 
+         String uuid = entity.get( "uuid" ).asText();
+ 
+         EntityResource entityRequest = things.entity( "thing1" ).withParam( "ql", "" ).withParam( "limit", "" );
+ 
+         JsonNode returnedEntity = getEntity( entityRequest.get(), 0 );
+ 
+         assertEquals( entity, returnedEntity );
+ 
+         entityRequest = things.entity( uuid ).withParam( "ql", "" ).withParam( "limit", "" );
+ 
+         returnedEntity = getEntity( entityRequest.get(), 0 );
+ 
+         assertEquals( entity, returnedEntity );
+ 
+         // now do a delete
+         returnedEntity = getEntity( entityRequest.delete(), 0 );
+ 
+         assertEquals( entity, returnedEntity );
+ 
+         refreshIndex(context.getOrgName(), context.getAppName());
+ 
+         // verify it's gone
+         returnedEntity = getEntity( things.entity( uuid ).get(), 0 );
+ 
+         assertNull( returnedEntity );
+     }
+ 
+ 
+     @Test
+     public void testCursor() throws Exception {
+ 
+         // test that we do get cursor when we need one
+         // create 50 widgets
+         int widgetsSize = 50;
+         CustomCollection widgets = context.application().collection("widgets");
+         for (int i = 0; i < widgetsSize; i++) {
+             Map<String, String> entity = hashMap("name", String.valueOf(i));
+             widgets.create(entity);
+         }
+         refreshIndex(context.getOrgName(), context.getAppName());
+ 
+         // fetch all widgets 
+         JsonNode widgetsNode = mapper.readTree(
+             resource().path("/" + context.getOrgName() + "/" + context.getAppName() + "/widgets")
+                 .queryParam("access_token", context.getActiveUser().getToken())
+                 .accept(MediaType.APPLICATION_JSON)
+                 .get(String.class));
+         assertEquals(10, widgetsNode.get("count").asInt()); // get back default page size of 10
+         assertNotNull(widgetsNode.get("cursor")); // with a cursor
+ 
+         // test that we DO NOT get cursor when we should not get cursor
+         // create 5 trinkets
+         int trinketsSize = 5;
+         CustomCollection trinkets = context.application().collection("trinkets");
+         for (int i = 0; i < trinketsSize; i++) {
+             Map<String, String> entity = hashMap("name", String.valueOf(i));
+             trinkets.create(entity);
+         }
+         refreshIndex(context.getOrgName(), context.getAppName());
+ 
+         // fetch all trinkets 
+         JsonNode trinketsNode = mapper.readTree(
+             resource().path("/" + context.getOrgName() + "/" + context.getAppName() + "/trinkets")
+                 .queryParam("access_token", context.getActiveUser().getToken())
+                 .accept(MediaType.APPLICATION_JSON)
+                 .get(String.class));
+         assertEquals(trinketsSize, trinketsNode.get("count").asInt()); // get back all 
+         assertNull(trinketsNode.get("cursor")); // and no cursor
 -
+     }
++
++
++//    @Test
++//    public void testPagingWithUpdates() throws IOException {
++//
++//        // create 500 widgets
++//        int widgetsSize = 500;
++//        List<String> widgetIds = new ArrayList<String>();
++//        CustomCollection widgets = context.application().collection("widgets");
++//        for (int i = 0; i < widgetsSize; i++) {
++//            Map<String, String> entity = hashMap("name", String.valueOf(i));
++//            JsonNode widgetNode = widgets.create(entity);
++//            logger.info("widgetNode: " + widgetNode.toString());
++//        }
++//
++//        refreshIndex(context.getOrgName(), context.getAppName());
++//    }
++
+ }