From a14355b44335589ba2f3762f13d63c0259f70d0c Mon Sep 17 00:00:00 2001 From: Nico Alt <nicoalt@posteo.org> Date: Wed, 10 Nov 2021 14:15:57 +0100 Subject: [PATCH] Add test private groups to TestData run configurations So far without messages, therefore solves #113 only partly. Sub-task of #12. --- .../desktop/TestDeterministicConversations.kt | 2 +- .../briar/desktop/TestMixedConversations.kt | 2 +- .../TestWithTwoConnectedTemporaryAccounts.kt | 2 +- .../desktop/TestWithTwoTemporaryAccounts.kt | 2 +- .../testdata/DeterministicTestDataCreator.kt | 8 ++- .../DeterministicTestDataCreatorImpl.kt | 55 ++++++++++++++++++- .../briar/desktop/testdata/GroupsData.kt | 12 ++++ 7 files changed, 75 insertions(+), 8 deletions(-) create mode 100644 src/test/kotlin/org/briarproject/briar/desktop/testdata/GroupsData.kt diff --git a/src/test/kotlin/org/briarproject/briar/desktop/TestDeterministicConversations.kt b/src/test/kotlin/org/briarproject/briar/desktop/TestDeterministicConversations.kt index 50f555bab1..db867a8e7d 100644 --- a/src/test/kotlin/org/briarproject/briar/desktop/TestDeterministicConversations.kt +++ b/src/test/kotlin/org/briarproject/briar/desktop/TestDeterministicConversations.kt @@ -1,5 +1,5 @@ package org.briarproject.briar.desktop fun main() = RunWithTemporaryAccount { - getDeterministicTestDataCreator().createTestData(5, 20, 50) + getDeterministicTestDataCreator().createTestData(5, 20, 50, 4, 20) }.run() diff --git a/src/test/kotlin/org/briarproject/briar/desktop/TestMixedConversations.kt b/src/test/kotlin/org/briarproject/briar/desktop/TestMixedConversations.kt index 32c1f14470..939e40adb1 100644 --- a/src/test/kotlin/org/briarproject/briar/desktop/TestMixedConversations.kt +++ b/src/test/kotlin/org/briarproject/briar/desktop/TestMixedConversations.kt @@ -1,6 +1,6 @@ package org.briarproject.briar.desktop fun main() = RunWithTemporaryAccount { - getDeterministicTestDataCreator().createTestData(5, 20, 50) + getDeterministicTestDataCreator().createTestData(5, 20, 50, 4, 20) getTestDataCreator().createTestData(5, 20, 50, 4, 4, 10) }.run() diff --git a/src/test/kotlin/org/briarproject/briar/desktop/TestWithTwoConnectedTemporaryAccounts.kt b/src/test/kotlin/org/briarproject/briar/desktop/TestWithTwoConnectedTemporaryAccounts.kt index 13257a39f4..f60001132c 100644 --- a/src/test/kotlin/org/briarproject/briar/desktop/TestWithTwoConnectedTemporaryAccounts.kt +++ b/src/test/kotlin/org/briarproject/briar/desktop/TestWithTwoConnectedTemporaryAccounts.kt @@ -4,7 +4,7 @@ import org.briarproject.briar.desktop.TestUtils.connectAll fun main() = RunWithMultipleTemporaryAccounts(listOf("alice", "bob")) { forEach { - it.getDeterministicTestDataCreator().createTestData(5, 20, 50) + it.getDeterministicTestDataCreator().createTestData(5, 20, 50, 4, 20) } connectAll() }.run() diff --git a/src/test/kotlin/org/briarproject/briar/desktop/TestWithTwoTemporaryAccounts.kt b/src/test/kotlin/org/briarproject/briar/desktop/TestWithTwoTemporaryAccounts.kt index 110456aa4e..0b12412395 100644 --- a/src/test/kotlin/org/briarproject/briar/desktop/TestWithTwoTemporaryAccounts.kt +++ b/src/test/kotlin/org/briarproject/briar/desktop/TestWithTwoTemporaryAccounts.kt @@ -2,6 +2,6 @@ package org.briarproject.briar.desktop fun main() = RunWithMultipleTemporaryAccounts(listOf("alice", "bob")) { forEach { - it.getDeterministicTestDataCreator().createTestData(5, 20, 50) + it.getDeterministicTestDataCreator().createTestData(5, 20, 50, 4, 20) } }.run() diff --git a/src/test/kotlin/org/briarproject/briar/desktop/testdata/DeterministicTestDataCreator.kt b/src/test/kotlin/org/briarproject/briar/desktop/testdata/DeterministicTestDataCreator.kt index d62c030b53..e22293e3ea 100644 --- a/src/test/kotlin/org/briarproject/briar/desktop/testdata/DeterministicTestDataCreator.kt +++ b/src/test/kotlin/org/briarproject/briar/desktop/testdata/DeterministicTestDataCreator.kt @@ -14,7 +14,13 @@ interface DeterministicTestDataCreator { * @param avatarPercent Percentage of contacts * that will use a random profile image. Between 0 and 100. */ - fun createTestData(numContacts: Int, numPrivateMsgs: Int, avatarPercent: Int) + fun createTestData( + numContacts: Int, + numPrivateMsgs: Int, + avatarPercent: Int, + numPrivateGroups: Int, + numPrivateGroupPosts: Int, + ) @IoExecutor @Throws(DbException::class) diff --git a/src/test/kotlin/org/briarproject/briar/desktop/testdata/DeterministicTestDataCreatorImpl.kt b/src/test/kotlin/org/briarproject/briar/desktop/testdata/DeterministicTestDataCreatorImpl.kt index aa4b0689c0..eb7790fc33 100644 --- a/src/test/kotlin/org/briarproject/briar/desktop/testdata/DeterministicTestDataCreatorImpl.kt +++ b/src/test/kotlin/org/briarproject/briar/desktop/testdata/DeterministicTestDataCreatorImpl.kt @@ -30,6 +30,10 @@ import org.briarproject.briar.api.avatar.AvatarManager import org.briarproject.briar.api.avatar.AvatarMessageEncoder import org.briarproject.briar.api.messaging.MessagingManager import org.briarproject.briar.api.messaging.PrivateMessageFactory +import org.briarproject.briar.api.privategroup.GroupMessageFactory +import org.briarproject.briar.api.privategroup.PrivateGroup +import org.briarproject.briar.api.privategroup.PrivateGroupFactory +import org.briarproject.briar.api.privategroup.PrivateGroupManager import org.briarproject.briar.api.test.TestAvatarCreator import java.io.IOException import java.io.InputStream @@ -44,10 +48,13 @@ class DeterministicTestDataCreatorImpl @Inject internal constructor( private val authorFactory: AuthorFactory, private val clock: Clock, private val groupFactory: GroupFactory, + private val groupMessageFactory: GroupMessageFactory, private val privateMessageFactory: PrivateMessageFactory, private val db: DatabaseComponent, private val identityManager: IdentityManager, private val contactManager: ContactManager, + private val privateGroupManager: PrivateGroupManager, + private val privateGroupFactory: PrivateGroupFactory, private val transportPropertyManager: TransportPropertyManager, private val messagingManager: MessagingManager, private val testAvatarCreator: TestAvatarCreator, @@ -64,13 +71,15 @@ class DeterministicTestDataCreatorImpl @Inject internal constructor( override fun createTestData( numContacts: Int, numPrivateMsgs: Int, - avatarPercent: Int + avatarPercent: Int, + numPrivateGroups: Int, + numPrivateGroupPosts: Int, ) { require(numContacts != 0) require(!(avatarPercent < 0 || avatarPercent > 100)) ioExecutor.execute { try { - createTestDataOnIoExecutor(numContacts, numPrivateMsgs, avatarPercent) + createTestDataOnIoExecutor(numContacts, numPrivateMsgs, avatarPercent, numPrivateGroups, numPrivateGroupPosts) } catch (e: DbException) { LOG.warn(e) { } } @@ -82,10 +91,17 @@ class DeterministicTestDataCreatorImpl @Inject internal constructor( private fun createTestDataOnIoExecutor( numContacts: Int, numPrivateMsgs: Int, - avatarPercent: Int + avatarPercent: Int, + numPrivateGroups: Int, + numPrivateGroupPosts: Int ) { val contacts = createContacts(numContacts, avatarPercent) createPrivateMessages(contacts, numPrivateMsgs) + + val privateGroups = createPrivateGroups(contacts, numPrivateGroups) + for (privateGroup in privateGroups) { + createRandomPrivateGroupMessages(privateGroup, contacts, numPrivateGroupPosts) + } } @Throws(DbException::class) @@ -320,4 +336,37 @@ class DeterministicTestDataCreatorImpl @Inject internal constructor( throw AssertionError(e) } } + + @Throws(DbException::class) + private fun createPrivateGroups(contacts: List<Contact>, numPrivateGroups: Int): List<PrivateGroup> { + val privateGroups: MutableList<PrivateGroup> = ArrayList(numPrivateGroups) + for (i in 0 until numPrivateGroups) { + // create private group + val name = GROUP_NAMES[random.nextInt(GROUP_NAMES.size)] + var creator = identityManager.localAuthor + val privateGroup = privateGroupFactory.createPrivateGroup(name, creator) + val joinMsg = groupMessageFactory.createJoinMessage( + privateGroup.id, + clock.currentTimeMillis() - i * 60 * 1000, creator + ) + privateGroupManager.addPrivateGroup(privateGroup, joinMsg, true) + + // share with all contacts + for (contact in contacts) { + shareGroup(contact.id, privateGroup.id) + } + privateGroups.add(privateGroup) + } + LOG.info { "Created $numPrivateGroups private groups." } + return privateGroups + } + + @Throws(DbException::class) + private fun createRandomPrivateGroupMessages( + privateGroup: PrivateGroup, + contacts: List<Contact>, + numPrivateGroupMessages: Int + ) { + // TODO + } } diff --git a/src/test/kotlin/org/briarproject/briar/desktop/testdata/GroupsData.kt b/src/test/kotlin/org/briarproject/briar/desktop/testdata/GroupsData.kt new file mode 100644 index 0000000000..c4b9c807fe --- /dev/null +++ b/src/test/kotlin/org/briarproject/briar/desktop/testdata/GroupsData.kt @@ -0,0 +1,12 @@ +package org.briarproject.briar.desktop.testdata + +var GROUP_NAMES = arrayOf( + "Private Messengers", + "The Darknet", + "Bletchley Park", + "Acropolis", + "General Discussion", + "The Undiscovered Country", + "The Place to Be", + "Forum Romanum", +) -- GitLab