From 81a5c9ad609fb4f834b655643bfdd31eb57b0f93 Mon Sep 17 00:00:00 2001 From: Ephraim Kigamba Date: Mon, 17 Jul 2023 12:31:28 +0300 Subject: [PATCH] Daft commit: Run tests i CI --- .github/workflows/ci.yml | 2 +- .github/workflows/performance-tests.yml | 80 ++++++++++++ .../DefaultRepositoryPerformanceTests.kt | 38 ------ android/jacoco.gradle.kts | 18 ++- android/quest/build.gradle.kts | 29 +++++ android/quest/expected-results.json | 6 + .../ChildRegisterPerformanceTests.kt | 116 +++++++++++++++++ .../HouseholdRegisterPerformanceTests.kt | 122 ++++++++++++++++++ .../HouseholdRegisterPerformanceTests2.kt | 90 +++++++++++++ .../performance/RegisterPerformanceTest.kt | 7 + .../DefaultRepositoryPerformanceTests.kt | 80 ------------ .../registers/household_register_config.json | 2 +- 12 files changed, 469 insertions(+), 121 deletions(-) create mode 100644 .github/workflows/performance-tests.yml delete mode 100644 android/engine/src/androidTest/java/org/smartregister/fhircore/engine/performance/DefaultRepositoryPerformanceTests.kt create mode 100644 android/quest/expected-results.json create mode 100644 android/quest/src/androidTest/java/org/smartregister/fhircore/performance/ChildRegisterPerformanceTests.kt create mode 100644 android/quest/src/androidTest/java/org/smartregister/fhircore/performance/HouseholdRegisterPerformanceTests.kt create mode 100644 android/quest/src/androidTest/java/org/smartregister/fhircore/performance/HouseholdRegisterPerformanceTests2.kt create mode 100644 android/quest/src/androidTest/java/org/smartregister/fhircore/performance/RegisterPerformanceTest.kt delete mode 100644 android/quest/src/androidTest/java/org/smartregister/fhircore/quest/performance/DefaultRepositoryPerformanceTests.kt diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c0af320a8b..c3c1191504 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -221,7 +221,7 @@ jobs: force-avd-creation: true emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none disable-animations: true - script: ./gradlew :quest:clean && ./gradlew :quest:fhircoreJacocoReport --stacktrace + script: wget https://github.com/ekigamba/debug-jacoco-reports/releases/download/v0.0.1/resources.db && mv resources.db quest/src/androidTest/assets/ && ./gradlew :quest:clean && ./gradlew :quest:fhircoreJacocoReport --stacktrace - name: Upload Quest module test coverage report to Codecov if: matrix.api-level == 30 # Only upload coverage on API level 30 diff --git a/.github/workflows/performance-tests.yml b/.github/workflows/performance-tests.yml new file mode 100644 index 0000000000..cc22ddf381 --- /dev/null +++ b/.github/workflows/performance-tests.yml @@ -0,0 +1,80 @@ +# This workflow will build a Java project with Gradle +# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-gradle + +name: Performance tests + +on: + pull_request: + branches: [ main ] + +env: + FHIRCORE_USERNAME: ${{ secrets.FHIRCORE_USERNAME }} + FHIRCORE_ACCESS_TOKEN: ${{ secrets.FHIRCORE_ACCESS_TOKEN }} + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + +jobs: + + quest-tests: + runs-on: macos-latest + strategy: + matrix: + api-level: [30] + steps: + - name: Cancel Previous workflow runs + uses: styfle/cancel-workflow-action@0.9.1 + with: + access_token: ${{ github.token }} + - name: Checkout 🛎️ + uses: actions/checkout@v2 + with: + fetch-depth: 2 + + - name: Set up JDK 11 + uses: actions/setup-java@v1 + with: + java-version: 11 + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + working-directory: android + + - name: Copy CI gradle.properties + run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties && cat ~/.gradle/gradle.properties + + - name: Setup Gradle cache + uses: gradle/gradle-build-action@v2 + + - name: Load AVD cache + uses: actions/cache@v2 + id: avd-cache + with: + path: | + ~/.android/avd/* + ~/.android/adb* + key: avd-${{ matrix.api-level }} + + - name: Create AVD and generate snapshot for caching + if: steps.avd-cache.outputs.cache-hit != 'true' + uses: reactivecircus/android-emulator-runner@v2 + with: + working-directory: android + api-level: ${{ matrix.api-level }} + arch: x86_64 + force-avd-creation: false + emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none + disable-animations: false + script: echo "Generated AVD snapshot for caching." + + - name: Run Quest module performance tests + uses: reactivecircus/android-emulator-runner@v2 + with: + working-directory: android + api-level: ${{ matrix.api-level }} + arch: x86_64 + force-avd-creation: true + emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none + disable-animations: true + script: ./gradlew :quest:clean && ./gradlew :quest: --stacktrace -e package org.smartregister.fhircore.quest.performance + + - name: Check performance tests + run: ./gradlew :quest:checkPerformance diff --git a/android/engine/src/androidTest/java/org/smartregister/fhircore/engine/performance/DefaultRepositoryPerformanceTests.kt b/android/engine/src/androidTest/java/org/smartregister/fhircore/engine/performance/DefaultRepositoryPerformanceTests.kt deleted file mode 100644 index 11a8a2169e..0000000000 --- a/android/engine/src/androidTest/java/org/smartregister/fhircore/engine/performance/DefaultRepositoryPerformanceTests.kt +++ /dev/null @@ -1,38 +0,0 @@ -package org.smartregister.fhircore.engine.performance - -import androidx.benchmark.junit4.BenchmarkRule -import androidx.benchmark.junit4.measureRepeated -import androidx.test.ext.junit.runners.AndroidJUnit4 -import dagger.hilt.android.testing.HiltAndroidRule -import dagger.hilt.android.testing.HiltAndroidTest -import org.junit.Rule -import org.junit.Test -import org.junit.runner.RunWith -import org.smartregister.fhircore.engine.data.local.DefaultRepository -import org.smartregister.fhircore.engine.data.local.register.RegisterRepository -import javax.inject.Inject - - -/** - * Created by Ephraim Kigamba - nek.eam@gmail.com on 11-07-2023. - */ -@RunWith(AndroidJUnit4::class) -@HiltAndroidTest -class DefaultRepositoryPerformanceTests { - - @get:Rule - val benchmarkRule = BenchmarkRule() - - @Inject lateinit var defaultRepository: DefaultRepository - @Inject lateinit var registerRepository: RegisterRepository - - - @get:Rule val hiltRule = HiltAndroidRule(this) - - @Test - fun benchmarkSomeWork() { - benchmarkRule.measureRepeated { - registerRepository.retrieveRegisterConfiguration("householdRegister", hashMapOf()) - } - } -} diff --git a/android/jacoco.gradle.kts b/android/jacoco.gradle.kts index 119a19a619..7cf270665d 100644 --- a/android/jacoco.gradle.kts +++ b/android/jacoco.gradle.kts @@ -2,11 +2,27 @@ import org.gradle.testing.jacoco.tasks.JacocoReport val isApplication = (project.name == "quest") val actualProjectName = if(isApplication) "opensrp" else project.name +/* + +task("fhircoreInstrumentedTests") { + val taskName = "connected${if (isApplication) actualProjectName.capitalize() else ""}DebugAndroidTest" + + commandLine(taskName, "-- tests org.smartregister.fhircore") +} + +task("fhircorePerformanceTests") { + val taskName = "connected${if (isApplication) actualProjectName.capitalize() else ""}DebugAndroidTest" + + commandLine(taskName, "--tests org.smartregister.fhircore.performance") +} + +*/ + tasks.create(name = "fhircoreJacocoReport", type = JacocoReport::class) { dependsOn( setOf( "test${if(isApplication) actualProjectName.capitalize() else ""}DebugUnitTest", // Generates unit test coverage report - "connected${if (isApplication) actualProjectName.capitalize() else ""}DebugAndroidTest" // Generates instrumentation test coverage report + //"connected${if (isApplication) actualProjectName.capitalize() else ""}DebugAndroidTest" // Generates instrumentation test coverage report ) ) reports { diff --git a/android/quest/build.gradle.kts b/android/quest/build.gradle.kts index a41ade6f59..310e95f3c1 100644 --- a/android/quest/build.gradle.kts +++ b/android/quest/build.gradle.kts @@ -1,5 +1,8 @@ import com.android.build.api.variant.FilterConfiguration.FilterType +import java.io.FileReader import org.gradle.api.tasks.testing.logging.TestLogEvent +import org.json.JSONObject +import kotlin.collections.hashMapOf buildscript { apply(from = "../jacoco.gradle.kts") @@ -302,6 +305,10 @@ tasks.withType { minHeapSize = "4608m" maxHeapSize = "4608m" maxParallelForks = (Runtime.getRuntime().availableProcessors() / 2).takeIf { it > 0 } ?: 1 + + if (!name.toLowerCase().contains("performance")) { + exclude("org.smartregister.fhircore.performance.*") + } } configurations { @@ -369,3 +376,25 @@ dependencies { } ktlint(project(":linting")) } + +task("checkPerformanceLimits") { + val resultsFile = File("performance-results.json") + val expectationsFile = File("expected-results.json") + + // Read the expectations file + val expectedResultsMap : HashMap> = hashMapOf() + + JSONObject(FileReader(expectationsFile).readText()).run { + keys().forEach { key -> + val resultMaxDeltaMap :HashMap = hashMapOf() + val methodExpectedResults = this.getJSONObject("key") + + methodExpectedResults.keys().forEach { expectedResultsKey -> + resultMaxDeltaMap.put(expectedResultsKey, methodExpectedResults.getFloat(expectedResultsKey)) + } + } + } + + // Loop through the results file updating the results + JSONObject +} \ No newline at end of file diff --git a/android/quest/expected-results.json b/android/quest/expected-results.json new file mode 100644 index 0000000000..6594789142 --- /dev/null +++ b/android/quest/expected-results.json @@ -0,0 +1,6 @@ +{ + "HouseholdRegisterPerformanceTests2#benchmarkPage0": { + "max": 6.8054019E7, + "delta": 1.8054019E7 + } +} \ No newline at end of file diff --git a/android/quest/src/androidTest/java/org/smartregister/fhircore/performance/ChildRegisterPerformanceTests.kt b/android/quest/src/androidTest/java/org/smartregister/fhircore/performance/ChildRegisterPerformanceTests.kt new file mode 100644 index 0000000000..6290b28d14 --- /dev/null +++ b/android/quest/src/androidTest/java/org/smartregister/fhircore/performance/ChildRegisterPerformanceTests.kt @@ -0,0 +1,116 @@ +package org.smartregister.fhircore.performance + +import androidx.benchmark.junit4.BenchmarkRule +import androidx.benchmark.junit4.measureRepeated +import androidx.test.platform.app.InstrumentationRegistry +import dagger.hilt.android.testing.HiltAndroidRule +import dagger.hilt.android.testing.HiltAndroidTest +import java.io.File +import java.nio.file.Files +import javax.inject.Inject +import kotlin.io.path.Path +import kotlinx.coroutines.runBlocking +import org.junit.Before +import org.junit.Rule +import org.junit.Test +import org.smartregister.fhircore.engine.data.local.DefaultRepository +import org.smartregister.fhircore.engine.data.local.register.RegisterRepository +import timber.log.Timber + +@HiltAndroidTest +class ChildRegisterPerformanceTests { + + @get:Rule val benchmarkRule = BenchmarkRule() + + @Inject lateinit var defaultRepository: DefaultRepository + @Inject lateinit var registerRepository: RegisterRepository + + @get:Rule val hiltRule = HiltAndroidRule(this) + + @Before + fun setUp() { + hiltRule.inject() + + if (InstrumentationRegistry.getInstrumentation().context.externalCacheDir == null) { + Timber.e("Instrumentation registry is null") + } else { + Timber.e("Instrumentation registry is NOT NULL") + } + // Might need to login + + runBlocking { + defaultRepository.configurationRegistry.loadConfigurations( + "app/debug", + InstrumentationRegistry.getInstrumentation().targetContext + ) { loadConfigSuccessful -> + } + } + + // Copy over the db + val appContext = InstrumentationRegistry.getInstrumentation().targetContext + val testContext = InstrumentationRegistry.getInstrumentation().context + + val resourcesDbInputStream = testContext.assets.open("resources.db") + + // Delete the database files + "/data/data/${appContext.packageName}/databases/resources.db".deleteFileIsExists() + "/data/data/${appContext.packageName}/databases/resources.db-shm".deleteFileIsExists() + "/data/data/${appContext.packageName}/databases/resources.db-wal".deleteFileIsExists() + + // Copy over the db + Files.copy( + resourcesDbInputStream, + Path("/data/data/${appContext.packageName}/databases/resources.db") + ) + } + + @Test + fun benchmarkPage0() { + benchmarkingFunctionality(0) + } + + @Test + fun benchmarkPage1() { + benchmarkingFunctionality(0) + } + + @Test + fun benchmarkPage2() { + benchmarkingFunctionality(1) + } + + @Test + fun benchmarkPage3() { + benchmarkingFunctionality(2) + } + + @Test + fun benchmarkPage4() { + benchmarkingFunctionality(3) + } + + @Test + fun benchmarkPage5() { + benchmarkingFunctionality(4) + } + + @Test + fun benchmarkPage6() { + benchmarkingFunctionality(5) + } + + fun benchmarkingFunctionality(page: Int) { + benchmarkRule.measureRepeated { + runBlocking { + var repoData = registerRepository.loadRegisterData(page, "childRegister") + System.out.println("Records fetched ${repoData.size}") + } + } + } + + fun String.deleteFileIsExists() { + try { + if (File(this).exists()) Files.delete(Path(this)) + } catch (ex: NoSuchFileException) {} + } +} diff --git a/android/quest/src/androidTest/java/org/smartregister/fhircore/performance/HouseholdRegisterPerformanceTests.kt b/android/quest/src/androidTest/java/org/smartregister/fhircore/performance/HouseholdRegisterPerformanceTests.kt new file mode 100644 index 0000000000..71715d624e --- /dev/null +++ b/android/quest/src/androidTest/java/org/smartregister/fhircore/performance/HouseholdRegisterPerformanceTests.kt @@ -0,0 +1,122 @@ +package org.smartregister.fhircore.performance + +import androidx.benchmark.junit4.BenchmarkRule +import androidx.benchmark.junit4.measureRepeated +import androidx.test.platform.app.InstrumentationRegistry +import dagger.hilt.android.testing.HiltAndroidRule +import dagger.hilt.android.testing.HiltAndroidTest +import java.io.File +import java.nio.file.Files +import javax.inject.Inject +import kotlin.io.path.Path +import kotlinx.coroutines.runBlocking +import org.junit.Before +import org.junit.Rule +import org.junit.Test +import org.smartregister.fhircore.engine.data.local.DefaultRepository +import org.smartregister.fhircore.engine.data.local.register.RegisterRepository +import timber.log.Timber + + +@HiltAndroidTest +class HouseholdRegisterPerformanceTests { + + @get:Rule val benchmarkRule = BenchmarkRule() + + @Inject lateinit var defaultRepository: DefaultRepository + @Inject lateinit var registerRepository: RegisterRepository + + @get:Rule val hiltRule = HiltAndroidRule(this) + + @Before + fun setUp() { + hiltRule.inject() + + if (InstrumentationRegistry.getInstrumentation().context.externalCacheDir == null) { + Timber.e("Instrumentation registry is null") + } else { + Timber.e("Instrumentation registry is NOT NULL") + } + // Might need to login + + runBlocking { + defaultRepository.configurationRegistry.loadConfigurations( + "app/debug", + InstrumentationRegistry.getInstrumentation().targetContext + ) { loadConfigSuccessful -> + } + } + + // Copy over the db + val appContext = InstrumentationRegistry.getInstrumentation().targetContext + val testContext = InstrumentationRegistry.getInstrumentation().context + + val resourcesDbInputStream = testContext.assets.open("resources.db") + + // Delete the database files + "/data/data/${appContext.packageName}/databases/resources.db".deleteFileIsExists() + "/data/data/${appContext.packageName}/databases/resources.db-shm".deleteFileIsExists() + "/data/data/${appContext.packageName}/databases/resources.db-wal".deleteFileIsExists() + + // Copy over the db + Files.copy( + resourcesDbInputStream, + Path("/data/data/${appContext.packageName}/databases/resources.db") + ) + } + + + + @Test + fun benchmarkPage0() { + benchmarkingFunctionality(0) + } + + @Test + fun benchmarkPage1() { + benchmarkingFunctionality(0) + } + + + @Test + fun benchmarkPage2() { + benchmarkingFunctionality(1) + } + + + @Test + fun benchmarkPage3() { + benchmarkingFunctionality(2) + } + + @Test + fun benchmarkPage4() { + benchmarkingFunctionality(3) + } + + @Test + fun benchmarkPage5() { + benchmarkingFunctionality(4) + } + + @Test + fun benchmarkPage6() { + benchmarkingFunctionality(5) + } + + fun benchmarkingFunctionality(page: Int) { + benchmarkRule.measureRepeated { + + runBlocking { + val repoData = registerRepository.loadRegisterData(page, "householdRegister") + System.out.println("Records fetched ${repoData.size}") + } + } + } + + fun String.deleteFileIsExists() { + try { + if (File(this).exists()) Files.delete(Path(this)) + } catch (ex: NoSuchFileException) {} + } +} diff --git a/android/quest/src/androidTest/java/org/smartregister/fhircore/performance/HouseholdRegisterPerformanceTests2.kt b/android/quest/src/androidTest/java/org/smartregister/fhircore/performance/HouseholdRegisterPerformanceTests2.kt new file mode 100644 index 0000000000..57d6e17ce8 --- /dev/null +++ b/android/quest/src/androidTest/java/org/smartregister/fhircore/performance/HouseholdRegisterPerformanceTests2.kt @@ -0,0 +1,90 @@ +package org.smartregister.fhircore.performance + +import androidx.benchmark.junit4.BenchmarkRule +import androidx.benchmark.junit4.measureRepeated +import androidx.test.platform.app.InstrumentationRegistry +import dagger.hilt.android.testing.HiltAndroidRule +import dagger.hilt.android.testing.HiltAndroidTest +import java.io.File +import java.nio.file.Files +import javax.inject.Inject +import kotlin.io.path.Path +import kotlinx.coroutines.runBlocking +import org.junit.Before +import org.junit.Rule +import org.junit.Test +import org.smartregister.fhircore.engine.data.local.DefaultRepository +import org.smartregister.fhircore.engine.data.local.register.RegisterRepository +import timber.log.Timber + + +@HiltAndroidTest +class HouseholdRegisterPerformanceTests2 { + + @get:Rule val benchmarkRule = BenchmarkRule() + + @Inject lateinit var defaultRepository: DefaultRepository + @Inject lateinit var registerRepository: RegisterRepository + + @get:Rule val hiltRule = HiltAndroidRule(this) + + @Before + fun setUp() { + hiltRule.inject() + + if (InstrumentationRegistry.getInstrumentation().context.externalCacheDir == null) { + Timber.e("Instrumentation registry is null") + } else { + Timber.e("Instrumentation registry is NOT NULL") + } + // Might need to login + + runBlocking { + defaultRepository.configurationRegistry.loadConfigurations( + "app/debug", + InstrumentationRegistry.getInstrumentation().targetContext + ) { loadConfigSuccessful -> + } + } + + // Copy over the db + val appContext = InstrumentationRegistry.getInstrumentation().targetContext + val testContext = InstrumentationRegistry.getInstrumentation().context + + val resourcesDbInputStream = testContext.assets.open("resources.db") + + // Delete the database files + "/data/data/${appContext.packageName}/databases/resources.db".deleteFileIsExists() + "/data/data/${appContext.packageName}/databases/resources.db-shm".deleteFileIsExists() + "/data/data/${appContext.packageName}/databases/resources.db-wal".deleteFileIsExists() + + // Copy over the db + Files.copy( + resourcesDbInputStream, + Path("/data/data/${appContext.packageName}/databases/resources.db") + ) + } + + + + @Test + fun benchmarkPage0() { + benchmarkingFunctionality(0) + } + + fun benchmarkingFunctionality(page: Int) { + benchmarkRule.measureRepeated { + + runBlocking { + val repoData = registerRepository.loadRegisterData(page, "householdRegister") + System.out.println("Records fetched ${repoData.size}") + } + } + } + + fun String.deleteFileIsExists() { + try { + if (File(this).exists()) Files.delete(Path(this)) + } catch (ex: NoSuchFileException) {} + } +} diff --git a/android/quest/src/androidTest/java/org/smartregister/fhircore/performance/RegisterPerformanceTest.kt b/android/quest/src/androidTest/java/org/smartregister/fhircore/performance/RegisterPerformanceTest.kt new file mode 100644 index 0000000000..08a90d93e5 --- /dev/null +++ b/android/quest/src/androidTest/java/org/smartregister/fhircore/performance/RegisterPerformanceTest.kt @@ -0,0 +1,7 @@ +package org.smartregister.fhircore.performance + +/** + * Created by Ephraim Kigamba - nek.eam@gmail.com on 14-07-2023. + */ +class RegisterPerformanceTest { +} \ No newline at end of file diff --git a/android/quest/src/androidTest/java/org/smartregister/fhircore/quest/performance/DefaultRepositoryPerformanceTests.kt b/android/quest/src/androidTest/java/org/smartregister/fhircore/quest/performance/DefaultRepositoryPerformanceTests.kt deleted file mode 100644 index b266ae33ff..0000000000 --- a/android/quest/src/androidTest/java/org/smartregister/fhircore/quest/performance/DefaultRepositoryPerformanceTests.kt +++ /dev/null @@ -1,80 +0,0 @@ -package org.smartregister.fhircore.quest.performance - -import androidx.benchmark.junit4.BenchmarkRule -import androidx.benchmark.junit4.measureRepeated -import androidx.test.ext.junit.runners.AndroidJUnit4 -import androidx.test.platform.app.InstrumentationRegistry -import dagger.hilt.android.testing.HiltAndroidRule -import dagger.hilt.android.testing.HiltAndroidTest -import kotlinx.coroutines.runBlocking -import org.junit.Before -import org.junit.Rule -import org.junit.Test -import org.junit.runner.RunWith -import org.smartregister.fhircore.engine.R -import org.smartregister.fhircore.engine.data.local.DefaultRepository -import org.smartregister.fhircore.engine.data.local.register.RegisterRepository -import org.smartregister.fhircore.engine.util.SharedPreferenceKey -import org.smartregister.fhircore.engine.util.extension.getActivity -import org.smartregister.fhircore.engine.util.extension.launchActivityWithNoBackStackHistory -import org.smartregister.fhircore.quest.QuestTestRunner -import org.smartregister.fhircore.quest.ui.login.LoginActivity -import timber.log.Timber -import javax.inject.Inject - - -/** - * Created by Ephraim Kigamba - nek.eam@gmail.com on 11-07-2023. - */ -//@RunWith(AndroidJUnit4::class) -@HiltAndroidTest -class DefaultRepositoryPerformanceTests { - - @get:Rule - val benchmarkRule = BenchmarkRule() - - @Inject lateinit var defaultRepository: DefaultRepository - @Inject lateinit var registerRepository: RegisterRepository - - - @get:Rule val hiltRule = HiltAndroidRule(this) - - @Before - fun setUp() { - hiltRule.inject() - - if (InstrumentationRegistry.getInstrumentation().context.externalCacheDir == null ) { - Timber.e("Instrumentation registry is null") - } else { - Timber.e("Instrumentation registry is NOT NULL") - } - - runBlocking { - defaultRepository.configurationRegistry.loadConfigurations("app/debug", InstrumentationRegistry.getInstrumentation().targetContext) { loadConfigSuccessful -> - - /*if (loadConfigSuccessful) { - sharedPreferencesHelper.write(SharedPreferenceKey.APP_ID.name, thisAppId) - context.getActivity()?.launchActivityWithNoBackStackHistory() - } else { - _error.postValue(context.getString(R.string.application_not_supported, appId.value)) - }*/ - } - } - - // Plant Timber tree to print in the console - - Timber.plant(Timber.DebugTree()) - } - - @Test - fun benchmarkSomeWork() { - benchmarkRule.measureRepeated { - //registerRepository.retrieveRegisterConfiguration("householdRegister", hashMapOf()) - - runBlocking { - val repoData = registerRepository.loadRegisterData(0, "householdRegister") - System.out.println("Records fetched ${repoData.size}") - } - } - } -} diff --git a/android/quest/src/main/assets/configs/app/registers/household_register_config.json b/android/quest/src/main/assets/configs/app/registers/household_register_config.json index d042945cf8..99648b098f 100644 --- a/android/quest/src/main/assets/configs/app/registers/household_register_config.json +++ b/android/quest/src/main/assets/configs/app/registers/household_register_config.json @@ -2,7 +2,7 @@ "appId": "app", "configType": "register", "id": "householdRegister", - "pageSize": 20, + "pageSize": 1, "fhirResource": { "baseResource": { "resource": "Group",