From 1c22296112c9f2dd2e83744360424b6b17dd6c16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Augusto=20C=C3=A9sar=20Dias?= Date: Wed, 5 Jul 2023 14:48:53 +0200 Subject: [PATCH] feat: Add option to run with proteus --- .../com/wire/kalium/monkeys/DefaultConversationCreation.kt | 5 +++-- .../kotlin/com/wire/kalium/monkeys/MonkeyApplication.kt | 6 ++++-- .../kotlin/com/wire/kalium/monkeys/TestSequence.kt | 5 ++++- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/monkeys/src/commonMain/kotlin/com/wire/kalium/monkeys/DefaultConversationCreation.kt b/monkeys/src/commonMain/kotlin/com/wire/kalium/monkeys/DefaultConversationCreation.kt index 67dbde931c7..14b0c220620 100644 --- a/monkeys/src/commonMain/kotlin/com/wire/kalium/monkeys/DefaultConversationCreation.kt +++ b/monkeys/src/commonMain/kotlin/com/wire/kalium/monkeys/DefaultConversationCreation.kt @@ -22,7 +22,8 @@ import com.wire.kalium.logic.feature.conversation.CreateGroupConversationUseCase class DefaultConversationCreation : ConversationCreation { override suspend fun invoke( - monkeyGroups: List> + monkeyGroups: List>, + protocol: ConversationOptions.Protocol ): List = monkeyGroups.map { group -> val groupCreator = group.first() val userScope = groupCreator.operationScope @@ -30,7 +31,7 @@ class DefaultConversationCreation : ConversationCreation { val conversationResult = userScope.conversations.createGroupConversation( name = "By Monkey '${groupCreator.user.email}'", userIdList = group.map { it.user.userId }, - options = ConversationOptions(protocol = MonkeyApplication.GROUP_TYPE) + options = ConversationOptions(protocol = protocol) ) if (conversationResult !is CreateGroupConversationUseCase.Result.Success) { diff --git a/monkeys/src/commonMain/kotlin/com/wire/kalium/monkeys/MonkeyApplication.kt b/monkeys/src/commonMain/kotlin/com/wire/kalium/monkeys/MonkeyApplication.kt index fa8e441e040..a68a2dd0145 100644 --- a/monkeys/src/commonMain/kotlin/com/wire/kalium/monkeys/MonkeyApplication.kt +++ b/monkeys/src/commonMain/kotlin/com/wire/kalium/monkeys/MonkeyApplication.kt @@ -24,6 +24,7 @@ import co.touchlab.kermit.LogWriter import com.github.ajalt.clikt.core.CliktCommand import com.github.ajalt.clikt.parameters.arguments.argument import com.github.ajalt.clikt.parameters.options.default +import com.github.ajalt.clikt.parameters.options.flag import com.github.ajalt.clikt.parameters.options.option import com.github.ajalt.clikt.parameters.types.enum import com.wire.kalium.logger.KaliumLogLevel @@ -40,6 +41,7 @@ class MonkeyApplication : CliktCommand(allowMultipleSubcommands = true) { private val logLevel by option(help = "log level").enum().default(KaliumLogLevel.VERBOSE) private val logOutputFile by option(help = "output file for logs") private val fileLogger: LogWriter by lazy { fileLogger(logOutputFile ?: "kalium.log") } + private val proteus by option(help = "run using proteus protocol").flag() override fun run() = runBlocking { val coreLogic = coreLogic( @@ -67,9 +69,10 @@ class MonkeyApplication : CliktCommand(allowMultipleSubcommands = true) { users: List, testSequence: TestSequence ) = with(testSequence) { + val protocol = if (proteus) ConversationOptions.Protocol.PROTEUS else ConversationOptions.Protocol.MLS val monkeyGroups = split(users) val monkeyScopes = setup(coreLogic, monkeyGroups) - val conversations = createConversations(monkeyScopes) + val conversations = createConversations(monkeyScopes, protocol) commands.forEach { command -> command(conversations) } @@ -77,7 +80,6 @@ class MonkeyApplication : CliktCommand(allowMultipleSubcommands = true) { companion object { val HOME_DIRECTORY: String = homeDirectory() - val GROUP_TYPE = ConversationOptions.Protocol.MLS } } diff --git a/monkeys/src/commonMain/kotlin/com/wire/kalium/monkeys/TestSequence.kt b/monkeys/src/commonMain/kotlin/com/wire/kalium/monkeys/TestSequence.kt index afb1e24a5e9..2682157c8e5 100644 --- a/monkeys/src/commonMain/kotlin/com/wire/kalium/monkeys/TestSequence.kt +++ b/monkeys/src/commonMain/kotlin/com/wire/kalium/monkeys/TestSequence.kt @@ -48,7 +48,10 @@ fun interface MonkeyCommand { * Creates a conversation between a watch monkey and a list of monkeys. */ fun interface ConversationCreation { - suspend operator fun invoke(monkeyGroups: List>): List + suspend operator fun invoke( + monkeyGroups: kotlin.collections.List>, + protocol: com.wire.kalium.logic.data.conversation.ConversationOptions.Protocol + ): List } /**