[#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 <rychnovsky.honza@gmail.com>
This commit is contained in:
parent
a806d2defa
commit
9b966b4087
|
@ -26,18 +26,6 @@
|
||||||
android:shell="true"
|
android:shell="true"
|
||||||
tools:targetApi="29" />
|
tools:targetApi="29" />
|
||||||
|
|
||||||
<!-- To bypass "The DROP_SHADER_CACHE broadcast was not received." error while benchmarking the app. See
|
|
||||||
https://issuetracker.google.com/issues/258619948 -->
|
|
||||||
<receiver
|
|
||||||
android:name="androidx.profileinstaller.ProfileInstallReceiver"
|
|
||||||
android:permission="android.permission.DUMP"
|
|
||||||
android:exported="true">
|
|
||||||
<intent-filter>
|
|
||||||
<action
|
|
||||||
android:name="androidx.profileinstaller.action.BENCHMARK_OPERATION" />
|
|
||||||
</intent-filter>
|
|
||||||
</receiver>
|
|
||||||
|
|
||||||
</application>
|
</application>
|
||||||
|
|
||||||
</manifest>
|
</manifest>
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
<resources>
|
|
||||||
<!-- Important; this is the resource overlay that sets the Zcash network -->
|
|
||||||
<string name="network_name">Testnet</string>
|
|
||||||
</resources>
|
|
|
@ -6,6 +6,7 @@ import kotlinx.collections.immutable.PersistentList
|
||||||
import kotlinx.collections.immutable.toPersistentList
|
import kotlinx.collections.immutable.toPersistentList
|
||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
import kotlinx.coroutines.flow.combine
|
import kotlinx.coroutines.flow.combine
|
||||||
|
import kotlinx.coroutines.flow.flowOf
|
||||||
import kotlinx.datetime.Instant
|
import kotlinx.datetime.Instant
|
||||||
|
|
||||||
class MergingConfigurationProvider(private val configurationProviders: PersistentList<ConfigurationProvider>) : ConfigurationProvider {
|
class MergingConfigurationProvider(private val configurationProviders: PersistentList<ConfigurationProvider>) : ConfigurationProvider {
|
||||||
|
@ -14,8 +15,12 @@ class MergingConfigurationProvider(private val configurationProviders: Persisten
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getConfigurationFlow(): Flow<Configuration> {
|
override fun getConfigurationFlow(): Flow<Configuration> {
|
||||||
return combine(configurationProviders.map { it.getConfigurationFlow() }) { configurations ->
|
return if (configurationProviders.isEmpty()) {
|
||||||
MergingConfiguration(configurations.toList().toPersistentList())
|
flowOf(MergingConfiguration(emptyList<Configuration>().toPersistentList()))
|
||||||
|
} else {
|
||||||
|
combine(configurationProviders.map { it.getConfigurationFlow() }) { configurations ->
|
||||||
|
MergingConfiguration(configurations.toList().toPersistentList())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@ import co.electriccoin.zcash.configuration.model.map.StringConfiguration
|
||||||
import co.electriccoin.zcash.configuration.test.fixture.BooleanDefaultEntryFixture
|
import co.electriccoin.zcash.configuration.test.fixture.BooleanDefaultEntryFixture
|
||||||
import kotlinx.collections.immutable.persistentListOf
|
import kotlinx.collections.immutable.persistentListOf
|
||||||
import kotlinx.collections.immutable.persistentMapOf
|
import kotlinx.collections.immutable.persistentMapOf
|
||||||
|
import kotlinx.collections.immutable.toPersistentList
|
||||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
import kotlinx.coroutines.flow.first
|
import kotlinx.coroutines.flow.first
|
||||||
|
@ -41,6 +42,18 @@ class MergingConfigurationProviderTest {
|
||||||
assertTrue(BooleanDefaultEntryFixture.newTrueEntry().getValue(configurationProvider.getConfigurationFlow().first()))
|
assertTrue(BooleanDefaultEntryFixture.newTrueEntry().getValue(configurationProvider.getConfigurationFlow().first()))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@OptIn(ExperimentalCoroutinesApi::class)
|
||||||
|
fun getFlow_empty() = runTest {
|
||||||
|
val configurationProvider = MergingConfigurationProvider(
|
||||||
|
emptyList<ConfigurationProvider>().toPersistentList()
|
||||||
|
)
|
||||||
|
|
||||||
|
val firstMergedConfiguration = configurationProvider.getConfigurationFlow().first()
|
||||||
|
|
||||||
|
assertTrue(BooleanDefaultEntryFixture.newTrueEntry().getValue(firstMergedConfiguration))
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@OptIn(ExperimentalCoroutinesApi::class)
|
@OptIn(ExperimentalCoroutinesApi::class)
|
||||||
fun getUpdatedAt_newest() = runTest {
|
fun getUpdatedAt_newest() = runTest {
|
||||||
|
|
|
@ -62,8 +62,8 @@ commits of that date. Generate tests results with the Android Studio run configu
|
||||||
Starting 1 tests on Pixel 6 - 13
|
Starting 1 tests on Pixel 6 - 13
|
||||||
|
|
||||||
BasicStartupBenchmark_startup
|
BasicStartupBenchmark_startup
|
||||||
timeToFullDisplayMs 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
|
timeToInitialDisplayMs min 288.1, median 305.6, max 339.1
|
||||||
Traces: Iteration 0 1 2 3 4
|
Traces: Iteration 0 1 2 3 4
|
||||||
|
|
||||||
BUILD SUCCESSFUL in 32s
|
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
|
Traces: Iteration 0 1 2 3 4
|
||||||
|
|
||||||
BUILD SUCCESSFUL in 41s
|
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
|
||||||
```
|
```
|
|
@ -126,7 +126,7 @@ ANDROIDX_CORE_VERSION=1.9.0
|
||||||
ANDROIDX_ESPRESSO_VERSION=3.5.1
|
ANDROIDX_ESPRESSO_VERSION=3.5.1
|
||||||
ANDROIDX_LIFECYCLE_VERSION=2.6.0-alpha04
|
ANDROIDX_LIFECYCLE_VERSION=2.6.0-alpha04
|
||||||
ANDROIDX_NAVIGATION_COMPOSE_VERSION=2.5.3
|
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_SECURITY_CRYPTO_VERSION=1.1.0-alpha04
|
||||||
ANDROIDX_SPLASH_SCREEN_VERSION=1.0.0
|
ANDROIDX_SPLASH_SCREEN_VERSION=1.0.0
|
||||||
ANDROIDX_TEST_JUNIT_VERSION=1.1.5
|
ANDROIDX_TEST_JUNIT_VERSION=1.1.5
|
||||||
|
|
Loading…
Reference in New Issue