From 9b966b408730245051f0dee67a48cbb3b69da027 Mon Sep 17 00:00:00 2001 From: Carter Jernigan Date: Mon, 27 Feb 2023 11:28:41 -0500 Subject: [PATCH] [#776] Fix hang on launch Combining multiple flows will hang if the group of flows is empty - Updated profile installer lib - Removed benchmark operations receiver fix - Added new benchmark results --------- Co-authored-by: Honza --- app/src/main/AndroidManifest.xml | 12 ------- app/src/zcashtestnet/res/values/strings.xml | 4 --- .../api/MergingConfigurationProvider.kt | 9 +++-- .../api/MergingConfigurationProviderTest.kt | 13 ++++++++ docs/testing/Testing.md | 33 +++++++++++++++++-- gradle.properties | 2 +- 6 files changed, 52 insertions(+), 21 deletions(-) delete mode 100644 app/src/zcashtestnet/res/values/strings.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index fe5c523f..820912b5 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -26,18 +26,6 @@ android:shell="true" tools:targetApi="29" /> - - - - - - - diff --git a/app/src/zcashtestnet/res/values/strings.xml b/app/src/zcashtestnet/res/values/strings.xml deleted file mode 100644 index 89d75f73..00000000 --- a/app/src/zcashtestnet/res/values/strings.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - Testnet - diff --git a/configuration-api-lib/src/commonMain/kotlin/co/electriccoin/zcash/configuration/api/MergingConfigurationProvider.kt b/configuration-api-lib/src/commonMain/kotlin/co/electriccoin/zcash/configuration/api/MergingConfigurationProvider.kt index f2a8fa8c..dcd8c30b 100644 --- a/configuration-api-lib/src/commonMain/kotlin/co/electriccoin/zcash/configuration/api/MergingConfigurationProvider.kt +++ b/configuration-api-lib/src/commonMain/kotlin/co/electriccoin/zcash/configuration/api/MergingConfigurationProvider.kt @@ -6,6 +6,7 @@ import kotlinx.collections.immutable.PersistentList import kotlinx.collections.immutable.toPersistentList import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.flowOf import kotlinx.datetime.Instant class MergingConfigurationProvider(private val configurationProviders: PersistentList) : ConfigurationProvider { @@ -14,8 +15,12 @@ class MergingConfigurationProvider(private val configurationProviders: Persisten } override fun getConfigurationFlow(): Flow { - return combine(configurationProviders.map { it.getConfigurationFlow() }) { configurations -> - MergingConfiguration(configurations.toList().toPersistentList()) + return if (configurationProviders.isEmpty()) { + flowOf(MergingConfiguration(emptyList().toPersistentList())) + } else { + combine(configurationProviders.map { it.getConfigurationFlow() }) { configurations -> + MergingConfiguration(configurations.toList().toPersistentList()) + } } } diff --git a/configuration-api-lib/src/commonTest/kotlin/co/electriccoin/zcash/configuration/api/MergingConfigurationProviderTest.kt b/configuration-api-lib/src/commonTest/kotlin/co/electriccoin/zcash/configuration/api/MergingConfigurationProviderTest.kt index ee5a6a63..17edf856 100644 --- a/configuration-api-lib/src/commonTest/kotlin/co/electriccoin/zcash/configuration/api/MergingConfigurationProviderTest.kt +++ b/configuration-api-lib/src/commonTest/kotlin/co/electriccoin/zcash/configuration/api/MergingConfigurationProviderTest.kt @@ -5,6 +5,7 @@ import co.electriccoin.zcash.configuration.model.map.StringConfiguration import co.electriccoin.zcash.configuration.test.fixture.BooleanDefaultEntryFixture import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.persistentMapOf +import kotlinx.collections.immutable.toPersistentList import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.first @@ -41,6 +42,18 @@ class MergingConfigurationProviderTest { assertTrue(BooleanDefaultEntryFixture.newTrueEntry().getValue(configurationProvider.getConfigurationFlow().first())) } + @Test + @OptIn(ExperimentalCoroutinesApi::class) + fun getFlow_empty() = runTest { + val configurationProvider = MergingConfigurationProvider( + emptyList().toPersistentList() + ) + + val firstMergedConfiguration = configurationProvider.getConfigurationFlow().first() + + assertTrue(BooleanDefaultEntryFixture.newTrueEntry().getValue(firstMergedConfiguration)) + } + @Test @OptIn(ExperimentalCoroutinesApi::class) fun getUpdatedAt_newest() = runTest { diff --git a/docs/testing/Testing.md b/docs/testing/Testing.md index a0777100..bb5d1fb6 100644 --- a/docs/testing/Testing.md +++ b/docs/testing/Testing.md @@ -62,8 +62,8 @@ commits of that date. Generate tests results with the Android Studio run configu Starting 1 tests on Pixel 6 - 13 BasicStartupBenchmark_startup - timeToFullDisplayMs min 288,1, median 305,6, max 339,1 - timeToInitialDisplayMs min 288,1, median 305,6, max 339,1 + timeToFullDisplayMs min 288.1, median 305.6, max 339.1 + timeToInitialDisplayMs min 288.1, median 305.6, max 339.1 Traces: Iteration 0 1 2 3 4 BUILD SUCCESSFUL in 32s @@ -78,4 +78,33 @@ commits of that date. Generate tests results with the Android Studio run configu Traces: Iteration 0 1 2 3 4 BUILD SUCCESSFUL in 41s + ``` + +#### Feb 27, 2023: + +- APP version: `0.1 (1)` +- SDK version: `1.14.0-beta01-SNAPSHOT` +- Git branch: `main` +- Device: + - Pixel 6 - Android 13: + ``` + Starting 1 tests on Pixel 6 - 13 + + BasicStartupBenchmark_startup + timeToFullDisplayMs min 259.2, median 265.3, max 302.4 + timeToInitialDisplayMs min 259.2, median 265.3, max 302.4 + Traces: Iteration 0 1 2 3 4 + + BUILD SUCCESSFUL in 1m 59s + ``` + - Pixel 3a - Android 12: + ``` + Starting 1 tests on Pixel 3a - 12 + + BasicStartupBenchmark_startup + timeToFullDisplayMs min 632.2, median 730.8, max 785.6 + timeToInitialDisplayMs min 632.2, median 730.8, max 785.6 + Traces: Iteration 0 1 2 3 4 + + BUILD SUCCESSFUL in 43s ``` \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 9b06eb4c..e7a4534b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -126,7 +126,7 @@ ANDROIDX_CORE_VERSION=1.9.0 ANDROIDX_ESPRESSO_VERSION=3.5.1 ANDROIDX_LIFECYCLE_VERSION=2.6.0-alpha04 ANDROIDX_NAVIGATION_COMPOSE_VERSION=2.5.3 -ANDROIDX_PROFILE_INSTALLER_VERSION=1.3.0-alpha03 +ANDROIDX_PROFILE_INSTALLER_VERSION=1.3.0-beta01 ANDROIDX_SECURITY_CRYPTO_VERSION=1.1.0-alpha04 ANDROIDX_SPLASH_SCREEN_VERSION=1.0.0 ANDROIDX_TEST_JUNIT_VERSION=1.1.5