From 2641d089e27152ffd78a17465e88c7f42ddca888 Mon Sep 17 00:00:00 2001 From: Samuel Githengi Date: Mon, 18 Jan 2021 11:08:43 +0300 Subject: [PATCH 1/7] Remove setting events whose tasks are not found to task unprocessed status --- .../org/smartregister/reveal/sync/RevealClientProcessor.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/opensrp-reveal/src/main/java/org/smartregister/reveal/sync/RevealClientProcessor.java b/opensrp-reveal/src/main/java/org/smartregister/reveal/sync/RevealClientProcessor.java index 8df5d33b17..5b258a83f9 100644 --- a/opensrp-reveal/src/main/java/org/smartregister/reveal/sync/RevealClientProcessor.java +++ b/opensrp-reveal/src/main/java/org/smartregister/reveal/sync/RevealClientProcessor.java @@ -284,8 +284,6 @@ private String updateTask(Event event, boolean localEvents) { } taskRepository.addOrUpdate(task); operationalAreaId = task.getGroupIdentifier(); - } else if (!localEvents) { - eventClientRepository.markEventAsTaskUnprocessed(event.getFormSubmissionId()); } return operationalAreaId; } From 6802708f2ca3a09e5b81200ae3c2c55ee97bd2dd Mon Sep 17 00:00:00 2001 From: Samuel Githengi Date: Mon, 18 Jan 2021 11:10:08 +0300 Subject: [PATCH 2/7] remove optimization that may mark server synced events as synced --- .../org/smartregister/reveal/sync/RevealClientProcessor.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/opensrp-reveal/src/main/java/org/smartregister/reveal/sync/RevealClientProcessor.java b/opensrp-reveal/src/main/java/org/smartregister/reveal/sync/RevealClientProcessor.java index 5b258a83f9..52b4658ef6 100644 --- a/opensrp-reveal/src/main/java/org/smartregister/reveal/sync/RevealClientProcessor.java +++ b/opensrp-reveal/src/main/java/org/smartregister/reveal/sync/RevealClientProcessor.java @@ -278,9 +278,6 @@ private String updateTask(Event event, boolean localEvents) { if (localEvents && BaseRepository.TYPE_Synced.equals(task.getSyncStatus())) { task.setSyncStatus(BaseRepository.TYPE_Unsynced); revealApplication.setSynced(false); - } else if (!localEvents && event.getServerVersion() != 0 && !CoreLibrary.getInstance().isPeerToPeerProcessing()) { - // for events synced from server and task exists mark events as being fully synced - eventClientRepository.markEventAsSynced(event.getFormSubmissionId()); } taskRepository.addOrUpdate(task); operationalAreaId = task.getGroupIdentifier(); From ed906d92cea10e00d3cd4190bd3d487075de0fba Mon Sep 17 00:00:00 2001 From: Samuel Githengi Date: Mon, 18 Jan 2021 11:12:46 +0300 Subject: [PATCH 3/7] Remove funtionality to client process events when tasks or structures are synced --- .../sync/LocationTaskIntentService.java | 45 +------------------ 1 file changed, 1 insertion(+), 44 deletions(-) diff --git a/opensrp-reveal/src/main/java/org/smartregister/reveal/sync/LocationTaskIntentService.java b/opensrp-reveal/src/main/java/org/smartregister/reveal/sync/LocationTaskIntentService.java index 5e134c350b..48e7bcd116 100644 --- a/opensrp-reveal/src/main/java/org/smartregister/reveal/sync/LocationTaskIntentService.java +++ b/opensrp-reveal/src/main/java/org/smartregister/reveal/sync/LocationTaskIntentService.java @@ -2,17 +2,15 @@ import android.app.IntentService; import android.content.Intent; + import androidx.annotation.Nullable; import androidx.localbroadcastmanager.content.LocalBroadcastManager; import org.smartregister.domain.FetchStatus; import org.smartregister.domain.Location; import org.smartregister.domain.Task; -import org.smartregister.domain.db.EventClient; import org.smartregister.job.SyncServiceJob; import org.smartregister.receiver.SyncStatusBroadcastReceiver; -import org.smartregister.repository.BaseRepository; -import org.smartregister.repository.EventClientRepository; import org.smartregister.repository.TaskRepository; import org.smartregister.reveal.application.RevealApplication; import org.smartregister.reveal.job.RevealSyncSettingsServiceJob; @@ -25,10 +23,7 @@ import org.smartregister.util.NetworkUtils; import org.smartregister.util.SyncUtils; -import java.util.ArrayList; -import java.util.HashSet; import java.util.List; -import java.util.Set; import timber.log.Timber; @@ -114,8 +109,6 @@ private void doSync() { LocalBroadcastManager.getInstance(getApplicationContext()).sendBroadcast(intent); } - clientProcessEvents(extractStructureIds(syncedStructures, synchedTasks)); - if (!org.smartregister.util.Utils.isEmptyCollection(syncedStructures) || !org.smartregister.util.Utils.isEmptyCollection(synchedTasks)) { doSync(); @@ -162,41 +155,5 @@ private boolean hasChangesInCurrentOperationalArea(List syncedStructur return false; } - /** - * Extracts a set of Structures ids from syched structures and tasks - * - * @param syncedStructures the list of synced structures - * @param synchedTasks the list of synced tasks - * @return a set of baseEntityIds - */ - private Set extractStructureIds(List syncedStructures, List synchedTasks) { - Set structureIds = new HashSet<>(); - if (!org.smartregister.util.Utils.isEmptyCollection(syncedStructures)) { - for (Location structure : syncedStructures) { - structureIds.add(structure.getId()); - } - } - if (!org.smartregister.util.Utils.isEmptyCollection(synchedTasks)) { - for (Task task : synchedTasks) { - structureIds.add(task.getForEntity()); - } - } - return structureIds; - } - - /** - * Clients Processes events of a set of structure baseEntityIds that have the task status TYPE_Task_Unprocessed - * - * @param syncedStructuresIds the set of structure baseEntityIds to client process - */ - private void clientProcessEvents(Set syncedStructuresIds) { - if (org.smartregister.util.Utils.isEmptyCollection(syncedStructuresIds)) - return; - EventClientRepository ecRepository = RevealApplication.getInstance().getContext().getEventClientRepository(); - List eventClients = ecRepository.getEventsByBaseEntityIdsAndSyncStatus(BaseRepository.TYPE_Task_Unprocessed, new ArrayList<>(syncedStructuresIds)); - if (!eventClients.isEmpty()) { - RevealClientProcessor.getInstance(getApplicationContext()).processClient(eventClients); - } - } } From 168f0e0fde6c7f2a833fc63ff445759dbb95e2c7 Mon Sep 17 00:00:00 2001 From: Samuel Githengi Date: Mon, 18 Jan 2021 11:16:10 +0300 Subject: [PATCH 4/7] reset all events with sync status task unprocessed to unsynced so that events are synced --- opensrp-reveal/build.gradle | 4 ++-- .../smartregister/reveal/repository/RevealRepository.java | 7 +++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/opensrp-reveal/build.gradle b/opensrp-reveal/build.gradle index 892948ef67..b20d0a5226 100644 --- a/opensrp-reveal/build.gradle +++ b/opensrp-reveal/build.gradle @@ -125,7 +125,7 @@ android { zipAlignEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' resValue "string", 'opensrp_base_url', '"https://reveal-zm.smartregister.org/opensrp/"' - buildConfigField "Integer", "DATABASE_VERSION", '12' + buildConfigField "Integer", "DATABASE_VERSION", '13' buildConfigField "int", "OPENMRS_UNIQUE_ID_INITIAL_BATCH_SIZE", '250' buildConfigField "int", "OPENMRS_UNIQUE_ID_BATCH_SIZE", '100' buildConfigField "int", "OPENMRS_UNIQUE_ID_SOURCE", '2' @@ -143,7 +143,7 @@ android { debug { resValue "string", 'opensrp_base_url', '"https://reveal-stage.smartregister.org/opensrp/"' - buildConfigField "Integer", "DATABASE_VERSION", '12' + buildConfigField "Integer", "DATABASE_VERSION", '13' buildConfigField "int", "OPENMRS_UNIQUE_ID_INITIAL_BATCH_SIZE", '250' buildConfigField "int", "OPENMRS_UNIQUE_ID_BATCH_SIZE", '100' buildConfigField "int", "OPENMRS_UNIQUE_ID_SOURCE", '2' diff --git a/opensrp-reveal/src/main/java/org/smartregister/reveal/repository/RevealRepository.java b/opensrp-reveal/src/main/java/org/smartregister/reveal/repository/RevealRepository.java index 5ffc50a336..97fafe00e1 100644 --- a/opensrp-reveal/src/main/java/org/smartregister/reveal/repository/RevealRepository.java +++ b/opensrp-reveal/src/main/java/org/smartregister/reveal/repository/RevealRepository.java @@ -135,6 +135,9 @@ public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { case 12: upgradeToVersion12(db); break; + case 13: + upgradeToVersion13(db); + break; default: break; } @@ -285,6 +288,10 @@ private void upgradeToVersion12(SQLiteDatabase db) { TaskRepository.updatePriorityToEnumAndAddRestrictions(db); } + private void upgradeToVersion13(SQLiteDatabase db) { + db.execSQL(String.format("UPDATE %s set %s = ? WHERE %s=? ", EVENT_TABLE, DatabaseKeys.SYNC_STATUS, DatabaseKeys.SYNC_STATUS), new String[]{BaseRepository.TYPE_Unsynced, BaseRepository.TYPE_Task_Unprocessed}); + } + private void clientProcessEvents(List eventTypes) { //client process events after 5 seconds so that get calls to getDatabase return new Timer().schedule(new TimerTask() { From ca402014bc6d566785fddf5e5cd52646203f2df6 Mon Sep 17 00:00:00 2001 From: Samuel Githengi Date: Tue, 19 Jan 2021 09:30:22 +0300 Subject: [PATCH 5/7] Increase test max heap size --- opensrp-reveal/build.gradle | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/opensrp-reveal/build.gradle b/opensrp-reveal/build.gradle index b20d0a5226..ae835abddb 100644 --- a/opensrp-reveal/build.gradle +++ b/opensrp-reveal/build.gradle @@ -180,8 +180,7 @@ android { tasks.withType(Test) { jacoco.includeNoLocationClasses = true - maxHeapSize = "2g" - //testLogging.showStandardStreams = true + maxHeapSize = "4g" testLogging { events TestLogEvent.FAILED From cc55eeb04a9440b123bdad3e496aee050087ca4f Mon Sep 17 00:00:00 2001 From: Samuel Githengi Date: Tue, 19 Jan 2021 09:37:15 +0300 Subject: [PATCH 6/7] Update unit tests --- .../reveal/sync/RevealClientProcessorPowerMockTest.java | 4 ++-- .../smartregister/reveal/sync/RevealClientProcessorTest.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/opensrp-reveal/src/test/java/org/smartregister/reveal/sync/RevealClientProcessorPowerMockTest.java b/opensrp-reveal/src/test/java/org/smartregister/reveal/sync/RevealClientProcessorPowerMockTest.java index 6b5a5606a2..e9e4245f60 100644 --- a/opensrp-reveal/src/test/java/org/smartregister/reveal/sync/RevealClientProcessorPowerMockTest.java +++ b/opensrp-reveal/src/test/java/org/smartregister/reveal/sync/RevealClientProcessorPowerMockTest.java @@ -152,7 +152,7 @@ public void testUpdateTaskShouldMarkEventAsTaskUnprocessed() throws Exception { Whitebox.invokeMethod(clientProcessor, "updateTask", event, false); - verify(eventClientRepository).markEventAsTaskUnprocessed(eq(FORM_SUBMISSION_ID)); + verify(eventClientRepository,never()).markEventAsTaskUnprocessed(eq(FORM_SUBMISSION_ID)); } @Test @@ -175,7 +175,7 @@ public void testUpdateTaskShouldMarkEventAsSynced() throws Exception { Whitebox.invokeMethod(clientProcessor, "updateTask", event, false); - verify(eventClientRepository).markEventAsSynced(eq(FORM_SUBMISSION_ID)); + verify(eventClientRepository,never()).markEventAsSynced(eq(FORM_SUBMISSION_ID)); } @Test diff --git a/opensrp-reveal/src/test/java/org/smartregister/reveal/sync/RevealClientProcessorTest.java b/opensrp-reveal/src/test/java/org/smartregister/reveal/sync/RevealClientProcessorTest.java index 84889f3134..058bd045d2 100644 --- a/opensrp-reveal/src/test/java/org/smartregister/reveal/sync/RevealClientProcessorTest.java +++ b/opensrp-reveal/src/test/java/org/smartregister/reveal/sync/RevealClientProcessorTest.java @@ -172,7 +172,7 @@ public void testProcessEventClientWithoutTasksAndLocations() { Whitebox.setInternalState(clientProcessor, "eventClientRepository", eventClientRepository); clientProcessor.processClient(Arrays.asList(new EventClient(event, null), new EventClient(sprayedEvent, null)), false); - verify(eventClientRepository, times(2)).markEventAsTaskUnprocessed(anyString()); + verify(eventClientRepository, never()).markEventAsTaskUnprocessed(anyString()); } @Test @@ -182,7 +182,7 @@ public void testProcessEventClientShouldUpdateTaskStatusOnlyForRemoteEvents() { clientProcessor.processClient(Collections.singletonList(new EventClient(sprayedEvent, null))); verify(eventClientRepository, never()).markEventAsTaskUnprocessed(sprayedEvent.getFormSubmissionId()); - verify(eventClientRepository).markEventAsSynced(sprayedEvent.getFormSubmissionId()); + verify(eventClientRepository,never()).markEventAsSynced(sprayedEvent.getFormSubmissionId()); verify(taskRepository).addOrUpdate(taskCaptor.capture()); From 2db3d3ae93a6e43c0460e745b14f51f0b335223a Mon Sep 17 00:00:00 2001 From: Samuel Githengi Date: Tue, 19 Jan 2021 09:52:13 +0300 Subject: [PATCH 7/7] Bump up version --- opensrp-reveal/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/opensrp-reveal/build.gradle b/opensrp-reveal/build.gradle index ae835abddb..504581f1bd 100644 --- a/opensrp-reveal/build.gradle +++ b/opensrp-reveal/build.gradle @@ -49,8 +49,8 @@ android { applicationId "org.smartregister.reveal" minSdkVersion 18 targetSdkVersion 28 - versionCode 29 - versionName "5.3.16" + versionCode 30 + versionName "5.3.17" multiDexEnabled true buildConfigField "long", "MAX_SERVER_TIME_DIFFERENCE", "1800000l" buildConfigField "boolean", "TIME_CHECK", "false"