diff --git a/src/test/kotlin/org/briarproject/briar/desktop/TestDeterministicConversations.kt b/src/test/kotlin/org/briarproject/briar/desktop/TestDeterministicConversations.kt index 50f555bab1f491e2df916dffa3da9cad49e674ae..4bf308b53c2a732dde8ea65a2246726c34562e50 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, 10, 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 32c1f1447081f99e70f27017e5b37a853c843a89..e5218504efafdf11e1de0704854d1d0b6a9f8ab6 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) - getTestDataCreator().createTestData(5, 20, 50, 4, 4, 10) + getDeterministicTestDataCreator().createTestData(5, 20, 50, 10, 20) + getTestDataCreator().createTestData(5, 20, 50, 4, 10, 10) }.run() diff --git a/src/test/kotlin/org/briarproject/briar/desktop/TestRandomConversations.kt b/src/test/kotlin/org/briarproject/briar/desktop/TestRandomConversations.kt index 268142d771c4cb370db3d21735108bee06fbd508..4ff0589c5d5b65f9550d51c1cc23d9f94e4db73a 100644 --- a/src/test/kotlin/org/briarproject/briar/desktop/TestRandomConversations.kt +++ b/src/test/kotlin/org/briarproject/briar/desktop/TestRandomConversations.kt @@ -1,5 +1,5 @@ package org.briarproject.briar.desktop fun main() = RunWithTemporaryAccount { - getTestDataCreator().createTestData(5, 20, 50, 4, 4, 10) + getTestDataCreator().createTestData(5, 20, 50, 4, 10, 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 13257a39f4bc4d3359af4050dfbd10d04a5a816f..7ab686bcad3490a5e1ef06e18c96648791c222b9 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, 10, 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 110456aa4e31a2157741b9670cf686e059966a4f..e852b7226e6e3b596fa76dc5ba16736ee7814518 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, 10, 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 d62c030b53a78fbca9fa1f660dd15b08be26022c..b4bca5b19add9776484a8808d98f392e1ea7161a 100644 --- a/src/test/kotlin/org/briarproject/briar/desktop/testdata/DeterministicTestDataCreator.kt +++ b/src/test/kotlin/org/briarproject/briar/desktop/testdata/DeterministicTestDataCreator.kt @@ -8,13 +8,21 @@ interface DeterministicTestDataCreator { /** * Create fake test data on the IoExecutor * - * @param numContacts Number of contacts to create. Must be >= 1 - * @param numPrivateMsgs Number of private messages to create for each + * @param numContacts Number of contacts to create. Must be >= 1 + * @param numPrivateMsgs Number of private messages to create for each * contact. - * @param avatarPercent Percentage of contacts + * @param avatarPercent Percentage of contacts * that will use a random profile image. Between 0 and 100. + * @param numPrivateGroups Number of private groups to create. Must be >= 1 + * @param numPrivateGroupPosts Number of private group messages to create in each group */ - 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 aa4b0689c01dd386466b8522470802fcaade1b45..1105860218196269cb33a10129c16f49d8e97e7b 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,16 @@ class DeterministicTestDataCreatorImpl @Inject internal constructor( override fun createTestData( numContacts: Int, numPrivateMsgs: Int, - avatarPercent: Int + avatarPercent: Int, + numPrivateGroups: Int, + numPrivateGroupPosts: Int, ) { require(numContacts != 0) + require(numPrivateGroups != 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 +92,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 +337,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 min(numPrivateGroups, GROUP_NAMES.size)) { + // create private group + val name = GROUP_NAMES[i] + 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 ${min(numPrivateGroups, GROUP_NAMES.size)} 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 0000000000000000000000000000000000000000..11ccd3d44ad0e3eb90d6cd8d7af21d5e9e7de411 --- /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( + "The Undiscovered Country", + "The Place to Be", + "Forum Romanum", + "Private Messengers", + "The Darknet", + "Bletchley Park", + "Acropolis", + "General Discussion", +)