diff --git a/src/test/kotlin/org/briarproject/briar/desktop/TestDeterministicConversations.kt b/src/test/kotlin/org/briarproject/briar/desktop/TestDeterministicConversations.kt index 50f555bab1f491e2df916dffa3da9cad49e674ae..db867a8e7da7e0ca0dddfc0bcb4e68d8cc1845a3 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 32c1f1447081f99e70f27017e5b37a853c843a89..939e40adb190aef8a410391ac10bac01400109bf 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 13257a39f4bc4d3359af4050dfbd10d04a5a816f..f60001132cc5d21ba0fee542e5ed4f157857f3ae 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 110456aa4e31a2157741b9670cf686e059966a4f..0b124123956440b2e68cba676183d53c8f71445c 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 d62c030b53a78fbca9fa1f660dd15b08be26022c..e22293e3eaf499c8b1f3f3728aefc32f50b5aac3 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 aa4b0689c01dd386466b8522470802fcaade1b45..eb7790fc3324fbf7ab35f312ae5c3c7f71c06022 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 0000000000000000000000000000000000000000..c4b9c807fe1d7916eb803db7fe320668839031d3 --- /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", +)