diff --git a/briar-android/src/main/AndroidManifest.xml b/briar-android/src/main/AndroidManifest.xml
index cc195722b..19b55dca6 100644
--- a/briar-android/src/main/AndroidManifest.xml
+++ b/briar-android/src/main/AndroidManifest.xml
@@ -352,6 +352,16 @@
/>
+
+
+
+
{
- LOG.info("Creating test data");
- testDataCreator.createTestData();
- getActivity().finish();
- return true;
- });
- } else {
+ if (!IS_DEBUG_BUILD) {
testData.setVisible(false);
}
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/test/TestDataActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/test/TestDataActivity.java
new file mode 100644
index 000000000..632d82ea4
--- /dev/null
+++ b/briar-android/src/main/java/org/briarproject/briar/android/test/TestDataActivity.java
@@ -0,0 +1,100 @@
+package org.briarproject.briar.android.test;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.v7.app.ActionBar;
+import android.view.MenuItem;
+import android.widget.SeekBar;
+import android.widget.SeekBar.OnSeekBarChangeListener;
+import android.widget.TextView;
+
+import org.briarproject.briar.R;
+import org.briarproject.briar.android.activity.ActivityComponent;
+import org.briarproject.briar.android.activity.BriarActivity;
+import org.briarproject.briar.android.navdrawer.NavDrawerActivity;
+import org.briarproject.briar.api.test.TestDataCreator;
+
+import javax.inject.Inject;
+
+public class TestDataActivity extends BriarActivity {
+
+ @Inject
+ TestDataCreator testDataCreator;
+
+ private TextView[] textviews = new TextView[5];
+ private SeekBar[] seekbars = new SeekBar[5];
+
+ @Override
+ public void onCreate(Bundle bundle) {
+ super.onCreate(bundle);
+
+ ActionBar actionBar = getSupportActionBar();
+ if (actionBar != null) {
+ actionBar.setHomeButtonEnabled(true);
+ actionBar.setDisplayHomeAsUpEnabled(true);
+ }
+
+ setContentView(R.layout.activity_test_data);
+ textviews[0] = findViewById(R.id.textViewContactsSb);
+ textviews[1] = findViewById(R.id.textViewMessagesSb);
+ textviews[2] = findViewById(R.id.TextViewBlogPostsSb);
+ textviews[3] = findViewById(R.id.TextViewForumsSb);
+ textviews[4] = findViewById(R.id.TextViewForumMessagesSb);
+ seekbars[0] = findViewById(R.id.seekBarContacts);
+ seekbars[1] = findViewById(R.id.seekBarMessages);
+ seekbars[2] = findViewById(R.id.seekBarBlogPosts);
+ seekbars[3] = findViewById(R.id.seekBarForums);
+ seekbars[4] = findViewById(R.id.seekBarForumMessages);
+
+ for (int i = 0; i < 5; i++) {
+ final TextView textView = textviews[i];
+ seekbars[i].setOnSeekBarChangeListener(
+ new OnSeekBarChangeListener() {
+ @Override
+ public void onProgressChanged(SeekBar seekBar,
+ int progress,
+ boolean fromUser) {
+ textView.setText("" + progress);
+ }
+
+ @Override
+ public void onStartTrackingTouch(SeekBar seekBar) {
+ }
+
+ @Override
+ public void onStopTrackingTouch(SeekBar seekBar) {
+ }
+
+ });
+ }
+
+ findViewById(R.id.buttonCreateTestData).setOnClickListener(
+ v -> {
+ createTestData();
+ });
+ }
+
+ private void createTestData() {
+ testDataCreator.createTestData(seekbars[0].getProgress(),
+ seekbars[1].getProgress(), seekbars[2].getProgress(),
+ seekbars[3].getProgress(), seekbars[4].getProgress());
+ Intent intent = new Intent(this, NavDrawerActivity.class);
+ intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+ startActivity(intent);
+ finish();
+ }
+
+ @Override
+ public void injectActivity(ActivityComponent component) {
+ component.inject(this);
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ if (item.getItemId() == android.R.id.home) {
+ onBackPressed();
+ return true;
+ }
+ return false;
+ }
+}
diff --git a/briar-android/src/main/res/layout/activity_test_data.xml b/briar-android/src/main/res/layout/activity_test_data.xml
new file mode 100644
index 000000000..c0d6c6833
--- /dev/null
+++ b/briar-android/src/main/res/layout/activity_test_data.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/briar-android/src/main/res/xml/settings.xml b/briar-android/src/main/res/xml/settings.xml
index 43ad96985..9f3a55f94 100644
--- a/briar-android/src/main/res/xml/settings.xml
+++ b/briar-android/src/main/res/xml/settings.xml
@@ -124,6 +124,11 @@
+ android:title="Create Test Data">
-
\ No newline at end of file
+
+
+
+
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/test/TestDataCreator.java b/briar-api/src/main/java/org/briarproject/briar/api/test/TestDataCreator.java
index 55b77221d..5bae29a83 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/test/TestDataCreator.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/test/TestDataCreator.java
@@ -8,4 +8,17 @@ public interface TestDataCreator {
/* Creates fake test data on the DatabaseExecutor */
void createTestData();
+ /**
+ * Creates a configurable amount of fake test data on the DatabaseExecutor
+ *
+ * @param numContacts Number of contacts to create.
+ * @param numPrivateMsgs Number of private messages to create for each
+ * contact.
+ * @param numBlogPosts Number of blog posts to create.
+ * @param numForums Number of forums to create.
+ * @param numForumPosts Number of forum posts to create per forum.
+ */
+ void createTestData(int numContacts, int numPrivateMsgs, int numBlogPosts,
+ int numForums, int numForumPosts);
+
}
diff --git a/briar-core/src/main/java/org/briarproject/briar/test/TestDataCreatorImpl.java b/briar-core/src/main/java/org/briarproject/briar/test/TestDataCreatorImpl.java
index c090feefd..c273001e1 100644
--- a/briar-core/src/main/java/org/briarproject/briar/test/TestDataCreatorImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/test/TestDataCreatorImpl.java
@@ -61,12 +61,6 @@ import static org.briarproject.briar.test.TestData.GROUP_NAMES;
public class TestDataCreatorImpl implements TestDataCreator {
- private final static int NUM_CONTACTS = 20;
- private final static int NUM_PRIVATE_MSGS = 15;
- private final static int NUM_BLOG_POSTS = 30;
- private final static int NUM_FORUMS = 3;
- private final static int NUM_FORUM_POSTS = 30;
-
private final Logger LOG =
Logger.getLogger(TestDataCreatorImpl.class.getName());
@@ -92,6 +86,12 @@ public class TestDataCreatorImpl implements TestDataCreator {
private final Random random = new Random();
private final Map localAuthors = new HashMap<>();
+ private int numContacts = 20;
+ private int numPrivateMsgs = 15;
+ private int numBlogPosts = 30;
+ private int numForums = 3;
+ private int numForumPosts = 30;
+
@Inject
TestDataCreatorImpl(AuthorFactory authorFactory, Clock clock,
PrivateMessageFactory privateMessageFactory,
@@ -119,6 +119,16 @@ public class TestDataCreatorImpl implements TestDataCreator {
this.ioExecutor = ioExecutor;
}
+ public void createTestData(int numContacts, int numPrivateMsgs, int numBlogPosts, int numForums,
+ int numForumPosts){
+ this.numContacts = numContacts;
+ this.numPrivateMsgs = numPrivateMsgs;
+ this.numBlogPosts = numBlogPosts;
+ this.numForums = numForums;
+ this.numForumPosts = numForumPosts;
+ createTestData();
+ }
+
public void createTestData() {
ioExecutor.execute(() -> {
try {
@@ -143,9 +153,9 @@ public class TestDataCreatorImpl implements TestDataCreator {
}
private List createContacts() throws DbException {
- List contacts = new ArrayList<>(NUM_CONTACTS);
+ List contacts = new ArrayList<>(numContacts);
LocalAuthor localAuthor = identityManager.getLocalAuthor();
- for (int i = 0; i < NUM_CONTACTS; i++) {
+ for (int i = 0; i < numContacts; i++) {
Contact contact = addRandomContact(localAuthor);
contacts.add(contact);
}
@@ -210,7 +220,7 @@ public class TestDataCreatorImpl implements TestDataCreator {
String btAddress = getRandomBluetoothAddress();
String uuid = getRandomUUID();
bt.put(BluetoothConstants.PROP_ADDRESS, btAddress);
- bt.put(BluetoothConstants.PROP_UUID,uuid);
+ bt.put(BluetoothConstants.PROP_UUID, uuid);
props.put(BluetoothConstants.ID, bt);
// LAN
@@ -275,7 +285,7 @@ public class TestDataCreatorImpl implements TestDataCreator {
throws DbException {
for (Contact contact : contacts) {
Group group = messagingManager.getContactGroup(contact);
- for (int i = 0; i < NUM_PRIVATE_MSGS; i++) {
+ for (int i = 0; i < numPrivateMsgs; i++) {
try {
createPrivateMessage(group.getId(), i);
} catch (FormatException e) {
@@ -284,7 +294,7 @@ public class TestDataCreatorImpl implements TestDataCreator {
}
}
if (LOG.isLoggable(INFO)) {
- LOG.info("Created " + NUM_PRIVATE_MSGS +
+ LOG.info("Created " + numPrivateMsgs +
" private messages per contact.");
}
}
@@ -315,13 +325,13 @@ public class TestDataCreatorImpl implements TestDataCreator {
private void createBlogPosts(List contacts)
throws DbException {
- for (int i = 0; i < NUM_BLOG_POSTS; i++) {
+ for (int i = 0; i < numBlogPosts; i++) {
Contact contact = contacts.get(random.nextInt(contacts.size()));
LocalAuthor author = localAuthors.get(contact);
addBlogPost(author, i);
}
if (LOG.isLoggable(INFO)) {
- LOG.info("Created " + NUM_BLOG_POSTS + " blog posts.");
+ LOG.info("Created " + numBlogPosts + " blog posts.");
}
}
@@ -341,8 +351,8 @@ public class TestDataCreatorImpl implements TestDataCreator {
private List createForums(List contacts)
throws DbException {
- List forums = new ArrayList<>(NUM_FORUMS);
- for (int i = 0; i < NUM_FORUMS; i++) {
+ List forums = new ArrayList<>(numForums);
+ for (int i = 0; i < numForums; i++) {
// create forum
String name = GROUP_NAMES[random.nextInt(GROUP_NAMES.length)];
Forum forum = forumManager.addForum(name);
@@ -361,8 +371,8 @@ public class TestDataCreatorImpl implements TestDataCreator {
forums.add(forum);
}
if (LOG.isLoggable(INFO)) {
- LOG.info("Created " + NUM_FORUMS + " forums with " +
- NUM_FORUM_POSTS + " posts each.");
+ LOG.info("Created " + numForums + " forums with " +
+ numForumPosts + " posts each.");
}
return forums;
}
@@ -370,7 +380,7 @@ public class TestDataCreatorImpl implements TestDataCreator {
private void createRandomForumPosts(Forum forum, List contacts)
throws DbException {
List posts = new ArrayList<>();
- for (int i = 0; i < NUM_FORUM_POSTS; i++) {
+ for (int i = 0; i < numForumPosts; i++) {
Contact contact = contacts.get(random.nextInt(contacts.size()));
LocalAuthor author = localAuthors.get(contact);
long timestamp = clock.currentTimeMillis() - i * 60 * 1000;