mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-12 18:59:06 +01:00
Add database benchmarks.
This commit is contained in:
@@ -1,7 +1,9 @@
|
||||
package org.briarproject.bramble.test;
|
||||
|
||||
import java.lang.Thread.UncaughtExceptionHandler;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import static java.util.logging.Level.OFF;
|
||||
import static org.junit.Assert.fail;
|
||||
|
||||
public abstract class BrambleTestCase {
|
||||
@@ -13,5 +15,7 @@ public abstract class BrambleTestCase {
|
||||
fail();
|
||||
};
|
||||
Thread.setDefaultUncaughtExceptionHandler(fail);
|
||||
// Disable logging
|
||||
Logger.getLogger("").setLevel(OFF);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,12 +2,27 @@ package org.briarproject.bramble.test;
|
||||
|
||||
import org.briarproject.bramble.api.UniqueId;
|
||||
import org.briarproject.bramble.api.crypto.SecretKey;
|
||||
import org.briarproject.bramble.api.identity.Author;
|
||||
import org.briarproject.bramble.api.identity.AuthorId;
|
||||
import org.briarproject.bramble.api.identity.LocalAuthor;
|
||||
import org.briarproject.bramble.api.sync.ClientId;
|
||||
import org.briarproject.bramble.api.sync.Group;
|
||||
import org.briarproject.bramble.api.sync.GroupId;
|
||||
import org.briarproject.bramble.util.IoUtils;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
import static org.briarproject.bramble.api.identity.AuthorConstants.MAX_AUTHOR_NAME_LENGTH;
|
||||
import static org.briarproject.bramble.api.identity.AuthorConstants.MAX_PUBLIC_KEY_LENGTH;
|
||||
import static org.briarproject.bramble.api.sync.SyncConstants.MAX_GROUP_DESCRIPTOR_LENGTH;
|
||||
import static org.briarproject.bramble.util.StringUtils.getRandomString;
|
||||
|
||||
public class TestUtils {
|
||||
|
||||
private static final AtomicInteger nextTestDir =
|
||||
@@ -38,4 +53,59 @@ public class TestUtils {
|
||||
return new SecretKey(getRandomBytes(SecretKey.LENGTH));
|
||||
}
|
||||
|
||||
public static LocalAuthor getLocalAuthor() {
|
||||
AuthorId id = new AuthorId(getRandomId());
|
||||
String name = getRandomString(MAX_AUTHOR_NAME_LENGTH);
|
||||
byte[] publicKey = getRandomBytes(MAX_PUBLIC_KEY_LENGTH);
|
||||
byte[] privateKey = getRandomBytes(MAX_PUBLIC_KEY_LENGTH);
|
||||
long created = System.currentTimeMillis();
|
||||
return new LocalAuthor(id, name, publicKey, privateKey, created);
|
||||
}
|
||||
|
||||
public static Author getAuthor() {
|
||||
AuthorId id = new AuthorId(getRandomId());
|
||||
String name = getRandomString(MAX_AUTHOR_NAME_LENGTH);
|
||||
byte[] publicKey = getRandomBytes(MAX_PUBLIC_KEY_LENGTH);
|
||||
return new Author(id, name, publicKey);
|
||||
}
|
||||
|
||||
public static Group getGroup(ClientId clientId) {
|
||||
GroupId groupId = new GroupId(getRandomId());
|
||||
byte[] descriptor = getRandomBytes(MAX_GROUP_DESCRIPTOR_LENGTH);
|
||||
return new Group(groupId, clientId, descriptor);
|
||||
}
|
||||
|
||||
public static double getMedian(Collection<? extends Number> samples) {
|
||||
int size = samples.size();
|
||||
if (size == 0) throw new IllegalArgumentException();
|
||||
List<Double> sorted = new ArrayList<Double>(size);
|
||||
for (Number n : samples) sorted.add(n.doubleValue());
|
||||
Collections.sort(sorted);
|
||||
if (size % 2 == 1) return sorted.get(size / 2);
|
||||
double low = sorted.get(size / 2 - 1), high = sorted.get(size / 2);
|
||||
return (low + high) / 2;
|
||||
}
|
||||
|
||||
public static double getMean(Collection<? extends Number> samples) {
|
||||
if (samples.isEmpty()) throw new IllegalArgumentException();
|
||||
double sum = 0;
|
||||
for (Number n : samples) sum += n.doubleValue();
|
||||
return sum / samples.size();
|
||||
}
|
||||
|
||||
public static double getVariance(Collection<? extends Number> samples) {
|
||||
if (samples.size() < 2) throw new IllegalArgumentException();
|
||||
double mean = getMean(samples);
|
||||
double sumSquareDiff = 0;
|
||||
for (Number n : samples) {
|
||||
double diff = n.doubleValue() - mean;
|
||||
sumSquareDiff += diff * diff;
|
||||
}
|
||||
return sumSquareDiff / (samples.size() - 1);
|
||||
}
|
||||
|
||||
public static double getStandardDeviation(
|
||||
Collection<? extends Number> samples) {
|
||||
return Math.sqrt(getVariance(samples));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user