Skip to content
Snippets Groups Projects
Commit 47bce567 authored by Nico's avatar Nico Committed by Sebastian
Browse files

Add test private groups to TestData run configurations

So far without messages, therefore solves #113 only partly.

Sub-task of #12.
parent 29849e49
No related branches found
No related tags found
1 merge request!40Add test private groups to TestData run configurations
Pipeline #8376 passed
package org.briarproject.briar.desktop package org.briarproject.briar.desktop
fun main() = RunWithTemporaryAccount { fun main() = RunWithTemporaryAccount {
getDeterministicTestDataCreator().createTestData(5, 20, 50) getDeterministicTestDataCreator().createTestData(5, 20, 50, 10, 20)
}.run() }.run()
package org.briarproject.briar.desktop package org.briarproject.briar.desktop
fun main() = RunWithTemporaryAccount { fun main() = RunWithTemporaryAccount {
getDeterministicTestDataCreator().createTestData(5, 20, 50) getDeterministicTestDataCreator().createTestData(5, 20, 50, 10, 20)
getTestDataCreator().createTestData(5, 20, 50, 4, 4, 10) getTestDataCreator().createTestData(5, 20, 50, 4, 10, 10)
}.run() }.run()
package org.briarproject.briar.desktop package org.briarproject.briar.desktop
fun main() = RunWithTemporaryAccount { fun main() = RunWithTemporaryAccount {
getTestDataCreator().createTestData(5, 20, 50, 4, 4, 10) getTestDataCreator().createTestData(5, 20, 50, 4, 10, 10)
}.run() }.run()
...@@ -4,7 +4,7 @@ import org.briarproject.briar.desktop.TestUtils.connectAll ...@@ -4,7 +4,7 @@ import org.briarproject.briar.desktop.TestUtils.connectAll
fun main() = RunWithMultipleTemporaryAccounts(listOf("alice", "bob")) { fun main() = RunWithMultipleTemporaryAccounts(listOf("alice", "bob")) {
forEach { forEach {
it.getDeterministicTestDataCreator().createTestData(5, 20, 50) it.getDeterministicTestDataCreator().createTestData(5, 20, 50, 10, 20)
} }
connectAll() connectAll()
}.run() }.run()
...@@ -2,6 +2,6 @@ package org.briarproject.briar.desktop ...@@ -2,6 +2,6 @@ package org.briarproject.briar.desktop
fun main() = RunWithMultipleTemporaryAccounts(listOf("alice", "bob")) { fun main() = RunWithMultipleTemporaryAccounts(listOf("alice", "bob")) {
forEach { forEach {
it.getDeterministicTestDataCreator().createTestData(5, 20, 50) it.getDeterministicTestDataCreator().createTestData(5, 20, 50, 10, 20)
} }
}.run() }.run()
...@@ -8,13 +8,21 @@ interface DeterministicTestDataCreator { ...@@ -8,13 +8,21 @@ interface DeterministicTestDataCreator {
/** /**
* Create fake test data on the IoExecutor * Create fake test data on the IoExecutor
* *
* @param numContacts Number of contacts to create. Must be >= 1 * @param numContacts Number of contacts to create. Must be >= 1
* @param numPrivateMsgs Number of private messages to create for each * @param numPrivateMsgs Number of private messages to create for each
* contact. * contact.
* @param avatarPercent Percentage of contacts * @param avatarPercent Percentage of contacts
* that will use a random profile image. Between 0 and 100. * 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 @IoExecutor
@Throws(DbException::class) @Throws(DbException::class)
......
...@@ -30,6 +30,10 @@ import org.briarproject.briar.api.avatar.AvatarManager ...@@ -30,6 +30,10 @@ import org.briarproject.briar.api.avatar.AvatarManager
import org.briarproject.briar.api.avatar.AvatarMessageEncoder import org.briarproject.briar.api.avatar.AvatarMessageEncoder
import org.briarproject.briar.api.messaging.MessagingManager import org.briarproject.briar.api.messaging.MessagingManager
import org.briarproject.briar.api.messaging.PrivateMessageFactory 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 org.briarproject.briar.api.test.TestAvatarCreator
import java.io.IOException import java.io.IOException
import java.io.InputStream import java.io.InputStream
...@@ -44,10 +48,13 @@ class DeterministicTestDataCreatorImpl @Inject internal constructor( ...@@ -44,10 +48,13 @@ class DeterministicTestDataCreatorImpl @Inject internal constructor(
private val authorFactory: AuthorFactory, private val authorFactory: AuthorFactory,
private val clock: Clock, private val clock: Clock,
private val groupFactory: GroupFactory, private val groupFactory: GroupFactory,
private val groupMessageFactory: GroupMessageFactory,
private val privateMessageFactory: PrivateMessageFactory, private val privateMessageFactory: PrivateMessageFactory,
private val db: DatabaseComponent, private val db: DatabaseComponent,
private val identityManager: IdentityManager, private val identityManager: IdentityManager,
private val contactManager: ContactManager, private val contactManager: ContactManager,
private val privateGroupManager: PrivateGroupManager,
private val privateGroupFactory: PrivateGroupFactory,
private val transportPropertyManager: TransportPropertyManager, private val transportPropertyManager: TransportPropertyManager,
private val messagingManager: MessagingManager, private val messagingManager: MessagingManager,
private val testAvatarCreator: TestAvatarCreator, private val testAvatarCreator: TestAvatarCreator,
...@@ -64,13 +71,16 @@ class DeterministicTestDataCreatorImpl @Inject internal constructor( ...@@ -64,13 +71,16 @@ class DeterministicTestDataCreatorImpl @Inject internal constructor(
override fun createTestData( override fun createTestData(
numContacts: Int, numContacts: Int,
numPrivateMsgs: Int, numPrivateMsgs: Int,
avatarPercent: Int avatarPercent: Int,
numPrivateGroups: Int,
numPrivateGroupPosts: Int,
) { ) {
require(numContacts != 0) require(numContacts != 0)
require(numPrivateGroups != 0)
require(!(avatarPercent < 0 || avatarPercent > 100)) require(!(avatarPercent < 0 || avatarPercent > 100))
ioExecutor.execute { ioExecutor.execute {
try { try {
createTestDataOnIoExecutor(numContacts, numPrivateMsgs, avatarPercent) createTestDataOnIoExecutor(numContacts, numPrivateMsgs, avatarPercent, numPrivateGroups, numPrivateGroupPosts)
} catch (e: DbException) { } catch (e: DbException) {
LOG.warn(e) { } LOG.warn(e) { }
} }
...@@ -82,10 +92,17 @@ class DeterministicTestDataCreatorImpl @Inject internal constructor( ...@@ -82,10 +92,17 @@ class DeterministicTestDataCreatorImpl @Inject internal constructor(
private fun createTestDataOnIoExecutor( private fun createTestDataOnIoExecutor(
numContacts: Int, numContacts: Int,
numPrivateMsgs: Int, numPrivateMsgs: Int,
avatarPercent: Int avatarPercent: Int,
numPrivateGroups: Int,
numPrivateGroupPosts: Int
) { ) {
val contacts = createContacts(numContacts, avatarPercent) val contacts = createContacts(numContacts, avatarPercent)
createPrivateMessages(contacts, numPrivateMsgs) createPrivateMessages(contacts, numPrivateMsgs)
val privateGroups = createPrivateGroups(contacts, numPrivateGroups)
for (privateGroup in privateGroups) {
createRandomPrivateGroupMessages(privateGroup, contacts, numPrivateGroupPosts)
}
} }
@Throws(DbException::class) @Throws(DbException::class)
...@@ -320,4 +337,37 @@ class DeterministicTestDataCreatorImpl @Inject internal constructor( ...@@ -320,4 +337,37 @@ class DeterministicTestDataCreatorImpl @Inject internal constructor(
throw AssertionError(e) 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
}
} }
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",
)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment