use of org.jgroups.util.Table in project JGroups by belaban.
the class TableStressTest method main.
public static void main(String[] args) throws InterruptedException {
for (int i = 0; i < args.length; i++) {
if (args[i].startsWith("-h")) {
System.out.println("TableStressTest [-num numbers] [-adders <number of adder threads>]");
return;
}
if (args[i].equals("-num")) {
NUM = Integer.parseInt(args[++i]);
continue;
}
if (args[i].equals("-adders")) {
NUM_THREADS = Integer.parseInt(args[++i]);
}
}
Table<Integer> buf = new Table<>(10000, 10240, 0);
final CountDownLatch latch = new CountDownLatch(1);
Remover remover = new Remover(buf, latch);
remover.start();
Adder[] adders = new Adder[NUM_THREADS];
for (int i = 0; i < adders.length; i++) {
adders[i] = new Adder(buf, latch, added);
adders[i].start();
}
long start = System.currentTimeMillis();
latch.countDown();
while (remover.isAlive()) {
System.out.println("added messages: " + added + ", removed messages: " + removed);
remover.join(2000);
}
long diff = System.currentTimeMillis() - start;
System.out.println("added messages: " + added + ", removed messages: " + removed);
System.out.println("took " + diff + " ms to insert and remove " + NUM + " messages");
}
use of org.jgroups.util.Table in project JGroups by belaban.
the class STABLE_Test method testStableWithDontLoopback.
public void testStableWithDontLoopback() throws Exception {
byte[] payload = new byte[5000];
for (int i = 0; i < 10; i++) {
Message msg = new BytesMessage(null, payload).setFlag(Message.TransientFlag.DONT_LOOPBACK);
b.send(msg);
// prevents batches, which trigger STABLE msgs in non-10000 increments
Util.sleep(200);
}
Util.waitUntil(5000, 500, () -> Stream.of(r1, r3).allMatch(r -> r.size() == 10));
assert r2.size() == 0;
Util.waitUntilTrue(5000, 500, () -> Stream.of(a, b, c).map(c -> ((NAKACK2) c.getProtocolStack().findProtocol(NAKACK2.class)).getWindow(b.getAddress())).allMatch(t -> t.getHighestReceived() == 10 && t.getHighestDelivered() == 10 && t.getLow() == 10));
for (JChannel ch : List.of(a, b, c)) {
NAKACK2 n = ch.getProtocolStack().findProtocol(NAKACK2.class);
Table<Message> t = n.getWindow(b.getAddress());
assert t.getHighestReceived() == 10 && t.getHighestDelivered() == 10 && t.getLow() == 10 : String.format("table for %s is %s (low is probably 0)", ch.getName(), t);
}
}
Aggregations