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());
++// }
++
+ }