Add new push notification test and remove duplicate index processing on entity create/update.
Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/949b4650 Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/949b4650 Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/949b4650 Branch: refs/heads/asf-site Commit: 949b4650608ce9ecd3d3bea10ff81d7fe7f8be2f Parents: d3e988b Author: Michael Russo <[email protected]> Authored: Wed Apr 5 19:01:11 2017 -0700 Committer: Michael Russo <[email protected]> Committed: Wed Apr 5 19:01:11 2017 -0700 ---------------------------------------------------------------------- .../batch/service/JobSchedulerService.java | 8 ++-- .../batch/service/SchedulerServiceImpl.java | 2 +- .../asyncevents/AsyncEventServiceImpl.java | 14 ++---- .../org/apache/usergrid/ServiceITSetup.java | 3 ++ .../org/apache/usergrid/ServiceITSetupImpl.java | 17 ++++--- .../apns/NotificationsServiceIT.java | 47 +++++++++++++++++--- 6 files changed, 62 insertions(+), 29 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/usergrid/blob/949b4650/stack/core/src/main/java/org/apache/usergrid/batch/service/JobSchedulerService.java ---------------------------------------------------------------------- diff --git a/stack/core/src/main/java/org/apache/usergrid/batch/service/JobSchedulerService.java b/stack/core/src/main/java/org/apache/usergrid/batch/service/JobSchedulerService.java index 807daa3..23a86af 100644 --- a/stack/core/src/main/java/org/apache/usergrid/batch/service/JobSchedulerService.java +++ b/stack/core/src/main/java/org/apache/usergrid/batch/service/JobSchedulerService.java @@ -129,9 +129,9 @@ public class JobSchedulerService extends AbstractScheduledService { } for ( JobDescriptor jd : activeJobs ) { - logger.info( "Submitting work for {}", jd ); + logger.debug( "Submitting work for {}", jd ); submitWork( jd ); - logger.info( "Work submitted for {}", jd ); + logger.debug( "Work submitted for {}", jd ); } } } @@ -228,7 +228,7 @@ public class JobSchedulerService extends AbstractScheduledService { // TODO wrap and throw specifically typed exception for onFailure, // needs jobId - logger.info( "Starting job {} with execution data {}", job, execution ); + logger.debug( "Starting job {} with execution data {}", job, execution ); job.execute( execution ); @@ -259,7 +259,7 @@ public class JobSchedulerService extends AbstractScheduledService { //TODO, refactor into the execution itself for checking if done if ( execution.getStatus() == Status.IN_PROGRESS ) { - logger.info( "Successful completion of bulkJob {}", execution ); + logger.debug( "Successful completion of bulkJob {}", execution ); execution.completed(); } http://git-wip-us.apache.org/repos/asf/usergrid/blob/949b4650/stack/core/src/main/java/org/apache/usergrid/batch/service/SchedulerServiceImpl.java ---------------------------------------------------------------------- diff --git a/stack/core/src/main/java/org/apache/usergrid/batch/service/SchedulerServiceImpl.java b/stack/core/src/main/java/org/apache/usergrid/batch/service/SchedulerServiceImpl.java index af933f6..9b3714c 100644 --- a/stack/core/src/main/java/org/apache/usergrid/batch/service/SchedulerServiceImpl.java +++ b/stack/core/src/main/java/org/apache/usergrid/batch/service/SchedulerServiceImpl.java @@ -305,7 +305,7 @@ public class SchedulerServiceImpl implements SchedulerService, JobAccessor, JobR getEm().update( data ); } - logger.info( "Updating stats for job {}", data.getJobName() ); + logger.debug( "Updating stats for job {}", data.getJobName() ); getEm().update( stat ); } http://git-wip-us.apache.org/repos/asf/usergrid/blob/949b4650/stack/core/src/main/java/org/apache/usergrid/corepersistence/asyncevents/AsyncEventServiceImpl.java ---------------------------------------------------------------------- diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/asyncevents/AsyncEventServiceImpl.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/asyncevents/AsyncEventServiceImpl.java index e565754..75d2ce0 100644 --- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/asyncevents/AsyncEventServiceImpl.java +++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/asyncevents/AsyncEventServiceImpl.java @@ -420,8 +420,8 @@ public class AsyncEventServiceImpl implements AsyncEventService { if( !(event instanceof ElasticsearchIndexEvent) && !(event instanceof InitializeApplicationIndexEvent) && single.isEmpty() ){ - logger.warn("No index operation messages came back from event processing for msg: {} ", - message.getStringBody().trim()); + logger.warn("No index operation messages came back from event processing for eventType: {}, msgId: {}, msgBody: {}", + event.getClass().getSimpleName(), message.getMessageId(), message.getStringBody()); } @@ -481,15 +481,7 @@ public class AsyncEventServiceImpl implements AsyncEventService { entity.getId().getUuid(), entity.getId().getType()); offer(new EntityIndexEvent(queueFig.getPrimaryRegion(), - new EntityIdScope(applicationScope, entity.getId()), 0)); - - final EntityIndexOperation entityIndexOperation = - new EntityIndexOperation( applicationScope, entity.getId(), updatedAfter); - - final IndexOperationMessage indexMessage = - eventBuilder.buildEntityIndex( entityIndexOperation ).toBlocking().lastOrDefault(null); - - queueIndexOperationMessage( indexMessage, false); + new EntityIdScope(applicationScope, entity.getId()), updatedAfter)); } http://git-wip-us.apache.org/repos/asf/usergrid/blob/949b4650/stack/services/src/test/java/org/apache/usergrid/ServiceITSetup.java ---------------------------------------------------------------------- diff --git a/stack/services/src/test/java/org/apache/usergrid/ServiceITSetup.java b/stack/services/src/test/java/org/apache/usergrid/ServiceITSetup.java index 6cdb0ea..ee5313e 100644 --- a/stack/services/src/test/java/org/apache/usergrid/ServiceITSetup.java +++ b/stack/services/src/test/java/org/apache/usergrid/ServiceITSetup.java @@ -17,6 +17,7 @@ package org.apache.usergrid; +import org.apache.usergrid.batch.service.JobSchedulerService; import org.apache.usergrid.management.ApplicationCreator; import org.apache.usergrid.management.ManagementService; import org.apache.usergrid.management.export.ExportService; @@ -44,6 +45,8 @@ public interface ServiceITSetup extends CoreITSetup { ImportService getImportService(); + JobSchedulerService getJobSchedulerService(); + void refreshIndex(UUID appid); /** http://git-wip-us.apache.org/repos/asf/usergrid/blob/949b4650/stack/services/src/test/java/org/apache/usergrid/ServiceITSetupImpl.java ---------------------------------------------------------------------- diff --git a/stack/services/src/test/java/org/apache/usergrid/ServiceITSetupImpl.java b/stack/services/src/test/java/org/apache/usergrid/ServiceITSetupImpl.java index ac40ae3..0308e15 100644 --- a/stack/services/src/test/java/org/apache/usergrid/ServiceITSetupImpl.java +++ b/stack/services/src/test/java/org/apache/usergrid/ServiceITSetupImpl.java @@ -19,6 +19,7 @@ package org.apache.usergrid; import java.util.Properties; +import org.apache.usergrid.batch.service.JobSchedulerService; import org.apache.usergrid.corepersistence.GuiceFactory; import org.apache.usergrid.management.AppInfoMigrationPlugin; import org.junit.runner.Description; @@ -36,13 +37,7 @@ import org.apache.usergrid.persistence.cassandra.CassandraService; import org.apache.usergrid.security.providers.SignInProviderFactory; import org.apache.usergrid.security.tokens.TokenService; import org.apache.usergrid.services.ServiceManagerFactory; -import org.junit.runner.Description; -import org.junit.runners.model.Statement; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.config.PropertiesFactoryBean; -import java.util.Properties; import java.util.UUID; @@ -59,6 +54,7 @@ public class ServiceITSetupImpl extends CoreITSetupImpl implements ServiceITSetu private ExportService exportService; private ImportService importService; private AppInfoMigrationPlugin appInfoMigrationPlugin; + private JobSchedulerService jobSchedulerService; public ServiceITSetupImpl() { @@ -72,6 +68,8 @@ public class ServiceITSetupImpl extends CoreITSetupImpl implements ServiceITSetu smf = springResource.getBean( ServiceManagerFactory.class ); exportService = springResource.getBean( ExportService.class ); importService = springResource.getBean( ImportService.class ); + jobSchedulerService = springResource.getBean(JobSchedulerService.class); + try { appInfoMigrationPlugin = springResource.getBean(GuiceFactory.class) @@ -125,12 +123,19 @@ public class ServiceITSetupImpl extends CoreITSetupImpl implements ServiceITSetu return managementService; } + + @Override public ExportService getExportService() { return exportService; } @Override public ImportService getImportService() { return importService; } + @Override + public JobSchedulerService getJobSchedulerService() { + return jobSchedulerService; + } + public ServiceManagerFactory getSmf() { if ( smf == null ) { http://git-wip-us.apache.org/repos/asf/usergrid/blob/949b4650/stack/services/src/test/java/org/apache/usergrid/services/notifications/apns/NotificationsServiceIT.java ---------------------------------------------------------------------- diff --git a/stack/services/src/test/java/org/apache/usergrid/services/notifications/apns/NotificationsServiceIT.java b/stack/services/src/test/java/org/apache/usergrid/services/notifications/apns/NotificationsServiceIT.java index 1c3bbcd..4fb9add 100644 --- a/stack/services/src/test/java/org/apache/usergrid/services/notifications/apns/NotificationsServiceIT.java +++ b/stack/services/src/test/java/org/apache/usergrid/services/notifications/apns/NotificationsServiceIT.java @@ -16,6 +16,7 @@ */ package org.apache.usergrid.services.notifications.apns; +import com.google.common.util.concurrent.Service; import com.relayrides.pushy.apns.util.*; import net.jcip.annotations.NotThreadSafe; import org.apache.commons.io.IOUtils; @@ -118,6 +119,11 @@ public class NotificationsServiceIT extends AbstractServiceNotificationIT { listener = new QueueListener(ns.getServiceManagerFactory(),ns.getEntityManagerFactory(), new Properties()); listener.start(); + + if ( !setup.getJobSchedulerService().isRunning()) { + setup.getJobSchedulerService().startAsync(); + setup.getJobSchedulerService().awaitRunning(); + } } @After @@ -290,14 +296,41 @@ public class NotificationsServiceIT extends AbstractServiceNotificationIT { notification = app.getEntityManager().get(e.getUuid(), Notification.class); assertEquals(Notification.State.SCHEDULED, notification.getState()); + } + + @Test + public void scheduledNotificationAndEnsureSend() throws Exception { + + // create push notification // + app.clear(); + String payload = getPayload(); + Map<String, String> payloads = new HashMap<String, String>(1); + payloads.put(notifier.getUuid().toString(), payload); + app.put("payloads", payloads); + app.put("deliver", System.currentTimeMillis() + 2000); + app.put("debug",true); + + Entity e = app.testRequest(ServiceAction.POST, 1,"devices",device1.getUuid(), "notifications") + .getEntity(); + app.testRequest(ServiceAction.GET, 1, "notifications", e.getUuid()); + + + Notification notification = app.getEntityManager().get(e.getUuid(), + Notification.class); + assertEquals( + notification.getPayloads().get(notifier.getUuid().toString()), + payload); + + + // delay until the scheduler has time to run + logger.info("Sleeping while the scheduler does its work"); + Thread.sleep(5000); + + + notification = app.getEntityManager().get(e.getUuid(), Notification.class); + + assertEquals(Notification.State.FINISHED, notification.getState()); -// try { -// e = app.testRequest(ServiceAction.DELETE, 1, "notifications", -// e.getUuid()).getEntity(); -// }catch (Exception deleteException){ -// LOG.error("Couldn't delete",deleteException); -// } -// app.getEntityManager().get(e.getUuid(), Notification.class); } @Test
