Fix benchmark tests.

This commit is contained in:
Cody Henthorne
2026-02-06 10:22:45 -05:00
committed by Greyson Parrelli
parent c565db812e
commit 09c07f0707
12 changed files with 211 additions and 27 deletions

View File

@@ -23,6 +23,7 @@ import org.thoughtcrime.securesms.registration.data.LocalRegistrationMetadataUti
import org.thoughtcrime.securesms.registration.data.RegistrationData
import org.thoughtcrime.securesms.registration.data.RegistrationRepository
import org.thoughtcrime.securesms.registration.util.RegistrationUtil
import org.thoughtcrime.securesms.util.TextSecurePreferences
import org.thoughtcrime.securesms.util.Util
import org.whispersystems.signalservice.api.profiles.SignalServiceProfile
import org.whispersystems.signalservice.api.push.SignalServiceAddress
@@ -76,7 +77,7 @@ object TestUsers {
SignalStore.registration.restoreDecisionState = RestoreDecisionState.Skipped
RegistrationUtil.maybeMarkRegistrationComplete()
SignalDatabase.recipients.setProfileName(Recipient.self().id, ProfileName.fromParts("Tester", "McTesterson"))
TextSecurePreferences.setPromptedOptimizeDoze(application, true)
return Recipient.self()
}

View File

@@ -11,7 +11,7 @@ object Environment {
const val IS_STAGING: Boolean = BuildConfig.BUILD_ENVIRONMENT_TYPE == "Staging" || BuildConfig.BUILD_ENVIRONMENT_TYPE == "Pnp" || BuildConfig.BUILD_ENVIRONMENT_TYPE == "Backup"
const val IS_NIGHTLY: Boolean = BuildConfig.BUILD_DISTRIBUTION_TYPE == "nightly"
const val IS_WEBSITE: Boolean = BuildConfig.BUILD_DISTRIBUTION_TYPE == "website"
const val IS_INSTRUMENTATION: Boolean = BuildConfig.BUILD_VARIANT_TYPE == "Instrumentation"
const val IS_INSTRUMENTATION: Boolean = BuildConfig.BUILD_VARIANT_TYPE == "Instrumentation" || BuildConfig.BUILD_VARIANT_TYPE == "Benchmark"
object Backups {
@JvmStatic

View File

@@ -1,21 +1,15 @@
package org.thoughtcrime.securesms.util
import org.thoughtcrime.securesms.BuildConfig
import java.util.concurrent.Executors
import androidx.tracing.Trace as AndroidTrace
object SignalTrace {
private val executor by lazy(LazyThreadSafetyMode.NONE) {
Executors.newSingleThreadExecutor()
}
@JvmStatic
fun beginSection(methodName: String) {
if (!BuildConfig.TRACING_ENABLED) {
return
}
executor.execute { AndroidTrace.beginSection(methodName) }
AndroidTrace.beginSection(methodName)
}
@JvmStatic
@@ -23,6 +17,6 @@ object SignalTrace {
if (!BuildConfig.TRACING_ENABLED) {
return
}
executor.execute { AndroidTrace.endSection() }
AndroidTrace.endSection()
}
}

View File

@@ -32,6 +32,8 @@ android {
missingDimensionStrategy("environment", "prod")
missingDimensionStrategy("distribution", "play")
testInstrumentationRunnerArguments["androidx.benchmark.suppressErrors"] = "EMULATOR"
}
buildTypes {

View File

@@ -1,8 +1,6 @@
@file:OptIn(ExperimentalBaselineProfilesApi::class)
package org.thoughtcrime.benchmark
import androidx.benchmark.macro.ExperimentalBaselineProfilesApi
import androidx.annotation.RequiresApi
import androidx.benchmark.macro.junit4.BaselineProfileRule
import androidx.test.uiautomator.By
import androidx.test.uiautomator.Until
@@ -16,7 +14,7 @@ import org.junit.Test
* - start the app
* - open a conversation
*/
@OptIn(ExperimentalBaselineProfilesApi::class)
@RequiresApi(28)
class BaselineProfileGenerator {
@get:Rule
val baselineProfileRule = BaselineProfileRule()
@@ -24,7 +22,7 @@ class BaselineProfileGenerator {
@Test
fun startup() {
var setup = false
baselineProfileRule.collectBaselineProfile(
baselineProfileRule.collect(
packageName = "org.thoughtcrime.securesms",
profileBlock = {
if (!setup) {

View File

@@ -2,6 +2,7 @@ package org.thoughtcrime.benchmark
import android.Manifest
import android.os.Build
import androidx.annotation.RequiresApi
import androidx.benchmark.macro.CompilationMode
import androidx.benchmark.macro.ExperimentalMetricApi
import androidx.benchmark.macro.TraceSectionMetric
@@ -14,6 +15,7 @@ import org.junit.Test
import org.junit.runner.RunWith
@RunWith(AndroidJUnit4::class)
@RequiresApi(31)
class ConversationBenchmarks {
@get:Rule
val benchmarkRule = MacrobenchmarkRule()

View File

@@ -1,5 +1,6 @@
package org.thoughtcrime.benchmark
import androidx.annotation.RequiresApi
import androidx.benchmark.macro.CompilationMode
import androidx.benchmark.macro.ExperimentalMetricApi
import androidx.benchmark.macro.StartupMode
@@ -17,6 +18,7 @@ import org.junit.runner.RunWith
* WARNING! THIS WILL WIPE YOUR SIGNAL INSTALL
*/
@RunWith(AndroidJUnit4::class)
@RequiresApi(31)
class StartupBenchmarks {
@get:Rule
val benchmarkRule = MacrobenchmarkRule()

View File

@@ -2,12 +2,12 @@
# ./gradlew --write-verification-metadata sha256 qa --rerun-tasks
[versions]
androidx-test-ext-junit = "1.1.5"
androidx-test-ext-junit = "1.3.0"
[libraries]
# Macrobench/Baseline profiles
androidx-test-ext-junit = { module = "androidx.test.ext:junit", version.ref = "androidx-test-ext-junit" }
espresso-core = "androidx.test.espresso:espresso-core:3.4.0"
uiautomator = "androidx.test.uiautomator:uiautomator:2.2.0"
androidx-benchmark-macro = "androidx.benchmark:benchmark-macro-junit4:1.1.1"
androidx-benchmark-micro = "androidx.benchmark:benchmark-junit4:1.1.0-beta04"
espresso-core = "androidx.test.espresso:espresso-core:3.7.0"
uiautomator = "androidx.test.uiautomator:uiautomator:2.3.0"
androidx-benchmark-macro = "androidx.benchmark:benchmark-macro-junit4:1.4.1"
androidx-benchmark-micro = "androidx.benchmark:benchmark-junit4:1.4.1"

View File

@@ -290,6 +290,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
<sha256 value="4c84feee2db891ff6b97d613a0d40ab96ce297b034a6927ca8479f09e82d7c2e" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.annotation" name="annotation" version="1.7.0">
<artifact name="annotation-1.7.0.module">
<sha256 value="530708656d380605077ea8bca9ae1372fbd1af38e375f411d4e43263bd510c3c" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.annotation" name="annotation" version="1.7.0-beta01">
<artifact name="annotation-1.7.0-beta01.module">
<md5 value="71fb81e9c444a58ba34f9e9ccdbb4aca" origin="Generated by Gradle"/>
@@ -411,6 +416,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
<sha256 value="61514762e567b50287f2d8792698a5f46eb9a73a4b336f0e4e25dbd7a9c980dd" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.annotation" name="annotation-jvm" version="1.8.1">
<artifact name="annotation-jvm-1.8.1.jar">
<sha256 value="9aab326d9492800991854360ac248f493ce7f7c3183519309b78ace9e240f6f6" origin="Generated by Gradle"/>
</artifact>
<artifact name="annotation-jvm-1.8.1.module">
<sha256 value="c959e3b0cdc75c15efe01605fa56aa79f033e39238e150638b8fabde6aa121a0" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.annotation" name="annotation-jvm" version="1.9.1">
<artifact name="annotation-jvm-1.9.1.jar">
<md5 value="01d6a04b3b9847638d000529df8ef76a" origin="Generated by Gradle"/>
@@ -583,6 +596,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
<sha256 value="62198ddb35ec8370f061950481f874c96ad986d8228f2bd7fb501cc3b7075070" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.benchmark" name="benchmark-common" version="1.4.1">
<artifact name="benchmark-common-1.4.1.aar">
<sha256 value="54fad42120f3c4a9319c9b11ad37733a22a0dca92977ce4bfa33be6e6313c2b9" origin="Generated by Gradle"/>
</artifact>
<artifact name="benchmark-common-1.4.1.module">
<sha256 value="9bd34157785fd87c8b27d0fa52fc4b02deaf46c1e2cbf0415f183f56692348ea" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.benchmark" name="benchmark-gradle-plugin" version="1.3.3">
<artifact name="benchmark-gradle-plugin-1.3.3.jar">
<md5 value="a84527ed1917837f58ca95a1d82c18c3" origin="Generated by Gradle"/>
@@ -607,6 +628,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
<sha256 value="e6c8b5a5b5904ee2e1f62ffb3472af4007197f429acb42003939703581056a14" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.benchmark" name="benchmark-junit4" version="1.4.1">
<artifact name="benchmark-junit4-1.4.1.aar">
<sha256 value="035c2393aa416b98ed8979d751119518a03da0a00f4a5529eb21a3eeed6b0183" origin="Generated by Gradle"/>
</artifact>
<artifact name="benchmark-junit4-1.4.1.module">
<sha256 value="4fef9ef05d4888d1e4fbd5f51cb463c80288fe324145bd54b046540b90d68b71" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.benchmark" name="benchmark-macro" version="1.1.1">
<artifact name="benchmark-macro-1.1.1.aar">
<md5 value="8cb64bc7b28ce16395ddc8512ff74aef" origin="Generated by Gradle"/>
@@ -619,6 +648,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
<sha256 value="714b731ef20da20539d52be597ca030fc81aaa8abded38a8f5d68f69456c509b" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.benchmark" name="benchmark-macro" version="1.4.1">
<artifact name="benchmark-macro-1.4.1.aar">
<sha256 value="d99732de5d713fea47fe7caa3b18438fe615bbb1225e3c6cf0fac48ec350943c" origin="Generated by Gradle"/>
</artifact>
<artifact name="benchmark-macro-1.4.1.module">
<sha256 value="e38d6e3464d9199013bc0a49b2b30c1fbb8cec4642c42a676e66832c68bbc908" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.benchmark" name="benchmark-macro-junit4" version="1.1.1">
<artifact name="benchmark-macro-junit4-1.1.1.aar">
<md5 value="ef3ae8b6190f7a945f7b8ba6f24a538c" origin="Generated by Gradle"/>
@@ -631,6 +668,30 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
<sha256 value="465927d805b76c133994659c94b221e6de1377fe550a1ce09a359bfd6170b92b" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.benchmark" name="benchmark-macro-junit4" version="1.4.1">
<artifact name="benchmark-macro-junit4-1.4.1.aar">
<sha256 value="41595999e2dad5a3e61b9ad74c18d73700c21060b7845df05f28a8fbc9a08b15" origin="Generated by Gradle"/>
</artifact>
<artifact name="benchmark-macro-junit4-1.4.1.module">
<sha256 value="87950c7db96a23b9cff5151d8e8b80e59c7537b53013cdbf77387d79c8687427" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.benchmark" name="benchmark-traceprocessor" version="1.4.1">
<artifact name="benchmark-traceprocessor-1.4.1.module">
<sha256 value="ef9b4701b0428f7eadc3a8a9bf926ac2ef9ec1ce2c96451a13c13de798902d88" origin="Generated by Gradle"/>
</artifact>
<artifact name="benchmark-traceprocessor-metadata-1.4.1.jar">
<sha256 value="ecbd74cf0fc2e8199b3e83e4c108418363ff44c65132ed65ffca4bc279b20682" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.benchmark" name="benchmark-traceprocessor-android" version="1.4.1">
<artifact name="benchmark-traceprocessor-android-1.4.1.module">
<sha256 value="7f4e77215a9ecc80cae72c4c9c0d8f4fcba42fa9bd6af2e2aaa947b58eef65ed" origin="Generated by Gradle"/>
</artifact>
<artifact name="benchmark-traceprocessor.aar">
<sha256 value="b6401616e8a834cf8882204f219433fad4cc91aa63a84e461c2fa14cbaafe16a" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.biometric" name="biometric" version="1.1.0">
<artifact name="biometric-1.1.0.aar">
<md5 value="d0f242864af8614e1516743c8090f21d" origin="Generated by Gradle"/>
@@ -7363,6 +7424,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
<sha256 value="2c06715c0d0843cee2143ab8bb322bb3f34d5247630402fc8c1b6a0eafa15b9f" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.test" name="core" version="1.7.0">
<artifact name="core-1.7.0.aar">
<sha256 value="f4dacd8edceeec48e0c76ecf28339b28f4b4f6b74f8e34e9e59b472c27d9eb81" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.test" name="core-ktx" version="1.5.0">
<artifact name="core-ktx-1.5.0.aar">
<md5 value="4656fb57ea2f6b04536e5ab5dcc2cae8" origin="Generated by Gradle"/>
@@ -7394,6 +7460,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
<sha256 value="868cc120d10d024b886fa157e1e1eaee0e6a8e5d55e7f765ef41d8fc0fea775b" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.test" name="monitor" version="1.8.0">
<artifact name="monitor-1.8.0.aar">
<sha256 value="56cb7496a06d9f2dca7d3ff76c50a8a30bd18e00a24a3b267d5a31437b278e67" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.test" name="orchestrator" version="1.4.1">
<artifact name="orchestrator-1.4.1.apk">
<md5 value="030b3d4eedf98994c10ce565d0897949" origin="Generated by Gradle"/>
@@ -7415,6 +7486,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
<sha256 value="01401cd7d1185530f6081ce503ce611d18d8a483ea15599a16c39f15b2f8e7d8" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.test" name="rules" version="1.5.0">
<artifact name="rules-1.5.0.aar">
<sha256 value="dd645929c63e24f41be8e6f57bb06f305d3b02ed1b2a7d961647027ae1d9e17f" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.test" name="runner" version="1.4.0">
<artifact name="runner-1.4.0.aar">
<md5 value="1106a953de6458609867ed9d5f79410a" origin="Generated by Gradle"/>
@@ -7429,6 +7505,16 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
<sha256 value="b3c5aabd545b6c260528c8f4e7c98f73628614ea3d5df3a7a44af2136fd8720b" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.test" name="runner" version="1.5.2">
<artifact name="runner-1.5.2.aar">
<sha256 value="36cd6bc876daa1f183ccd11f9898e094c71f06960fde85a373422959613a44d6" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.test" name="runner" version="1.7.0">
<artifact name="runner-1.7.0.aar">
<sha256 value="970311c47119928a2e406a88892a3d270387cc5a49a181a1c44511105b41b818" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.test.espresso" name="espresso-core" version="3.4.0">
<artifact name="espresso-core-3.4.0.aar">
<md5 value="73ddc2d5ca1cc3b6f45219134c37eba5" origin="Generated by Gradle"/>
@@ -7443,6 +7529,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
<sha256 value="34b0493f4e002f205d961e562add0c0c31bb0acc657e89d89d4b188ac13f242c" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.test.espresso" name="espresso-core" version="3.7.0">
<artifact name="espresso-core-3.7.0.aar">
<sha256 value="5dd90e366838bf044cb52eae06474debd285df18a7a77c40441ac8e8951bb00f" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.test.espresso" name="espresso-idling-resource" version="3.4.0">
<artifact name="espresso-idling-resource-3.4.0.aar">
<md5 value="219caf558f18847b92451107b567c510" origin="Generated by Gradle"/>
@@ -7471,6 +7562,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
<sha256 value="bc63a8780f1c707724e389f530cb2e1a6847da97f6a8114604c002aba2fd86ca" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.test.espresso" name="espresso-idling-resource" version="3.7.0">
<artifact name="espresso-idling-resource-3.7.0.aar">
<sha256 value="5ff62326b49c308c1d060466ae3cf4aa0e3deaf9295f077a6886048dda3e9b14" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.test.ext" name="junit" version="1.1.3">
<artifact name="junit-1.1.3.aar">
<sha256 value="a97209d75a9a85815fa8934f5a4a320de1163ffe94e2f0b328c0c98a59660690" origin="Generated by Gradle"/>
@@ -7483,6 +7579,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
<sha256 value="4307c0e60f5d701db9c59bcd9115af705113c36a9132fa3dbad58db1294e9bfd" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.test.ext" name="junit" version="1.3.0">
<artifact name="junit-1.3.0.aar">
<sha256 value="3363df84da4540ba8daff02c3f7cd65471037a6a5370591a7e6deba377b36e7f" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.test.ext" name="junit-ktx" version="1.1.5">
<artifact name="junit-ktx-1.1.5.aar">
<md5 value="1433a38a2219fd8a0be19644f88ea546" origin="Generated by Gradle"/>
@@ -7502,6 +7603,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
<sha256 value="b34861f0cd920cb1089f08c3f27e5865b7f920284cc45f4ed12ef8d6980dac48" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.test.services" name="storage" version="1.6.0">
<artifact name="storage-1.6.0.aar">
<sha256 value="f97e3cf6aaf4e3fb97ef219d37a9c0a0720183c1f6db87b37642521e26fb6d30" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.test.services" name="test-services" version="1.4.1">
<artifact name="test-services-1.4.1.apk">
<md5 value="1a4394302266f9222d48a13a0fa11960" origin="Generated by Gradle"/>
@@ -7516,6 +7622,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
<sha256 value="2838e9d961dbffefbbd229a2bd4f6f82ac4fb2462975862a9e75e9ed325a3197" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.test.uiautomator" name="uiautomator" version="2.3.0">
<artifact name="uiautomator-2.3.0.aar">
<sha256 value="884c675c336b663f53a1d0de440642ee80d2bdf9d0049abdae2a3ecd5e6320fc" origin="Generated by Gradle"/>
</artifact>
<artifact name="uiautomator-2.3.0.module">
<sha256 value="639b1bbaae4eaa538675ba9866a55888e08d640440f0911e26667553b2af3f71" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.tracing" name="tracing" version="1.0.0">
<artifact name="tracing-1.0.0.aar">
<md5 value="8081a5dae7393cade5e6801814292665" origin="Generated by Gradle"/>
@@ -7583,6 +7697,30 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
<sha256 value="39288b23c71a4391132aec9951f5e27f41727a2cdff69c6e4b4ece49f63e540c" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.tracing" name="tracing-perfetto" version="1.0.0">
<artifact name="tracing-perfetto-1.0.0.aar">
<sha256 value="a9a21fb415cc42497216004f4a35dc45f3158e4ba5ea1a01b449a20180b25a5e" origin="Generated by Gradle"/>
</artifact>
<artifact name="tracing-perfetto-1.0.0.module">
<sha256 value="c2ae89cb6f81abf51cae72f6a0e5e091267a9ab0b381d2bd30d66fb9b8c5e692" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.tracing" name="tracing-perfetto-binary" version="1.0.0">
<artifact name="tracing-perfetto-binary-1.0.0.aar">
<sha256 value="e36809d054202758488687ec60ed81a3cbd87bd027a87f05aa3f64451e6d3098" origin="Generated by Gradle"/>
</artifact>
<artifact name="tracing-perfetto-binary-1.0.0.module">
<sha256 value="7d113c1199223c2a13ac27a00b588b1aa9312663923edc4a2c70d28710f5d0e9" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.tracing" name="tracing-perfetto-handshake" version="1.0.0">
<artifact name="tracing-perfetto-handshake-1.0.0.jar">
<sha256 value="2f2ee5c58561d72cabe9207c43669fe92d6c1386f8c1c2624489e6ab367b121e" origin="Generated by Gradle"/>
</artifact>
<artifact name="tracing-perfetto-handshake-1.0.0.module">
<sha256 value="baba97bfc2834fbd29275ce3e250ac814305bd0d4beb8b3594248424cc6ff385" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.transition" name="transition" version="1.5.0">
<artifact name="transition-1.5.0.aar">
<md5 value="75f905a73d4d5f2de0272ba9fb305d0b" origin="Generated by Gradle"/>
@@ -11525,6 +11663,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
<sha256 value="676eb608f56199dff11c9c9d68e078e7768c54e60080e7ae12db8ec8e120675b" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.squareup.moshi" name="moshi" version="1.13.0">
<artifact name="moshi-1.13.0.jar">
<sha256 value="bd004dd9ba175e603ad44420bf605250291b9b7bc6b9d9e916f5741ac8663307" origin="Generated by Gradle"/>
</artifact>
<artifact name="moshi-1.13.0.module">
<sha256 value="dc5640e1a802012f7cf7171dab8a340d52e7714661a9d9dbb0b36788f1db04fc" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.squareup.okhttp3" name="mockwebserver" version="4.12.0">
<artifact name="mockwebserver-4.12.0.jar">
<sha256 value="6784673687f4ac8f21679b9d4bc7cdb46e1a1ce1be9d3133b36bede59a741561" origin="Generated by Gradle"/>
@@ -11601,6 +11747,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
<sha256 value="1d4d8354a95a0400386af86c795476d8ca8134f7bcf7db2ac366e55f38dab1bd" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.squareup.okio" name="okio" version="2.10.0">
<artifact name="okio-2.10.0.module">
<sha256 value="11cbeabc3a765c9a803242fa2024a11853eb0865da536c4b05afdcdbb2346370" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.squareup.okio" name="okio" version="2.8.0">
<artifact name="okio-2.8.0.module">
<md5 value="eaaaf83f3599ce45c29a7457dfe0c82f" origin="Generated by Gradle"/>
@@ -11795,6 +11946,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
<sha256 value="3f350a77f7c241d6612d44859e27c8999b5ce2a47baaad7277ba3b7d450b4818" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.squareup.wire" name="wire-runtime" version="5.2.1">
<artifact name="wire-runtime-5.2.1.module">
<sha256 value="8ab81d1979d886d962a60b56f254590de381344b82559df3303478ff9e631232" origin="Generated by Gradle"/>
</artifact>
<artifact name="wire-runtime-metadata-5.2.1.jar">
<sha256 value="3cf1ed343d5a4befd21b135e1b021cc1c3fd55f9e3917979f1dc275e318dc2f4" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.squareup.wire" name="wire-runtime-jvm" version="4.4.3">
<artifact name="wire-runtime-jvm-4.4.3.jar">
<md5 value="34fb19fe5a7b0f130088a10f09bf9a2d" origin="Generated by Gradle"/>
@@ -11807,6 +11966,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
<sha256 value="b02d3bd2e4929ccb0ab36c88b569b10fc27b360711ee1718126a3b11b317d7f7" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.squareup.wire" name="wire-runtime-jvm" version="5.2.1">
<artifact name="wire-runtime-jvm-5.2.1.jar">
<sha256 value="da392e28917a7467dae41f50323d453722f2a66b95d479c1ac565b09b056e697" origin="Generated by Gradle"/>
</artifact>
<artifact name="wire-runtime-jvm-5.2.1.module">
<sha256 value="503c86cf21c0d68505778f3c8c512cc590c9fb6f9c15803fd71fc5003822ecdc" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.squareup.wire" name="wire-schema" version="4.4.3">
<artifact name="wire-schema-4.4.3.module">
<md5 value="8b5c6d9aff129b1aeaa1f8803d13b78a" origin="Generated by Gradle"/>

View File

@@ -23,6 +23,9 @@ android {
defaultConfig {
minSdk = libs.versions.minSdk.get().toInt()
testInstrumentationRunnerArguments["androidx.benchmark.suppressErrors"] = "EMULATOR"
testInstrumentationRunner = "androidx.benchmark.junit4.AndroidBenchmarkRunner"
}

View File

@@ -136,7 +136,7 @@ class InMemorySignalServiceAccountDataStore : SignalServiceAccountDataStore {
}
override fun storeKyberPreKey(kyberPreKeyId: Int, record: KyberPreKeyRecord?) {
error("Not used")
kyberPreKeys[kyberPreKeyId] = record!!
}
override fun containsKyberPreKey(kyberPreKeyId: Int): Boolean {

View File

@@ -15,6 +15,7 @@ import org.signal.libsignal.protocol.groups.GroupSessionBuilder
import org.signal.libsignal.protocol.kem.KEMKeyPair
import org.signal.libsignal.protocol.kem.KEMKeyType
import org.signal.libsignal.protocol.message.SenderKeyDistributionMessage
import org.signal.libsignal.protocol.state.KyberPreKeyRecord
import org.signal.libsignal.protocol.state.PreKeyBundle
import org.signal.libsignal.protocol.state.PreKeyRecord
import org.signal.libsignal.protocol.state.SignedPreKeyRecord
@@ -161,11 +162,12 @@ class SignalClient {
timestamp = sentTimestamp
)
)
val destinations = others.map { bob ->
SignalProtocolAddress(bob.aci.toString(), 1)
val destinations = others.map { other ->
SignalProtocolAddress(other.aci.toString(), 1)
}
val sessionMap = store.getAllAddressesWithActiveSessions(destinations.map { it.name })
return cipher.encryptForGroup(distributionId, destinations, null, senderCertificate, content.encode(), ContentHint.DEFAULT, groupId)
return cipher.encryptForGroup(distributionId, destinations, sessionMap, senderCertificate, content.encode(), ContentHint.DEFAULT, groupId)
}
fun decryptMessage(envelope: Envelope) {
@@ -177,14 +179,27 @@ class SignalClient {
val preKeyRecord = PreKeyRecord(prekeyId, ECKeyPair.generate())
val signedPreKeyPair = ECKeyPair.generate()
val signedPreKeySignature = store.identityKeyPair.privateKey.calculateSignature(signedPreKeyPair.publicKey.serialize())
val kyerPair = KEMKeyPair.generate(KEMKeyType.KYBER_1024)
val kyberPair = KEMKeyPair.generate(KEMKeyType.KYBER_1024)
val kyberPreKeyRecord = KyberPreKeyRecord(prekeyId, System.currentTimeMillis() - 10, kyberPair, store.identityKeyPair.privateKey.calculateSignature(kyberPair.publicKey.serialize()))
store.storePreKey(prekeyId, preKeyRecord)
store.storeSignedPreKey(prekeyId, SignedPreKeyRecord(prekeyId, System.currentTimeMillis(), signedPreKeyPair, signedPreKeySignature))
store.storeKyberPreKey(prekeyId, kyberPreKeyRecord)
return PreKeyBundle(
prekeyId, prekeyId, prekeyId, preKeyRecord.keyPair.publicKey, prekeyId, signedPreKeyPair.publicKey, signedPreKeySignature, store.identityKeyPair.publicKey,
PreKeyBundle.NULL_PRE_KEY_ID, kyerPair.publicKey, kyerPair.secretKey.serialize()
registrationId = prekeyId,
deviceId = 1,
preKeyId = prekeyId,
preKeyPublic = preKeyRecord.keyPair.publicKey,
signedPreKeyId = prekeyId,
signedPreKeyPublic = signedPreKeyPair.publicKey,
signedPreKeySignature = signedPreKeySignature,
identityKey = store.identityKeyPair.publicKey,
kyberPreKeyId = kyberPreKeyRecord.id,
kyberPreKeyPublic = kyberPreKeyRecord.keyPair.publicKey,
kyberPreKeySignature = kyberPreKeyRecord.signature
)
}
}